Data Science/논문 분석

[논문 분석] A survey on Image Data Augmentation for Deep Learning

 

"A survey on Image Data Augmentation for Deep Learning"

2019년에 Journal of Big Data에 발행된 논문으로 트렌드를 알기 위한 최신 이슈를 정리하는 Survey Paper이기 때문에 가볍게 읽어볼 수 있는 내용이다. 논문 총 페이지 수가 48장으로 상당히 많으며 이미 Data Augmentation 기법은 많이 알려져 있기 때문에 직접 분석하기보다는 요약된 글을 보는 걸 추천한다.

 

Data Augmentation (데이터 증강)

Data Augmentation이란 아래 그림과 같이 하나의 데이터로 여러 개의 데이터를 만들어내는 등의 기법으로 데이터를 증강시키는 기법을 말한다. 물론 아래 기법 이외에도 수많은 방법들이 있다.

 

 

Data Augmentation의 목적

한정적인 데이터를 증강시켜 Performance를 높이고 Overfitting(과적합) 문제를 해결한다.

 

이상적인 모델은 아래와 같이 EPOCH가 증가할 수록 Training Error와 Testing Error가 줄어드는 것을 볼 수 있다.

 

 

하지만 Training Data가 충분하지 못하거나 데이터가 imbalance(불균형)하다면 아래와 같이 Overfitting 문제가 발생할 수 있다.

 

 

Best Fit 지점을 찾는 것도 중요한 문제이지만 이 논문에서는 과적합 문제를 Data Augmentation으로 해결하고 있기 때문에 다음에 별도로 다뤄보는 것으로 하자. 

 

 

Data Augmentation을 할 때 주의해야할 점

Data Augmentation을 하는 과정에서 데이터의 본질이 흐려질 수 있다.

아래 그림과 같이 햄스터 이미지를 Augmentation 했을 때도 햄스터라고 할 수 있을까?라는 게 문제가 될 수 있다.

 

 

Data Augmentation 방식들의 종류

논문에서는 데이터를 증강하는 방법을 아래와 같은 방식으로 나누었다.

 

 

 

  • Image Data Augmentation
    • Basic Image Manipulation 
      • Geometric Transformations
      • Color Space Transformations
      • Kernel Filters
      • Random Erasing
      • Mixing Images
    • Deep Learning Approaches
      • Feature Space Augmentation
      • Adversarial Training
      • GAN Data Augmentation
      • Neural Style Transfer
    • Meta Learning
      • Neural Augmentation
      • AutoAugment
      • SmartAugmentation

 

Basic Image Manipulation

Geometric Transformations

가장 기본적인 Data Augmentation 방식으로 Flipping, Cropping, Rotation, Translation, Color space, Noise Injection과 같은 방식들이 있다.

 

 

Color space

Image 데이터는 기본적으로 R, G, B의 값을 가지고 있는데 이 값을 조정해서 아래와 같이 여러 가지 데이터들을 새롭게 생성해낼 수 있다.

 

 

Noise Injection

이외에도 대비(Contrast)를 조정한다거나 Histogram equalization(HE)를 적용시키는 등 여러 가지 Noise Filter를 주면서도 데이터를 새롭게 생성할 수 있다.

아래 그림에서처럼  White balance를 조정할 수도 있고 Sharpen(선명하게) 효과도 줄 수 있다.

 

 

Color Space Transformation

Geometric Transformations에서 설명했던 Color Space와 유사한 방식이다.

R, G, B의 값 중에서 하나의 값을 최소값으로 만들거나 최댓값으로 맞추는 등의 조정을 통해 광도를 조절할 수 있다.

 

 

 

본 논문에서 데이터 증강 기법을 사용하여 테스트해본 결과 Cropping의 효율이 가장 높게 나왔다는 결과를 얻었다.

하지만 이 결과는 데이터 셋에 따라 다른 증강 기법이 더 효율적일 가능성이 있으니 참고용으로만 보는 것이 좋을 것 같다.

 

 

 

Kernel Filter

아래와 같은 여러가지 커널 필터들을 적용시켜 데이터를 증강시키는 방법도 있다.

 

  • Gaussian Filter(가우시안 필터) : 이미지를 흐리게 만듬
    • 모션 블러에 대한 저항력이 높아질 수 있다.
  • Edge Filter : 이미지를 선명하게 만듬
    • 관심 개체에 대한 세부 정보를 캡슐화할 수 있다.
  • Patch Shuffle Filter : 아래 그림과 같이 n x n으로 특정 영역을 나누어 해당 영역의 픽셀들을 랜덤하게 섞음
    • CNN의 메커니즘에 유사한 커널이 layer가 있다.
    • Data Augmentation의 기법보다는 Network Layer로 표현될 수 있기 때문에 이것이 더 효율적일 수 있다.

 

 

 

 

Random Erasing

Dropout 정규화 기법에서 영감을 받은 Random Erasing 방법은 아래 그림과 같이 이미지에서 특정 부분을 랜덤하게 지워 이미지를 증강시키는 방법이다.

하지만 의도치 않게 Object 자체를 지워버릴 수 있기 때문에 Erasing 하는 부분의 크기를 잘 조정해야 한다.

 

 

 

 

본 논문에서 Random Erasing을 적용시킨 실험 결과를 아래의 표와 같이 소개해주고 있는데 Random Erasing만 사용한 것이 아닌 다른 추가적인 증강 기법을 같이 적용시킨 결과이기 때문에 그냥 참고용으로만 보면 될 것 같다.

 

 

 

Mixing Images

두 개의 이미지 A와 B가 있을 때 이 두 이미지의 일부를 섞어 새로운 이미지를 만들어내는 전략으로 Sample Paring Strategy라고 한다.

 

 

 

또한 2개의 이미지가 입력으로 들어왔을 때, Linear, Non-Linear 방식으로 이미지를 섞을 수 있다.

  • Linear 방식 : 많은 사람들이 알고 있는 MixUp 방식으로 아래 이미지들을 예시로 들어봤을 때 고양이 이미지의 명암을 0.7, 양 이미지의 명암을 0.3으로 주는 등의 방법으로 새로운 이미지를 생성해낼 수 있다. MixUp 방식은 모델의 일반화 성능을 향상시키는 효과를 줄 수 있다.
    • MixUp을 입력 이미지가 아닌 Hidden representation이나 Feature map (Manifold) Level에서 해주는 방식을 제안한 논문도 있다.
  • Non-Linear 방식 : 랜덤하게 이미지를 잘라내어 붙이는 방식이다. 이 방식은 사람이 육안으로 확인해도 Class를 정확하게 판별하여 라벨링을 하기 어려울 수 있기 때문에 학습 과정에서 큰 문제를 일으킬 수 있다는 점을 감안하고 Training Set을 조정해야 할 것이다.

 

아래와 같이 4개의 이미지를 합성하는 RICAP(Random Image Cropping And Patching) 기법도 있는데, 원본 이미지의 근본성을 해치는 Mixing 방법은 좋지 않으므로 유의하여 사용해야 한다.

 

 

 

 

Mosaic Augmentation

이번 논문에서 소개되지는 않았지만 RICAP와 유사한 방법으로 YOLOv4에서 사용하는 Mosaic Augmentation 기법이 있다. 이 방법은 단순히 4개의 이미지를 하나의 이미지로 합쳐 batch size를 크게 만들어 학습 효과를 높이는 방법이다.

 

 

 

Deep Learning Approaches

Feature Space Augmentation

기존의 데이터를 AutoEncoder와 같은 방식으로 압축하여 저차원 Feature를 추출해낸 후 Matrix나 Vector에 취할 수 있는 SMOTE와 같은 기법들을 적용시켜 새로운 데이터를 생성해내는 방식이다.

 

 

아래 그림과 같이 각각의 feature space를 거치면서 새로운 형태의 데이터를 생성시킬 수 있다.

 

 

 

Adversarial Training

적대적 공격(Adversarial Attacking) 기법을 응용한 방법이다.

적대적 공격이란 원본 이미지에 손실 함수로 만든 노이즈를 적용시켜 사람이 육안으로 보았을 때와 다르게 의도적으로 모델이 오분류를 하게끔 만드는 방식이다. 아래 판다 이미지를 예로 들어 봤을 때 노이즈를 적용시키기 전과 후 모두 판다임을 우리 눈으로는 판단할 수 있지만 노이즈를 적용시킨 후 모델은 99.3%의 확률로 긴팔원숭이라고 판단한다.

대표적인 적대적 공격 방법으로 FGSM(Fast Gradient Sign Method)와 PGD(Projected Gradient Descent)가 있다. 

 

Adversarial Training은 이렇게 만들어진 데이터들도 Training Set에 포함시켜 모델을 보다 더 robust 하게 만들어주는 학습 방법이다.

 

 

 

GAN based Augmentation

Adversarial Training의 확장판이라고 볼 수 있는 GAN 알고리즘은 Generator와 Discriminator가 노이즈가 포함된 이미지에 대한 참 거짓을 판단하는 학습 방식이다.

 

아래 그림에서 Generator(생성자)는 실제 데이터에 노이즈를 적용하여 Fake Data를 만들어내며 Discriminator(구분자)는 실제 데이터와 생성자가 생성해낸 가짜 데이터를 구별한다.

 

GAN의 주목적은 구분자가 실제 데이터와 가짜 데이터를 구분하지 못하도록 만드는 것이다.

 

 

아래는 GAN으로 생성해낸 이미지 데이터들의 예시를 보여주고 있다.

 

 

 

GAN과 관련하여 재밌는 논문들도 많고 앞으로도 많은 이슈가 될 것으로 생각된다.

간 병변 분류에서 CNN 성능 향상을 위한 DCGAN 기반 의료 데이터 증강

CycleGAN을 이용한 얼굴 감정 분류 데이터 학습

SinGAN을 이용한 자연 이미지 생성 모델 학습

 

 

Neural Style Transfer

Neural Style Transfer, NST는 이미지를 심층 신경망을 거쳐 새로운 Style로 변형한 후 이 스타일에 다른 이미지를 합성하여 새로운 이미지를 생성하는 방식이다.

 

 

 

Meta Learning

Auto Augment

NAS 초기 논문과 비슷하게 RNN controller를 통해 Augmentation Policy를 뽑고, Network를 학습시켜 Validation accuracy를 뽑은 뒤 이를 강화 학습(PPO)의 reward로 사용하여 학습시키는 방법이다.

 

 

총 16가지 Augmentation 기법들을 Search Space로 사용하였고, 높은 성능을 달성할 수 있었지만 굉장히 많은 컴퓨터 자원과 시간을 소모한다.

 

 

Population Based Augmentation

Hyper Parameter Optimization 기법 중 하나인 Population Based Training (PBT) 알고리즘 기반으로 AutoAugment에 비해 1000배 빠른 Search 시간을 보여주면서 동시에 비슷한 정확도를 보인다. 성능이 좋은 모델의 weight는 복제(exploit)하고, 그 parameter에 약간 변형(explore)을 주는 방식이다.

 

 

 

Fast Auto Augment

Bayesian Optimization 기법인 Tree-structured Parzen Estimator(TPE) 방식을 통해 Augmentation Policy를 추출하고, 학습시킨 모델을 validation 하는 과정에서 augmentation을 적용하면서 Search 시간을 획기적으로 줄일 수 있고 PBA보다도 더 빠르면서 비슷한 정확도를 달성할 수 있다.

 

 

 

Faster Auto Augment

Faster Auto Augment는 미분이 불가능한 image operation들을 미분 가능하게 만들어주는 gradient approximation 기법을 통해 discrete search space를 continuous search space로 relaxing 시켜주면서 gradient-based optimization을 통해 더 빠르게 search 할 수 있는 방법이다.

이 방법은 gradient-based NAS의 대표적인 방법인 "DARTS: Differentiable Architecture Search"에서 영감을 얻었다고 한다. Fast AutoAugment보다 훨씬 빠르지만 정확도는 약간 떨어지는 결과를 보인다.

 

 

 

RandAugment

위의 방법들은 AutoML로 꾸역꾸역 최적의 Augmentation Policy를 찾는 방법이었지만 RandomAugment는 아예 찾는 과정을 생략하고 매 batch를 추출할 때마다 여러 Augmentation 옵션들 중에서 random 하게 추출해서 적용하는 기법이다.

전체 Transform 중 몇 개의 Operation을 뽑을지, Augmentation 강도를 어느 정도로 줄지를 hyper parameter로 단순하고 쉽게 구현이 가능하며 성능도 잘 나오기 때문에 분석 대회에서 많이 사용한다.

 

 

 

UniformAugment

RandAugment에서 hyper parameter search를 해야 하는 점에서 출발하여 아예 search 없이 random 하게 augmentation을 확률적으로 적용하는 기법이다.

 

매 batch를 뽑을 때 RandAugment처럼 N개를 고정해서 추출하는 것이 아니라, 모든 연산을 0과 1 사이의 확률 값을 통해 넣을지 말지를 정하고, Magnitude도 0과 1 사이의 확률 값을 통해 정하게 된다. 즉, N과 M을 Probabilistic 하게 바꿔주면서 아예 hyper parameter가 사라지게 되는 것이다. 이렇게 하면 tuning이 필요 없으며 RandAugment에 준하는 성능을 얻을 수 있다.

 

 

 

ETC

이번 논문 이후에 제안되는 등의 이유로 이번 논문에서 소개되지 않은 데이터 증강 기법도 몇 개 소개하고자 한다.

 

Cutout

Cutout 방식은 이미지의 특정 부분을 랜덤 하게 Bounding box를 지정하여 해당 부분을 0으로 만드는 방식이다.

Random Erasing과 방식은 유사하지만 Cutout은 Refularization의 관점, Random Erasing은 Data Augmentation의 관점인 차이가 있다.

 

 

Hide-and-Seek

Hide-and-Seek는 이미지를 grid로 나누어 각 patch를 매 iteration마다 랜덤하게 지우면서 학습하는 방식이다. 

이는 object의 한 부분에 집중하는 것이 아닌 다양한 부분을 보면서 넓게 예측할 수 있는 효과가 있다.

 

 

 

CutMix

우리나라 NAVER와 LINE의 AI 연구원들의 성과인 CutMix는 Cutout과 Mixup을 합친 방식이다.

아래 예시에서 보는 것처럼 Patch 비율에 따라 Bounding box를 쳐서 해당 부분을 지운 후 그 부분에 다른 이미지의 Patch를 붙이는 방식이다. 또한 Patch의 비율에 따라 Labeling도 섞어주기 때문에 CV 챌린지에서 자주 사용한다.

 

 

 

AugMix

AugMix는 한 장의 이미지 데이터에 contrast, color change, brightness, sharpness, cutout을 제외한 여러 가지 증강 기법들을 적용시켜 이를 체인처럼 직렬, 병렬로 연결한 뒤 원본과 다시 섞어주는 방식이다. 

 

 

SmoothMix

UST와 ETRI에서 발표한 CutMix 방식은 patch를 잘라 붙이는 과정에서 edge 영역에서 급격한 변화가 생기는 strong edge 문제가 발생한다.

SmoothMix는 이런 문제를 해결하고자 edge 영역을 smooth 하게 섞어주는 방식이다.

CutMix에 비해서 정확도는 약간 낮지만 robustness는 더 좋아지는 결과를 보인다.

 

 

 

PuzzleMix

국내 연구원들이 발표한 이미지의 중요한 정보를 보존하면서 높은 일반화 성능을 보이는 PuzzleMix 방식이다.

Adversarial Attack에도 robust해지는 효과를 얻을 수 있다.

 

 

 

DeepAugment

AutoEncoder, Super Resolution Network 등 Image-to-Image Network의 가중치와 activation에 변화를 주는 방식이다.

이 방식으로 다양한 유형의 이미지 데이터를 생성해낼 수 있으며 주요 정보들을 잃지 않으며 Robustness가 크게 증가하는 장점이 있다.

 

 

 

 

 

 

 

참고 링크

 

 

고려대학교 DMQA 연구실

고려대학교 산업경영공학부 데이터마이닝 및 품질애널리틱스 연구실

dmqa.korea.ac.kr

 

 

GitHub - aleju/imgaug: Image augmentation for machine learning experiments.

Image augmentation for machine learning experiments. - GitHub - aleju/imgaug: Image augmentation for machine learning experiments.

github.com

 

Image Data Augmentation Overview

Image Recognition 분야에서 주로 사용되는 Data Augmentation 기법들을 정리했습니다.

hoya012.github.io