Augmentation for small object detection

2019. 5. 18. 20:37관심있는 주제/OCR

728x90

최근에 OCR을 공부를 해야 해서, 일단 논문은 거의 안 읽고.... 일단 구현하고 Pretrained 하는 데 초점을 맞추고 있는데요.

 

실제로 타겟이 굉장히 작은 것들이 포함되어있어서 얘네들이 이미 가진 툴에서 너무 작아서 없애버리는 기분을 느껴서 찜찜하고 애네를 어떻게 Augumentation을 해야 하나 찾다고 우연히 이 논문을 발견돼서 읽어보기로 했습니다.

 

여기서는 MS COCO 데이터를 사용하고 실제로 머 확인을 해보니  작은 Ground-truth 객체와 예측을 한 것에서 threshold가 굉장히 낮다고 합니다. 

 

이 저자들은 2가지로 추측했다고 합니다.

  1. 작은 이미지 만이 작은 개체를 포함하고 있으며,
  2. 작은 개체가 포함 된 각 이미지 내에서도 충분히 나타나지 않습니다.

그래서 제안한 방법은 다음과 같습니다 (구글 번역)

We thus propose to oversample those images with small objects and augment each of those images by copy-pasting small objects many times. 우리는

작은 물체로 그 이미지를 과다 샘플링하고 작은 물체를 여러 번 복사하여 붙여 넣음으로써 각 이미지를 보완하도록 제안합니다.

이렇게 함으로써 작은 객체와 큰 객체의 탐지의 퀄리티를 trade off 할 수 있게 된다고 합니다.

그래서 자기네가 instance segmentation에서 9.7% 향상했다고 하네요. 그리고 다른 최신 기술에 대해서  작은 객체 탐지를 7.1% 늘렸다는데 기대가 됩니다.

 

https://medium.com/hyunjulie/1%ED%8E%B8-semantic-segmentation-%EC%B2%AB%EA%B1%B8%EC%9D%8C-41 80367ec9cb

 

위에 이러한 개념에 대해서 잘 정리한 것 같으니, 저도 읽어보겠습니다 ㅎㅎㅎ

 

현재 Instance Segementation에 대해서는 아직 뭔가 부족하다고 합니다.  작은 객체에 대한 탐지가 아직은 부족하다고 합니다. 

여기서 왜 자꾸 중요하다고 하나면, 만약에 자율주행 자동차에서 멀리 있는 물체에 대해서 인식을 해야 하는데, 그때는 작은 객체다 보니 그것을 탐지하지 못하게 되면 앞에 머 불이 났을 수도 있고 그러한 것들을 빠르게 탐지하지 못한다는 중요한 이슈가 있다고 합니다.  이런 것은 외과에서도 작은 종양을 탐지하는 부분에 대해서 중요하고요.

머 위성에서도 탐지를 할 때도 꼭 필요한 부분이죠?

 

그래서 저자들은 작은 객체에 대한 데이터셋에서 2가지 특정을 확인했다고 합니다.

  1. 실제 데이터에는 작은 객체보다는 큰 객체에 대해서 더 많다 보니 detection model에 편향을 일으킬 수 있습니다.
  2. 작은 객체가 있다 해도 그 영역을 잡는 것이 너무 작습니다. 이것은 작은 객체의 위치의 다양성이 부족하다는 것을 암시한다 합니다.

 

이러한 것에서 첫 번째 이슈는 작은 객체들을 포함하는 이미지를 oversampling 함으로써, 첫 번째 문제를 해결하겠다고 합니다.

두 번째 이슈는 작은 객체를 포함하는 각각의 이미지에서 작은 객체를 여러 개를 복사한다고 합니다. (???ㄸㄷㄷ)

머 대신에 겹치지는 않게 한다고 합니다. 결국 oversampling을 한 이미지에서 한다는 그런 느낌인 것 같습니다. 

이렇게 하면 작은 범위의 위치에 대해서 다양성을 확보할 수 있다고 주장하는 것 같습니다.

이렇게 하기만 해도 Instance Segmentation에서 성능이 9.7%  향상한다고 합니다.

 

 

 

 

이런 느낌으로 복사한다고 하네요. (신) 테니스 왕자에서 공 10개씩 왔다 갔다 치는 게 생각이 납니다...ㅎ

 

MS COCO

COCO data는 이런 식으로 데이터 비율이 있다고 합니다. 

AP is defined as the average of ratios of true positives to all positives, for all recall values. Because an object needs to be both located and correctly classified, a correct classification is only counted as a true positive detection if the predicted mask or bounding box has an intersectionover-union (IoU) higher than 0.5

AP는 모든 리콜 값에 대해 모든 양성 반응에 대한 진정한 양성의 비율의 평균으로 정의됩니다. 객체가 위치하고 정확하게 분류될 필요가 있기 때문에 예측된 마스크 또는 경계 상자가 0.5보다 큰 교차 결합 (IoU)을 갖는 경우 올바른 분류는 참 긍정 탐지로만 계산됩니다

 

일단 데이터를 보면 알 듯이 일단 small object 가 너무 적습니다, 그리고 각 사이즈에서 Total object Area 면적이 1.23밖에 안된다고 합니다.  그래서 이런 데이터셋으로 학습을 하면 작은 객체애 대해서는 Detector가 탐지를 못할 것 같다고 합니다. 

현재 저는 작은 object가 많은 데이터를 눈과 손으로 열심히 그려서 넣은 다음에 안에서 알아서 augumentation 하는 구조로 하고 있는데요. 암튼 그렇습니다 더 읽어보죠

Fig5를 보면 큰 물체에 대해선 anchor가 많이 쳐져 있는데, 작은 물체에 대해서는 쳐져있지 않을 것을 알 수 있습니다.

 

이제 저자가 주장하는 방법론이 나올 것 같습니다.

 

 

 

4 Oversampling and Augmentation

 

작은 객체애 대해서 oversample을 통해서 그 위에 크기에 따른 비율이 맞지 않은 것을 맞춰서 학습하면 잘 되지 않을까라고 주장합니다. 

MS COCO dataset에서 그러한 문제에 대해서 해결하는 것은 쉽다고 합니다. 

 

어떻게 저렇게 샘플링하고 annotation을 해줄 수 있는지 궁금하긴 합니다

 

일단 저렇게 해보기 전에 random transformationdmfh size +- 20% rotate +-15% 했다고 합니다.

이렇게 하다 보니 현실감 없는 데이터가 나왔다고 합니다. 

 

5 Experimental Setup

5.1 Oversampling

작은 객체가 포함되어 있는 이미지를 oversampling 했을 때 영향을 체크해봤다고 합니다. 

5.2 Augmentation

작은 객체 탐지와 segmentation에 사용하는 augumentation의 효과를 확인해본다 합니다. 

3가지 스텝으로 한다고 합니다

  1. 첫 번째 설정에서 각 이미지를 복사하여 붙여 넣은 작은 오브젝트로 작은 이미지로 대체합니다.
  2. 두 번째 설정에서 oversampling을 흉내내기 위해 augmented image을 duplicate 합니다
  3. 마지막 설정에서 augmented 한 이미 와 진짜 이미지를 보존합니다. 

In the final setup, we keep both the original images and augmented images, which is equivalent to oversampling the images with small objects by the factor of two, while augmenting the duplicated copies with more small objects.

 

최종 설정에서 원래 이미지와 증강된 이미지를 모두 유지합니다. 이는 작은 오브젝트로 이미지를 2 배로 오버 샘플링하는 것과 동일하며 더 작은 오브젝트로 복제된 사본을 증가시킵니다.

 

5.3 Copy-Pasting Strategies

2가지 방법이 있는데,

첫 번째는 이미지에서 작은 객체를 뽑아서 랜덤 하게 여러 위치에 복사합니다.

두 번째는 많은 작은 객체를 선택하고 임의의 위치에 이것들을 복사합니다.

마지막으로 각 이미지에서 모든 작은 객체를 랜덤 한 위치에 복사합니다. 

다양한 필터 크기를 갖는 경계의 가우시안 블러 링이 더 이상의 처리와 비교할 때 도움이 되는지 여부를 실험합니다.

( 가우시안 노이지를 줘서 augumentation 하는 결과가 궁금했는데, 실험했다고 하니 기대가 됩니다 ㅎㅎ )

 

6. 결과 그리고 분석

6.1 Oversampling

Table 3에서 실험을 해봤는데요 3배로 했을 때 AP가 증가하는 것을 볼 수 있고 마찬가지로 Detection도 제일 잘 된 것을 볼 수 있습니다.  하지만 반대로 larget object에 대해서는 성능이 떨어지는 trade off가 있는 것을 발견했습니다.

 

6.2 Augmentation

 

Oversampling + 제안한 augumentation으로 했다고 합니다. 해보니

When we replace each image with small objects by its copy that contains more small objects (the second row), the performance degraded notably

각 이미지를 작은 객체 (두 번째 행)가 들어있는 사본으로 작은 객체로 대체하면 성능이 현저히 떨어집니다

이렇다고 하네요  결국 성능은 oversampling 보다는 2개 할바에는 augumentation이 더 낫다고 하네요.

The best results were achieved by combining oversampling and doing augmentation with a probability of p = 0.5 (original+aug) with the ratio of original to augmented small objects is 2:1. This setting yielded better results than oversampling alone, confirming the effectiveness of the proposed strategy of pasting small objects.

 

6.3 Copy-Pasting strategies

결국 Copy Pasting 방식은 Larget Object도 성능을 그렇게 안 떨어 트리면서 small 한 것도 잘 잡아주는 것 같습니다. 

이러한 것에 대해서 2가지 가능성을 의심했다고 합니다.

  1. 모든 작은 객체를 복사함으로써 작은 객체의 기존의 비율이 급속히 감소했을 것이다?
  2. 객체의 수가 각각의 이미지에서 곱해짐으로써 train과 test에  missmatch를 시킨다고 하네요

6.4 Pasting Algorithms

It justifies our design choice to avoid any overlap between a pasted object and existing objects.

AP는 Precison의 평균이기 때문에 정답 중에서 정답을 예측하는 비율이 높으면 높을수록 좋겠죠??

 

 

결론

결국 2가지를 제시했다고 합니다

첫 번째는 oversampling을 통해서 작은 객체의 성능을 높이는 것을 보였다고 합니다.

두 번째는 작은 객체 copy-pasting augmentation algorithm을 제안했다고 합니다. 

 

그래서 코드는?>......

 

일단은 현재 COCO 보다는 내가 해야하는 이미지들이 원래 작은 객체들이 많이 있기 때문에 그걸 그려가지고 하고 있었는데, 그렇게 하면 사실 그리는데 너무 오래 걸려서 울뻔했습니다. 일단

Blurring 한게 좀 효과가 없다고 하니, 그 방법에 대한 고민은 멈추고 oversampling 같은 부분에 대해서 학습을 한번 시켜봐야겠네요.

일단 저 방식으로 하면 성능이 향상된다고 하니 으음,, 코드는 언제 나오려나....

728x90