AIFFELTHON 기록2

yoon·2022년 5월 23일
0

YOLOv5

  • 기존 데이터셋에서 epoch 당 수행 속도가 너무 오래걸리는 문제점이 있었고, train.py 실행 시 이미지 corrupt 경고가 전체 데이터셋에 걸쳐 발생하는 문제가 있었음.

    • 멘토링 결과 데이터셋의 볼륨을 줄이라는 조언이 있었음: 클래스 당 500장에서 250장으로 축소 후 학습을 시도하였지만, corrupt 경고 문제는 계속됨.
      • 생각되는 원인으로는 기존 로컬 환경에서 단순히 라벨 파일과 넘버링만 맞춰준 후, 압축하여 구글 드라이브에 업로드하는 과정에서 이미지 파일에 손상이 발생했을 것으로 생각됨.
      • 따라서 roboflow에서 이미지를 전부 업로드 한 후, 모든 이미지의 사이즈를 640x640으로 전처리하고 구글 드라이브에 업로드 한 후 corrupt 경고가 해결되었고, 학습 속도가 빨라짐.
  • yolov5n, yolov5s에서 다양한 epoch(30~300) 수행 후 도출된 mAP를 엑셀에 기록

    • 두 모델 간 mAP의 차이가 미미함.

      • yolov5n에서 가장 높은 mAP(class당 250장, epoch: 100)

        • train = 0.762
        • val = 0.764
        • 이후 mAP 감소
        • 최고 수치를 기록한 mAP에서 테스트한 이미지. 정답 라벨은 Hardico지만 Tylenol로 인식
      • yolov5s에서 가장 높은 mAP(class당 250장, epoch: 100)

        • 단, yolov5n에서는 클래스 당 250장으로 수행했지만 1 epoch 수행 시간이 빨라 다시 클래스 당 500장으로 학습 수행.
        • train = 0.767
        • val = 0.753(epoch: 100) 단, epoch 150에서 0.766
        • 테스트 이미지
      • mAP는 낮지 않은 수치지만 test image에서 좋은 성능을 보이지 않음. 따라서 다른 해결 방법을 탐색.

  • 기존 이미지 데이터셋은 train 단계에서 augmentation hyper parameter를 조절하여 augmentation 수행하였는데, roboflow에서 augmentation을 수행하여 데이터셋을 증량하고 재구축.

    • 수행한 augmentation: Rotation, Brightness, Blur, Mosaic

    • yolov5n에서 epoch: 100으로 수행한 결과 mAP는 train에서 0.641, validation에서도 0.641 기록

      • 낮은 수치지만 웹캠에서도 약의 영역을 특정함(이전 모델에서는 특정X).
      • 테스트 이미지
      • augmentation 데이터셋으로 yolov5n, yolov5s 모델 각각 epoch 100, 200, 300으로 수행하고 mAP 테이블 작성 및 테스트 수행 중에 있음.
  • 이후 계획

    • 모델 성능 개선을 위한 시도
    • 입력 이미지 전처리 파이프라인 구축: 학습 데이터셋의 사이즈와 입력 이미지 사이즈를 통일하기 위한 전처리 필요.
    • 위, 아래에서 찍은 이미지를 어떻게 OCR 파트로 넘겨줄지에 대한 고민
profile
공부하자

1개의 댓글

comment-user-thumbnail
2023년 3월 3일

안녕하세요. 유사한 프로젝트를 진행중인 학생입니다. 저희도 알약을 YOLOv5를 이용해서 이미지처리를 하고 싶은데 어떻게 시작해야할지 모르겠어서,, 댓글 남깁니다. 몇가지 질문해도 괜찮으실까요?

답글 달기