1. 이미지를 얻기위해 Google의 이미지 검색 API를 사용하고자 했지만, 해당 API 서비스가 종료되어 다른 방법을 찾아보려 한다.
2. 그 전에 파이썬으로 직접 구글 이미지 검색 결과를 크롤링 하여 URL을 통한 검출이 가능한지 테스트하기위해 오픈소스인 food-detector모델을 사용해보았다. 그 결과는 성공적이었다. 콘솔 창 내에서 banana라고 검색하면 자동으로 구글에서 banana키워드를 검색하여 바나나 이미지를 검출하는 모습이다.
3. 하지만 위에서 사용한 food-detector모델은 음식 class의 개수가 매우 부족했다. 해당 알고리즘의 코드를 분석한 결과 mxnet과 gluon을 사용했으며, model_zoo를 통해 yolo3_darknet53_coco모델을 가져와서 사용한다는 것을 확인했다.
해당 링크를 통해 yolo3_darknet53_coco모델 안에 어떤 것들이 학습되어 있는지 볼 수 있다.
즉, banana가 미리 학습되어 있고, base_classes에 banana를 지정했기 때문에 위 알고리즘을 통해 바나나를 검출할 수 있었다.
4. 위의 모델은 음식 클래스가 매우 부족했기에 앱에 적용하기 위해서는 음식이 많은 다른 모델을 사용하거나 직접 모델을 만들어야 한다. 우선 다른 모델을 찾아보았지만, 다른 오픈소스 또한 기존의 yolo로 학습되어 있는 모델과 ResNet-50_v2로 직접 학습시킨 모델 두가지를 활용하신 것 같았다.
5. 다양한 블로그를 참고하며 custom model 생성 방법에 대해 공부했다. YOLO의 속도가 타 모델들에 비해 빠르다는 것을 알고, YOLO모델 생성을 위해 데이터 라벨링 후 학습하는 과정을 조사해왔다.
6. 데이터 셋은 Kaggle의 food101, AIHub사이트의 한국 음식 이미지 등이 있었다.
확보한 데이터에 직접 bounding box를 생성해 전처리를 해보았다.
좋은 결과를 위해서는 꽤많은 음식 이미지를 학습시켜야 했으며,
수많은 종류의 음식을 하나하나 라벨링하는 작업은 기간 내에 프로젝트를 끝내는 것이 불가능 하다고 판단했다.
7. 이때 팀원이 Food256데이터를 발견했다. 256가지 음식에 대해 미리 라벨링이 되어있는 이미지였다.
안드로이드 앱에 탑재하기 가벼운 YOLO tiny모델을 사용해 약 일주일간 학습시켰다.
'Project > Capstone' 카테고리의 다른 글
[졸업작품 프로젝트] 애플리케이션 완성하기 (0) | 2021.11.13 |
---|---|
[졸업작품 프로젝트] 갤러리의 모든 사진 중 음식 이미지만 보여주기 (0) | 2021.11.13 |
[졸업작품 프로젝트] 애플리케이션에 모델 탑재하기 (9) | 2021.11.13 |