- 클래스 당 250장 데이터셋에 웹 캠으로 촬영한 이미지 각 클래스 당 100장 + 알약이 아닌 객체(단추 등)을 110장 추가하여 약 1110장을 추가하여 yolov5n(epoch 500), yolov5s(epoch 1000)학습을 진행. mAP는 0.7~0.8 사이로 안정적으로 나왔으나 테스트 이미지 중 아진팜을 유독 다른 클래스로 예측하는 문제 발생.
위 문제는 사실 웹 캠 이미지를 추가하기 전부터 있었던 문제였음.
유독 아진팜 이미지의 예측 결과만 좋지 않아 멘토링과 회의를 통해 문제를 탐색한 결과, 구글 드라이브에 저장된 학습 결과 디렉토리에 있는 labels.jpg를 통해 원인으로 추정되는 요소를 발견함.
학습시 다른 클래스들은 약 1400장 정도가 학습에 적용되는 반면, 아진팜은 200장 정도로 확연히 낮은 수의 이미지만 적용되는 문제 발생. 이를 해결하기 위해 not_pills 클래스의 이미지를 삭제하였는데, 이렇게 한 이유는,
다른 클래스들은 평균 700장 정도인 반면 not pills 이미지는 110장으로 데이터 불균형이 발생. roboflow에서 augmentation을 해준 후라고 해도 110장이었던 데이터가 위 이미지처럼 1400장까지 늘어난게 이상했다.
사실 확실한 이유라고 단정지을 수는 없음.
실험적으로 다시 not pills 데이터를 삭제하고 10 epoch만 학습을 진행한 결과, 해결이 되었기 때문에 not pills 클래스가 아진팜 클래스 데이터 누락의 원인이라고 결론.
해당 클래스 삭제 후 아진팜을 예측하지 못했던 문제가 해결되는 듯 함.
결론: 정확한 원인은 모르겠지만 데이터 불균형이 학습 결과에 큰 영향을 미친다는 것을 몸으로 깨우침. 기회가 된다면 not pills 클래스를 삭제한 게 어떻게 해결 방법이 된 건지 정확한 이유를 알아봐야할 것 같다.
해야할 일: epoch를 늘려 모델의 성능 개선