YOLO v3, v5, v8로 책상 위 쓰레기 알아보기

yun·2023년 11월 29일
1

ML/DL

목록 보기
5/9
post-thumbnail

데이터 준비

  • 영상 촬영 후 프레임 추출
  • 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

  • optimizer=auto, lr0=0.01

  • 훈련 결과

  • detect 결과: 비닐/커피컵 일부 구분, 비닐/티슈/쿠키 인식 못하는 경우 있음, 8s와 비슷함

  • 특이사항

    • YOLO v8 아키텍처로 된 YOLO v5 모델
    • 커스텀 도커 환경에서 로컬 GPU로 실행, 학습 도중 killed

의문과 결론

  1. ultralytics 공식 github에서는 YOLOv8의 성능이 더 좋다고 하는데 왜 YOLOv5로 학습한 모델이 인식을 더 잘할까?
  • 공짜 점심 없음 이론
  • 데이터에 따라 좋은 모델이 다르다. 최신 모델보다 이전 모델이 내 데이터에 맞을 수도 있다.
  1. 팀 프로젝트에서 어떤 사람은 YOLO v8 모델을 사용하고 어떤 사람은 YOLO v5 모델을 사용하는데... 배포를 어떻게 하지? 이미지 여러 개 만들면 되나?
  • 방법이 없지는 않지만 프로젝트에서 사용하는 버전을 하나로 하는 것이 좋다. v5를 사용하자.

2개의 댓글

comment-user-thumbnail
2023년 12월 6일

쓰레기 분류라니! 너무 멋져요!

1개의 답글

관련 채용 정보