1) Data augmentation

우리가 얻는 dataset엔 대부분 bias가 있다. 왜냐하면 실제 data 분포보다 우리가 얻는 data는 일부분에 불가하기 때문이다.
이러한 편향이 좋지 않은 이유는 다음과 같다. 만약 낮에 찍은 고양이 사진만 넣어서 학습시키고 어두운 고양이 사진을 넣는다면 network는 좋은 결과를 주지 못한다. 한번도 training 단계에서 보지 못한 data이기 때문이다. 이는 data가 실제의 모든 data 분포를 커버하지 못해서 나온결과이다.
그렇다면 이 빈 공간을 어떻게 채우면 좋을까?? 이 때 Data Augmentation을 사용하면 data의 빈 공간을 어느정도 커버할 수 있다. Crop 한더던지 Rotate한다던지의 방법을 통해 말이다.
앞의 예에서 어두운 사진이 없었기에 효과적으로 학습할 수 없었다. 따라서 명암 조절을 해 어두운 data를 집어 넣는다면 좀 더 좋은 결과를 낼 수 있을 것이다. 이러한 data augmentation의 종류는 아래와 같은 것들이 있다. 이외에도 다양한 Augmentation들이 있다.
1. Brightness adjustment
2. Rotate, flip
3. Crop
4. Affine transform

Affine transform 은 각 변과 변에 대한 비율, 변이 평행한것은 변경하지 않고 이를 지키며 Augmentation을 진행한다.
5. CutMix

CutMix를 진행할 때는 Label도 같은 비율로 합성하여야 한다.
6. RandAugment
많은 Augmentation 방법들이 존재하고 어떤 것을 해야 좋은 성능을 낼지 모를 때가 있다.
이 때 RandAugment를 사용하면 가장 좋은 옵션을 적용해준다.
이러한 Augmentation 의 parameter
1. 어떤 augmentation을 사용할지
2. 얼마나 쎄게 적용할지
2) Pre - trained information
1. Transfer Learning
높은 품질의 dataset 은 비싸고 얻기 힘들다. 따라서 data가 적을 때 성능을 내기 위한 전통적인 방법으로 사용 되었다.
이러한 Transfer Learning을 통해 pre-train된 모델의 학습된 능력을 통해 새로운 테스크에 적용할 수 있게 되었다.
Transfer Learning은 한 dataset 에서 배운 지식이 다른 dataset에 적용할 때 공통된 지식이 많지 않을까란 생각에서 시작되었다.
- 1 - 미리 학습된 모델로 부터 새로운 모델에 지식 전달의 관점

이 때 pre train 된 모델이 있다면 FC layer 층만 다른 것으로 교체해서 원래의 Convolution Layer는 학습을 시키지 않고 갈아끼운 FC layer의 parameter들만 학습을 시킨다. 이렇게 되면 pre-train 된 모델로부터 학습된 지식을 얻어올 수 있다.
- 2 - Fine tuning the whole model

위에서는 Convolution Layer 층은 Freeze 시켜서 학습을 시키지 않았지만 여기서는 Convolution Layer에는 낮은 learning Rate 를 적용시켜 학습시키고 FC layer에는 높은 Learning Rate를 주어 학습을 진행시킨다.
2. Knowledge distillation
Teacher-student Learning
이 방법을 일반적으로 큰 모델인 Teacher와 작은 model student 를 사용한다.
Teacher가 학습한 내용을 student에게 distillation 해주는 것이다.
이 방법은 모델 압축에 유용하게 사용된다(Teacher에 지식을 모방).
또한 최근에는 pseudo-labeling 을 통해 더 많은 dataset을 활용한다.
Teacher -student Learning 구조

student model은 Teacher모델의 지식을 모방한다.
이 방식은 label을 필요로 하지 않는다. 왜냐하면 Teacher Model 의 Output과 student model을 KL div를 이용하여 계산하기 때문이다. 따라서 Unsupervised Learning 이라고 볼 수 있다. 그리고 Student Model만 역전파법을 이용해 학습한다.

만약 label 된 data가 있다면 위와 같은 방법을 사용할 수 있다.이 때는 label을 활용하여 기존의 방법처럼 loss를 계산하는 Student Loss와 KL div를 활용하여 loss를 계산하는 방법 둘다 사용한다.

이 때 Soft Prediction 이란 기존 One-hot encoding을 사용한다면 정답레이블이 0 아니면 1로 딱딱하게 나왔는데 그것이 아니라 0 ~ 1사이의 값으로 나타내는 것을 의미한다.

또 SoftMax 함수를 보면 t라는 temperature 변수를 사용하는 것을 알 수 있다. 이는 softmax를 사용하면 값이 극단적으로 나오기 때문에 T라는 변수를 이용해 이것을 완화하기 위해 사용한다.
또 trained model 과 student 의 target이 다를 수 있다. 따라서 teacher에서의 각각의 semantic의미보다는 전체의 묶음이 추상적 지식을 표현한다고 생각해야한다.
Distillation Loss vs Student Loss

Distillation Loss의 경우 teacher model이 배운것을 모방하게 된다. Student Loss의 경우 올바른 정답을 찾게 도와준다. 최종적으로 두 Loss 의 weight sum을 loss로 이용하게 된다.
3) Unlabeled dataset
이제 label이 없을 때 성능을 올려보자
1. semi-supervised learning

label이 된 data는 label이 되지 않은 data보다 훨씬 적다.
이러한 label 된 data와 label되지 않은 data를 둘다 이용해서 학습하는것이 semi-sueprvised learning이다.

1. 먼저 label 된 data로 모델을 학습시킨다.
2. pre-trained된 model에 unlabel 된 data를 학습시켜 pseudo-label을 달아준다.
3. 그렇게 탄생한 pseudo-label data를 함께 학습시킨다.
2. self-training
위에서 보았던 Data를 효율적으로 만드는 method를 보면
1. data augmentation
2. Knowledge distillation
3. semi-supervised learning
self-training 은 위 3가지를 합쳐서 만들어졌다.

1. 먼저 Teacher Model을 label된 data로 학습시킨다.
2. unlabel 된 데이터에 pesudo- label을 붙여준다.
3. 그후 student model을 학습시킨다. RandAug 적용.
4. 그 후 Teacher를 교체하고 새로운 Student Model(이제 Teacher model이 된)에 unlabel 된 데이터를 넣어주어 label을 붙여준다.( 이후 2 ~ 3번 반복)
이렇게 하면 일반적으로 Teacher model 에 더 큰 모델을 사용하지만 이 경우엔 Student모델이 점점 커진다는 특징을 가지고 있다.
'AI > CV' 카테고리의 다른 글
Instance Panoptic Segmentation (0) | 2023.03.31 |
---|---|
CNN Visualization (0) | 2023.03.30 |
Object Detection (R-CNN, YOLO, SSD, DETR, Transformer) (1) | 2023.03.29 |
Sementic Segmentation(FCN, U-Net, DeepLab) (1) | 2023.03.27 |
Computer Vision 개요 (0) | 2023.03.27 |
1) Data augmentation

우리가 얻는 dataset엔 대부분 bias가 있다. 왜냐하면 실제 data 분포보다 우리가 얻는 data는 일부분에 불가하기 때문이다.
이러한 편향이 좋지 않은 이유는 다음과 같다. 만약 낮에 찍은 고양이 사진만 넣어서 학습시키고 어두운 고양이 사진을 넣는다면 network는 좋은 결과를 주지 못한다. 한번도 training 단계에서 보지 못한 data이기 때문이다. 이는 data가 실제의 모든 data 분포를 커버하지 못해서 나온결과이다.
그렇다면 이 빈 공간을 어떻게 채우면 좋을까?? 이 때 Data Augmentation을 사용하면 data의 빈 공간을 어느정도 커버할 수 있다. Crop 한더던지 Rotate한다던지의 방법을 통해 말이다.
앞의 예에서 어두운 사진이 없었기에 효과적으로 학습할 수 없었다. 따라서 명암 조절을 해 어두운 data를 집어 넣는다면 좀 더 좋은 결과를 낼 수 있을 것이다. 이러한 data augmentation의 종류는 아래와 같은 것들이 있다. 이외에도 다양한 Augmentation들이 있다.
1. Brightness adjustment
2. Rotate, flip
3. Crop
4. Affine transform

Affine transform 은 각 변과 변에 대한 비율, 변이 평행한것은 변경하지 않고 이를 지키며 Augmentation을 진행한다.
5. CutMix

CutMix를 진행할 때는 Label도 같은 비율로 합성하여야 한다.
6. RandAugment
많은 Augmentation 방법들이 존재하고 어떤 것을 해야 좋은 성능을 낼지 모를 때가 있다.
이 때 RandAugment를 사용하면 가장 좋은 옵션을 적용해준다.
이러한 Augmentation 의 parameter
1. 어떤 augmentation을 사용할지
2. 얼마나 쎄게 적용할지
2) Pre - trained information
1. Transfer Learning
높은 품질의 dataset 은 비싸고 얻기 힘들다. 따라서 data가 적을 때 성능을 내기 위한 전통적인 방법으로 사용 되었다.
이러한 Transfer Learning을 통해 pre-train된 모델의 학습된 능력을 통해 새로운 테스크에 적용할 수 있게 되었다.
Transfer Learning은 한 dataset 에서 배운 지식이 다른 dataset에 적용할 때 공통된 지식이 많지 않을까란 생각에서 시작되었다.
- 1 - 미리 학습된 모델로 부터 새로운 모델에 지식 전달의 관점

이 때 pre train 된 모델이 있다면 FC layer 층만 다른 것으로 교체해서 원래의 Convolution Layer는 학습을 시키지 않고 갈아끼운 FC layer의 parameter들만 학습을 시킨다. 이렇게 되면 pre-train 된 모델로부터 학습된 지식을 얻어올 수 있다.
- 2 - Fine tuning the whole model

위에서는 Convolution Layer 층은 Freeze 시켜서 학습을 시키지 않았지만 여기서는 Convolution Layer에는 낮은 learning Rate 를 적용시켜 학습시키고 FC layer에는 높은 Learning Rate를 주어 학습을 진행시킨다.
2. Knowledge distillation
Teacher-student Learning
이 방법을 일반적으로 큰 모델인 Teacher와 작은 model student 를 사용한다.
Teacher가 학습한 내용을 student에게 distillation 해주는 것이다.
이 방법은 모델 압축에 유용하게 사용된다(Teacher에 지식을 모방).
또한 최근에는 pseudo-labeling 을 통해 더 많은 dataset을 활용한다.
Teacher -student Learning 구조

student model은 Teacher모델의 지식을 모방한다.
이 방식은 label을 필요로 하지 않는다. 왜냐하면 Teacher Model 의 Output과 student model을 KL div를 이용하여 계산하기 때문이다. 따라서 Unsupervised Learning 이라고 볼 수 있다. 그리고 Student Model만 역전파법을 이용해 학습한다.

만약 label 된 data가 있다면 위와 같은 방법을 사용할 수 있다.이 때는 label을 활용하여 기존의 방법처럼 loss를 계산하는 Student Loss와 KL div를 활용하여 loss를 계산하는 방법 둘다 사용한다.

이 때 Soft Prediction 이란 기존 One-hot encoding을 사용한다면 정답레이블이 0 아니면 1로 딱딱하게 나왔는데 그것이 아니라 0 ~ 1사이의 값으로 나타내는 것을 의미한다.

또 SoftMax 함수를 보면 t라는 temperature 변수를 사용하는 것을 알 수 있다. 이는 softmax를 사용하면 값이 극단적으로 나오기 때문에 T라는 변수를 이용해 이것을 완화하기 위해 사용한다.
또 trained model 과 student 의 target이 다를 수 있다. 따라서 teacher에서의 각각의 semantic의미보다는 전체의 묶음이 추상적 지식을 표현한다고 생각해야한다.
Distillation Loss vs Student Loss

Distillation Loss의 경우 teacher model이 배운것을 모방하게 된다. Student Loss의 경우 올바른 정답을 찾게 도와준다. 최종적으로 두 Loss 의 weight sum을 loss로 이용하게 된다.
3) Unlabeled dataset
이제 label이 없을 때 성능을 올려보자
1. semi-supervised learning

label이 된 data는 label이 되지 않은 data보다 훨씬 적다.
이러한 label 된 data와 label되지 않은 data를 둘다 이용해서 학습하는것이 semi-sueprvised learning이다.

1. 먼저 label 된 data로 모델을 학습시킨다.
2. pre-trained된 model에 unlabel 된 data를 학습시켜 pseudo-label을 달아준다.
3. 그렇게 탄생한 pseudo-label data를 함께 학습시킨다.
2. self-training
위에서 보았던 Data를 효율적으로 만드는 method를 보면
1. data augmentation
2. Knowledge distillation
3. semi-supervised learning
self-training 은 위 3가지를 합쳐서 만들어졌다.

1. 먼저 Teacher Model을 label된 data로 학습시킨다.
2. unlabel 된 데이터에 pesudo- label을 붙여준다.
3. 그후 student model을 학습시킨다. RandAug 적용.
4. 그 후 Teacher를 교체하고 새로운 Student Model(이제 Teacher model이 된)에 unlabel 된 데이터를 넣어주어 label을 붙여준다.( 이후 2 ~ 3번 반복)
이렇게 하면 일반적으로 Teacher model 에 더 큰 모델을 사용하지만 이 경우엔 Student모델이 점점 커진다는 특징을 가지고 있다.
'AI > CV' 카테고리의 다른 글
Instance Panoptic Segmentation (0) | 2023.03.31 |
---|---|
CNN Visualization (0) | 2023.03.30 |
Object Detection (R-CNN, YOLO, SSD, DETR, Transformer) (1) | 2023.03.29 |
Sementic Segmentation(FCN, U-Net, DeepLab) (1) | 2023.03.27 |
Computer Vision 개요 (0) | 2023.03.27 |