데이터 준비
- 영상 촬영 후 프레임 추출
- Labeling & Augmentation: Roboflow

- data.yaml
path: /home/yoh/dev_ws/yolo/mydata/
train: train
val: valid
test: test
nc: 7
names: ['coffee_cup', 'coffee_no_trash', 'cookie', 'paper', 'plastic', 'tissue', 'vinyl']
- 클래스
- 커피컵
- (쓰레기 아닌) 커피컵
- (쓰레기 아닌) 쿠키
- 종이
- 플라스틱
- 티슈
- 비닐
YOLO v3
베이스 모델: yolov3-tiny
- 훈련 결과


- detect 결과: 쿠키를 비닐로 잘못 인식, 티슈는 인식 못함

YOLO v5
베이스 모델: yolov5n / SGD / epochs 100
- 옵션 따로 설정하지 않음
- train.py 기본값 확인 시 optimizer=SGD, lr0=0.01, imgsz=640
- 훈련 결과


- detect 결과: 쿠키 인식 ok, 티슈도 비닐로 인식

베이스 모델: yolov5n / Adam / epochs 300
- 훈련 결과


- detect 결과: 쿠키를 비닐로도 인식함, 커피컵 인식 못함

학습을 더 열심히 했지만 결과가 더 나쁜 슬픈 상황이 실제로 있다
YOLO v8
베이스 모델: yolov8n
- optimizer=Adam, lr0=0.001
- 훈련 결과


- detect 결과: 쿠키 인식 못함, 티슈/비닐/커피컵 구분 ok

- 특이사항: 코랩
베이스 모델: yolov8s
- optimizer=SGD, lr0=0.001
- 훈련 결과


- detect 결과: 비닐/커피컵 일부 구분, 비닐/티슈/쿠키 인식 못하는 경우 있음 => 8n보다 인식을 더 못함

- 특이사항
- 커스텀 도커 환경에서 로컬 GPU로 실행
- yolov8-l 모델 학습도 했던 PC인데 yolov8-s 학습 도중 killed됨
베이스 모델: yolov5su
의문과 결론
- ultralytics 공식 github에서는 YOLOv8의 성능이 더 좋다고 하는데 왜 YOLOv5로 학습한 모델이 인식을 더 잘할까?

- 공짜 점심 없음 이론
- 데이터에 따라 좋은 모델이 다르다. 최신 모델보다 이전 모델이 내 데이터에 맞을 수도 있다.
- 팀 프로젝트에서 어떤 사람은 YOLO v8 모델을 사용하고 어떤 사람은 YOLO v5 모델을 사용하는데... 배포를 어떻게 하지? 이미지 여러 개 만들면 되나?
- 방법이 없지는 않지만 프로젝트에서 사용하는 버전을 하나로 하는 것이 좋다. v5를 사용하자.
쓰레기 분류라니! 너무 멋져요!