2017년 2월 1일 수요일

BossSensor - 얼굴 화상 인식을 이용한 월급 루팡 프로그램을 직접 실행해보았다. (수정내용 첨부)


점심시간이 끝나고 지루한 오후...

우리 팀에서 제일 재밌는 분이 팀 단체 쪽지를 보냈다.

쪽지 : 케이! 케이!! 이것 좀 만들어줘!!!"

나 : ㅋㅋㅋㅋ

----------------------------

오늘의 유머 사이트
제목 : 월급 루팡을 하려는 프로그래머

내용을 보았다.






최근에 업무차 OpenCV와 딥러닝을 공부하고 있던 입장에서 흥미로운 내용이었다.

내용은 단순하게 보면 Face Recognize 샘플인데 가까운데,
저런 재밌는 아이디어를 생각만으로 끝내지 않고, 실제로 만들어서 실행했다는게 큰 차이.

잉여력 방출은 언제나 재밌고 즐겁다.

원문 블로그는 여기
http://ahogrammer.com/2016/11/15/deep-learning-enables-you-to-hide-screen-when-your-boss-is-approaching/

(블로그 주소 이름이 무려 아호그래머다;;; あほ=멍청이,
똑똑하게 삽질하는 멋진 블로그인듯... >_<! 이런 것 너무 좋다.)

--------------------------

처음부터 만들까 하다가 원작자가 소스를 오픈해 둔 터라
시간 절약 + 재미로 바로 실행해볼 요량으로 달려들었다.

원문 블로그에 공개한 보스 센서 오픈소스 GitHub


최근까지도 수정되고 있는 소스지만..
당연히 그대로 실행될리가 없지.

에러 메시지를 하나씩 확인하며 해결해 나가기 시작했다.

필요한 라이브러리나 그 외 환경 세팅하는 시간이 오히려 꽤 걸리기 시작하면서

그렇게 야근이 시작되었다. ㅋㅋㅋㅋ

누군가 해보고 싶은 사람에게 도움이 되도록 결과 자료를 남긴다.



--------------------------

# 실행한 환경

- 맥북프로 2016 15 Late
- iSight MacBook 내장 웹캠
- macOS Sierra 10.12
- Anaconda (Miniconda3)
- OpenCV3

IDE 는 Pycharm

※ 검증해보지는 않았지만, Windows 에서도 동작하지 않을까?

# 설치된 Python Library Version
직접 검증한 최신 버전의 라이브러리들

h5py (2.6.0)
Keras (1.2.1)
mock (2.0.0)
numpy (1.12.0)
pbr (1.10.0)
pip (9.0.1)
protobuf (3.2.0)
PyYAML (3.12)
scikit-learn (0.18.1)
scipy (0.18.1)
six (1.10.0)
sklearn (0.0)
tensorflow (0.12.1)
Theano (0.8.2)

------------------

# 문제 해결 1-2-3

1. PyQt4 설치가 안된다. (macOS Sierra)
brew install pyqt4 가 안된다!!!
구글링 해도 답이 없어 찾아보니 os 버전이 최신이라서 그런듯...

어디서 사용하나 코드를 보니 굳이 PyQt4일 필요는 없더라.
 PyQt5를 설치하고, 스크린 관련 코드를 4에서 5로 새로 옮겨준다.
이 작업은 조금 귀찮은 정도. 다른 이를 위하여 내 GitHub 포크에 업로드 해두었다.

덤. PyQt5 를 아나콘다로 설치하기
사용할 환경으로 소스를 바꾼 뒤
> conda install pyqt

2. requirements.txt 에 필요한 라이브러리가 설치가 안된다.
파이썬 라이브러리 목록과 버전이 잘 정리되어 있긴 한데,  해당 버전으로 설치할 수 없는 라이브러리 패키지가 있다.

예를 들면 tensor flow 0.10.0...
이 때문인지 keras도 조금 문제가 생기는데, 이것도 최신 버전으로 설치하자.
예전 버전 그대로 두면 사진 트레이닝 할 때 트러블이 있다.
requirements.txt 도 수정해서 내 GitHub 포크에 업로드 해두었다.

3. model 데이터를 저장할 경로를 미리 만들어줘야 한다. 
하위 경로로 미리 ./store/ 폴더를 만들어두면 오류가 없다.
내 GitHub 포크에는 미리 생성해두어 해결했다.

4. 모델데이터를 새로 생성할 때는 기존 모델 파일을 삭제할 것
boss_train.py를 이용하여 모델데이터를 학습하면 ./store/model.h5 가 생성되는데,
새로 학습시킬때 이 파일을 생성하기 전에 미리 지워줄 것 (덮어쓰기 오류 남)
덮어쓰게 수정 하려다가 이건 귀찮아서 패스...

5. 얼굴 인식률이 떨어진다.
다양한 각도로 약 500 - 1200 장 정도 학습을 시켜야 한다.

# GitHub Fork Repository

GitHub Fork 해서 수정한 내용 커밋해두었다.
혹시 오리지널 GitHub 출처에서 실행이 어려운 분이나
내가 수정한 내용이 필요하신 분은 아래의 경로에서 다운을...

https://github.com/prscu24/BossSensorPyQt5


# 실행화면 영상
내 얼굴을 학습 시킨 후, 비상 이미지는 실행되지 않게 하여 실행.
카메라 근처를 어슬렁거려보았다.




# 마무리

학습 데이터가 부족해서 인식률은 떨어지지만
원래 목적인 경고의 의미로는 나쁘지 않은 동작을 보인다.
 - 인식률이 나쁘면 보스가 출몰하지 않았는데도 나왔다고 오인식을 해버리는 문제가;;;
그리고 사장님 얼굴을 양해하지 않고 그렇게나 많이 모을 수 있을까?
이것은 고양이 목에 방울을 다는 상황이 생각난다.

거기다가 실행 비용도 커서 항상 실행해두기는 좀 부담되는 정도 ^^;; (CPU 사용률이...)

학습용으로 토이용도로 재밌게 사용해보면 될 것 같다.

<오늘의 삽질 !>

댓글 없음:

댓글 쓰기