Skip to content

tndus77/HelmetDetect

Repository files navigation

TADAK

'TADAK'은 공유 킥보드 사용자들의 헬멧 착용을 위해 만들어진 앱이다. 사용자들이 킥보드를 대여하기 전 셀카를 업로드하면, TADAK application에 내재된 기계 학습 모델이 사용자들의 헬멧 착용 여부를 자동으로 판단해준다.

Team information

Members : 박수연, 임가은, 이권은

사용 방법

  1. 회원가입과 로그인을 완료한다
  2. 지도에서 이용할 공유킥보드를 선택한다
  3. 대여하기 버튼을 누르면 셀프 캠 화면이 켜진다
  4. 헬멧을 착용한 후, 가이드라인에 맞추어 사진을 찍는다
  5. TADAK에게 헬멧 착용 여부를 확인받고 킥보드를 대여한다

회원가입

회원가입 창은 firebase를 사용하여 createuserwithemailandpassword 함수를 사용하여 사용자의 이메일과 비밀번호를 받았습니다.

로그인

  • 회원가입 후 받은 데이터를 가지고 로그인할 수 있도록 만들었습니다.
  • 로그인 후, 슬라이드를 하면 헤더에 사용자의 정보가 보일 수 있도록 구현하였습니다.
  • 또한 탭 창에는 포인트, 내정보, 이용내역을 보실 수 있습니다.

MapsActivity

  • 구글 맵 api를 가져와 킥보드의 현재 위치를 띄웠습니다.
  • 대여할 킥보드를 눌러 배터리잔량과 첫 10분, 추가 1분당의 가격을 보실 수 있습니다.
  • 대여하기 버튼을 클릭하면 사용자가 헬멧을 썼는 지 판단할 수 있도록 카메라를 활용하여 구현하였습니다.

모델 학습

헬멧을 쓴 사람과 쓰지 않은 사람을 구분하도록 만드는 것이 학습의 목적이었습니다. 학습을 위해 헬멧 쓴 사람의 사진이 여럿 필요했지만 적합한 데이터를 충분히 찾을 수 없었습니다. 그때 마스크를 일반 인물 사진에 합성해서 데이터셋을 만든 예시(https://github.com/kairess/mask-detection)를 발견하여 응용해보기로 하였습니다. 헬멧만 있는 사진 여섯장을 일반 인물 사진에 합성하는 방식으로 약 7800장(with_mask 3600장, without_mask 4200장) 의 학습 데이터를 만들었습니다. 구글 코랩에서 pytorch를 이용하여 pth모델을 만들었으나, pth를 안드로이드 앱에서 활용하는 것이 어려웠습니다. (pth->onnx->tflite 변환을 시도했으나 실패) 그래서 tensorflow로 다시 학습을 하여 .h5 형식의 모델을 만든 후, .tflite형식의 모델로 변환하였습니다. 모델을 res폴더에 추가하여 인식에 활용하였습니다.

Environment

개발 환경 : Android Studio 11

Download our game!

Packages

No packages published

Languages