ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [내 맘대로 분석] RandAugment: Practical automated data augmentationwith a reduced search space
    Dev/Computer Vision 2022. 6. 9. 12:47
    논문명 RandAugment: Practical automated data augmentationwith a reduced search space
    저널 IEEE CVPR(Conference on Computer Vision and Pattern Recognition)
    논문 링크 https://arxiv.org/abs/1909.13719

     

    Abstract

    데이터 증강은 대체적으로 딥러닝 모델의 일반화(Normalization)을 크게 향상 시킴. Automated Augmentation(이하 AA) 전략을 통해 Image Classification or Object Detection에서 큰 성능 향상을 불러 올 수 있었다. Validation시 정확도를 향상시키기 위해 최적화 되었지만, 준 지도 학습에서 좋은 결과를 가져오고 일반적인 이미지 손상에 대한 견고성(Robustness)을 향상시켰다.

    • 견고성(Robustness) : 머신러닝에서 일반화(Generalization)는 과적합 된 것이 아니고, 일반적인(범용적인) 데이터에서도 출력이 적합한 모델을 의미한다. 이상치나 노이즈가 들어와도 크게 흔들리지 않는 것에 대한 정도를 견고성(Robustness)라고 한다.
    • https://wegonnamakeit.tistory.com/9
     

    [딥러닝개념] 딥러닝 효과적으로 학습하기(2) (ft. regularization)

    이 글은 최성준 박사님의 <논문으로 짚어보는 딥러닝의 맥>의 'Overfitting을 막는 regularization' 강의에서 소개한 Ian Goodfellow의 Deep Learning 책에서 Regularization 챕터에서 나온 기법들을 소개합니..

    wegonnamakeit.tistory.com

     

    그런데, AA의 규모가 커지면 커질수록, 별도로 검색하는 단계가 늘어나서 훈련의 복잡도이 높아지고, computation cost가 높아진다. 이것이 AA의 문제점이었다. 그리고, AA는 별도로 검색 단계를 거치는 문제가 있어, 모델이나 데이터 세트의 크기를 기반으로 하여 정규화(Generalization)에 대한 강도를 지정할 수 없는 문제가 있다. AA의 정책은 작은 데이터 세트에서 작은 모델을 훈련 시키면서 발견되고, 점점 더 큰 모델을 훈련시키는데 적용된다.

    이 논문에서는 2가지 문제를 해결한다.

    1. 검색 공간을 줄여 별도의 Proxy Task 없이 대상 작업에 대해 학습할 수 있습니다.
      - Proxy Task : 본래 목적의 Task(downstream task)를 달성하기 위한 부가적인 Task
    2. 매개변수화(Number, Magnitude(이하 N, M))을 통해 Normalization의 수준이 다양한 모델 및 데이터 세트 크기에 적절하도록 조절 할 수 있다.

    https://hongl.tistory.com/154

     

    Learning and Evaluating Representations for Deep One-Class Classification (1)

    이번 포스트에서 다룰 내용은 self-supervised 를 통해 추출한 representation을 이용해 이상탐지를 수행하는 two-stage 이상탐지에 관한 논문 "Learning and Evaluating Representations for Deep One-Class Clas..

    hongl.tistory.com

     

    실제로, AA와 비교하였을 때, search space가 10^{30} ~ 10^{59} 배나 차이난다고 한다.

     

    Introduction

    데이터 증강은 이미지 분류를 위한 기계 학습 시스템(ex. Image classification, object detection, instance segmentation 등)을 개선하기 위해 추가 데이터를 생성하는 데 널리 사용되는 방법이다. 데이터 증강에는 전문 지식과 각 도메인의 사전 지식(prior knowledge)을 알아내는 작업을 설계하기 위한 수동 작업이 필요하다. → 기존 데이터 보강 방법을 다른 Application 및 도메인으로 확장하기가 어렵다. → 수동 작업을 진행할 때 cost(time, money)가 추가적으로 필요하다.

    이런 점으로 인해서 Data Augmentation을 자동으로 진행해주는 방법들이 Data Augmentation의 고질적 문제를 해결해줄 수 있다고 한다. 또한 이런 방법을 사용하면 Accuracy, Robustness, perfomance(on 준지도학습 기법)에서 높은 성능을 기대할 수 있다.

    그러나 AA와 같은 기법들은 컴퓨팅 성능과 복잡도가 크게 증가하는 문제가 있다. 후속 연구에서 더 효율적인 검색 방법을 연구했지만, 별도의 최적화 절차를 필요로 하므로 모델을 훈련하는 데 드는 계산 비용과 복잡성이 크게 증가한다.

    실제로 NAS(Neural Architecture Search)의 원래 표현은 이중 최적화 절차(Dual Optimization Procedure)가 우수한 예측 성능을 가져온 유사한 시나리오를 실현시켰긴한데, 원래 구현이 너무 복잡도가 높고, Computational한 요구에서는 엄두를 못 낼정도였다.

    후속 연구에서는 훈련 효율성과 Procedure(절차)의 유효성에 대해서 연구 되었고, 차별화 가능한 프로세스에 기초한, 통합된 최적화 과정을 적용할 수 있게 되었다.

    Learned Augmentation(학습된 증강)의 경우에서도, 효율적인 검색 방법이 있지만 여전히 별도의 최적화 과정이 필요해서 훈련 시 Computational Cost와 복잡성(Complexity)가 증가하는 문제가 있다.

    Learned Augmentation 내용은 Automated Augmentation의 내용인것 같다.

    참고링크 : https://deep-learning-study.tistory.com/705

     

    [논문 읽기] (2019) Learning Data Augmentation Strategies for Object Detection

     안녕하세요, 오늘 읽은 논문은 Learning Data Augmentation Strategies for Object Detection 입니다.  classification에서 사용하는 augmentation(horizontal flip, resize)을 object detection에 적용하는..

    deep-learning-study.tistory.com

     

    Automated Data Augmentation의 원래 공식은 proxy하고, small한 task에서 나온 결과를 통해서 Larger target Task에 대하여 결과가 이동될 수 있도록 하는것이다. 이런 공식은 proxy task가 larger Task에 대해서 예측 지표를 제공한다는 강한 추정을 만들어 준다.

    이런 전략들의 경우에는 모델 또는 데이터세트에 따라서 증강의 강도(Magnitude)가 달라진다. 이 논문에서는 Proxy Task에서 별도로 진행되는 Search phase를 제거한다면 향상된 Data Augmentation 과정이 가능할 것이라고 생각하는 것 같다.

    결론 : 이 논문에서는 RandAugment(Automated data augmentation의 이상적인 방법)을 제안한다. → Seperated Search가 필요하지 않다는 것을 증명하려 한다. → Seperated Search를 제거하기 위해서는 Data augmentation을 위한 Search Space를 최대한 줄일 필요가 있다. → Parameter space의 감소는 실제로 엄청 커서, 간단한 Grid Search만으로도 Seperated Search보다 성능 좋은 Data Augmentation을 구현할 수 있다.

    정리

    • Data Augmentation의 Magnitude를 결정하려면 모델 크기와 훈련 데이터 세트의 크기에 따라 달라진다. → 더 작은 Proxy task에서 Augmenataion Policy의 개별 최적화가 학습 및 Augmentation Policy의 학습 및 전송에 차선일 수 있다.
    • 해석 가능한(interpretable) hyperparameter를 포함하는 단순화된 Serach Space를 소개한다. → 간단한 그리드 검색을 사용하여 모델 및 데이터 세트에 대한 Augmentation Policy을 조정할 수 있으므로 별도의 검색 프로세스가 필요하지 않다.

    Related Work

    • Horizontal filps and random cropping or translations
    • Elastic Distortion(https://www.kaggle.com/code/babbler/mnist-data-augmentation-with-elastic-distortion/notebook)
    • Randomly erase or add noise → Increase validation accuracy, robust, or both
    • Mixup
    • Object-centric cropping
    • Smart Augmentation → 같은 클래스의 두개 이상의 데이터를 합쳐서 새로운 데이터를 만들어서 Augmentation
    • 베이시안 접근(훈련 세트의 분산을 학습한 것에 기반으로 하여)을 통해서 Augmentation
    • GAN
      → Data Augmentation 과정의 최적의 sequence를 선택하기 위해서
      → Training Data를 직접적으로 생산하기도 한다.
      → GAN은 사전 정의된 Data Augmentation의 시퀀스를 학습하는 것만큼 좋지는 않다.
    • Auto Augmentation → 강화학습에서 작업 과정을 선택할때 사용하는 방법(Application의 확률, 강도를 선택) → Auto Augment의 정책은 여러 레벨에서 stochasticity(확률)에 관련됨.

    Method

    RandAugment의 주요 목적 : proxy task에서 별도의 검색 단계를 만들지 않도록 하는 것. → 별도의 검색 단계는 훈련을 복잡하게 하고, Computation cost를 증가시킨다.

    RandAugment는 검색 단계를 제거하기 위해서 Data Augment 전략에서의 매개변수(N,M)을 HyperParameter로 설정한다. → Augment 과정에서 Parameter space를 줄이기 위해서 이전 연구들에서는 학습된 Augment Policy들이 여러가지 변환을 통해서 예시의 다양성을 증가시킴으로 주요 장점이 된다고 했다.
    → 이전 연구에서는 예를 들어, K=14이라면 14개의 변환과 각 변환을 적용할 확률 등을 정하는 정책을 연구했음.

     

    K=14일 때, 적용되는 변환의 예시

    Identity  autoContrast  equalize  rotate  solarize
    color posterize contrast brightness sharpness
    shear-x shear-y translate-x translate-y  

    N: Numbers of Translation → Parameter Space를 줄이면서도 이미지 다양성을 유지해야 한다.
    → 각 변환을 학습된 정책 및 확률을 항상 균일한 확률 1/K로 변환을 선택하는 매개변수 없는 절차로 대체
    → 훈련 이미지에 대한 N 변환이 주어지면 RandAugment는 K^N 으로 정책을 표현 가능.

     

    M: Magnitude of Translation → 각 증강이 얼마나 왜곡을 시킬것인가(왜곡의 크기)
    → 각 변환은 0~10(각 변환의 최대스케일)까지 정수값으로.
    → Augment Policy는 정수를 알아내는 과정으로 구성됨.

     

    매개변수 공간을 더 줄이기 위해서 각 변환에 대해서 학습된 M이 훈련에 사용되는 모든 변환에 대해서 단일(+전역) 변수 M만큼 왜곡이 되어도 충분하다고 가정했다.
    → 이를 통해서 M이 아래와 같이 변할 때의 성능을 확인 해 보았음.
    → Constant, Random, Linearly Increase, Random with increasing upper bound

     

     

    Algorithm은 아래와 같이 표현됨. 입력 : N과 M

    transforms = [
    	’Identity’, ’AutoContrast’, ’Equalize’,
    	’Rotate’, ’Solarize’, ’Color’, ’Posterize’,
    	’Contrast’, ’Brightness’, ’Sharpness’,
    	’ShearX’, ’ShearY’, ’TranslateX’, ’TranslateY’]
    
    def randaugment(N, M):
    	"""Generate a set of distortions.
    	Args:
    	N: Number of augmentation transformations to
    	apply sequentially.
    	M: Magnitude for all the transformations.
    	"""
    	sampled_ops = np.random.choice(transforms, N)
    	return [(op, M) for op in sampled_ops]

    두 매개 변수 모두 사람이 해석할 수 있고, N과 M의 값이 클수록 정규화 강도가 증가한다.

    하이퍼 파라미터 최적화를 효율적으로 수행하기 위해 표준 방법을 사용할 수 있지만 검색 공간이 극히 작기 때문에 순진한 그리드 검색이 제일 효율이 좋다.

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

    Imgaug Library  (0) 2022.06.09

    댓글

Designed by Tistory.