(1강) Image classification 1
Course Overview
인공지능(AI)는 Computer가 인간의 지능을 모방하도록 하는 기술이다. 판단이나 번역과 같은 것도 지능의 영역이지만, 감각에 대한 인식도 지능의 일부이다. 모든 인간은 감각 기관을 통해 세상과 상호작용함으로써 그것이 무엇인지에 대해 인식하며 지식을 쌓아왔기 때문이다. 즉, 감각에 대한 지각능력은 지능의 매우 큰 부분을 차지한다.
시각을 포함한 모든 지각능력은 감각기관으로부터 얻어진 정보를 추상화 하는 것이다. 즉, Input과 Output의 형태로 이를 이해할 수 있다. 이 중에서도 시각정보는 매우 중요한데, 우리가 받아들이는 정보의 75%는 시각정보에 해당하기 때문이다. 우리가 시각정보를 어떻게 처리하는지를 모방하여 이를 Computer에 대입시켜보자.
즉 Computer Vision이란, Computer의 Visual perception과 Intelligence을 구현하는 문제로 이해할 수 있다. Visual 형태의 다양한 Input을 수용하는 것과, 이를 유용한 정보로 변환하고 이해하는 것이 목표이다. 위에서 보았듯, 우리는 우리의 시각 지각능력을 Computer에 대입시키려고 노력했다. 하지만, 인간의 시각능력도 완벽하지 않다는 것을 쉽게 알 수 있다.
Computer Vision은, 사람의 시각적 지각능력을 모방하면서 동시에 불완전성을 극복하는 방향으로 개발되어야 하는 것이다. 이와 같은 맥락으로, 이전의 CV는 전문가에 의해 시각적 특성을 추출하고 학습시키는 고전적 ML의 형태로 구현되었다. 하지만, 인간에 의한 특성 추출은 우리가 갖는 특유의 편향이 포함될 확률이 높고, 인지하지 못하는 특정 신호를 찾지 못할 확률이 높으며, 추출한 특성을 Computer가 잘 이해하도록 수식화하는 데에도 어려움이 있다. 위와 같은 이유로 인해 현재는 Deep Learning의 형태로 CV를 구현해나가고 있다.
Image classification
가장 기본적인 CV의 Task는 Image classification이다. 이는 영상이나 이미지를 입력으로 받아서, 해당 데이터가 어떤 카테고리나 클래스에 속하는지를 반환하는 형태의 Task이다.
Deep Learning의 방법 없이 이를 구현하고자 한다면 다음과 같이 생각해볼 수 있을 것이다.
- 세상의 모든 Image를 저장 및 보관한다.
- 새로운 Image 혹은 특정 Image를 Input으로 받는다.
- 해당 Image가 다른 어떤 Image들과 유사한지 판별한다.
- 해당 Image가 무엇인지 반환한다.
위와 같이 구성할 경우, 저장된 Image 내에서 검색하는 형태의 알고리즘으로 구현할 수 있을 것이다. 하지만, 이와 같은 형태로 구성하는 것은 실적으로 불가능 할 것이다. 간단하게만 생각해도 아래와 같은 문제를 찾을 수 있다.
- 하드웨어의 한계로 세상 모든 Image를 저장할 수 없다.
- 세상 모든 Image를 저장하더라도, 이에 대한 검색을 수행할 수 없다.
- Image가 무엇을 의미하는지 Labeling할 수 없고, 통용되는 기준을 찾을 수 없다.
위와 같은 문제들로, 우리는 형태로 이미지의 특성을 Neural network에 압축해 녹여내고자 하는 것이다. Neural network 구성 시 먼저 고려할 수 있는 것은 Fully connected layer이다. Image의 모든 픽셀에 대해 가중치를 부여해, 전체 이미지가 무엇을 의미하는지 확인하는 것이다.
Fully connected layer는 각 픽셀의 위치정보를 포함하지 않기 때문에, Input Image가 평균적인 위치와 다를 경우 제대로 작동하기 어렵다.
이와 같은 한계를 극복하고자 CNN이 등장했다. 이는 국소적인 부분의 정보를 취합하여 각 픽셀간의 상호 연관성을 보존할 수 있다. CNN은 CV에서 매우 효과적으로 작동하여, 이를 기반으로 다양한 모델이 등장했고 현재의 인공지능 기술을 이끌어 나가고 있다.
CNN architectures for image classification 1
CNN을 Back bone으로 한 다양한 모델이 등장하여, 현재에 이르고 있다. 특히, AlexNet의 등장으로 인해 기계학습의 패러다임이 변화하게 되었으며, CV 발전에 가속도가 붙기 시작했다. AlexNet은 1998년 발표된 LeNet을 발전시키는 방향으로 구현되었다. AlexNet은 LeNet보다 많은 7개의 Hidden layer를 사용했고, 훨씬 더 많은 Image data를 통해 학습했으며, ReLU와 Dropout과 같은 기법을 도입했다. 논문에서 제시한 구조를 구현하면 아래와 같다.
실제 논문에서는 Local response normalization(LRN)을 사용했으나, 현재에는 사용되지 않고 있어, 이를 제외하고 구현한 형태이다. LRN은 이미지의 국소 부분의 명암을 정규화해주는 역할을 수행했다. 현재는 이 대신 Batch normalization을 주로 사용한다.
VGGNet은 AlexNet을 더 발전시키는 형태로 구현되었다. VGGNet은 AlexNet에 비해 더 깊지만, 단순한 구조를 가졌으며, 월등히 높은 일반화 성능을 가졌다.
VGGNet의 핵심적인 아이디어는 작은 Convolution filter만을 사용한 것이다. 이를 통해서 Receptive field를 유지하는 동시에 Parameter의 수를 획기적으로 줄일 수 있었고, 더 깊은 층을 구성할 수 있게 되었다.
(2강) Annotation data efficient learning
Data augmentation
Deep learning은 근본적으로 대량의 데이터를 필요로 한다. 하지만, Model이 필요로 하는 만큼의 고품질이면서 Label이 있는 데이터를 구하는 것에는 현실적인 한계가 존재한다. 이런 한계를 극복하기 위해 한정된 데이터를 증강하는 방법을 사용할 수 있으며, 이를 Data augmentation이라 칭한다.
우리가 얻는 데이터는 많은 경우에 이미 편향되어 있다. 사진과 같은 경우에 사진학적 유행을 따르게 되어 있으며, 현실세계의 모든 이미지를 반영하지 못한다.
즉, 우리가 얻는 샘플링 된 데이터들은 실제 세계의 다양한 데이터 분포를 모두 반영할 수 없는 것이다. 간단한 예시로, 잘 찍힌 사진은 모두 적절한 명암과 밝기를 가지고 있다. 이러한 데이터만 학습한 경우에는 어두운 사진과 같은 데이터에 대해 성능이 현저히 낮게 나올 것이다.
Data augmentation의 다양한 방법은 아래와 같다.
- Brightness adjustment : 밝기를 조절해 이미지의 다양성을 증강한다.
- Rotate, Flip : 이미지를 회전 및 반전시켜 이미지의 다양성을 증강한다.
- Crop : 이미지의 특정 부분을 잘라 이미지의 다양성을 증강한다.
- Affine transform : 선형변환을 통해 늘리거나 축소하여 이미지의 다양성을 증강한다.
- CutMix : 다양한 이미지를 자르고 붙여 이미지의 특성을 확률값으로 구성한다.
위와 같이 다양한 Augmentation을 일일이 적용해 볼 수 없기 때문에, RandAug와 같은 방법을 고려할 수 있다. RandAug는 적용할 Augmentation과, 적용 정도를 전달인자로 받아서 이를 적용한다.
Leveraging pre-trained information
Transfer learning은 이미 학습된 모델을 활용하는 방법이다. 기학습 된 모델이 공통적인 지식을 보유했을 것이라고 가정하는 것이며, 이를 통해 새로운 형태의 Task더라도 쉽게 적용할 수 있다. 예를 들면, 이미 학습된 모델의 Convolution layers뒤에 우리가 원하는 Task의 Head를 붙이고, Head 부분을 중점적으로 학습하여 해당 Task에 적용시키는 것이다.
Knowledge distillation은 새로운 모델이 기학습된 모델을 모방함으로서, 해당 모델의 지식을 전수받는 개념이다. Teacher model과 Student model에 동일한 입력값을 넣고, Output의 차이를 통해 Student model이 학습하는 것이다.
이외에도, 적용하고자 하는 Task의 Label이 있는 경우에는 다음과 같이 학습을 시킬 수 있다. 이 방법 역시 Student model을 학습시키고자 하는 것이며, 각각에서 발생한 Loss를 가중합하여 역전파 및 학습이 진행된다.
위 학습에서 고려해야 할 사항은, 다음과 같다.
- Student model이 출력한 두 Soft prediction은 다른 값이다. Teacher model과 유사한 결과를 내는지 비교하기 위한 값과, 실제 Task에서 Label을 맞추는지를 확인하는 값으로, 두 값의 성질이 다르다. 단, 두 값은 모두 Soft한 확률값을 사용하며 Loss를 계산하는데 사용된다.
- Teacher model과 비교하기 위한 Soft prediction은 큰 T값을 갖는다. Softmax를 통과할 때, 큰 T값으로 값을 정규화함으로서 확률값이 극단적으로 변하지 않도록 유도한다. Teacher model이 어떤 확률값을 구성했는지를 잘 확인하고 학습하기 위함이다.
- 두 목적에 따라 Loss function이 다르다. Teacher model을 모방하기 위해서는 각 확률분포의 거리를 계산하는 KL div loss를 사용하며, Ground truth를 맞추기 위해서는 예측한 확률값과 실제 Label의 차이를 구하기 위해 Cross entropy loss를 사용한다.
Leveraging unlabeled dataset for training
위 방법은 주로 Model의 경량화에서 사용되는 방법이었다. 위 기법을 활용하여 Unlabeled data를 학습에 활용할 수 있다.
Semi-supervised learning은 다음과 같이 진행된다.
- 주어진 Labeled data를 활용해 모델을 학습시킨다.
- Unlabeled data를 해당 모델의 Input으로 활용해 임의의 Label을 얻는다.
- 임의로 얻어진 Label을 Unlabeled Data의 Pseudo-label로 삼는다.
- Labeled dataset과 Pseudo-labeled dataset을 모두 활용하여 모델을 학습시킨다.
위 방법론들을 사용한 Self-training은 모델 학습의 새로운 지평을 열었다. 학습에 필요한 대량의 데이터를 손쉽게 얻을 수 있으면서, 동시에 모델의 성능도 개선되는 파격적인 효과를 거두게 되었다. Self-training은 다음과 같이 진행된다.
- 주어진 Labeled data를 활용해 Teacher model을 학습시킨다.
- Unlabeled data를 Teacher model의 Input으로 활용해 임의의 Label을 얻는다.
- 임의로 얻어진 Label을 Unlabeled Data의 Pseudo-label로 삼는다.
- Labeled dataset과 Pseudo-labeled dataset을 모두 활용하여 Teacher model 보다 큰 구조의 Student model을 학습시킨다.
- Student model을 Teacher model로 삼고, 더 큰 새로운 모델을 Student model로 하여 위 구조를 반복한다.
Reference
'네이버 부스트캠프 AI Tech' 카테고리의 다른 글
[U] Day 33 - CV III (0) | 2021.03.26 |
---|---|
[U] Day 32 - CV II (0) | 2021.03.26 |
[U] Day 30 - AI+ML과 Quant Trading & AI Ethics (0) | 2021.03.26 |
[U] Day 29 - NLP를 위한 언어모델의 학습, 평가 & AI와 저작권법 (0) | 2021.03.26 |
[U] Day 28 - 캐글 경진대회 노하우 & Full Stack ML Engineer (0) | 2021.03.26 |
Uploaded by Notion2Tistory v1.1.0