AI는 사람의 지능을 컴퓨터 시스템으로 구현을 하는 것인데 이때 지능은 인지 능력과 지각 능력, 사고 능력까지도 포함하는 넓은 영역을 말한다.
사람으로 따지면 시각 능력을 사용하는 분야로 시각 정보를 사용해 데이터로 표현 혹은 분석하는 것으로 말할 수 있을 거 같다. 반대로 분석해놓은 정보를 이용해서 장면에 해당하는 이미지나 3D scene을 재구성 하는 것을 Computer Graphics라 부르고 Rendering Technic이라고 볼 수 있다.
어떤 시각 능력을 컴퓨터로 표현하기 위해서는 시작점을 잘 모르기 때문에 사람의 구조를 모방하는 것이 자연스러운 시작이 될 수 있다.
입력 영상 데이터로부터 영상을 분류하는 것이다.
Single FC Layer (Linear Regression)를 사용해 분류 문제를 해결하고자 할 때 한 예로 학습 시 이미지 전체를 사용하고 테스트 시 crop된 이미지를 사용한다면 특징을 잘못잡아 예측 정확도가 떨어질 확률이 높다.
Fully connected neural net: 하나의 특징을 추출하기 위해 모든 픽셀을 고려한다
Locally connected neural net: 하나의 특징을 추출하기 위해 영상의 공간적인 특성을 활용해 국소적인 영역들만 고려한다
CNN: 이를 활용해 sliding window처럼 connection을 공유해서 전 영역을 순회하면서 특징을 추출하는 방법
Image-Level: Classification
Classification + Regression: Obejct Detection
Pixel-level Classification: Segmentation
CV Task를 위해 다양한 CNN 모델 구조들이 제안되었고 2014 이전에 제안되었던 대표적인 모델들은 다음과 같다.
2개의 CNN 네트워크와 2개의 FC레이어를 사용한 모델로 5x5 필터를 사용했으며 한 글자단위를 인식하는데 사용되었고 우편 번호 인식에서 크게 기여했다.
7개의 레이어를 사용하고 ReLu 활성화 함수와 Drop out을 사용하였고 당시 GPU 메모리를 고려해 모델이 2개의 경로로 구성된다.
CNN 레이어에서 3x3 필터와 2x2 max pooling 만을 사용하는 간단한 구조로 ILSVRC 2014에서 2등을 할 정도로 좋은 성능을 발휘하였고 다른 task에서 적용할 수 있도록 일반화가 잘되는 특징 추출이 되는 것을 입증했다. 당시 1등은 GoogleNet이지만 구조가 다소 복잡하다.
모델의 성능을 향상시키위한 여러 방법들 중 적용이 쉬운 한 가지가 데이터 증강이다. 모델은 데이터를 통해 패턴 혹은 특징을 분석하여 결론을 내는데 학습 데이터만으로는 실제로 존재하는 모든 데이터들을 모두 표현할 수 없기 때문에 이를 보완하기 위한 방법이 필요하다. 즉, 실제 데이터와의 gap을 줄이기 위해 사용한다.
전이 학습이라는 방법이 존재한다. 한 데이터에서 배운 지식을 다른 데이터셋에서 활용하는 방법으로 데이터셋이 다르지만 영상이라는 공통점을 통해 비슷한 지식이 존재할 수 있다는 가능성을 가지고 사용한다.
Fine-tuning 방법으로는 주로 두 가지를 사용한다.
이미 학습된 큰 모델인 teacher 모델의 지식을 작은 모델인 student 모델에게 주입하여 학습하는 방법이다. 큰 모델에서 작은 모델로 지식을 전달함으로써 모델 압축에 유용하게 사용할 수도 있다.
Labeled된 데이터의 개수는 한정적이므로 Unlabeld된 많은 데이터와 labeled된 적은 데이터를 사용해 학습하는 방법이다. labeld된 데이터를 사용해 먼저 모델을 학습해 pseudo-labeld 데이터셋을 생성하고 labeld된 데이터와 합쳐서 새로운 모델을 학습 혹은 이전 모델을 재학습한다.
AlexNet, GoogleNet, VGGNet 모델 등으로 인해 레이어가 깊을수록, receptive field 크게 가져갈수록 성능이 향상되는 점을 발견했는데 이때 레이어가 단순히 깊어지기만 하면 vanishing/exploding gradient 문제가 발생할 수 있고 연산 복잡도가 높아지느 등 문제가 발생한다.
GoogLeNet에서는 1x1 컨볼루션을 사용한 bottle-neck 구조를 사용해 계산 복잡도를 줄이고자 했다.
최초로 100개 이상의 레이어를 쌓은 모델은 제안하였다. 이때 identity map을 사용하는 shortcut connection을 사용하였고 지금도 많은 모델의 backbone이 되는 구조이다.
identity map을 더하는 것이 아닌 concatenation 연산을 사용해 상위 레이어에서의 특징도 하위 레이어에서 사용할 수 있는 구조를 제안하였다. 이때 채널 축으로 기하급수적으로 수가 증가할 수 있어 이를 조절하기 위해 Transition Block 구조를 사용한다.
채널 간의 관계를 모델링하고 중요도를 파악해서 중요한 특징을 attention할 수 있는 구조를 제안하였다. 이때 attention은 global average pooling을 사용한 squeeze step과 FC layer 하나를 통해 채널 간의 연관성을 고려해 attention score를 생성하는 excitation step으로 구성된다.
baseline 모델이 있을 때 width/depth/resolution scaling 등을 다양하게 실험했고 각각의 방법들이 saturation되는 증가폭이 서로 다르다는 것을 통해 적절한 비율로 동시에 사용하는 구조를 제안하였다.
자동차나 물건 같은 정형적인 데이터 이외에도 사람이나 동물같은 데이터에서도 잘 동작할 수 있도록 deformable 컨볼루션을 제안하였다. 기존의 grid receptive field를 가지는 것이 아닌 더 변형된 receptive field를 가진다.