본문 바로가기

개인 프로젝트

딥러닝 프로젝트: 마스크 착용 여부 검사(티처블머신, 텐서플로우, 케라스, Open CV)

위드코로나를 논하는 시대에 살고 있는 우리지만, 아직까지 마스크를 벗거나 턱스크를 하는 사람들을 보면 눈쌀이 찌푸려진다. 필자는 이를 생각해 마스크를 착용했는지 웹캠으로 테스트하는 프로그램(?)을 만들어 볼 것이다.

요약 과정: 

  • 파이썬 셀레니움을 이용한 이미지 크롤링
  • 티처블 머신을 사용해 이미지 학습
  • 텐서플로우, 케라스, opencv를 이용해 마스크 착용여부를 웹캠으로 실시간처리
  • 리뷰

1. 셀레니움을 이용한 이미지 크롤링

필자는 구름IDE를 이용하였다.(광고아님)
구글로 로그인을 하고 컨테이너 생성을 누른 뒤 이름을 생성하고(아무이름이나 상관없음) 아래 사진과 같이 설정한 후 생성하기를 누른다.

실행시킨 후 터미널에 git clone https://github.com/Joeclinton1/google-images-download
을 입력해 주고 터미널에 cd google-images-download && python setup.py install 를 입력해준다.

그리고 *중요*
index.py를 google-images-download 폴더 안에 넣어준다.

그리고 본격적으로 코딩 시작
from google_images_download import google_images_download response = google_images_download.googleimagesdownload() arguments = {"keywords":"(괄호제외하고 마스크 턱에 걸친, 마스크 쓴 사람, 벽 순서대로 입력 후 컴파일)", "limit":100, "print_urls":True} paths = response.download(arguments) print(paths)
컴파일 할 때마다 키워드에 쓴 이름으로 된 사진이 100개씩 생길 것이다.

위와 같이 zip파일로 폴더를 3개 본인 컴퓨터로 내보낸다.

2.티처블머신

그리고 https://teachablemachine.withgoogle.com/ (티처블머신) url로 이동.

시작하기를 누르고 이미지프로젝트를 클릭.
onmask, offmask, blank 3개의 클래스를 만들고 알집 해제 후 드래그앤 드롭해서 각 주제와 상관 없는 사진들은 삭제 후 학습시킨다. epoch 건들필요 x

위와 같이 마스크를 썻는지, 안썻는지, 필자가 비키게 된다면 blank가 100%로 표시된다. 
그리고 모델 내보내기를 클릭 후 케라스로 모델 다운로드.

3.실시간 처리

그리고 이제 파이참을 킨다.
파이참을 켜서 아래의 주소의 코드를 복사해서 붙여넣는다.
https://github.com/jungjaewoo2842/mask/tree/main

 

GitHub - jungjaewoo2842/mask

Contribute to jungjaewoo2842/mask development by creating an account on GitHub.

github.com

model = tf.keras.models.load_model("/keras_model.h5", compile=False)

이 구문에서 keras_model.h5는 본인이 티처블머신을 다운받은 경로를 넣어주면 된다.그러고 실행하면 프로젝트 완성.4. 리뷰.본인은 파이참이 아닌 구글 코랩으로 실행해서 마지막엔 웹캠 실행을 하지 못하였다. 코랩에서 티처블머신을 이용하지 않고 다운받을 수 있지만 너무 시간이 오래걸리고 퍼센테이지도 티처블머신이 더 좋아서 시간단축과 정확성을 위해 사용하였다. 다음에는 라즈베리파이를 사용하여 좀더 디테일화 시킬 예정이다.