[Boostcamp AI Tech] [U-stage] 6주차 Day 1 학습 기록

bluegun·2021년 9월 6일
0

AI Tech 2기 활동

목록 보기
24/87

Image Classification 대회가 끝나고 다시 3주간의 U-stage가 찾아왔다.
기존의 팀과 작별하고 새로운 팀에 편성되어 새 출발을 하는 느낌이다.

학습 내용

Image Classification

  • AI : 사람의 지능을 컴퓨터로 구현하는 것

    • 시각, 언어, 청각...
  • CV : 이미지나 영상으로부터 현실의 정보 추출

    • Graphics의 정반대
  • Classifier : input의 class를 정하는 것

Classifier로 사용 가능한 분류기

  1. 내가 모든 데이터를 다 갖고 있다면, K-NN(K-Nearest Neighbors)로 풀 수 있을 것이다.

    • 하지만, 모든 데이터를 가질 수도 없고, 갖고 있어도 저장할 용량과 시간이 없다.
  2. single Neural network(fully connected network)

    • 모든 pixel의 fully-connected network 연산을 통해 예측
    • layer가 단순해 표현이 잘 되지 않고, 학습한 데이터와 조금이라도 달라지면 예측을 틀리기 쉽다.
  3. CNN

    • locally connected layer
    • 특정 크기의 filter를 이미지의 각 영역에 sliding window 방식으로 적용하며 feature extraction
    • 적은 파라미터로도 feature를 효과적으로 추출
    • Classifier의 backbone network로 주로 활용된다.
  • CNN의 발전사
    • LeNet-5 : 단순한 구조(CNN 2개, FC 2개), 5x5 filter, 2x2 max-pooling
    • AlexNet : LeNet에 비해 Deep해지고 Parameter가 많아짐, ImageNet 활용, ReLU, dropout 적용
    • VGGNet : 16 or 19 Layer, only 3x3 convolution, 더 깊지만 simple하고 더 좋은 generalization을 보임

Annotation data Efficient Learning

Data Augmentation

  • 모든 Dataset은 bias 상태이다.

    • training data는 결국 camera로 찍은 것이고, 이는 사람의 의도가 담겨져 있기에 완전한 real data가 될 수 없다.
  • 세상의 모든 real data를 가질 순 없으니, data를 좀 더 풍부하게 만들어보자 : Data Augmentation

    • Brightness, Crop, Rotate, Affine Transform, CutMix 등 적용
  • Data Augmentation 기법은 OpenCV나 Numpy등에 잘 구현되어 있다.

  • RandAugment

    • Augmentation 기법은 많은데, 어떤 걸 적용해야 best인지 알 수 없다
    • -> random하게 가능한 Augmentation을 적용해 sampling 해보고, 성능이 잘 나오는 것을 쓴다.
    • Augmentation policy를 자동으로 search하는 방식.

Pre-trained model

  • Transfer Learning : 한 Dataset에서 배운 지식을 다른 Dataset에 활용하는 법

    • Pre-trained 된 model에서 CNN부분은 freeze시키고 FCN 부분만 새로 학습시킨다.
    • Pre-trained 된 model에서 CNN부분은 Low learning rate를, FCN 부분은 high learning rate를 주고 학습시킨다.
  • Knowledge distillation

    • Teacher-student learning
    • 이미 학습된 teacher network의 지식을 student network에 전달 -> 모델 압축
    • Teacher model에서 생성된 출력을 unlabeled 된 데이터에 pseudo labeling 하는 데 활용하기도 한다.
    • Student가 Teacher를 최대한 잘 따라하도록 학습한다.(이를 위해 Softmax의 파라미터 T값을 높여 soft prediction으로 만들어 하나의 예측값만 학습하는 게 아닌, 다른 예측에 대한 것도 학습하게 한다.)

      이미지 출처 : https://intellabs.github.io/distiller/knowledge_distillation.html
  • Softmax with Temperature

    • softmax만 사용하면 결과값이 약간 극과 극으로 가는데, T를 크게 지정해주면 결과값이 smoothing되는 효과가 있다.(soft prediction)
    • 입력에 따라 민감하게 변하게 함으로서 student가 teacher를 더 잘 따라하게 한다.
  • Semi-supervised Learning

    • unlabeled data를 활용할 수 있다면, 인터넷 상의 수많은 데이터를 활용할 수 있게 될 것이다.
    • 적은 수의 labeled data를 통해 학습한 model에 unlabeled data를 넣어 임의로 label을 부여하여 사용한다(Pseudo-labeling)
  • Self-training

  • Self-training with noisy student

    • 학습한 Teacher model로 unlabeled data를 pseudo-labeling하고, 기존 data와 pseudo-labeling한 data를 합쳐서 Student model을 학습하는 데 사용하고, 이를 이용해 다시 unlabeled data를 pseudo-labeling하고...
    • 위와 같은 과정을 통해 teacher보다 더 큰 model을 만들 수 있다.

피어 세션

  • 오늘부터 새로운 팀원과 함께하게 되었다. 와!

  • 간단하게 조의 룰과 팀명(내 통장에 4조)을 정하고, 멘토링이나 피어 세션 때 할 일 등에 대해 간략하게 이야기를 나눴다.

Meet up

  • 1기 수료생분들의 조언과 경험을 들을 수 있는 시간이었다.

  • 조언을 듣고 오랜만에 다시 부캠 초창기의 의욕이 샘솟는 느낌이었다. 덕분에 오늘은 딴 짓 안하고 많은 것을 공부할 수 있어서 정말 감사했다.

  • 내 실력을 쌓는 게 가장 중요하고, 뭔가 끝까지 도전해서 남들에게 말할 수 있고 팀에게 기여할 수 있는 무언가를 만드는 게 중요하다는 걸 가르쳐 주셨다. 내 현재 상황에 정말 중요한 말인 것 같아, 다음 대회때는 꼭 실천하도록 노력해야겠다.

  • 놀고 싶고 쉬고 싶고 할 것도 많아 보이지만 결국 건강을 지키는 선에서는 노력하는 게 맞는 자세같고 더 멋있는 내가 될 것 같다는 생각을 했다.

  • 포폴이나 면접을 대비해 미리 공부하고 정리해두는 걸 강조하셨다. 오늘부터 깃헙 활용법을 익혀 알고리즘 공부한 내용이라도 매일 올리는 걸 목표로 해야겠다.

느낀 점

  • 오랜만에 의욕에 차오르는 하루라 좋았다. 새로운 팀원분들도 다 좋은 분들이셔서 편안했다.

  • 지금까지 놓치고 간 부분이 많은 것 같은데, 이번 주 강의와 과제가 빡빡하진 않은 것 같아, 틈날 때 여러 가지 시도를 해봐야겠다(최신 논문 구현 or slack의 tip 글 정독하기)

0개의 댓글