새소식

Study/Paper_review

[IJCNN] ObjectAug: Object-level Data Augmentation for Semantic Image Segmentation 논문 리뷰

  • -
728x90

semantic segmentation을 위한 object-level의 데이터 증강 논문에 대한 리뷰입니다. 

1. Intro

 semantic segementation은 인공지능에 학습시키기 위한 데이터를 충분히 마련하기가 쉽지 않습니다. 전통적으로 data augmentation을 위해 random rotation, random scaling, random cropping 등이 사용되고 이런 방법들은 vision task를 위한 모델 성능을 개선시켜 줍니다. 하지만 cutout 같은 방법의 경우, 이미지와 배경이 결합됩니다. 아래 사진처럼 처리한 이미지는 데이터를 증강하더라도 정확한 GT를 가지고 있다고 보기 어려울 수 있겠죠. 

출처: t.ly/NP4-, figure 2.

 이 논문에서는, 이미지에서 object 과 background를 분리시켜 object만을 증강시키는 방법을 제시하고 있습니다. 이 방법은 원래 이미지의 annotation을 사용할 수 있고, background가 고정되어 있어도 object를 자유롭게 배치시킬 수 있도록 합니다. 또한 category-aware augmentation이 더 쉬워집니다. 

2. 관련 연구

 기존의 augmentation method는 전통적인 augmentation과 DNN-orientated augmentation 두 가지로 나눌 수 있습니다. 이 논문에서는 DNN-oriented augmentation method 중 인기 있는 방법인 CutOut과 CutMix와 비교할 예정입니다. 

3. Method

(수학 공부 좀 평소에 열심히 해둘 걸 싶은 페이지입니다.)

출처: t.ly/NP4-, figure 3.

전체적인 흐름을 figure 3을 보시면 참고하실 수 있습니다. 흐름은 4가지 모듈 -  image parsing, object augmentation, background inpainting,  image assembling -로 이루어져 있습니다. 

 1) Image parsing

 image parsing은 segmentation annotation을 사용해 이미지로부터 물체를 추출해냅니다. 한 픽셀이 한 개의 물체게 대응되도록 만든 binary mask를 아래와 같이 연산하면 background mask도 만들 수 있습니다. 

$  \sum_{k=1}^{n} \textbf{M}^k = 1, \ \ \ \textbf{M}^n = 1-\sum_{k=1}^{n-1} \textbf{M}^k  $

2) Object augmentation

 전통적인 data augmentation 방법들인 scaling, rotation, shifting, flipping, brightening 등을 각각 $ f_{1}, f_{2}, ... , f_{m} $ 이라 하고, 적용할 확률을 $ textbf{P} = [ p_{1}, p_{2}, ... , p_{m}] $이라고 표시하면, 순서대로 수행된 augmentation function을 $ f_{ObjAug} $ 라고 쓸 수 있습니다. 이 함수를 추출한 물체와 mask patch에 적용하면 augmented object를 얻게 됩니다. 

 또한 논문에서는 각 물체들이 독립적으로 augmentation되기 때문에, category-aware augmentation이 가능하다고 말합니다. 다만 class imbalance, 즉 어떤 클래스의 object 수가 모델의 성능에 직접적으로 비례하지는 않는다고 설명합니다. 예를 들어 people 카테고리의 object 수는 다른 카테고리보다 훨씬 수가 많지만, segmentation 성능은 13위입니다. 

3) Background inpainting

 이미지로부터 물체를 추출해내면 물체가 사라진 배경에 pixel artifact를 유발합니다. 이 부분을 채우기 위해 image inpainting 방법을 사용했으며, 추출한 object mask를 확장하고 residual edge를 지우기 위해 morphological processing을 사용합니다. inpaintimg method를 $ \Phi $라고 표기하면, 이 단계를 아래와 같은 수식으로 표현합니다. 

$$ \textbf{I}^{k}_{i} \leftarrow \Phi (\textbf{I}_{c}, \textbf{M}^k_c ) $$

4) Image assembling

 image assembling 단계에서는 augment된 이미지와 복원된 배경을 합성해 augmented image와 mask를 얻습니다. 

5. 실험

  • 사용한 데이터셋

PASCAL VOC 2012, Cityscapes, CRAGE (Colorectal Adenocarcinoma Gland)

출처: t.ly/NP4-

DeepLab V3와 DeepLab V3Plus 모델을 사용해 object augmentation을 적용한 결과입니다. baseline에서는 전통적인 방식의 random scaling, random rotation과 random flipping을 적용했습니다. 

출처: t.ly/NP4-

 PASCAL VOC 2012데이터셋을 사용해 augmentation method 별로, image 수준과 object 수준에서 augmentation을 수행했을 때 얻은 성능입니다. scaling과 shifting에서 mIoU 값이 상승한 것을 볼 수 있습니다. image level과 object level 두 가지 방법이 서로 충돌을 일으키지 않고 모델 성능을 개선시킨 것도 맨 마지막 행에서 알 수 있습니다. 

6. 결론

  이 논문에서는 semantic image segmentation을 위한 data augmentation 방법인 ObjectAug를 제안합니다. object level에서 동작하는 이 augmentation method는 기존 방식인 image level과는 다르게 동작하며, 성능 개선을 위해 동시에 수행될 수도 있습니다. 실험은 natural image와 medical image dataset에도 수행되었으며, 여러 가지 모델과 데이터셋을 사용하여 실험한 결과 다른 augmentation method보다 성능 개선에 도움이 되는 점을 확인할 수 있습니다. 


 논문을 읽고 data augmentation의 중요성 뿐만 아니라, 기존의 방식이 이미지에 대해 pixel-level에서 생각했을 때 오히려 방해가 될 수 있다는 생각이 들었습니다. 특히 image cutout 같은 경우에는 annotation이 다른데도 각 pixel의 값이 같아져 버리면 모델이 더더욱 혼란스러워하지 않을까요? 비록 코드가 공개되어 있지 않아 바로 적용하기는 어렵겠지만 나중에 데이터가 모자라면 꼭 시도해 볼 만한 좋은 방법 같아요! 

출처: 논문 링크

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.