•
컴퓨터 비전 분야에서는 오래전부터 Hand-crafted Feature 를 사용하는데 익숙했다.
◦
이미지와 비디오에서 필요한 정보를 추출하기 위한 기법으로 활용
◦
하지만 대부분 인간의 경험에 바탕을 둔 정보 선택으로 만들어진 기법들이라 높은 수준의 이미 정보를 추출하기는 어려웠다.
◦
예를 들어 SIFT, HOG 와 같은 알고리즘들을 이용해 객체의 엣지나 텍스쳐 정보들을 추출하거나 표현하였다.
•
이런 식으로 이미지의 정보를 추출하는 방법은 과거 이미지 프로세싱 분야에서 인기를 얻어지만 요구되는 문제들의 복잡성이 증가함에 따라 점차 CNN 분야로 완전히 그 영광을 넘기게 되었다.
◦
하지만 이에 따른 학습 데이터 구축 비용의 증가는 개발에 많은 부담을 준다.
•
이런 문제들을 타계하기 위해 비지도 학습(unsupervised learning) 방식이 제안되기도 했다.
◦
하지만 비지도 학습의 경우 사전에 가정된 정보(Prior)가 실제 데이터와 맞지 않으면 엉뚱한 결과를 얻게 된다.
•
자기 지도 학습(self-supervised learning)은 비지도 학습 방법론 중 한가지 특별한 형태로 고려할 수 있다.
◦
이 방식은 비지도 학습과는 달리 별도의 가정보다는 데이터 자체의 정보를 이용하여 레이블을 구성하는 방식을 사용한다.
◦
따라서 대규모로 데이터를 수동 구축하지 않더라도 쉽게 학습이 가능하다.
◦
보다 현실적인 방법은 소량의 데이터를 구축하고 이를 확장하는 것이다.
▪
이를 Few-shot learning 이라고 한다.
•
Transformer 는 최근 NLP 에서 각광받은 기술로 CNN 에도 영향을 주고 있다.
◦
그 결과 ViT(Vision Transformer) 와 같은 기술도 소개되었다.
◦
하지만 아쉽게도 ViT 는 CNN 기법에 비해 뭐가 더 좋은지 이야기하기가 애매하다.
▪
더 많은 학습 데이터가 필요하지만 성능은 딱히 더 좋지 못함
•
이제 이 논문의 소개를 진행한다.
◦
self-supervised 기법이 ViT 에 미치는 영향을 확인한다. 보통의 ViT 와 CNN에서는 나타나지 않는 몇가지 흥미로운 속성을 발견했다.
▪
이미지 내의 레이아웃. 특히 객체의 경계를 명시적으로 포함한다는 사실을 확인했다. 이것을 맨 마지막 레이어에서 바로 확인할 수 있다.
▪
별도의 Fine-tunning 없이 K-NN 을 수행할 경우 좋은 성능을 보인다. ImageNet 데이터에 대해 78.3% 이라는 top-1 정확도를 보인다.
Vision Transformer
•
NLP 쪽에서 영감을 받아 Transformer 기법을 이미지 모델에도 적용
•
원래 Transformer 는 토큰 Embedding 을 1D 데이터로 입력 받지만 2D 인 이미지를 입력받기 위해 이미지를 Flatted 된 2D 패치로 입력받게 된다.
•
BERT 의 [class] 토큰과 유사하게 학습 가능한 별도의 Embedding 토큰이 추가되어 있다.
◦
pre-training/fine-tuning 시에 여기에 MLP 를 하나 붙여 학습을 진행한다.
•
Position embedding 도 추가되어 있다.
◦
일반적인 1D embedding 을 사용한다.
•
Transformer Encoder 를 보면 LN(LayerNorm)과 Residual connect가 사용된 것을 확인할 수 있다. MLP 에서는 GELU가 사용된다.
◦
대략적인 모델의 내용은 위 그림만 보면 된다.
•
좀 더 자세한 수식은 다음을 참고하자.
•
LayerNorm 은 다음과 같다.
•
이제 전체 ViT 에 대해 살펴보자.
•
DETR와 같이 NLP와 CNN을 결합한 시도라고 할수 있다.
◦
이 아이디어는 매우 간단한데 이미지 분류 문제에 Transformer 를 사용하는 것.
•
만약 대규모듸 데이터셋으로 pre-training 을 수행한 뒤 좀 더 작은 크기의 데이터셋 (예를 들면 ImageNet, CIFAR-100, VTAB 등)으로 학습을 하면 ViT 는 CNN보다 더 좋은 성능을 얻을 수 있음이 확인되었다.
◦
이는 CNN을 사용하여 학습하는 것보다 더 적은 리소스가 요구된다.
Knowledge Distillation
•
KD 란 큰 모델의 결과를 작은 결과의 학습에 사용하는 것을 의미한다.
•
큰 모델의 유용한 정보를 작은 모델이 학습하여 더 좋은 결과를 얻어낼 수 있다.
•
Teacher 네트워크는 분류 결과에 대한 확률 분포를 출력합니다.
•
Student 네트워크는 분류 결과를 예측합니다.
•
두 확률 분포 사이의 차이를 최소화하기 위한 방법으로 Loss 를 설계합니다.
•
Teacher 네트워트의 정보를 더 잘 추출하기 위해 파라미터 T를 사용합니다.
•
큰 T 값은 좀더 "soft" 확률 분포 결과를 전달하게 됩니다.
•
이 때의 T를 온도(temperature)라고 부릅니다.
•
Teacher/Student 모델에서는 Loss 함수에 2개의 Term 을 사용하게 됩니다.
◦
자세한 내용은 생략합니다. (그림만 봐도 쉽게 이해 됩니다.)
Self-supervised Learning with Knowledge Distillation (SSL w/ KD)
•
Self-supervised Learning 을 이후부터는 SSL이라고 부른다.
•
SSL 에서 KD를 쓰는 방법에 대한 설명
•
가장 먼저 서로 다른 view 를 가지는 이미지를 크롭한다. (multi-crop strategy)
◦
우선 주어진 이미지로부터 여러 view 를 추출하여 Set V 를 생성한다.
◦
V 에는 크기 224를 가지는 2개의 global view 가 포함되고 그 외에는 96 크기를 가지는 작은 여러 view 가 포함된다.
•
Global view 는 Teacher 모델로, 그 외의 view 는 Student 모델로 들어간다.
•
두 네트워트(Teacher/Student)는 동일한 Backbone 으로 구성된다. (ViT 나 ResNet)
◦
하지만 서로 다른 parameter 수와 prjection head 를 가진다.
◦
Projection head 는 2048 Dim 으로 구성된 3-layer MLP 로 구성된다.
◦
그 뒤로 L2 정규화 및 K-dim 을 가지는 weight norm FC 를 사용한다.
•
모든 결과가 uniform distribution으로 수렴하는 것을 막기 위해 or 결과에 상관없이 하나의 레이블로만 판정되는 것을 막기 위해 2가지 기법을 제안하였다.
◦
teacher 모델에 bias term 인 c 를 추가
◦
center 는 EMA(exponential moving average) 로 업데이트 된다.
◦
여기서 은 0보다 크고 는 batch size 를 의미한다.
•
Centering 은 특정 클래스로 쏠리는 현상을 막을 수 있지만 Uniform distribution으로 흐르는 것은 막지 못한다.
•
반면 Shapening 은 온도 를 작게 가져가면 커지게 되고 Centering 과 정확히 반대의 작용을 수행하게 된다.
•
결국 서로 상보적인 관계로 어느 한쪽만을 사용하게 되면 붕괴(collapse) 상황에 놓이게 된다.
•
단일로만 사용하는 경우
◦
Entropy 의 경우 각각 0, 1 로 수렴되어 붕괴
◦
KL 값은 모두 0
•
Teacher 결과는 평균으로 된 중심 값을 사용한다.
•
두 네트워크의 유사성은 cross-entropy 로 측정된다.
•
Teacher 모델의 경우 Stop-Gradient (sg) 가 적용되어 있다.
◦
따라서 오로지 student 의 gradient 값만 하우로 전파된다.
◦
Teacher 파라미터는 EMA(exponential moving average) 형태로 업데이트 된다.
•
학습 중에는 의 값을 0.996에서 1까지 올린다. ( cosine lr)
•
Cosine Annealing 은 lr-schedule 기법 중 하나로 큰 lr 로 시작했다가 급격하게 낮추는 방식을 사용하고 이를 여러 번 반복하는 형태를 취한다.
실험 결과
•
일단 ImageNet 을 활용한 pretrain 작업을 레이블 없이 수행하였다.
•
batch size 는 1024를 사용하고 초기 10epoch 까지는 lr 을 선형 증하시키고 이후 cosine-lr 을 사용한다. (흔한 방식임)
•
사용한 Data Augment 는 다음과 같다.
◦
컬러 지터링 : brightness, contrast, satutation, hue 를 랜덤하게 조절.
◦
가우시안 블러링 적용
◦
Solarization 사용
◦
기타 자세한 내용은 논문 참고
•
multi-crop 을 사용하고 position embedding 을 적용하기 위해 bicubic-interpolication을 사용한다.
•
입력 이미지의 크기를 늘려도 패치 크기는 유지하기 때문에 입력 패치 수 N 이 변경된다.
◦
따라서 Transformer 에서는 더 많은 토큰을 처리하기 위한 모델 및 분류기를 수정할 필요가 없다. (대신 position embedding은 조절해야 한다.)
◦
원칙적으로는 bilinear interpolation 같은 전통적인 scaling 기법을 사용해도 문제가 없어야한다. 하지만 bilinear 보간법은 이웃에 비해 이웃간 l2-norm 을 줄이게 된다. low-norm 벡터는 pre-train Transformer 에 적합하지 않으며 fine-tuning 작업을 거지치 않는 경우 accuracy 가 크게 떨어지는 것을 확인했다.
•
다음 그림은 training loss 를 표현한 그림이다.
•
lr 값이 너무 작으면 로스가 감소는 하겠지만 너무 느리게 내려간다.
•
최적의 lr 영역으로 들어가게 되면 loss 함수가 크게 감소하는 것을 확ㅇ니할 수 있다.
•
여기에 lr 값을 키우면 다시 loss 값이 반등되고 심지어 loss 값이 크게 증가한다.
•
최상의 lr 값은 loss 값이 확 떨어지는 것과 관련이 있다.
평가
•
평가는 ResNet-50 또는 DeiT-samll 모델을 사용
•
평가 프로토콜은 linear or k-NN로 평가
•
사전 훈련된 네트워크에서 feature 를 추출하여 평가
•
분류는 k-NN 으로 사용 (이 때 weighted k-NN을 사용한다.)
◦
가까운 이웃이 미치는 영향이 먼 이웃보다 커야한다는 가정
◦
k-NN 의 개조
•
이미 빨간색, 녹색으로 판별된 point 가 있는 상태에서 검은 point 를 판별
•
K=5 인 경우 가까운 5개의 point 에 대해 distance 를 고려하여 계산
•
가중치를 활용하므로 다음과 같은 상황도 발생함
•
k-NN 결과 확인
•
DINO가 ResNet-50 최신 기술과 동등한 성능임을 확인할 수 있다.
•
ViT 를 사용하는 경우 성능이 매우 높다
•
DINO 로 더 큰 ViT 를 학습하면 성능이 향상되지만 패치 크기를 줄이는 게 성능에 더 큰 영향을 준다.
◦
패치 크기를 줄리면 실행시간은 줄어들지만 메모리 사용량이 늘어난다.
◦
8x8 패치를 사용하는 기본 ViT 모델로 80.1% 라는 놀라운 성능을 얻었다.
Self-Attention Visualizations
•
attention map 을 시각화하기 위해서 Nearest Neighbor 보간 방법을 이용해서 원래 크기의 이미지로 확대한다.
•
Nearest Neighbor 보간 방법은 가장 가까운 점을 선택하고 모든 인접 포인트를 고려하지는 않기 때문에 개별 포인트마다 상수 타임에 계산된다.
◦
알고리즘 자체가 아주 쉽기 때문에 많이 구현되는 기법.
•
[CLS] 관련
◦
이 토큰에는 레이블(label)이나 정답 등이 기술되지 않는다.
◦
이 말은 모델이 자동으로 클래스 단위의 feature 들을 학습하여 unsupervised object segmantation을 만들어낸다는 의미.
◦
처음 1-3 레이어의 경우 아주 세부적인 pixel 정보들을 함축하고 더 깊은 레이어인 4-6 레벨의 경우 좀 더 global 패치의 정보들을 포현하고 있음을 알 수 있다.
Video instance segmentation
◦
DAVIS-2017 비디오 데이터를 이용하여 segmantation 평가를 수행한다.