[CS25 3강] Vision Transformer for Large Scale Visual Representation Learning
-
Vision Transformer for Large Scale Visual Representation Learning
3강은 컴퓨터 비전 문제에서 트랜스포머를 적용한 여러 방법들에 대한 세미나이다. 이 세미나의 최종 목적은 "General Visual Representation"이라고 강연자인 Google Brain의 Zurich는 말하고 있다. 이유는 우리가 일반적으로 시각적 표현이 가능하면, 무슨 일이 일어나고 있는지 잘 알 수 있고, 이로인해 vision 입력이 들어온 모든 종류의 작업을 수행할 수 잇기 때문이다.
Vision Transformer를 보기 앞서, Computer Vision에 대한 context를 위해 짧게 vision 분야의 히스토리에 대해 소개한다.
Human's Visual Representation
사람에게 클래스가 나눠진 몇 가지 이미지를 보여주고 새로운 이미지를 보여주면 사람은 쉽게 generalize하여 클래스를 구별할 수 있다.
The Visual Task Adaptation Benchmark(VTAB)
데이터에 대한 Representation이 있을 때 몇 가지 task를 sampling하고, 그 task는 간단한 classification이나 classification이 아닌 task 등 광범위한 유형의 visual input을 받는 여러 task가 되고 약 19가지 정도의 task가 있다. 위성 사진에서 보이는 자동차 사진은 일반 자동차 사진보다 멀리 떨어져있다. 이렇게 거리가 먼 이미지와 같이 광범위한 변형까지 다루어야 general vision representation이 수행될 수 있고 해당 benchmark에서 온 model을 사용하면 각 dataset에 대해 차례로 adaptation 단계를 수행하며 이 downstream task를 위해 작은 dataset이 필요하다. 거기서 수행된 모든 task의 평균 점수를 취하고 이 점수를 Beta task라고 하며 현재 모델과 adaptation algorithm이 얼마나 좋은 general vision representation을 가지고 있는지 판단하는 방법이다.
그렇다면 이를 어떻게 얻을 수 있을까?
1. Self-supervised pre-training? (Revisiting SSL)
2. Semi-supervised pre-training? (S^4L)
3. Large-scale supervised pre-training! (BiT)
Language에서 많이 쓰이는 Self-supervised learning을 몇 년동안 시도했지만 Semi-supervised 즉 어느 정도의 라벨이 있는 sample을 추가함으로써 훨씬 더 나은 Vision representation을 얻을 수 있었다. 게다가 완전히 supervised learning을 수행했을 때, 더 좋은 representation을 얻을 수 있었고, Training Time, Dataset Scale, Model Scale을 모두 키우면 더 좋고 강건한 Vision representation을 얻을 수 있었으며 모델을 확장할 때 매우 강력하다는 점을 알 수 있었다고 한다.
4. "Let the data speak" (ViT, Mixer)
수년동안 Vision 분야에서는 주로 Convolution Neural Network를 사용하고 있었고, 데이터셋의 양이 많은 경우 LSTM보다 Transformer가 뛰어난 성능을 보여왔다. 또한 갑자기 데이터 양이 적을 때도 LSTM보다 더 좋았을 때 Transformer의 benefit을 인지 하였고, transformer를 vision에 적용하기 위한 시도를 시작했다.
이미지를 Transformer Input으로 넣기 위해 먼저 이미지를 퍼즐의 패치처럼 잘라서 펼쳐 마치 sequence data처럼 넣고 Linear Projection layer를 거쳐 embedding을 생성한다. 이때, 각 패치들은 overlapping하지 않았으며(Convolution head를 거친 transformer나, overlapping한 다른 방법들도 있다.) 각 패치를 Language Model에서의 Token처럼 다루게 된다. 그리고 맨 앞에 마치 nlp에서 Start token처럼 class token을 붙이고 learnable positional embedding을 적용하고, 이렇게 생성된 Input embedding을 Transformer encoder에 넣고, encoding output은 MLP Head를 거처 class를 분류하게 된다. 이게 Vision Transformer의 전부다.
그리고 데이터나 model, Receptive field, positional embedding 등의 디테일도 추가적으로 설명했다.
Scaling ViT
Dataset을 scale up하는 것만으로 큰 이점을 누릴 수 있다. 하지만 이를 위해서는 하드웨어에 더 적은 메모리를 사용하는 방법을 알아야해했고, 그에 관련한 내용을 소개했다.
비전에 대한 내용은 잘 몰라서 가볍게 들었는데, 스탠포드 학생들의 질문이 많았어서 발표자가 준비한 내용보다는 질문에 대답하는 내용이 많았다 비전에 관심이 있으면 학생들의 질문이나 발표자의 답변을 보고 좋은 인사이트를 얻을 수 있을 것 같다.