0817 YOLO 파인튜닝

승주·2024년 8월 17일

손 클래스 뺄지 말지?

  1. 손에 과일을 들고 있는 상황에서 손과 과일 구분하지만,
  • 마스크 정확도는 떨어지는 경우


  1. 잘못된 물체를 손으로 인식
    =>과일을 손에 들고 찍은 사진 외의 상황은 고려하지 않아도 괜찮을듯???



1. test train 관련 설명

  1. yolov8 seg 모델을 커스텀 과일 데이터셋으로 파인튜닝했어. 클래스는 사과, 한라봉, 온주밀감, 배, 감, 사람의 손 6개 클래스고, 손은 과일을 쥔 손을 구분하기 위해 넣었어.
  2. 데이터 정제과정에서 다음의 처리과정을 거쳤어.
    0) yolov8-seg 모델을 학습할 데이터 일부로 파인튜닝해서 마스크 추출함.
    1) 학습 데이터가 흰 배경에 놓여진 과일 이미지이므로, 실제 상황과 비슷하도록 랜덤으로 생성한 배경을 합성
    2) 과일마스크 가장자리에 배경의 흰 픽셀이 학습에 주는 영향을 줄이기 위해 가장자리에서 5픽셀씩 제거.
    3) 과일당 6천장씩 3만장의 이미지에서 3천장의 valid set을 제외하고 2만7천장을 roboflow에서 2배 augmentation해서 총 5만 4천장.
    4) 손데이터는 366장을 3배 augmentation해서 1098장이야. 다른 클래스에 비해서는 부족해.
  1. 테스트 파인튜닝으로 50에폭 25patience를 돌렸는데 30에폭에서 early stopping 했어. 그결과는 다음과 같아
    1) validset에는 손 데이터가 없지만, 새로운 손 데이터로 추론 했을 때 마스크 성능이 떨어져
    2) 과일에 대한 추론 성능 낮음. 특히 valid class loss가 0.3으로 높음. 감을 한라봉으로 추론하는 오류
    3) 과일 마스크 정확도가 조금 떨어짐. 데이터 정제 과정에서 흰 배경 픽셀 제거를 위해 5픽셀씩 제거한 것, roboflow로 회전 등 증강한 것을 원인으로 생각 중이야.

2. 질문 및 답변

  1. 테스트 추론 결과 얼굴이나 다른 사물을 손으로 잡음
    => 손클래스를 삭제하고 과일에 대한 성능 향상에 집중하는 게 나을지?

    • 장점: 손 클래스는 데이터가 부족하고, 얼굴이나 다른 사물을 손으로 오인식하는 문제가 있음을 고려할 때, 손 클래스를 제거하고 과일 인식에 집중하면 전체적인 성능을 향상시킬 가능성이 큽니다. 과일 클래스에 더 많은 리소스를 투입할 수 있게 됩니다.
    • 단점: 손 클래스를 제거하면 손과 과일을 동시에 잡는 경우에 대한 처리가 어려워질 수 있습니다. 만약 손의 존재가 중요한 요소라면, 데이터 증강을 통해 손 클래스 데이터를 늘리는 것이 좋을 수도 있습니다.
  2. 흰색 배경 제거 위해 바깥 5픽셀을 뺌. 그래서 마스크 경계를 잘 못 잡을 수도 있을 듯. + 현재 랜덤배경,5픽셀 제거 데이터에 다음의 데이터를 추가 - 흰 배경에 가장자리 5픽셀을 제거하지 않은 데이터도 (예시) 3만장 추가한다.
    => 실제상황에서 흰 픽셀 없으면, 최대한 경계가 잘 나온 흰픽셀 없는 데이터 사용하라고 함. (추론 결과 보면 괜찮은 것도 있어서 경계 문제는 우선순위 아닐 듯)

  3. roboflow 증강 말고 yolo 파라미터를 활용해 augmentation을 적용한다 => 같은 과일 사진을 증강하는 것보다, 다른 과일 사진을 활용하는 것이 나을 듯, 그리고 roboflow에서 업데이트 해서인지 마스크가 묘하게 안맞아 보임
    => O Yolo 증강 사용, 다른 데이터 사용

4. 흰 배경의 데이터도 추가하는 게 나을지?

  1. 테스트용이라 나노 모델을 사용했는데, m모델을 사용하고 학습 에폭을 증가시키면 나아지는 문제인지 궁금
    => O

일단은 원래 데이터로 학습 .......

3. 수정해야 하는 부분

  1. 손 데이터 삭제/유지/추가?

  2. 과일 데이터 추가

    • 목적 ; 같은 사진을 augmentation으로 증강시키기보다 다른 사진을 사용, yolo에서 augmentation적용
    • temp 폴더(백업:drive/Data_Aihub_fruit)에서 3만장 추가 (aihub trainset에서 나눈 것)
    • 과일 6만장 (54000 : 6000)
  3. 추가한 과일 데이터 전처리

    • 추가 3만장 어노테이션
    • 추가 3만장에 랜덤 배경합성 (흰배경보다 실제와 비슷한 랜덤배경)
  4. yolo argument 설정

    model.train(
    auto_augment = 
    hsv_h 
    hsv_s
    hsv_v
    erasing 
    mixup
    mosaic
    )

    다 하기

  5. yolov8m-seg 모델로 파라미터 수정.

참고 자료

멘토님코멘트

배치사이즈는
지금쓰시고 계신 파라미터 살펴보고
개선방안이 있을지 먼저 좀 확인해볼게요

  1. 모델 학습이 느리다. 성능좋게 파라미터 튜닝 => 코드 살펴볼것
  2. 밀감/한라봉 분류 잘 안됨 => 이건 결과에 따라 분석리포트에 기입하면 좋을것같음
  3. 감/한라봉

0개의 댓글