AI 부스트캠프

[Week5 / Day 2] Annotation Data Efficient Learning[

danny0628 2021. 9. 9. 22:40

Data augmentation

def. 데이터를 패턴을 통해 분석할때, 편식하지 않고 골고루 학습을 시켜야되는데 실제로는 많은 bias가 존재한다.

우리가 실제로 취득하는 데이터 셋은 밀도가 높지않고, bias가 존재한다. 이것을 매꿀 수있는 방법이 augmentation이다.

즉 데이터의 밀도를 높여준다고 생각하면 된다.

 

  • Image data augmentation
    • OpenCV 와 Numpy가 data augmentation을 이용하는데 많은 방법들을 제공한다
    • Goal : training dataset을 실제 데이터와 비슷하게 만드는 것
  • data augmentation methods
    • 밝기 조절 : Brightness (RGB값을 이용)
    • Rotate, filp : 데이터를 뒤집거나 회전시킨다
    • Crop : 랜덤 혹은 원하는 부분만을 추출
    • Affine transformation 
    • CutMix : 서로 다른 부분을 붙여서 하나의 이미지로 만든다

Pre-Training

  • transfer learning  : 어떤 데이터 셋에서 배운 지식을 다른 데이터셋에서도 활용하는 것, 이것이 가능하게 하는 이유는 공통된 지식들이 의외로 많기 때문이다
    • convolution layer은 freeze 한 후, fully connected layer을 학습됬던 데이터로 대체한다
       
  • knowledge distillation
    • Teacher(Alread trained) + Student(not trained)
    • 즉 다음과 같이 모델 설계도를 그릴수 있다. 이후 과정은,
    • disstillation loss는 학습된 teacher모델에 학습이 안된 student 모델이 train되는 loss이다
    • student loss는 CrossEntropy loss로 student network와 true label사이의 loss이다. 
  • 이 두개의 loss의 weighted sum을 해나가는 과정이라고 할 수 있다.

 

Unlabeled dataset for training

  • Semi-supervised learning
    • Pseudo-labeling을 진행한다
    • 미리 학습된 모델을 이용하여, unlabeled 된 data를 training 시킨다
  • self-training
    • def. Augmentation + Teacher/Student networks + semi-supervised learning
    • 과정
      1. 라벨링된 데이터를 학습 시켜놓는다.
      2. unlabeled 된 것을 이 모델로 학습시킨다
      3. 합쳐서 student 모델을 만든다
      4. teacher 모델을 없애고 student 모델을 teacher 모델로 만든다
      5. 이 과정을 반복하게 되면 매 반복마다 스튜던트 모델은 점점 커진다
      6. 경량화를 통해 경제적인 부분을 해결한다.