/ DATA

합성곱 신경망 기초 8(데이터 증강, Data Augmentation)

CNN 강좌는 여러 절로 구성되어 있습니다.

Data Augmentation이란?

2

  • Data Augmentation은 데이터의 양을 늘리기 위해 원본에 각종 변환을 적용하여 충분히 학습에 활용될 수 있는 데이터 개수를 증강시키는 기법이다.
  • CNN은 영상의 2차원 변환인 회전(Rotation), 크기(Scale), 밀림(Shearing), 반사(Reflection), 이동(Translation)와 같은 2차원 변환인 Affine Transform에 취약하다.
  • 즉, Affine Tranform으로 변환된 영상은 다른 영상으로 인식한다.
  • 또한 Noise삽입, 색상, 밝기 변형 등을 활용하여 Data Augmentation 효과를 얻을 수 있다.

어떻게 Data Augumentation이 나왔을까?

  • Augmenation 기술은 사실 많이 활용되던 기술이 아니다. 이는 알고리즘적인 해결방법이 아니라, 순수한 공학적 접근을 통한 추론을 위한 전처리 기술 중 하나였다.

  • 딥러닝의 고질적인 문제는 여러가지 있는데, 그 중 대표적인 문제가 Overfitting이다. 과거 Overfitting을 해결하기 위해 익히 알고있는 모델링 수정 Regularization, Normalization을 활용했다.
  • 하지만, 이와 같은 Overfitting을 해결 방법은 편향 학습 방향을 조금 죽이는 정도다. 따라서 결과적으로 우리가 원하는 Overfitting을 해결하는 기술이 되진 않았다.

👉 공학적 방법으로 학습의 방향성을 상하좌우 더 넓힐 수 있는 방법이 없을지 고민하게 된다. 단순히 편향된 학습은 오류를 발생시키지만,여기서의 목적은 적당한 힘으로 학습을 아주 조금 골고루 넓히자는 의미이다.


방법론에는 Image Manipulation, Generative Model,AutoML 기반 방법론 등 다양한게 있지만 주요 방법론인 Image Manipulation 기반을 살펴보자.

Image Manipulation 기반 방법론

Pixel-Level Transforms

2

  • 우선 Pixel 단위로 변환을 시키는 Pixel-Level Transform은 대표적으로 Blur, Jitter, Noise 등을 이미지에 적용하는 기법이다.
  • Gaussian Blur, Motion Blur, Brightness Jitter, Contrast Jitter, Saturation Jitter, ISO Noise, JPEG Compression 등 다양한 기법이 사용된다.

Spatial-Level Transforms

3

  • Image 자체를 변화시키는 Spatial-Level Transform으로, 대표적으로 Flip과 Rotation이 있으며, Image의 일부 영역을 잘라내는 Crop도 많이 사용한다.
  • 주의해야할 점은 Detection (Bounding Box), Segmentation (Mask) Task의 경우 Image에 적용한 Transform을 GT에도 동일하게 적용을 해줘야 하고, Classification의 경우 적용하였을 때 Class 가 바뀔 수 있음을 고려하여 적용해야 한다. (Ex, 6을 180도 회전하면 9)

“MixUp: Beyond Empirical Risk Minimization”, 2018

4

  • 두 image와 Label을 0~1 사이의 lambda 값을 통해 Weighted Linear Interpolation 해주는 기법이다.
  • 보통 lambda 값은 beta distribution을 통해 뽑아낸다. 이 방법은 굉장히 단순하지만 모델의 일반화 성능도 좋아지고 corrupt label의 memorization을 방지해주고, adversarial example에 sensitive해지는 등 다양한 효과를 얻을 수 있다.

“CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features”, 2019

5

  • 우리 나라 연구 성과인 CutMix, MixUp은 두 image를 섞는 방식이고, Cutout은 image의 box를 쳐서 지우는 방식이었다면, CutMix는 두 방법을 합친 방법이다.
  • 이미지 데이터를 Convex combination하여 새로운 데이터를 만드는 것으로 클래스가 다른 이미지들도 mixup하여 label 또한 mixup을 한다는 것이다.
  • 원본 image에서 box를 쳐서 지운 다음 그 빈 영역을 다른 image로부터 patch를 추출하여 집어넣는다. Patch의 면적에 비례하여 Label도 섞어주는 방식이다.
  • 이 방법을 적용하면 실제로 데이터 모델링시 성능이 많이 좋아지는 경우가 많다고 한다.

결론

  • Data augmentation의 경우 over fitting을 방지하기 위한 여러 기술 중 하나로 발전되고 있다.
  • Over fitting은 알고리즘의 Variance가 클 때 발생하는 문제로, train data set에 대해 learning을 정상적으로 마친 후 test data set에 적용할 때 그 결과가 매우 다르게 나온다는 것을 의미한다.
  • 이러한 Over fitting을 방지하기 위해 Variance를 낮추는 방법으로는 training data를 많이 모으는 방법, feature의 개수를 줄이는 방법, regularization을 통해 weight 값을 조절해주는 방법 등이 있다.
  • 여기에서 training data를 많이 모으는 방법은 금전적, 시간적으로 손실이 큰데, 이를 해결하기 위한 기존에 있는 Data를 활용하여 변형하는 방법이 Data augmentation이다.

참조 문헌
[1] A survey on Image Data Augmentation for Deep Learning, 2019
https://journalofbigdata.springeropen.com/articles/10.1186/s40537-019-0197-0