티스토리 뷰

728x90

[Day 30] Computer Vision (CV) - 1

 

 

 

1. 강의 복습 내용

1.1) Image Classification

더보기

Image Classification

 

 

1. Classifier (분류기)

: Input이 Output(카테고리)에 속하는 지 맵핑해주는 역할

Classifier (분류기)

2. Classifier (분류기)의 구현

1. k-Nearest-Neighbors (k-NN)

: 이 세상의 모든 데이터를 저장할 수 있다면, 영상 분류 문제는 결국 Nearest Neighbors Search 즉 검색 문제로 쉽게 취할 수 있을 것이다.

K-NN Search
영상 간의 유사도를 통하여 Search (k-NN)

- 그러나, 모든 데이터를 저장하는 것은 비현실적이며 혹여나 구축하였다 하더라도 방대한 양의 데이터베이스에서 영상들의 유사도를 계산하고 검색하는 시간도 아주 오래 걸릴 것이다. (메모리 한계, 시스템 복잡도 한계)


2. Convolutional Neural Networks (CNN)

: 메모리 한계, 시스템 복잡도의 한계, 즉 방대한 데이터를 제한된 복잡도의 시스템에 압축하여 녹여 넣기 위해 제안된 방법

 

2.1) Fully-Connected Networks

- 기존의 Fully-Connected는 영상(이미지)를 처리하기에는 한계가 존재한다.

Fully-Connected Single Layer

1) Fully-Connected-Network는 평균적인 이미지만 표현할 수 있다. (모델 표현력 부족)

FCN의 한계 1

 

2) Fully-Connected-Network는 Local feature를 학습하지 않는다.

FCN의 한계 2

2.2) Convolutional Neural Networks (CNN)의 등장

CNN

*) CNN이 영상에 매우 적합한 네트워크인 이유

1) Local feature Learning

: Sliding-Window 기반으로 각 영역에서의 Feature를 추출하여 저장한다.


2) Parameter Sharing

: 같은 Parameter를 가진 Filter로 전체 영역에 대해서 더 적은 Parameter로 효과적인 Feature를 추출하므로 

 

CNN을 이용하여 다양한 CV TASK에 적용될 수 있다.

3. CNN Architectures for image classification

- CNN 모델 구조를 이용한 이미지 Classification의 발전 연대기

CNN Model의 발전 연대기

- 각 모델들의 설명은 이 강의내용 정리에서는 생략.


1.2) Annotation Data Efficient Learning

더보기

Annotation Data Efficient Learning

 

 

1. Data Agumentation

- 충분한 학습 데이터가 확보되지 않으면, 오버피팅(과적합) 문제가 쉽게 생길 수 있다. 즉, 충분하지 않은 학습 데이터에만 지나치게 훈련되어 새로운 데이터(=테스트 데이터)에 제대로 반응하지 못하는 현상이 생길 수 있다.

- 또한, 학습 데이터와 학습을 위한 Label된 데이터를 방대하게 구축하기에는 많은 cost가 소요되어 방대한 양의 학습데이터를 구축하기 쉽지 않다.

 

- 때문에 적은 양의 확보한 학습 데이터로 이에 매칭되는 Label이 보장됨을 유지하면서 데이터를 변형함으로써 학습 데이터를 증강하는 것이 Data Agumentation 이다.

Data Agumentation
Data Agumentation의 예시

- Data Agumentation의 기법은 다양하다. (Rotate, Flip, Crop, Affine transformation, CutMix 등)

- 성능 향상을 위한 Data Augmentation 기법들을 샘플링하여 효과적인 Data Agumentation 기법을 찾아내는 RandAugment도 있다.

 

Data Agumentation을 적용한 결과

2. Leveraging pre-trained information

: 데이터를 적게 쓰고도 좋은 성능을 발휘하기 위해서 다른 데이터셋에서 학습된 정보(Pre-trained)를 활용하는 방법

2.1) Transfer Learning

: 많은 학습 데이터셋을 구축하는 과정 속에서 학습 데이터와 매칭되는 Label들을 구축하는 것에도 많은 Cost가 소요된다. 따라서 이런 어려움을 극복하기 위한 방법으로 Transfer Learning이 있다.

- 한 데이터 셋에서 배운 지식을 다른 데이터 셋에서 활용하는 기술

 

Approach 1 : Transfer Knowledge from a pre-trained task to a new task

: 데이터가 아주 적을 때 유용하게 사용 가능

Approach 1. Pre-trained 된 Layer는 학습이 일어나지 않게 고정하고 새로운 Layer만 학습

 

Approach 2 : Fine-tuning the whole model

: 데이터가 어느 정도 있다면, Fine-tuning 방식으로 사용하면 더 좋은 성능을 기대할 수 있다.

Fine-tuning

2.2) Knowledge distillation

- Pre-trained된 Teacher Model의 지식을 Student Model에 주입하여 학습 (큰 모델 -> 작은 모델)

- 최근에는 Teacher Model에서 생성된 출력을 pseudo-labeling (가짜 Label)로 자동 생성을 하는 메커니즘으로 사용함 (Generating pseudo-labels for an unlabeled dataset)

 

1. Standard Teacher-Student Network Structure

KL div. Loss 사용한 Teacher-Student Network

2. Un-labeled Teacher-Student Network Structure

Un-labeled Data를 학습하는 과정

*) Hard Label vs Soft Label

Hard Label vs Soft Label

*) Softmax with temperature (T)

Softmax(T=1) vs Softmax(T=t)

 

*) Student Loss

- CrossEntropy 사용 (True Label을 기반으로 새로 학습하므로)

- Loss = difference between the student network's inference and true label

 

*) Distillation Loss

- Teacher Model의 학습 분포를 Student Model이 학습(모방)하기 위해서

- KLdiv 사용

- Loss = difference between the teacher and student network's inference

 

Weighted sum of "Distillation loss" and "Student loss"

- 최종적으로 두 Loss의 합으로 학습(Backpropagation)이 이루어진다. (Student Model에 대해서만)


3. Leveraging unlabeled dataset for training

3.1) Semi-supervised Learning

- Unlabeled Data를 목적성 있게 잘 사용하는 방법

- 역시, Labeled 된 Data를 방대하게 구축하기에는 많은 Cost가 소요

- 반면 Unlabeled Data는 웹상에서도 쉽게 구할 수 있음.

- 따라서 이 둘의 데이터를 모두 활용하기 위한 방법

 

- Semi-supervised learning with pseudo labeling

Pseudo-Labeled 를 활용한 학습

3.2) Self-training

- 앞서 알아본 방법을 모두 활용하여, 효과적으로 Self-학습하는 방법 (Data Agumentation, Knowledge distillation, Semi-Supervised Learning (Pseudo label-based method)

- 효과가 가장 뛰어남

- 기존의 Teacher Model이 Student Model보다 항상 큰 모델이였지만, Self-training에서는 Student Model이 루프마다 더 큰 모델 학습되어 Teacher Model로 다시 대체된다.

 

Self-training 과정 (Teacher Model -> Student Model -> Teacher Model을 전 단계 Student Model로 대체 반복)
Self-Training을 보다 더 자세하게 풀어낸 그림

 

- 즉, 이 과정을 말로 풀어서 쓰면

1. Train initial teacher model with labeled data

2. Pseudo-label unlabeled data using teacher model

3. Train student model with both labeled and unlabeled data with augmentation

4. Set the student model as a new teacher, and set new model (bigger) as a new student

5. Repeat 2~4 with new teacher/student models


2. 피어 세션

더보기

1. 강의에 대한 토의

CutMix 구현 -> 확률로 2가지의 값을 가지는 Label은 어떻게 구현? -> Loss를 두가지의 Label 지정하여 계산하는 방법도 존재 

RandAgument -> Hyperparameter Search와 비슷한것인가?

 

NLP의 Teacher-Student 기반 모델과 비교 (경량화 관점) -> CV에선 아닌것 같다 (EX: Self-Training -> Student Model이 점점 커짐)

 

Self-Training에서 Student 모델이 점점 크기가 커진다는 것이 무슨 의미인가? (모델의 아키텍쳐가 추가되는것인가? 단순히 학습되는 데이터가 많아진다는 것인가?) -> 3가지 noise(data augmentation, dropout, stochastic depth)를 추가


3. Conclusion

더보기

1. Data Agumentation -> RandAgument 자세히 알아보기 

: 기존 pytorch에서 transform에 지정하여 사용하던 것과는 다르게, 성능 향상을 이루는 기법들을 찾아내는 방법이라고 하여 자세히 알아보기. (처음 보는 기법)

 

2. Image Self-training Model 찾아보기. + 구현해보기

: 이미지 데이터는 다량으로 확보하기도 어렵지만 그에 맞는 Labeling 작업이 매우 고된 것 같다. 때문에 앞으로 발전 방향도 Self-training으로 발전될 것이고 그에 따라 더 공부해야할 부분인 것 같다.


'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글

[Day 32] Computer Vision (CV) - 3  (0) 2021.03.11
[Day 31] Computer Vision (CV) - 2  (0) 2021.03.09
[Day 26-29] 특강  (0) 2021.03.02
[Day 25] GNN  (0) 2021.02.26
[Day 24] 정점 표현 & 추천 시스템 (심화)  (0) 2021.02.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함