*What is computer vision?
- Machine Learning -> Deep Learning 패러다임 변화
- Feature extraction을 자동적으로 수행하여 사람이 미처 보지 못한 특징들을 알아낼 수 있음
*Fundamental image tasks
- Deep Learning 기반의 task들
- Data augmentation and Knowledge distillation
- Multi-modal learning (vision + {text, sound, 3D, etc.})
- Conditional generative model
- Neural network analysis by visualization
*What is classification
- classifier
- 세상의 모든 데이터를 가지고 있다면 k-NN 으로 분류 문제를 해결할 수 있음
- 하지만 세상의 방대한 양의 모든 데이터를 활용할 수 없기 때문에 제한된 복잡도 내에 데이터를 녹여넣어야함 따라서 Convolutional Neural Networks (CNN)을 활용함.
- Weight는 image사이즈로 표현하면 다음과 같이 나타남
- 최종적인 score를 통해 분류
- layer가 한층이라 단순해서 w와 같은 평균이미지들 이외에는 표현이 불가함 - problem(1)
- Training time과 Test time의 이미지의 변화가 있을때 에러가 발생할 수 있음 - problem(2)
- Locally connected neural networks
- 위 두가지 문제를 해결할 수 있음
- 국부적인 영역들만 connection을 고려한 layer
- local feature learning
- parameter sharing : 파라미터를 재활용할 수 있기 때문에 더 적은 파라미터로 효과적인 특징 추출 -> overfitting방지
*Annotation data efficient learning
1. Data augmentation
- 각 테마별 평균이미지를 보면 bias가 존재한다. ex) 바다, 하늘 , 나무, 사람
- 즉, real data와는 완전히 같을 수 없다.
- 따라서 training data를 좀 더 real data에 가깝게 fitting 할 수 있도록 augmentation을 활용함
- 데이터셋에 image transformations를 적용함.
- Crop, Shear, Brightness , Perspective, Rotate...
- training dataset's distribution을 real data distribution과 유사하게 만드는것이 목표
- CutMix : Mixing both images and labels
- RandAugment : 다양한 transformer를 모두 사용하기보다 랜덤으로 추출하여 적용
- N개의 augmentations을 뽑아 랜덤 샘플링을 하여 훈련을 시키고, 검증을 통해 효과적인 augmentations 기법을 뽑는다.
- N개의 augmentations을 뽑아 랜덤 샘플링을 하여 훈련을 시키고, 검증을 통해 효과적인 augmentations 기법을 뽑는다.
2. Leveragin pre-trained information
- 데이터를 적게 쓰고 좋은 성능을 발휘하기 위해 다른 데이터셋에서 학습된 정보를 어떻게 활용할 수 있을까?
- Supervised learning은 매우 큰 데이터셋을 요구함.
- 데이터 annotating은 큰 비용을 요구하고, 퀄리티를 보장하지 못함
- Transfer learning : 스몰 데이터셋에서 효과적인 학습 방법. 기존에 미리 학습시켜 놓은 사전치를 활용해서 연관된 task에 스몰 데이터로도 효과적인 성능을 보일 수 있음.
*Transfer learning
- Approach 1 : Transfer Knowledge from a pre-trained task to a new task
- 기존 10개 클레스로 사전 학습된 모델이 있을때, FC레이어 앞부분은 freeze한 채 FC레이어 weight만 업데이트
- 기존 10개 클레스로 사전 학습된 모델이 있을때, FC레이어 앞부분은 freeze한 채 FC레이어 weight만 업데이트
- Approach 2 : Fine-tuning the whole model
- Approach1과는 다르게 Convolution layers 를 freeze하지 않고 low learning rate을 줘서 느리게 학습하고, FC layers는 high learning rate으로 빠르게 학습함
- Approach1과는 다르게 Convolution layers 를 freeze하지 않고 low learning rate을 줘서 느리게 학습하고, FC layers는 high learning rate으로 빠르게 학습함
*Knowledge distillation
- Passing what model learned to another smaller model(Teacher-student learning)
- Used for model compression
- 더 큰 student model에도 학습 가능 pseudo-labeling을 이용하여 regularization
- 심플하면서도 강력한 효과
- Workflow
- KL divergence loss를 backpropagation을 통해 student model만 학습
- KL divergence는 두개 output의 distribution을 비슷하도록 학습을 함
- Unsuperivsed learning으로 봄
- Supervised learning 에서 적용할 땐?
- Hard label (One-hot vector) : Indicates whether a class is 'true answer' or not
- Soft label : true or not이 아닌 각각의 클래스에 따른 실수형 레이블값이 존재
- Softmax with temperature(T) : 작은 값과 큰 값의 차이를 제어, T값에 따라 분포가 달라짐
- Distillation loss
- KLdiv(Soft label, Soft prediction)
- teacher 와 student의 차이를 계산 (teacher를 따라하게 끔 학습)
- Student loss
- CrossEntropy(Hard label, Soft Prediction)
- student와 true label을 비교하고 맞는 답을 찾아나가는 과정
- Loss function은 결국 Weighted sum of "Distillation loss" and "Student loss"으로 계산
3. Leveraging unlabeled dataset for training
- Unlabeled data를 활용하는 방법
*Semi-supervised learning
- supervised learning은 대규모의 데이터를 labeling하는데에 한계가 있음
- 하지만, 온라인에 존재하는 unlabeled data는 무궁무진함
- 따라서 labeled, unlabeled data를 둘다 활용
- Workflow
- labeled dataset으로 model을 학습시킴
- unlabeled dataset을 model을 통해 pseudo-labeled dataset을 구축
- labeled dataset과 pseudo-labeled dataset을 합쳐서 다시 model training
*Self-training
- Augmentation + Teacher-Student networks + semi-supervised learning
- SOTA ImageNet classification, 2019 -> Noisy Student Training(EfficientNet-B7)
- Self-training with noisy student
- Train initial teacher model with labeled data
- Pseudo-label unlabeled data using teacher model
- Train student model with both lableled and unlabeled data with augmentation
- Set the student model as a new teacher, and set new model (bigger) as a new student
- Repeat 2~4 with new teacher/student models
'부스트캠프 AI Tech > [Week6] Computer Vision' 카테고리의 다른 글
[Week6] Object Detection [Day5] (0) | 2021.09.10 |
---|---|
[Week6] Semantic segmentation [Day4] (0) | 2021.09.09 |
[Week6] CV - Image Classification Ⅱ [Day3] (0) | 2021.09.08 |