AIFFELTHON 기록 5

yoon·2022년 6월 6일
0
  • 클래스 당 250장 데이터셋에 웹 캠으로 촬영한 이미지 각 클래스 당 100장 + 알약이 아닌 객체(단추 등)을 110장 추가하여 약 1110장을 추가하여 yolov5n(epoch 500), yolov5s(epoch 1000)학습을 진행. mAP는 0.7~0.8 사이로 안정적으로 나왔으나 테스트 이미지 중 아진팜을 유독 다른 클래스로 예측하는 문제 발생.

위 문제는 사실 웹 캠 이미지를 추가하기 전부터 있었던 문제였음.

  • 아진팜과 같은 주황색 계열의 약인 라니웰과 이지앤식스 에이스를 모델이 서로 헷갈려함.
  • 당시에는 실제 환경인 웹 캠으로 촬영한 이미지가 아니기 때문에 웹 캠 이미지를 추가로 학습하고, rank 기능을 추가하여 어느정도 해결될 것으로 예상하였으나, 다른 문제가 발생.

1. 아진팜의 라벨 누락 문제

유독 아진팜 이미지의 예측 결과만 좋지 않아 멘토링과 회의를 통해 문제를 탐색한 결과, 구글 드라이브에 저장된 학습 결과 디렉토리에 있는 labels.jpg를 통해 원인으로 추정되는 요소를 발견함.

학습시 다른 클래스들은 약 1400장 정도가 학습에 적용되는 반면, 아진팜은 200장 정도로 확연히 낮은 수의 이미지만 적용되는 문제 발생. 이를 해결하기 위해 not_pills 클래스의 이미지를 삭제하였는데, 이렇게 한 이유는,

  • 다른 클래스들은 평균 700장 정도인 반면 not pills 이미지는 110장으로 데이터 불균형이 발생. roboflow에서 augmentation을 해준 후라고 해도 110장이었던 데이터가 위 이미지처럼 1400장까지 늘어난게 이상했다.

  • 사실 확실한 이유라고 단정지을 수는 없음.

  • 실험적으로 다시 not pills 데이터를 삭제하고 10 epoch만 학습을 진행한 결과, 해결이 되었기 때문에 not pills 클래스가 아진팜 클래스 데이터 누락의 원인이라고 결론.

    2. not pills 데이터 삭제 후

  • 해당 클래스 삭제 후 아진팜을 예측하지 못했던 문제가 해결되는 듯 함.

    • not pills 클래스 삭제 전

      아진팜을 라니웰로 인식하고, confidence score도 확인했을 때(2번 클래스가 아진팜),

      3번 클래스인 라니웰로 예측하고 정답인 아진팜의 confidence score가 9위로 기록됨.
      확실히 뭔가 잘못되었다.
    • not pills 클래스 삭제 후

      epoch 10번만 하였는데도 아진팜을 예측하기 시작함. 초록색 바운딩 박스로 타이레놀 클래스도 예측하긴 하지만 이는 학습을 더 진행하면 해결될 것으로 생각된다.

결론: 정확한 원인은 모르겠지만 데이터 불균형이 학습 결과에 큰 영향을 미친다는 것을 몸으로 깨우침. 기회가 된다면 not pills 클래스를 삭제한 게 어떻게 해결 방법이 된 건지 정확한 이유를 알아봐야할 것 같다.

해야할 일: epoch를 늘려 모델의 성능 개선

profile
공부하자

0개의 댓글