관리 메뉴

ComputerVision Jack

Data Augmentation 본문

Computer Vision/Vision Note

Data Augmentation

JackYoon 2021. 3. 30. 21:55
반응형

Data Augmentation

일반화에 강인한 모델을 제작하기위해 input data에 다양한 방법을 적용하여 데이터를 확장해 나가는 것입니다.

이러한 Image Data Augmentation 방법은 다양하게 존재하고 있습니다.

 

해당 이미지 자료 출저 : www.researchgate.net/figure/Comparison-of-our-proposed-Attentive-CutMix-with-Mixup-5-Cutout-1-and-CutMix-3_fig1_340296142

원본 데이터

Cutmix

두개의 샘플 데이터를 부분적으로 결합하여 새로운 데이터를 생성합니다.

그림에서 알 수 있듯 개와 고양이 데이터를 부분적으로 결합하여 새로운 데이터셋을 생성했습니다.

Cutmix
Attentive CutMix

해당 Cutmix 방법을 반영하여 새롭게 data augmentation을 진행하는 여러 방법이 있습니다.

 

MixUp

MixUp 방식 또한 cutmix처럼 두가지 이미지를 합쳐 새로운 이미지를 생성합니다.

히지만 cutmix와 다른점은 두 이미지에 대해 덧셈 연산을 진행한 것 처럼 합쳐지는 것입니다.

 

Mixup

CutOut

컷 아웃 방식은 해당 이미지에 대해서 한쪽 값을 0으로 채워 공백느낌을 추가하여 데이터를 생성하는 방법입니다.

CutOut

Mosaic

다음은 YOLOv4에 서술된 Mosaic data augmentation입니다.

우리가 흔히 아는 모자이크  방법을 이미지에 적용하여 새롭게 데이터를 생성했다고 생각할 수 있습니다.

 

여기까지 Data augmentation을 진행하는 방법입니다.

이제 keras 모델을 학습시킬 경우 imgaug를 사용하여 data augmentation을 진행하는 방법에 대해 알아보겠습니다.

우선 pip install imgaug를 사용하여 환경에 imgaug를 설치합니다.

 

다음 imgaug를 사용할 경우 from imgaug import augmenters as iaa로 설정하고 iaa를 통해 사용하면됩니다.

github.com/aleju/imgaug

 

aleju/imgaug

Image augmentation for machine learning experiments. - aleju/imgaug

github.com

imgaug에 대해 더 자세한 설명은 해당 github를 참조하시면 될거 같습니다.

 

이런식으로 적용할 image augmentation 기법을 리스트와 하여 train data의 generator를 생성할 때 던져줍니다.

예를 들어 augmentation = [iaa.Sometimes(0.3, iaa.GammaContrast(gamma=(0.3, 2.0)))] 이런식으로 리스트화 합니다.

다음 Generator를 생성할 때, Generator(batch_size = 64, input_shape=(512, 512), data_path='C:\' augmentation=augmentation)으로 전달하여 데이터를 생성할 때 던져줍니다.

반응형

'Computer Vision > Vision Note' 카테고리의 다른 글

ssh를 이용한 Docker 실행  (0) 2021.04.17
Docker 구축  (0) 2021.03.21
Vision Task Workflow  (0) 2021.03.14
Comments