Darkflow를 활용한 YOLO 실습/ Yolo v2 학습
학습의 목적
: 딥러닝 객체 인식기술을 사용하여 데이터를 바탕으로 과일의 색상, 흠집, 크기를 카메라로 실시간 인식하여 과일의 이름과 등급에 대한 시각적인 정보를 얻고 TTS를 기능을 추가하여 과일에 대한 정보를 음성으로 제공하는 서비스
라는 목적으로 프로젝트를 시작하긴 했지만 사실 그냥 단순히 딥러닝이라는 프로젝트를 해보고 싶었다. 무작정 뛰어든 샘이다. 하지만 사전조사와 철저한 아키텍처에 대한 고민이 없었기 때문에 당연히 잘 안됬다. 그래도 한을 풀어서 만족.
실습 환경 및 버전
conda | 4.8.3 py37_0 |
jupyterlab_server | 1.0.6 |
opencv-python | 4.2.0.32 pypi_0 pypi |
numpy | 1.16.6 |
tensorflow | 1.13.1 |
python | 3.7.6(경로 사용시 ' / ' 사용 ' \ ' 사용불가) |
tensorflow | 2.1.0 -> 1.13.1(텐서플로우의 라이브러리 전성기 시절로 맞춰줘야한다. 그만큼 쓸만한 오픈소스가 많다.) |
이제 학습을 시작하지
Anaconda Prompt 실행시 사용한 명령어
: 학습시킬 사진이 있는 폴더로 경로를 맞춰준다. 경로 설정시 상대,절대 경로를 잘 보고 적용해야한다.
python flow --model ./cfg/my-tiny-yolo.cfg --labels ./labels.txt --trainer adam --dataset /data/dataset/ --annotation /data/annotations/ --train --summary ./logs --batch 5 --epoch 100 --save 50 --keep 5 --lr 1e-04 --gpu 0.5 --load -1 |
과일인식중..
thershold를 0.03을 줬지만 갈곳 잃은 bounding box.. 사진 갯수와 퀄리티의 문제인것 같다!!
학습이 완료된 사진들은 설정한 경로에 따로 폴더가 만들어지기 때문에 거기서 확인하면된다.
안드로이드 연동
안드로이드에서 YOLO 설정
최최종
프로젝트 못 찾겠습니다.. 제공 못해드려요!!
레퍼런스 확인 하여 작업 하시면 됩니다!!
일의 정보를 인식하는 단순 과정으로는 사실 위와 같이 하면 되는데 흠집이나 크기 그리고 색깔을 제대로 인식하려면 더 많은 노고가 필요하다.
★ 크기 같은 경우는 1. 카메라 여러대 2. 전문 카메라 3. AR 기능등을 이용해야 했는데 안드로이드와의 연동성을 고려하지 못함 그래서 영상기하학을 이용하여 비교 물체에 대한 데이터를 넣어두고 비례식으로 측정하여 물체의 크기를 가늠하려고 했는데 잘 안됨
+ 사진 왼쪽 위에 보이는 standard_height,x_height가 그 흔적..
★ 흡집도 학습시킬 때 흠집만 따로 인식하기도 실패..
+ 나중에 조언을 구한 바로는 안드로이드 API를 건드는게 아니라 파이썬 API 자체를 건드려서 흠집이나 색깔에 대한 짙은 정도? 를 선별해야 한다고 하셨는데 .. 사전조사를 하지 않고 뛰어든 최후
그래도 학교 프로젝트로 규모있는 API를 작업해볼 수 있어서 정말 의미 있었고 다음부턴 프로젝트에 대한 사전조사를 철저히 할 것을 X100 정도 다짐한것 같다. 혹시 이런 과제를 하시려는 분들께 앞서 말했던 부분들을 꼭 고려해보시길 바란다
Main Reference
YOLO 학습
데이터를 모아서 YOLO 분석하는 과정은 아래 블로그를 참고하였습니다.
Darkflow를 활용하여 YOLO 모델로 이미지 디텍션 구현(윈도우 환경)
나의 데이터를 이용해 YOLO 모델을 학습시키기
junyoung-jamong.github.io
안드로이드 적용
YOLO로 분석된 파일을 안드로이드에 적용시키는것은 아래 블로그를 참고하였습니다.
Android에서 내가 학습한 YOLO 모델을 이용해 Object Detection 구현하기
TensorFlow를 기반으로 학습한 모델은 가중치 정보를 포함하는 파일로 변환하여 다양한 플랫폼에 적용할 수 있다. Darkflow 역시 TensorFlow를 기반으로하기 때문에 Darkflow를 이용해 학습한 모델을 여러
junyoung-jamong.github.io
라이브러리 1 (프로젝트 초반 테스트용)
앞에 나열되어 있는 두 개의 포스팅에서 사용하신 라이브러리
GitHub - tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone
An Open Source Machine Learning Framework for Everyone - GitHub - tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone
github.com
라이브러리 2 (프로젝트 최종프로젝트 적용)
YOLO V2 전용 라이브러리를 찾아 최종 프로젝트까지 진행하였습니다.
GitHub - szaza/android-yolo-v2: Android YOLO real time object detection sample application with Tensorflow mobile.
Android YOLO real time object detection sample application with Tensorflow mobile. - GitHub - szaza/android-yolo-v2: Android YOLO real time object detection sample application with Tensorflow mobile.
github.com