최근에, MoCo, SimCLR, BYOL, SwAV와 같은 self-supervised learning 방법들은 supervised 방법들과의 차이를 점점 줄여가고 있습니다. 하지만, 최근의 SSL(Self-Supervised Learning) 방법들은 image dataset의 benchmark인 ImageNet dataset 에 국한하여 학습함으로써, 높은 성능을 달성하였습니다.
이번 논문은 ImageNet dataset에 국한하지 않고 real image data인 instagram image 을 무작위로 사용하여 SSL model을 구축하였습니다. 이러한 model을 SElf-SupERvised (SEER) model 이라고 설정하였고, 기존에 존재하던 SSL model보다 성능을 1% 끌어올렸습니다.
SEER
최근 deep learning trend는 weakly-supervised, semi-supervised, self-supervised와 같이, 잘 학습된 model pretraining과 다른 dataset으로 evaluation하는 downstream task를 수행하는 접근 방식으로 성능을 크게 향상 시켜왔습니다. 이러한 성공에는 2가지의 핵심 요소가 있습니다.
- 대량의 dataset에 대한 pretraining
- 방대한 parameters를 가지는 대용량 model의 사용
2가지의 핵심 요소를 가진 pretraining은 NLP(Natural Language Processing), Speech Recognition 뿐만 아니라, CV(Computer Vision)에서도 많은 이점을 보였습니다. 하지만, CV에서는 ImageNet과 같은 benchmark dataset에 국한하여 pretraining 시킴으로써, real world scale image의 일반적인 분포중에 제한된 부분만을 학습하여 진행하였습니다.
그래서, 이전부터 real world scale image dataset에 대한 SSL model을 학습하려는 시도는 존재하였습니다. 하지만, 이전의 시도들은 작은 model을 사용해도 충분할 정도로 작은 수백만개의 image dataset을 사용하였습니다. 이번 논문은 이전의 시도들과는 달리, 수십억개의 random internet image를 사용하여 고용량 model을 pretraining 시키는 방법을 제안합니다.
최근 SSL model인 SwAV에서 real world image인 instagram image를 사용하여 비교적 높은 성능을 보여줌으로써, real world image의 SSL 학습 가능성을 보여주었습니다. SwAV에서는 target이 계속해서 바뀌는 online learning을 활용하여 model을 구축하였는데, 이는 완전 random한 real world image의 성향과 적합하기 때문에 SwAV의 접근방법을 그대로 활용하였습니다.
SEER는 분석을 위해 7억개의 매개변수가 있는 RegNet architecture를 사용하였습니다. RegNet architecture를 사용한 이유에는 2가지가 있습니다.
- 효율성과 성능의 적절한 균형을 제공
- parameters의 수를 조절하는데 매우 flexible
이러한 이점을 가지는 RegNet backbone을 기반으로 SwAV 접근법을 사용하여 20억의 random한 internet image dataset을 online으로 학습하였습니다. 이러한 접근방법인 SEER는 real world dataset에 활용되는 SSL model일 뿐만 아니라, ImageNet을 사용하는 supervised learning model보다 더 좋은 성능을 달성하였습니다.
Method
Self-Supervised Pretraining
SEER는 SwAV의 접근방법을 활용하였기 때문에, SwAV에 관한 간단한 설명을 하겠습니다. SwAV는 annotations 없이 image의 여러가지 views간에 일관되게 cluster assignments를 생성하는 embedding을 학습하여 작동합니다. 자세한 내용은 이전 post를 참고하시면 감사하겠습니다.
Scale efficient model family: RegNetY
RegNet
데이터와 model 용량을 함께 확장하려면 memory와 runtime 모두에서 효율적인 architecture를 선택해야합니다. 이러한 목적을 만족시켜주는 것이 RegNet입니다. RegNet은 network backbone으로써, ResNet과 EfficientNet보다 좋은 성능을 보이는 backbone입니다.
RegNet은 아래 그림의 왼쪽인 (a) network 와 같은 구조로 설계되어있습니다. (a)의 구조처럼, RegNet은 input layer에 해당하는 stem, deep learning 연산들이 수행되는 body, output class를 예측하는 head로 구성되어있습니다.
연산이 이루어지는 body의 구조는 아래 그림의 가운데인 (b) body 와 같이 4개의 stage로 나누어져있으며, stage를 거치면서 점차 resolution이 줄어듭니다. 그리고, 이러한 stage는 여러개의 block으로 설계되어있습니다.
block 들은 아래 그림과 같이 $1\times 1$ $conv \Rightarrow 3\times3$ $group conv \Rightarrow final$ $1\times1$ $conv$로 설계되어 있으며, ResNet의 bottleneck block도 활용하여 구축하였습니다. 아래 그림의 (a)와 (b)는 conv stride size가 (a)는 1 size, (b)는 2 size로 설계한 RegNet block 구조 그림입니다. 그리고, 이러한 block은 4개의 parameters로 설계가 가능하며, 4개의 parameters는 (block의 수, block의 width, bottle neck 비율, group width) 로 구성되어 있습니다.
Squeeze and Excitation
논문에서는 그냥 RegNet을 사용하는 것이 아닌, squeeze and excitation을 추가하여 사용하였습니다. 이 방법을 추가한 architecture를 여기서는 RegNetY라고 정의하였습니다.
Squeeze and excitation은 CNN 알고리즘으로써, 2017년 ImageNet 대회에서 우승을 차지한 model입니다. 아래와 같이 간단한 구조를 통해서 높은 성능을 달성한 방법입니다.
위 그림에서 X와 U는 feature map이고, $F_{tr}$은 covnet입니다. X의 feature map이 $F_{tr}$을 통해 U의 feature map이 됩니다. 그리고 squeeze를 수행합니다. 이때, C개 channel의 2차원($H \times W$) feature map($u_c$)을 $1 \times 1$ size의 feature map($z_c$)으로 변환해주는 것입니다. 간단히 global average pooling을 통해 각 2차원의 feature map을 평균으로 하나의 값을 얻는 것입니다.
이로인해 각 채널을 하나의 숫자로 묘사할 수 있습니다. 즉, 총 C개 channel의 feature map이 있으므로, $1 \times 1 \times C$의 feature map으로 squeeze함으로써, feature map을 global하게 표현한 것입니다. 기존의 covnet이 local적인 information을 다룬다면, squeeze는 global한 information을 다룬다고 볼 수 있습니다.
squeeze 후에는 excitation을 적용합니다. 2개의 fully connection layer를 더하여 각 채널의 상대적인 중요도를 산출하는 것입니다.
위의 식에서 $\sigma$는 sigmoid function이고 $\delta$는 ReLU function입니다. squeeze로 얻은 $z_c$를 input으로 삼아서 가중치들과 결합하여 각 채널의 상대적 중요도를 0과 1의 값으로 산출하는 s를 얻습니다.
이렇게해서 얻은 C개의 $s_c$를 $u_c$에 각각 곱해줘서 U를 재보정해줌으로써, squeeze and excitation의 오른쪽 color box와 같이 $\tilde{X}$를 얻는 것입니다. 이러한 방법을 squeeze and excitation입니다.
RegNet의 convnet에 squeeze and excitation 방법을 추가하여 RegNetY model을 구축하여 사용하였습니다. squeeze and excitation을 추가한 RegNet이 기본적인 RegNet보다 성능이 더 좋았습니다.
The RegNetY-256GF architecture
논문에서는 RegNetY architecture 중에서 RegNetY-256GF architecture를 사용하여 학습을 진행하였습니다. RegNetY-256GF architecture는 RegNet block에서의 4개 parameters인 (block의 수, block의 width, bottle neck 비율, group width)를 (640, 230.83, 2.53, 373)으로, RegNetY의 4개의 stage의 stage depths를 (2, 7, 17, 1)으로, 4개의 stage widths를 (528, 1056, 2904, 7392)으로 setting한 총 6억 9550만 parameters를 가지는 architectrue입니다.
Optimization and Training at Scale
Learning rate schedule
SEER에서는 online learge scale training을 수행하기 위해, simpler fixed learning rate schedule를 구축하였습니다. 이 schedule은 loss가 감소하지 않을 때까지 learning rate를 고정한 다음 learning rate를 2로 나누는 것입니다. 이 learning rate schedule를 통해 model에서 실제로 잘 작동하고 유연하게 학습을 가능하게 하였습니다.
fixed learning rate는 RegNetY-256GF보다 비교적 가벼운 RegNetY-8GF ~ 128GF에서만 사용하였습니다. RegNetY-256GF에서는 무겁고 큰 model이므로, 일반적인 learning rate인 cosine learning rate를 사용하였습니다.
Large scale Pretraining data
data는 비유럽 지역의 10억개 instagram image를 무작위로 sampling하였습니다. image sampling을 할 때, hashtags filtering이나 중복 image 제거와 같은 처리는 수행하지 않고 완전 wild하게 image를 추출하였습니다. 그리고 dataset는 90일마다 새로 sampling함으로써 online learning에 적합하게 추출하였고, 이러한 주기적인 image sampling이 model의 성능에는 영향을 전혀 끼치지 않았습니다.
Implementation details
- RegNetY-256GF with SwAV
- 6 crops per image of resolutions
- 2 x 224
- 4 x 96
- use data augmentation as SwAV
- 3-layer multi-layer perceptron(MLP) projection head
- 10444 x 8192
- 8192 x 8192
- 8192 x 256
- not use BatchNorm layers in head
- 16K prototypes (SwAV)
- temperature $\tau$ set to 0.1 (SwAV)
- Sinkhorn regularization parameter $\epsilon$ to 0.05 and 10 iterations (SwAV)
- weight decay $10^{-5}$
- LARS optimizer
- O1 mixed-precision optimization from Apex library (SEER의 memory 사용량을 줄이기 위해 사용)
- apply activation checkpointing (SEER의 memory 사용량을 줄이기 위해 사용)
- stochastic gradient descent using a large batch size of 8192 different images
- learning rate is linearly ramped up from 0.15 to 9.6 for the first 9K training updates
- after warmup, follow a cosine learning rate schedule and decay the learning rate to final value 0.0096
- 1B images for a total of 122K iterations
Main Results
Finetuning Large Pretrained Models
instagram으로 pretrain시키고 ImageNet으로 downstream하여 model의 성능을 평가하였습니다. 실험 setting은 아래와 같습니다.
- pretrain 6 RegNet architectures of different capacities
- RegNetY-{8, 16, 32, 64, 128, 256} GF
- 1B random, public and non-EU instagram image with SwAV
- finetuning on ImageNet, usin 1.28M images with labels and evaluesate on 50k images
- same data augmentation as SwAV
- 35 epochs with SGD
- batch size of 256
- learning rate 0.0125 reduced by factor of 10 after 30 epochs
- weight decay of $10^{-4}$ and momentum of 0.9
Comparision with other self-supervised pretraining
논문에서 제안하는 제일 큰 pretrained model인 RegNetY-256GF와 기존에 존재하는 SSL models과 비교한 결과가 위의 표와 같습니다. 표에서 볼 수 있듯이, SEER는 84.2% top-1 accuracy on ImageNet을 달성하였습니다. 기존에 가장 좋은 성능을 보이는 SimCLRv2보다 1% 더 좋은 성능을 보였습니다.
그리고, parameters의 수별로 성능을 비교하였을때도 좋은 성능을 가지는 것을 위 그래프를 통해서 확인할 수 있었습니다. 즉, model의 capacity가 좋은 것을 확인할 수 있었습니다.
Impact of the model capacity
위 그래프는 처음부터 학습하는 것과 비교하여 pretrain 학습의 성능에 대한 model capycity의 영향을 보여줍니다. 위 그래프에서 볼 수 있듯이, model이 수억개의 parameter로 확장될 때 pretrain model이 더 큰 영향을 미치는 것을 확인할 수 있습니다. 그리고, model의 capacity가 증가함에 따라 pretrain model이 성능 향상이 크게 되는 것을 확인할 수 있습니다. 그 이유는 architecture를 처음부터 학습하면 상대적으로 작은 dataset인 ImageNet에 overfitting될 수 있기 때문입니다.
Low-shot learning
low-shot learning은 downstream task에 사용하는 data의 일부를 사용하여 pretrain model의 성능을 평가하는 것입니다. low-shot learning을 위해 2개의 dataset인 ImageNet과 Places205를 사용하였습니다.
Results on Places205
위 그래프는 Places205 dataset에 대한 pretrain의 영향을 보여줍니다. 둘다 동일한 RegNet-128GF architecture를 사용하였고, 파란색 선은 label을 포함한 ImageNet dataset을 학습한 것이고, 노란색 선은 instagram dataset을 SEER로 pretrain 시킨 것입니다. 그리고 x축에도 나와있듯이, train dataset의 비율을 조절해가며 2개의 model을 Places205 dataset으로 성능을 평가한 것입니다.
이 그래프를 통해, Places205에서 미세 조정하는데 사용할 수 있는 train data의 비율에 관계없이 top-1 정확도에서 2.5%의 안정적인 이득을 관찰할 수 있었습니다. 위 그래프에서 보이는 self-supervised pretraining과 supervised pretraining의 차이점은 train dataset의 feature 차이로 설명할 수 있습니다.
Results on ImageNet
이번에는 ImageNet으로 low-shot learning을 진행하였습니다. 기존의 semi-supervised methods와 self-supervised methods을 활용하여 ImageNet 전체 dataset을 pretrain시킨 후, ImageNet의 1%와 10%만 finetuning시켜서 성능을 평가한 것입니다. 여기서 SEER는 ImageNet이 아닌, random instagram images를 사용하고, 동일하게 ImageNet의 1%와 10%만 finetuning시켜서 성능을 평가하였습니다.
위 표에서 확인할 수 있듯이, SEER의 방식이 10%의 ImageNet에서 77.9%의 top-1 accuracy를 달성했으며, 기존의 방법들보다 2% 정도의 경쟁력이 있습니다. 데이터의 1% image에서 격차가 크게 증가하지만, 다른 방법은 사전 훈련에서 전체 ImageNet을 사용하여 10%에 비해 좋은 경쟁력은 얻지 못했습니다.
Impact of the model capacity
위 그래프는 ImageNet의 1%, 10% 및 100%와 같은 다양한 low-shot 설정에서 model capacity의 영향을 살펴본 그래프입니다. 이 실험을 통해서 model capacity를 늘리면, labels과 images에 대한 퍼센트를 줄임에 따라 상대적인 개선이 더 높아진다는 것을 확인할 수 있습니다.
Transfer to Other Benchmark
이외에도, SEER로 pretrain된 feature를 다른 benchmark datasets으로 finetuning하여 성능을 평가하였습니다.
Linear evaluation of image classification
위 표는 다른 architecture와 labeling 사용 유무에 따라 pretrain시킨 model들을 다른 benchmark datasets에 linear evaluation한 것입니다. 여기서, SEER는 ImageNet이 아닌, instagram image를 사용하였습니다. 그리고 pretrain dataset에 상관없이, 다른 benchmark의 datasets에서 좋은 성능을 보이는 것을 확인할 수 있었습니다.
Detection and segmentation
위 표는, pretrain된 feature를 사용하여 detection과 segmentation을 수행한 실험 결과입니다. 실험은 RegNetY-64GF와 RegNetY-128GF backbone으로 Mask-RCNN model을 구축하고 COCO benchmark dataset을 학습하여 진행하였습니다. 위 표에서 볼 수 있듯이, 둘 다 좋은 성능을 보이는 것을 확인할 수 있습니다.
Conclusion
SEER는 annotation이 없는 임의의 image에 대한 pretrain feature가 모든 downstream task에서 경쟁력이 있는 성능을 달성하는 것을 보여주었습니다. 그리고 이 결과는 SSL의 최근 진행 상황이 ImageNet과 같이 benchmark train dataset에만 국한되지 않으며, no benchmark data와 관련된 광범위한 응용 프로그램에 도움이 될 수 있음을 확인시켜줍니다. 그만큼 SEER는 data적인 측면에서 SSL의 확장성과 현대적이고 효율적인 고용량 architecture를 구축하여 높은 성능을 이끈 이점을 얻었습니다. 특히, RegNet의 확장성은 SSL의 pretrain 한계를 뛰어넘는데 핵심적인 역할을 했으며, 앞으로 SSL task에 적합한 더 큰 RegNet architecture를 찾을 계획입니다.
기존의 SSL들은 ImageNet을 기반으로 pretrain시킨 methods이 많았습니다. 하지만, SEER는 ImageNet에 국한하지 않고, wild한 real world data를 사용하여 SSL를 구축했다는 점에서 사회적으로 실용적이다고 생각했습니다. 하지만, SwAV의 기존 접근 방법을 활용했다는 점과 무겁고 많은 parameters를 가진 architecture와 10억개의 image 사용은 현실적인 측면에서 아쉬운 점이라고 생각했습니다. 그래도 기존의 SSL은 ResNet을 backbone으로 설계하지만, SEER는 RegNet을 backbone으로 설계했다는 점에서는 특별하다고 생각했습니다.
그리고, 점점 contrastive learning의 접근법이 끝이 달했다는 것을 개인적으로 느끼게 되었습니다. SimCLR가 처음 등장했을 때처럼, 완전 다른 접근법을 제안하는 methods가 나오면 신선하겠다는 느낌을 받았습니다.
참고
- https://arxiv.org/pdf/2103.01988.pdf
- https://arxiv.org/pdf/1709.01507.pdf
- https://arxiv.org/pdf/2003.13678.pdf