Image Feature Learning - Self-Supervised Learning (1) _ Generative, Predictive, Synthetic
Self-Supervised Learning 에 대한 개념 및 연구들을 정리한 글입니다.
이전 글에서 Image Feature Learning에 대해 설명하면서 self-supervised learning 방법을 간단히 소개했습니다.
a form of unsupervised learning where the data provides the supervision
Self-Supervised Learning은 Unsupervised Learning의 한 종류로 일단 unlabeled data만 이용하는데, data 그 자체에서 supervision을 얻어서 학습을 합니다.
이 분야에서 유명한 Yann LeCun 교수님께서는 self-supervised learning이 곧 human-level intelligence의 핵심이라고 말합니다. self-supervised learning은 model of the world를 배울 수 있다는 것을 강조하고 있습니다.
예를 들어, 사람이 처음 운전을 배운다고 생각했을 때 이미 사람은 자동차에 대해서 알고, 물리 지식도 약간은 갖고 있기 때문에 금방 운전을 배울 수 있습니다. 하지만, 강화학습을 통해 운전을 학습한다고 하면 수천 수만번의 trial and error를 겪고 난 뒤에야 학습을 할 수 있습니다. 사람이 절대 투자할 수 없는 시간이죠.
사람들이 금방 배울 수 있는 이유는 사전 지식을 갖고 있기 때문입니다. 컴퓨터도 이러한 사전지식을 갖고 있다면 금방 배울 수 있겠죠. 이를 가능하게 하는 것이 self-supervised learning 입니다.
Basic Terms
self-supervised learning에 대해 알아야 할 두 용어가 있습니다. Pretext task와 Downstream task 입니다.
pretext tasks는 pre-training을 하기 위해 이용하는 task이고, downstream task는 사람들이 fine tuning을 위해 이용하는 task 입니다.
결국 우리가 self-supervised learning을 통해 얻고 싶은 것은 rich한 feature representation 입니다. 이를 위해서 unlabeled data를 이용해 high-level feature를 얻을 수 있는 pretext task를 정의한 다음에 feature learning을 하는 것이 self-supervised learning 입니다.
이렇게 학습한 모델을 transfer learning을 통해 궁극적으로 목표로 하는 task, downstream task에 적용합니다. ImageNet pre-trained model 처럼 말이죠.
pretext task를 잘 정의해야 우리가 원하는 representation을 얻을 수 있기 때문에 pretext task는 사람이 풀 수 있는 문제여야 하고 동시에 너무 쉬우면 안됩니다. (너무 쉬우면 low-level feature만 학습할 수도 있습니다)
Pretext task를 정의하는 방법은 여러 가지가 있지만 저는 여러 자료들을 참고해서 다음 4가지로 분류해보았습니다.
이 글에서는 Generative, Predictive, Synthetic 에 대해서만 다루고 있습니다. 다음 글에서 Contrastive 방법을 다룰 예정입니다.
Generative
이미지 생성을 통해 feature learning을 하는 방법을 말합니다. 이미지 생성이라고 하면 Autoencoder, GAN 등을 생각할 수 있을 것입니다. 이러한 방법들은 대표적인 unsupervised learning 이기 때문에 쉽게 적용할 수 있습니다.
Colorful Image Colorization, ECCV, 2016
처음 소개해드릴 논문은 Colorization을 pretext task로 설정한 논문입니다. color 이미지에서 grayscale 이미지를 만드는 것은 어려운 일이 아니기 때문에 이를 이용하였습니다.
grayscale 이미지로 color 이미지를 생성하는 과정을 통해 high-level feature를 뽑아냅니다. 색을 칠하기 위해서는 object 형태나 색에 대한 정보를 갖고 있어야 하기 때문에 high-level feature를 뽑을 수 있습니다.
Context Encoders: Feature Learning by Inpainting, CVPR, 2016
이 논문은 Inpainting 문제를 해결하여 feature learning한 논문입니다. 사진 가운데를 흰색으로 가리고 이 영역을 모델을 통해 생성하게 합니다.
가린 영역을 생성하기 위해서는 주변 물체의 정보를 알고 있어야 하기 때문에 이 과정에서 feature learning이 가능합니다. 모델 학습에는 L2 와 Adversarial Loss를 사용하여 좀더 realistic 한 이미지를 생성할 수 있도록 하였습니다.
Generative Pretraining from Pixels, ICML, 2020
이 논문은 가장 최근에 나온 논문인데, language model에서 사용하는 방법을 image에도 적용한 논문입니다. BERT와 같은 방법에서는 문장에서 몇 단어를 가리고 그 단어를 추론하는 방법을 통해 feature learning을 합니다. 이 논문에서는 image에 대해 그 방법을 적용했습니다.
우선 이미지 픽셀들을 일렬로 나열한 뒤에 다음 픽셀을 예측하거나, 빈 부분의 픽셀을 예측하는 학습을 통해 feature learning을 했습니다. 이 방법으로도 성능이 잘 나오긴 했지만, 이미지 특성 상 high-resolution image에서는 잘 작동하지 않는 한계가 있었습니다.
Predictive
예측을 pretext task로 설정하여 feature learning을 한 방법입니다. 이 방법은 특히나 사람이 풀 수 있으면서 너무 쉽지 않은 문제를 선택하는 것이 중요합니다.
Unsupervised Visual Representation Learning by Context Prediction, ICCV, 2015
이 논문은 이미지에서 순서대로 9개의 패치를 정하고 그 중 2개를 뽑아서 가운데 영역 기준으로 나머지 패치(빨간색) 어느 위치에 해당하는지 예측하는 문제를 정의했습니다.
상대적인 위치를 찾기 위해서는 전체적인 물체의 형태를 알아야 하기 때문에 이 과정에서 high-level feature가 학습될 수 있습니다. 여기서 한 가지 detail이 있는데, 9개의 패치를 붙여서 뽑으면 라인과 연결성 같은 low-level feature만 가지고도 문제를 해결할 수 있기 때문에 9개의 패치를 떨어뜨려서 결정합니다.
Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles, ECCV, 2016
이 논문은 위에서 2개의 패치 위치를 찾는 문제에서 한단계 업그레이드 해서 아예 jigsaw puzzle를 푸는 문제로 정의한 방법입니다.
9개의 패치 위치를 모두 알아내게끔 모델을 설계하였습니다. 여기서도 디테일이 있는데, 9개 패치의 연결성을 알지 못하게 하기 위해 각각의 패치를 모델에 따로 넣어줍니다. 이전 논문보다 복잡한 방법을 학습해서 그런지 더 성능이 좋았다고 합니다.
Unsupervised Representation Learning by Predicting Image Rotations, ICLR, 2018
이 논문은 위 논문들보다 비교적 쉬운 방법을 pretext task로 선택한 논문입니다. image rotation을 예측하는 문제를 정의했습니다.
총 4개의 각도 (0, 90, 180, 270) 중 하나를 선택해서 image를 회전시키고 이를 모델에 넣어서 모델은 몇도 돌아갔는지 예측할 수 있도록 학습합니다. 상대적으로 이전 연구들보다 쉽게 input image를 만들 수 있는데, 성능은 훨씬 향상되었습니다.
생각해보면 이미지의 회전각도롤 예측하기 위해서는 일단 이미지에서 어떤 물체가 주인공인지 알아야하고, 주인공인 물체를 찾았다면 그 물체가 보통 어떤 모양인지를 알아야 회전된 각도를 알 수 있습니다. 따라서 매우 high-level feature를 뽑아낼 수 있었던 것 같습니다.
Evaluation
그렇다면 Generative, Predictive 방법들은 성능이 어느정도 될까요?
우선 성능 측정 방법부터 설명드리겠습니다. self-supervised learning에서는 대표적으로 두 가지 방법으로 성능 측정을 합니다. (1) Linear Evaluation과 (2) Fine tuning 입니다.
Linear evaluation은 우선 pretext task 수행을 통해 학습된 모델의 파라미터는 freeze 시키고 뒤에 linear classifier를 붙여서 downstream task를 수행한 다음 정확도를 측정합니다.
Fine tuning은 pretext task로 학습된 모델 파라미터를 freeze 시키지 않고 전체에 대해 fine tuning 하여 정확도를 측정합니다.
위 그림은 (1)번 방법을 이용해 정확도를 측정한 그림입니다. Generative, Predictive 방법들은 빨간색으로 표시해 두었습니다. 표시되지 않은 논문들은 뒤에서 설명할 contrastive learning을 사용한 논문들입니다.
보시다시피 위 방법들로도 어느 정도 high-level feature들이 학습되었다는 건 알 수 있지만 퀄리티는 아직 supervised learning에 못미치는 것을 알 수 있습니다. (contrastive learning 성능에도…)
Synthetic
이 방법은 앞에 방법들과 살짝 성격이 달라서 따로 설명드리겠습니다. supervised learning과 거의 유사하게 학습되는데, 가짜 라벨을 생성해서 학습합니다. 여기서 가짜 라벨은 보통 게임 엔진을 통해 생성된 라벨을 말합니다. 게임 엔진을 통해서는 사람들의 힘을 들이지 않고 무한히 라벨을 생성할 수 있기 때문에 unsupervised 방법에 해당된다고 합니다.
Cross-Domain Self-Supervised Multitask Feature Learning using Synthetic Imagery, CVPR, 2018
이 논문에서도 가짜 이미지와 가짜 라벨이 게임엔진을 통해 만들어졌고, depth, surface normal, contour를 예측하는 모델을 통해 feature learning을 합니다.
하지만 여기에서 학습된 데이터는 게임엔진 데이터라는 문제가 있습니다. 결국 학습된 representation도 게임 환경에 해당하는 representation이죠. 따라서 이 문제를 현실에 적용하기 위해서는 domain adaption 이 중요합니다.
Synthetic 방법에서는 보통 domain gap 문제를 해결하기 위한 방법 위주로 연구가 이루어지고 있습니다. 이것만 해결되면 무한한 가능성이 있을 것 같습니다.
Reference:
[1] Self-supervised Visual Feature Learning with Deep Neural Networks: A Survey
[2] Contrastive Self-Supervised Learning - Ankesh Anand
[3] Colorfulr Image Colorization
[4] Context Encoders: Feature Learning by Inpainting
[5] Generative Pretraining from Pixels
[6] Unsupervised Visual Representation Learning by Context Prediction
[7] Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles
[8] Unsupervised Representation Learning by Predicting Image Rotations
[9] Cross-Domain Self-Supervised Multitask Feature Learning using Synthetic Imagery
[10] MoCo
Leave a comment