Bounding Box 마다의 Augmentation에 회전을 사용하면 Box가 커졌으므로, 차이가 있는지 비교해 보았다

개요



요 전날 Aumentation의 라이브러리인 imgaug를 이용해 Bounding Box마다의 Augmentation을 행하고 있었을 때, rotate(회전)를 사용하면 Bounding Box가 커지는 것을 알았기 때문에, 확실히 어노테이션한 것과 차이가 있는지 비교해 보았습니다.

한 일



  • LabelImg 을 사용하여 주석.

  • imgaug 을 사용하여 Bounding Box 당 이미지를 Aumentation.
  • Augmentation한 화상에 대해서, 다시 어노테이션을 실시해 어노테이션 정보를 변경한 학습용 데이터와, 변경하고 있지 않은 학습용 데이터의 2개를 준비.
  • 각각 Keras의 YOLO-v3 을 사용하여 학습, 예측.

  • 데이터 정보



    학습은 Kaggle의 Datasets에서 Blood Cell Images JPEGImages에 저장된 백혈구 이미지를 사용했습니다.

    백혈구는 기본적으로 다음 5종류로 분류됩니다. 이번에는이 5 종류의 분류, 검출을 실시하고 있습니다.


    백혈구 이름
    이미지
    확장 전 매수


    호중구(NEUT)

    205장

    림프구(LYM)

    32장

    단구(MON)

    16장

    호산구 (EOS)

    50장

    호염기구 (BAS)

    7장


    (정말로 이 분류에서 옳은지 수상한 이미지는 깎거나, 매수가 적은 호염기구는 주워 온 이미지를 몇 장인가 추가하고 있습니다)

    Augmentation



    이번에는 화상이 각 500장씩이 되도록, 이하의 종류의 Aumentation을 실시했습니다.
    seq = iaa.SomeOf(4, [iaa.Affine(rotate=(-45, 45)),
                         iaa.Fliplr(0.5), 
                         iaa.Flipud(0.5),
                         iaa.GaussianBlur(sigma=(0.0, 1.0)),
                         iaa.ContrastNormalization((1, 1.5), per_channel=0.7),
                         iaa.Dropout(p=(0, 0.03))
                     ])
    

    이런 느낌이 들었습니다.


    확장 전
    다시 주석이 달린 이미지
    다시 주석이 달린 이미지







    가장 오른쪽이 Bounding Box마다 Aumentation한 이미지입니다만, 회전시킨 경우, Bounding Box가 커지고 있는 것을 알 수 있습니다.

    결과



    테스트 이미지는 위와 같이 Kaggle의 Datasets에서 Blood Cell Images의 TEST_SIMPLE에 저장된 이미지를 사용했습니다.
  • 재주석 된 학습 데이터의 경우
  • 재주석이 없는 학습용 데이터의 경우

  • 분류 결과는 동일했지만 일부 이미지에서는 Bounding Box에 약간이지만 차이가 보였습니다.





    왼쪽이 재어노테이션한 학습용 데이터를 이용한 경우, 오른쪽이 재어노테이션하지 않은 학습용 데이터를 이용한 경우입니다.
    위의 이미지는 왼쪽의 Bounding Box에 비해 오른쪽의 Bounding Box는 조금 작아지고(Bounding Box에서 백혈구가 튀어나와 있다), 아래의 이미지는 반대로 Bounding Box가 커져 있었습니다.

    요약



    이번 결과에서는 Bounding Box에 약간의 차이는 있었습니다만, 분류나 Bounding Box의 위치에는 문제는 없었기 때문에, 개인적으로는 그다지 신경쓰지 않아도 좋을까라고 느꼈습니다.

    좋은 웹페이지 즐겨찾기