Self Supervised Learning on Billion Unlabeled Image Data 및 Full Stack Product - 연구과정(2)

skwent3 21.09.01
415 3 0

안녕하세요! 저희 떡잎마을방범대팀은 “Self-supervised Learning on Billion Unlabeled Image Data 및 Full Stack Product”로 연구를 한창 진행 중에 있는데요. SKT 중간 발표와 함께 뜨거웠던 여름이 끝나가고, 가을이 다가오는데 연구 결과를 공유해보도록 하겠습니다.

 저는 떡잎마을방범대팀의 중앙대 컴퓨터공학부 신재현입니다. 

1. 프로젝트 소개

No 6. Self-supervised Learning on Billion Unlabeled Image Data 및 Full Stack Product

SKT Vision AI Product 팀의 김범준 멘토님과 백정렬멘토님이 저희를 물심양면으로 도와주고 계십니다.

 

 

2. 연구 진행 과정

Self Supervised Learning 방법론의 트렌드를 따라가다보면 2020 Neurips에서 소개된 contrastive learning 기법을 빼놓을 수 없는데요 SimCLR, MoCo가 Google Brain, Facebook AI가 각각 발표한 대표적인 최근의 contrastive learing 방법론이고, BYOL은 약간 결이 다른 방법론입니다. Google Brain이 출판한 논문 A Simple Framework for Contrastive Learning of Visual Representations1) 에 써있는 실험조건은 512개의 Cloud TPU V3 cores, 4096 batch size이기에 저희가 가진 리소스로도 SimCLR, BYOL, MoCo 등의 프레임워크를 batch size와 epoch을 조정해서라도 실제로 모델을 학습시킬 수 있을지 의문이 있었습니다.    Google Brain에서 발표한 논문에서 SimCLR 프레임워크를 활용하여 지도학습에 가까운 성능을 보였다고 입증한 데이터는 ImageNet benchmark입니다. 이미지 해상도와 클래스 수가 224 x 224 , 2만여개 였던 ImageNet에 비해서 이미지 해상도와 클래스 수가 모두 적은 STL10을 Image Classification용 데이터로 활용하면서, 프레임워크를 테스트해보고 싶었습니다.  Pytorch의 병렬처리 기능을 사용하지는 않고 Tesla V100 single GPU에서 학습을 진행하였고 가장 우수한 성능을 보인 것은 ResNet 50 backbone에 Adam optimizer를 적용하였을 때, top-1 accuracy of linear classifiers trained on visual representation pretrained on SimCLR가 79.5%가 나왔습니다. STL10에 대한 자기지도학습 SOTA는 Self-Supervised Relational Reasoning for Representational Learning2을 적용한 89.67%이고, CutOut, IIC 준지도학습 기법은 STL10에 대해 정확도 88.8%,87.26%를 기록하고 있었습니다.  아래 표는 학습 과정에서 backbone의 종류 그리고 Optimizer의 종류에 변주를 주어 실험을 한 결과표입니다.

 

   

 

SimCLR 프레임워크는 전이학습을 활용하여 진행되기에 전이학습에 대해서 간략히 말씀드리겠습니다.
전이학습(transfer learning)은 하나의 문제를 해결하면서 학습된 신경망의 가중치를 활용하여 다른 관련문제(target task)에 적용하는 딥러닝 방법론입니다. 

 SimCLR 기반의 unsupervised learning 방법으로 visual representation을 학습한 후에, 적은 labeled 데이터를 이용하여 이를 fine-tuning합니다

 

SimCLR 프레임워크는 지도학습에서 전이학습을 활용하는 양상과는 사뭇 다른 방식의 training procedure를 가집니다.  전이학습을 활용해서, STL10의 unlabeled set에 대해 pretrained된 신경망의 weight을 기반으로 STL10의 labeled set으로 fine-tune하였습니다. SimCLR 기법에 대한 자세한 설명은 Google AI의 SimCLR 블로그설명3)을 참고해주시면 감사하겠습니다    Image Classification, Object Detction 등 downstream 태스크를 위해pretext task를 활용하기 위해서 transfer learning을 활용한다. 현재 제가 책임을 지고 적용중인 논문 "Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning7"에서 소개된 BYOL 기법에 관해서 설명드리겠습니다. 논문의 핵심 아이디어를 간략히 말씀드리면, stop gradient로 인해 target network는 regression target을 제공하는 대신, 매 training step마다 일정 decay rate만큼 online network로부터 parameter를 제공받게 됩니다. 이것을 논문에서는 online parameter θ의 exponential moving average라고 표현하고 있고, 기존의 강화학습 분야에서 얻은 아이디어입니다. 

Figure 2: BYOL’s architecture from paper pg.4

 

그림을 보시면, online network와 target network가 enocoder와 prejection까지 두 단계는 동일한 구조를 가진다는 것을 확인하실 수 있습니다. BYOL 기법은 contarstiv learning 방식과 마찬가지로, 두 개의 encoder network를 활용하지만, target network와 online network을 활용하는 방식을 보면차이점을 확인할 수 있습니다. 마지막 prediction 분이 서로 asymmetric하다는 점인데, online network는 projection 된 representation 을 한번 더 projection 시켜 주는 반면, target network 는 이 부분을 생략한 채 stop gradient 시킵니다.

위 BYOL 기법 또한 SimCLR과 마찬가지로 Detection이 아닌 Image Classification task에 적용해볼 계획인데, 적용할 데이터셋은 “ 2. 중간발표”에서 다루겠습니다. 

 

usage over time from paperswithcode https://paperswithcode.com/method/byol

 

위 그림은 paperswithcode에서 연도별 자기지도학습 방법론들의 추이를 보여주는 그림인데, BYOL이 SimCLR, MoCo등 기존의 contrastive learning 방식과 비슷한 수준으로 활용도가 높음을 확인할 수 있습니다. BYOL은 SimCLR v2가 등장하기 이전에는 ImageNet benchmark에 대해서 supervised learning과 가까운 수준의 top-1 classifciation accuracy를 보였을 정도로 성능이 우수한 기법이기 때문입니다. 현재 BYOL 기법을 활용하여 STL10에 테스트를 진행중이고, Veri-Wild 차종 데이터셋에도 기법을 적용하기 위해 코드를 작성 중에 있습니다. 정렬 멘토님께서 해당 작업을 감사하게도 도와주시고 계십니다. SimCLR, MoCo, SwAV, BYOL 등 대부분의 self-supervised learning 연구들이 Siamese network 구조를 가지고 있다는 점과 Siamese network가 'collapsing'이라는 고질적인 문제를 가지고 있는 점을 연구의 방향으로 잡고, 엄청난 양의 실험을 진행하며 collapsing을 해결하는 근본적인 방법들에 관해서 많은 연구가 진행되고 있습니다. “Exploring simple siamese representation learning6” 논문은 'SimSiam'이라는 모델을 제안하기도 하지만 실험 설계가 돋보이는 paper기 때문에, 관심이 있으시면 논문을 읽어보시는 것을 추천드립니다.

 

 

 

3. 중간 발표 내용

중간 발표에는 8월까지 진행한 연구를 중간결산하고, 9월부터 진행될 연구의 내용을 담았습니다.
1차 블로깅에서 민지님이 언급하셨던 “Uncertainty aware Pseudo Label Selection4)", 일명 UPS기법을 테스트하는 데에 있어서 생각보다 오랜 기간이 소요되었습니다. UPS의 학습 procedure는 아래 그림처럼 일반적인 pseudo label을 이용한 준지도학습 procedure를 요약할 수 있습니다.
논문에서 제시한 기법을 활용하여 pseudo label을 생성하여 준지도학습처럼 모델을 만들면이 unlabeled data를 효율적으로 활용할 수 있는 방법일 수 있다는 희망을 가지고 있었기에
CIFAR 100, CIFAR 10에 적용된 논문의 코드를 버그를 수정하면서 돌려보고, 정렬멘토님께서는 VERI-Wild 차종 데이터에 기법을 적용한 결과를 저희에게 공유해주셨습니다.
CIFAR 100(5000 unlabeled, 10000 Labeled) 의 경우에 대해 “n-UA”(uncertain aware)한 confidence based기법과 Uncertainty aware한 UPS 기법을 적용했을 때 pseudo label selection이 한 사이클 진행될 때 마다, 정확도를 시각화한 결과는 다음과 같습니다.
GPU 리소스의 부족으로 confidence based의 경우 9 사이클만 진행하였습니다.

 

 

지금부터 UPS기법을 적용한 pseudo-label selection이 정말로 효력이 있는지 보기 위해서, 지도학습과 Uncertainy-aware pseudo label 기법 그리고, 기존의 pseudo label기법을 비교하겠습니다. CIFAR 10, CIFAR100, 나아가 VERI-Wild(차종 분류 데이터)에 기법들을 적용하여 비교한 결과는 아래 그림과 같습니다.

 Unlabeeld data에 대해 Uncertainty- aware하게 Pseudo Label을 만드는 UPS방법을 적용한 실험과 labeled 데이터만을 활용한 supervised learning방법과 비교한 그림입니다.
confidence based model은 이전에 pseudo labeling에서 많이 쓰는 방법으로 빨간 히스토그램이 dataset에 pseudo label을 부여한 후에 retraining 시킨 결과입니다. 설명
  • Self supervised learning 관련 기법들을 STL-10 데이터셋과 Veri-Wild 데이터셋에 대해서 적용해볼 계획을 가지고 있다고 발표에서 말씀을 드린바 있는데요. 논문에서 성능이 입증된 benchmark 데이터셋 이외의 benchmark 데이터셋을 하나 선택하여 테스트하고 추가적으로 정렬 멘토님과 범준 멘토님이 추천해주신 vehicle open dataset에서 성능을 검증하여 모델의 robustness 또한 보려고합니다.
  • 활용할 데이터셋 STL10, Veri-Wild에 대해 설명하겠습니다. 

 

STL10은 Image Recognition 용도로 많이 활용되는 benchmark data로 이미지 크기는 96*96이며, labeled와 unlabeled image를 모두 포함하여 self supervised learning과 unsupervised learning 모델 검증에 많이 활용됩니다.   train dataset 5000개(10개의 label 각각에 대해 500개), test dataset 8000개로 구성되어 있습니다.   트럭, 버스 label에 관한 이미지가 test data애 포함되어 있으며, 10 labels중 car가 포함이 되어 있기에, STL10이 오픈 벤치마크 중에서 가장 저희가 개발하려는 알고리즘의 검증용으로 타당하다고 판단하였습니다. 아래 이미지는 test data로 활용되는 STL 10입니다.

 

STL10 test image는 차량, 동물을 클래스 라벨로 포함하여 10개의 클래스로 구성

VERI-Wild 데이터셋의 링크5는 블로그 글 하단에서 확인할 수 있습니다.   Vehicle-reidentifcation task에 많이 활용하는 데이터인데, vehicle model classification task로 활용할 계획입니다. 41만 6천개의 이미지 중에서 약 10%인 4만개의 labeled data, 나머지 90%는 unlabeled data로 visual representation학습하여 pretrained weight 생성하는 용도로 활용할 계획입니다. SimsiamBYOL의 방법론을 위에서 소개한 두 데이터셋에 대해 적용할 계획입니다. BYOLimage augmentation methodrobust하고, negatvie sample에 의존하지 않기에 batch size를 줄였을 때 accuracy 감소가 덜할 것이라고 판단하여, SimCLRv2가 아닌 BYOL을 적용해보기로 하였습니다. labled set으로 학습한 supervised 방법론과 unlabeld set을 pretrain 단계에서 활용하여 labeld set으로 fine-tuning한 self-supervised learning 방법론을 비교할 예정입니다. 김용성 멘토님께서 말씀하신 것처럼, labeled 데이터 중 클린한 데이터만으로 학습한 방법과 self supervised learning 방법을 비교해볼 계획도 있습니다.  

 

 

4. 앞으로의 계획

“2. 중간발표” 항목에서 앞으로 진행될 연구에서 모델을 테스트할 데이터셋에 대해서는 언급을 드렸기에 세부 계획이 아닌, 큰 목표를 말씀드리겠습니다. SKT AI Fellowship 선발 초기에는 human attributes deteciton vehicle detection 관련 모델 관련 리서치 개발을 목적으로 하였다면, 현재는 vehicle model classifcation 관련 모델 개발을 주로 연구를 진행중입니다. 중간 발표에서 노경완 멘토님이 주신 피드백을 수용하여, Multi-GPU 모델 학습을 극대화하기 위해 멀티프로세싱을 활용한 모델 학습 또한 계획하고 있습니다. 저희는 Tesla V100 2대가 탑재된 서버를 환경으로 하고 있기에 처리 시간 또한 분석할 수 있을 것입니다. 

 

 

5. 레퍼런스

1) Chen, T., Kornblith, S., Norouzi, M., & Hinton, G.E. (2020). A Simple Framework for Contrastive Learning of Visual Representations. ArXiv, abs/2002.05709.

2) Patacchiola, M., & Storkey, A. (2020). Self-Supervised Relational Reasoning for Representation Learning. ArXiv, abs/2006.05849. 2

3) SimCLR 관련 Google AI 공식 블로그 링크 https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html

4) Rizve, M. N. et al. “In Defense of Pseudo-Labeling: An Uncertainty-Aware Pseudo-label Selection Framework for Semi-Supervised Learning.” ArXiv abs/2101.06329 (2021): n. pag.

5) VERI-Wild 데이터셋 링크 https://reposhub.com/python/deep-learning/PKU-IMRE-VERI-Wild.html

6) Chen, X., & He, K. (2020). Exploring Simple Siamese Representation Learning. ArXiv, abs/2011.10566.

7) Grill, J., Strub, F., Altch'e, F., Tallec, C., Richemond, P.H., Buchatskaya, E., Doersch, C., Pires, B.A., Guo, Z., Azar, M.G., Piot, B., Kavukcuoglu, K., Munos, R., & Valko, M. (2020). Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning. ArXiv, abs/2006.07733.

 

skwent3 님의 최신 블로그

더보기

관련 블로그