안녕하세요. 오늘 소개해드릴 논문은 최근 유행하는 형태의 제목을 가지고 있는 23년도 CVPR 논문, <Fine-Tuned CLIP Models are Efficient Video Learners>입니다. 최근 Action Localization에 CLIP representation을 빌려오고자 시도 중인데, 우선 CLIP feature를 비디오 분야로 가져올 때 어떠한 특성을 보이기에 어떻게 적용하면 좋을지에 대한 실험 결과들을 찾아보는 과정에서 본 논문이 다양한 분석 결과를 제시하고 있는 것 같아 읽게 되었습니다.
결론부터 말씀드리면 본 논문은 대단한 아이디어와 architecture를 제안했다기보단, CLIP encoder 전체를 비디오 데이터셋으로 fine-tuning하는 것이 괜히 뒷단에 복잡한 모듈을 정교하게 설계하는 것보다 좋거나 견줄만한 성능을 낸다는 것을 계속해서 입증하고 있습니다. 저희가 알던 논문의 프레임워크를 따르기보단 일종의 tech report 형태와 비슷하다고 볼 수 있을 것 같습니다. 추가로, 비디오에서의 표현력을 평가하는 task는 Action Recognition 하나입니다.
1. Introduction
21년도 CLIP의 등장 이후, 영상 분야의 classification, segmentation, detection 등 다양한 downstream task에도 유의미한 zero-shot 성능 향상이 일어났다는 점은 다들 알고계실 것입니다. 이는 곧 CLIP의 강한 일반성과 해당 downstream task로의 representation distillation이 잘 일어났다는 의미일 것입니다.
이렇게 영상 분야에서는 활발히 연구가 진행될 뿐만 아니라 그에 따른 성능 향상도 계속 일어나고 있는 상황입니다. 그렇다면 비디오 분야에서는 이러한 영상 분야에서의 발전을 어떻게 따라가고 있을까요? 우선 CLIP은 image-text pair로 학습했기 때문에 video-text와의 domain gap이 존재하는 것은 사실입니다. 이러한 domain gap을 해결하기 위해 두 갈래 정도의 방식이 존재할 수 있을 것입니다.
첫 번째는 비디오 분야의 ‘CLIP’을 구축하는 것입니다. 기존 CLIP과 유사하게 video-caption pair를 대용량으로 구축하고, 활발히 연구되고 있는 video representation learning 기법들을 사용해 좋은 표현력을 갖는 backbone을 만들 수 있을 것입니다. 하지만 이를 수행하기엔 큰 어려움이 여러 개 있는데, 우선 web-scale의 비디오를 구축하는 것 자체가 쉽지 않겠죠. 그래도 너무 많은 용량이 필요하다는 단점은 어느정도 경제적 측면으로 해결할 수 있다고 해도, 사실 그 이후 web-scale의 비디오를 하나의 caption으로 라벨링하는 것도 쉽지 않습니다. 영상만 해도 검색 키워드를 라벨로 붙여주고 추가적인 filtering 과정을 거쳐줄 수 있다고 하지만, 웹 상에서 얻는 비디오가 단 하나의 단어 또는 문장으로 표현된다고 확정하긴 어려우며 이들을 모두 filtering 하는 것은 시간적으로도 거의 불가능에 가깝다는 것을 알 수 있습니다.
만약 누군가 위 과정을 모두 해결했다고 해도, 이제야 잘 정제된 video-text pair를 학습할 수 있게 된 것이기 때문에 그 학습에 수반되는 어마어마한 computational cost와 복잡도를 감당하기엔 쉽지 않을 것입니다.
위와 같은 현실적 이유로 첫 번째 방안인 비디오 분야의 ‘CLIP’을 구축하는 것은 굉장히 어려운 일입니다. 따라 학계에서는 두 번째 갈래인 CLIP의 image-text represenation과 지금 필요로 하는 video-text 간의 domain gap을 효율적으로 메우는 ‘adaptation’ 관점에 연구가 진행되고 있습니다. CLIP이 image-text pair로부터 학습한 일반성은 유지하되 비디오 기반 task를 잘 수행할 수 있도록 프레임 단위의 CLIP feature들을 temporal modeling하여 비디오 downstream task에 활용하는 것입니다.
그래서 CLIP representation을 활용해 video downstream task(본 논문에선 Action Recognition)를 수행하는 최근 방법론들(XCLIP, Efficient-Prompt, ActionCLIP 등)은 CLIP encoder를 freeze한 후 추출한 frame feature에 Transformer를 태워 프레임 간 관계를 모델링해 이를 temporal modeling으로 간주하거나(Efficient-Prompt), learnable vector를 text prompt 뿐만 아니라 frame에도 붙여 task에 맞는 represenation을 얻는 방식(ActionCLIP), 또는 새로운 모듈(video decoder)을 붙이는 방식(XCLIP)을 사용하는 방향으로 연구가 진행되고 있습니다. 공통적으로 나타나는 특징은 CLIP encoder가 아예 freeze 되어 있거나 뒷단의 일부만 fine-tune되며, CLIP의 본래 일반성을 잃지 않기 위해 추가 학습 모듈을 정교하게 설계해야한다는 점입니다.
이러한 기존 연구 방향성에 대해 저자는 2가지 질문을 던집니다.
- Does the adaptation of CLIP for videos using additional tunable parameters tamper its generalization capacity?
- Is a simple video-specific fine-tuning sufficient to bridge the modality gap between images and videos?
위 질문들은 결국 “기존 방법론이 CLIP을 비디오 분야에 제대로 적용하고 있는 것인가?”와 같은 의미입니다. 저자는 CLIP encoder 뒷단에 모듈을 붙여 knowledge trasnfer를 진행하는 것이 오히려 CLIP이 기존에 가지고 있던 일반성을 해치며, 사전학습된 CLIP을 단순히 full fine-tuning하는 것이 오히려 기존의 정교하게 설계된 방법론들보다 비디오 downstream task에서 더 좋거나 견줄만한 일반성을 가진다고 주장합니다. 결론적으로 본 저자가 제안하는 방식은 기존 방법론들과 다르게 추가 모듈을 붙이지 않고, CLIP의 image, text encoder를 각각 비디오 샘플과 데이터셋의 클래스에 맞게 학습 중 fine-tuning하는 것이 전부입니다.
물론 encoder를 fine-tune할 데이터셋 샘플이 적다면 오히려 너무 overfitting되거나 일반성을 잃을 수 있을 것입니다. 이렇게 데이터셋 샘플이 적은 상황에서는 추가로 two-stage인 ‘bridge and prompt’ 방식으로 극복하게 됩니다. ‘bridge and prompt’ 방식은 우선 영상과 비디오의 modality gap을 bridge하기 위해 적은 데이터로 full fine-tune을 수행하고, 이렇게 학습된 encoder는 freeze된 채로 각각 visual, textual learnable prompt를 모두 붙여 학습하는 two-stage 방식을 채택함으로써 데이터가 적은 상황에 대응하게 됩니다.
본 논문의 contribution은 아래와 같습니다.
Contribution
- We formulate a simple but strong baseline, ViFi-CLIP(Video Finetuned CLIP), for adapting image-based CLIP to video-specific tasks.
- We conduct experiments on four different experimental settings including zero-shot, base-to-novel generalization, few-shot and fully-supervised tasks.
- We show that the effectiveness of our proposed ‘bridge and prompt’ approach to first bridge the modality gap through fine-tuning followed by prompt learning in borh visual and language branches of the CLIP model for low-data regimes
우선 별도의 방법론 파트가 존재하지 않아 바로 실험과 분석 부분으로 넘어가게 되는데, 먼저 두 번째 contribution에서 언급한 4가지 evaluation protocol에 대해 간단히 정리한 뒤 full fine-tuning 시의 성능을 비교하고, 마지막에 ‘bridge and prompt’ 방식의 성능을 살펴보는 순서로 글을 작성하겠습니다.
2. Problem Settings
앞서 두 번째 contribution에서 언급한대로 이후의 모든 Action Recognition 실험은 학습 중 supervision-level에 따라 4가지로 나뉘어 수행됩니다. 하나씩 정리하고 넘어가겠습니다.
Zero-shot setting
모델은 클래스 라벨 Y_{s}를 갖는 source dataset D_{s}로 학습을 수행하고, 겹치지 않는 클래스 라벨 Y_{t}를 갖는 전혀 데이터셋인 target dataset D_{t}에서 평가를 수행합니다.
- Y_{s} \cap{} Y_{t} = \varnothing{}
Base-to-novel generalization
사실 다른 scheme들은 다들 아실텐데, 여기서 설명하는 base-to-novel generalization 방식은 저자가 제안한 것이기 때문에 처음 보실 겁니다. 데이터셋 하나에 존재하는 각 클래스 별 샘플 개수를 측정하고, 많이 등장하는 절반의 클래스를 base, 적게 등장하는 나머지 절반의 클래스를 novel로 두게 됩니다. 학습은 많이 등장하는 절반의 클래스인 base로 진행되고, 성능은 base와 novel 클래스에서 한 번씩 측정됩니다. 희소한 novel 클래스에 대한 일반성을 평가해보기 위해 제안하였다고 합니다. 이는 위 그림 2를 보시면 이해하기 쉬우실 겁니다. Zero-shot과 다르게 학습-평가 시 사용되는 ‘데이터셋’ 자체는 같습니다.
Few-shot setting
데이터셋에 존재하는 각 클래스에서 총 K개의 샘플만을 학습에 사용(K-shot)하게 됩니다. 본 논문의 실험에서 K는 2, 4, 8, 16으로 설정했다고 합니다. 평가는 해당 데이터셋의 test split으로 진행되니, 기존에 알던 fully-supervised setting에서 학습 샘플 개수만 대폭 감소한 것으로 생각하시면 됩니다.
Fully-supervised setting
가장 친숙한 setting으로, 모든 학습 데이터 샘플을 학습하고 test split으로 평가하는 방식입니다.
3. Video Finetuned CLIP
우선 간단히 학습 및 추론하는 방식을 보고 성능으로 넘어가겠습니다.
위 그림 3이 저자가 제안하는 full fine-tuning CLIP 방식인데 굉장히 간단합니다. 저자에 따르면 위 방식처럼 encoder 전체를 fine-tuning하는 것으로 다른 방법론에서 추가 모듈을 붙여 수행하는 temporal modeling 및 domain gap 메우기가 가능하다고 합니다.
먼저 하나의 비디오 V_{i} \in{} \mathbb{R}^{T \times{} H \times{} W \times{} C}와 text 라벨 Y가 주어집니다. 여기서 T는 비디오의 전체 프레임은 아니고 다른 Action recognition 방법론들과 동일하게 4가지 supervised-level에 따라 16 또는 32를 사용합니다. 즉 비디오에서 16 또는 32개의 프레임만을 샘플링해 사용하는 것입니다.
이후 T개의 프레임을 CLIP image encoder에 태우면 frame level embedding x_{i} \in{} \mathbb{R}^{T \times{} D}를 추출할 수 있고, 여기서 D는 512차원일 것입니다. 이후 클래스 text embedding t는 현재 CLIP의 기본적인 image, text encoder를 사용하기에 “a photo of a [CLS]”라는 handcrafted prompt를 사용해 데이터셋의 클래스 개수가 C개인 경우 클래스 별로 t \in{} \mathbb{R}^{D}를 얻게 됩니다. 마찬가자로 512차원일 것입니다.
그리고 frame feature와 text feature의 유사도를 구하기 위해 x_{i} \in{} \mathbb{R}^{T \times{} D}를 시간 축으로 평균내어 v_{i} \in{} \mathbb{R}^{D}를 얻고, 이 평균 풀링이 전체 프레임들을 aggregation함으로써 다른 방법에서 수행하는 temporal modeling과 암시적으로는 유사한 역할을 수행한다고 합니다. 이제 D차원의 feature끼리 cosine 유사도를 구해 가지고 있는 클래스 라벨과의 유사도를 최대화하는 방식으로 학습이 수행됩니다. 추론 때는 가장 높은 유사도를 보이는 클래스를 예측값으로 내게 되겠죠.
위 과정은 아래 수식과 같습니다.
Experimental setup
학습에 대한 추가 정보를 좀 더 적어보자면, CLIP encoder는 ViT-B/16으로 선택하였고 fully-supervised setting에선 T=32, 나머지 setting에선 T=16을 사용하였습니다. Action recognition 데이터셋으론 Kinetics-400, Kinetics-600, HMDB-51, UCF-101, Something V2(SSv2)를 사용하였습니다.
3.1 ViFi-CLIP Generalizes Well!
서론이 길었는데 드디어 성능 부분입니다.
저자의 방식대로 학습한 CLIP 모델의 일반화 성능을 평가하기 위해서는 두 가지 포인트를 만족해야 합니다. 첫 번째로 영상 기반으로 학습한 CLIP을 비디오 도메인으로 가져올 때 발생하는 domain gap이 잘 메워져야 하고, 두 번째로 그 과정에서 기존 CLIP이 가지고 있는 generalization ability가 손상되어서는 안됩니다.
아무튼 이러한 포인트들을 잘 평가하기 위해 먼저 zero-shot 상황에서 cross-dataset generalization 성능을 보고, base-to-novel generalization 상황에서의 모델 성능을 측정해봅니다.
표 1과 2 각각이 zero-shot, base-to-novel 상황에서의 성능 표입니다.
먼저 zero-shot 성능인 표 1을 보겠습니다. 기본적으로 각 방법론들은 K-400 데이터셋으로 사전학습되었고 이후 HMDB-51, UCF-101과 K-600에서 평가되는 것을 볼 수 있습니다. 표 1에 있는 Uni-modal 방법론들은 CLIP과 관계없이 비디오 feature만을 사용해 zero-shot Action recognition에 특화하여 고안된 방법론들이고, Adapting 방법론들은 앞서 이야기한 CLIP을 사용하되 뒷단에 추가 모듈을 붙이는 방식입니다.
위 표는 인용 [17]인 Efficient-Prompt 논문에서 가져왔습니다. 표 1, 2와 이후 표에서 언급되는 A5는 클래스 text 앞뒤로 16개의 learnable prompt를 붙이고, CLIP image encoder 이후 2개의 Transformer Encoder를 붙여 temporal modeling을 한 방법론이라고 생각하시면 됩니다. 참고로 [17]에서 A5보다 A6의 성능이 굉장히 근소하게 높지만 저자는 효율성을 위해 A5를 기본 세팅으로 지정하게 됩니다. 이에 대해선 제가 이전에 작성한 리뷰가 있으니 참고하시면 좋을 듯 합니다.
CLIP 기반 방법론들이 직접적으로 video feature만을 사용해 zero-shot을 수행하는 unimodal 방법론들보다 훨씬 높은 성능을 보여주고 있는 것은 자명합니다. 심지어 Vanilla CLIP의 zero-shot 성능도 이들을 뛰어넘고 있고, 이 뒤에 추가적 모듈을 붙이는 XCLIP이 domain gap을 잘 메워주고 있는 것을 볼 수 있습니다.
여기서 ActionCLIP이나 Efficient-Prompt의 A5 버전 모델은 오히려 일반화 성능이 Vanilla CLIP보다도 떨어지는 경우를 가끔 보여주는데, 저자가 제안하는 ViFi-CLIP은 치밀하게 설계된 XCLIP보다도 높은 성능을 보여주며 domain gap도 메우고 기존 CLIP의 일반화 성능도 잃지 않음을 입증하고 있습니다. 추가로 CLIP image-FT와 text-FT는 image나 text encoder 각각만을 full fine-tune하는 경우의 성능인데, 이들 중 일부는 XCLIP보다도 좋은 성능을 보이고 있습니다. 두 encoder의 embedding space가 align되지 않은 상태임을 감안한다면 꽤 준수한 성능이라고 볼 수 있습니다.
다음은 표 2의 Base-to-Novel setting 성능입니다. 이 setting에선 학습-평가 시 사용되는 데이터셋 자체는 동일하되 클래스가 다른 상황이죠. 표 2에서 HM은 base와 novel 성능의 조화 평균을 의미합니다. 어떠한 데이터셋의 어떠한 상황에서도 ViFi-CLIP이 가장 높은 성능을 달성하고 있습니다. 추가적인 모듈을 고안하지 않고 단순히 CLIP encoder를 fine tuning한다는 관점에서 구현도 간단하며 높은 성능을 낸다는 것이 계속해서 언급되는 장점인 것 같습니다.
다만 SSv2 데이터셋이 action recognition에 사용되는 데이터셋 중 그나마 temporal information을 요구하는 데이터셋인데, 위 representation을 Temporal Action Localization에 적용해야 하는 제 입장에선 성능의 절대값이 너무 낮다는 것이 좀 암울해 보이긴 합니다.
3.2 CLIP directly adapts to Video tasks
3.1절에선 학습 때 보지 못했던 데이터셋이나 클래스에 대한 평가를 수행하며 모델의 일반성을 보았는데요, 여기선 학습 때 본 클래스에 대한 샘플들로 평가하며 성능을 측정합니다. 즉, few-shot setting과 fully-supervised setting에 대한 성능을 보겠습니다.
위 표 3이 few-shot setting에서의 성능이고 학습 시 샘플이 굉장히 적기 때문에 앞선 실험들보단 성능이 전반적으로 낮은 것을 확인할 수 있습니다. Setting 설명 시 말씀드렸듯 데이터셋별로 2, 4, 8, 16 shot 상황에서의 성능을 측정하였습니다.
마찬가지로 모든 데이터셋의 모든 shot을 기준으로 ViFi-CLIP이 가장 높은 성능을 달성하고 있고, 볼 만한 점은 K가 작을수록 성능 향상 폭이 높다는 것입니다. K가 클수록 더 많은 데이터셋을 학습했기에 성능의 절대값 자체는 높고 작을수록 overfitting 될 확률이 존재하여 성능이 낮은데요, K=2에서 성능 향상 폭이 가장 크다는 것은 적은 데이터 샘플을 가진 상황에서 ViFi-CLIP이 강인하게 동작한다는 점을 입증하고 있는 것입니다.
다음으로 표 4는 가장 친숙한 fully-supervised 상황에서의 성능을 보여줍니다. 여기선 성능이 가장 높지 않아서인지 저자가 추가로 GFLOP과 TP(throughput)을 보여주고 있습니다. GFLOPs는 필요한 연산량으로 적을수록 효율적이며, TP는 네트워크 측면에서 데이터 전송률을 의미한다고 하여 처리 속도와 관련있다고 생각하시면 됩니다. X-CLIP보다 성능은 좀 낮지만 TP가 더 높아 효율적이라는 점을 강조하고 있습니다.
3.3 How simple fine-tuning bridges domain gap?
3.3절의 제목만 보았을 땐 심도깊은 분석이 있을 줄 알았는데, 그런 것은 아니고 저자가 앞서 video-level feature를 만들기 위해 적용한 average pooling과 다른 aggregation 방식에 대한 비교 실험을 수행합니다. 이런 average pooling 방식을 embedding fusion이라 칭합니다.
첫 번째로 생각해볼 수 있는 fusion 방식은 Decision-level fusion입니다. 만약 한 비디오에서 16개의 frame을 사용한다고 하면, 기존처럼 16개의 CLIP feature를 평균 내는 것이 아니라 16개 각각의 feature를 text feature와 비교하여 유사도 score를 내고, 이 score를 마지막에 평균 내어 학습과 분류를 수행하는 방식입니다.
두 번째 방식은 Image-level fusion입니다. 이는 비디오에서 샘플링한 16개의 프레임을 각각의 이미지라고 간주하고 이미지 별 유사도를 계산하는 것은 첫 번째 fusion 방식과 동일하지만 여기선 loss 계산까지 이미지 별로 수행됩니다. 즉 비디오의 temporal 정보를 아예 고려하지 않는 것이죠.
표 5는 16-shot 기준 성능을 리포팅하고 있습니다. 결국엔 저자가 채택한 average pooling 방식이 가장 높은 성능을 보여주고 있는데, 이에 대해 평균 내는 것만으로 프레임 간 communication을 도움으로써 암시적인 temporal modeling이 수행된다고 주장합니다. 프레임 간 communication은 그렇다 쳐도 암시적 temporal modeling이 수행된다는 것이 잘 납득되진 않지만, 굉장히 간단하면서 높은 성능을 내고 있기에 추가 모듈을 가져오지 않는 선에서 나름의 최선이 아니었나 생각됩니다.
3.4 How effective are the video-specific representations learned during simple fine-tuning?
3.4절에선 저자의 ViFi-CLIP이 추가 모듈 없이 단순히 finetuning함으로써 어떤 효과를 불러오는지 정성적으로 보여줍니다.
그림 1에선 UCF101과 HMDB51 데이터셋에서 각 방법론의 feature t-SNE를 보여주고 있습니다. Vanilla CLIP은 클래스 별로 represenation이 혼재되어 제대로 된 구별력을 갖추지 못하고 있는 것을 볼 수 있습니다. 가운데 3개 t-SNE는 저자의 방법론 중 text-FT, image-FT, full-FT 각각의 t-SNE를 보여주고 있는데, 두 encoder 모두 fine-tuning하는 ViFi-CLIP이 정성적으로 가장 뚜렷한 구별력을 갖는 것을 볼 수 있습니다. 당시 SOTA인 XCLIP의 t-SNE와는 정성적으로 비교했을 때 ViFi-CLIP이 조금 더 구별력을 가지고 있고, 정량적으로 큰 향상을 보이며 ViFi-CLIP의 효과를 입증하고 있습니다.
다음으로 그림 4에서 두 번째 행인 Vanilla CLIP과 비교해 세번째 행인 ViFi-CLIP이 프레임의 어떤 부분에 집중하는지 CAM을 통해 보여주고 있습니다. Vanilla CLIP이 왼쪽 ‘hammering’이라는 action에 대해 object인 망치에만 집중하는 것을 볼 수 있는데, ViFi-CLIP은 action에 수반되는 물체(사람-망치) 간의 interaction에 집중하고 있는 것을 볼 수 있습니다.저자에 따르면 이는 CLIP의 full fine-tuning이 temporal modeling에 충분히 기여했기 때문이라고 합니다.
정성적 결과라 마냥 믿기엔 설득력이 좀 떨어질 수 있지만, 그래도 단일 영상으로만 학습한 Vanilla CLIP에 비해 비디오 프레임을 평균 낸 feature로 학습한 ViFi-CLIP이 원래 집중하던 물체를 넘어 action이라는 특성을 잡아내기 위해 필요한 것들을 잘 잡아내게 된 것이라는 생각이 듭니다.
그림 4의 오른쪽 ‘frisbee catch’라는 action에 대해서도 마찬가지로 action을 구성하는 사람과 ‘frisbee’ 자체에 Vanilla CLIP보다 좀 더 높은 attention을 주는 것을 볼 수 있습니다. 또한 Vanilla CLIP의 경우 사람의 모자와 frisbee를 혼동하며 모자 쪽에 attention을 주고 있는 반면, ViFi-CLIP에선 action modeling에 필수적인 동적 frisbee와 사람의 팔, 다리 부분에 높은 attention을 준다는 것을 알 수 있습니다.
3.5 Is fine-tuning efficient w.r.t adapting CLIP?
여기까지 왔을 때 기존 방법론들이 CLIP encoder 뒷단에 추가 모듈을 붙여 그 부분만을 학습시키는 이유가, CLIP encoder 전체를 재학습하는 것이 너무 큰 cost를 소모하기 때문이 아닌가 생각하시는 분들이 계셨을 것입니다. 그래서 저자도 연산량과 속도를 리포팅하고 있습니다. 이는 아래 표 6과 같습니다.
앞서 벤치마킹할 땐 ActionCLIP, XCLIP, Efficient-Prompt 모델과의 비교를 수행했는데, 성능 표를 보았을 때 Efficient-Prompt의 모델들은 성능이 현저히 떨어져 효율성 비교에는 넣지 않은 것으로 보입니다. 따라서 어느정도 ViFi-CLIP과 성능이 비슷한 ActionCLIP, XCLIP과의 효율성을 비교해보았을 때, 우선 학습 파라미터의 개수가 가장 적습니다. 수반되는 연산량인 GFLOPs도 가장 적으며 throughput도 71.1 images/sec로 가장 높습니다. 이는 CLIP encoder 구조 이외에 별다른 모듈을 붙이지 않았다는 단순함에서 나오는 것이겠죠.
4. Bridge and Prompt in low-data regimes
지금까지 ViFi-CLIP이 단순한 full fine-tuning을 통한 효과적이며 효울적임을 계속 입증해왔는데요, fine-tuning 시 학습할 파라미터가 굉장히 많기 때문에 학습 데이터셋이 현저히 적다면 항상 이 방식이 잘 통할 것을 보장하기엔 힘듭니다.
그래서 저자는 Introduction에서 언급했던 two-stage framework ‘bridge and prompt’ 기법을 제안합니다. 첫 번째 단계에선 지금까지 설명한 ViFi-CLIP과 같이 데이터셋에 대한 full fine-tuning을 진행하여 modality gap을 메우는 bridging 과정을 거칩니다. 이를 마치면 두 번째 단계에선 CLIP encoder들을 freeze 시키고 프레임과 text 각각에 learnable prompt를 붙여 context optimization을 수행합니다. Context optimization을 통해 downstream task에 대한 일반성을 학습하게 될 수 있습니다.
여기서 learnable prompt를 붙이는 것은 기존 Efficient-Prompt에서도 제안됐던 방식입니다. 차이점은, Efficient Prompt에선 text에만 learnable prompt를 붙이기도 했고, 이후 Transformer Encoder를 태운다는 것입니다. 저자 이 Encoder의 학습 과정 중 seen 클래스에만 fitting되어 일반성을 오히려 잃게 될 수도 있다고 주장합니다.
그림 6은 두 stage의 ‘bridge and prompt’ 단계 중 첫 번째 단계(fine-tuning)를 마치고 image와 text 각각에 learnable prompt를 붙인 후 학습하는 과정을 그림으로 나타낸 것입니다. 그 점 이외에는 원래 방식과 동일하다고 볼 수 있습니다. 저자는 이를 Vision-Language Prompting(VL prompting)이라 칭합니다.
4.1 Prompting is effective on fine-tuned CLIP
4.1절의 제목에서 fine-tuned CLIP은 ‘bridge and prompt’ 중 ‘bridge’, Prompting은 ‘prompt’를 의미할 것입니다. 이 방식의 성능을 평가하고 타 방법론들과 fair하게 비교하기 위해서 먼저 다른 방법론들도 K-400으로 CLIP encoder fine-tuning을 수행합니다. 이후 prompting은 각 방법론의 기존 방식을 따르겠죠.
이에 대해 few-shot setting과 base-to-novel generalization setting에서 평가를 진행하였습니다. 각각의 setting은 기존 ViFi-CLIP의 성능인 표 3, 표 2와 같지만 데이터셋이 적은 상황에서 학습 프레임워크만으로 성능을 좀 더 끌어올려보기 위해 제안된 것이라고 생각하시면 좋을 것 같습니다. 그래서 이제 보여드릴 표 7, 8의 VL Prompting 성능 각각을 표 3, 2에서와 비교해보았을 때 일반적으로 좀 더 높은 성능을 달성하는 것을 알 수 있습니다.
표 7은 few-shot setting에서의 성능입니다. Vanilla CLIP은 학습을 하지 않은 것이기에 lower bound에 해당합니다. 표에 있는 성능 모두 K-400으로 full fine-tuning을 진행했기 때문에 저자의 VL Prompting과 가장 방법론적으로 유사한 것은 Efficient-Prompt의 A5입니다. 하지만 성능 측면에서 봤을 땐 VL Prompting이 훨씬 높은 분류 정확도를 보여주고 있습니다. XCLIP과 비교했을 때도 대부분 높은 성능을 보여주며 prompt learning까지 더해진다면 few-shot 상황에서도 본 방식이 일반성을 잃지 않는다는 것을 입증하고 있습니다.
다음으로 표 8은 base-to-novel 상황에서의 성능입니다. 추가 학습을 하며 Vanilla CLIP보다 월등히 높은 성능을 보여주고 있고, 별도의 모듈이 없음에도 XCLIP보다 항상 높은 성능을 보여줍니다.
Conclusion
이렇게 해서 논문의 실험과 분석을 모두 살펴보았습니다. 사실 개인적으로는 비교 대상이었던 방법론들이 CLIP의 full fine-tuning을 안해보았을 것 같진 않습니다. 이전에 저도 CLIP feature를 추출하다가 실수로 CLIP encoder를 freeze하지 않고 전체를 학습시켜본 적이 있는데, 이 때 계속해서 forwarding 값이 nan으로 나왔던 적이 있습니다. 그만큼 잘 사전학습되어있는 CLIP parameter를 함부로 건드리는 경우 원하는 방향으로 학습하는 것이 쉽지 않다는 것을 깨달았었습니다.
이러한 차원에서, 공개되어있는 코드의 learning rate를 좀 살펴보니 역시나 scheme에 따라 4e-2, 2e-6, 8e-6, 2.2e-5 등등 굉장히 괴랄한 숫자들로 맞춰져 있는 것을 알 수 있었습니다… Learning rate를 잘 조절해 encoder를 학습해보겠다는 생각도 대단하고 결국 최적의 값을 찾아냈다는 것이 놀랍네요. 아무래도 저는 CLIP encoder를 full fine-tuning하기 위해 learning rate나 기타 최적화 하이퍼파라미터들을 맞춰보기엔 시간적으로나 능력적으로 리스크가 좀 클 것 같아 시도해보진 않을 것 같습니다.
아무튼 예전에 다른 논문의 ICLR open review를 살펴보다가 이론적인 method가 너무 부족해 reject을 줄 수 밖에 없었다는 리뷰를 본적이 있었는데, 본 논문의 경우는 CVPR이라 그런지 이론적 method가 아예 없었음에도 수많은 실험과 분석을 통해 accept될 수 있었던 것 같습니다. 방법론적 아이디어를 얻어가진 못했지만 본 논문을 통해 CLIP을 다룰 때 보여줄 수 있는 분석 결과들에는 어떤 것들이 있는지 알게 되었습니다.
마지막으로 제가 적용하고자 하는 Action Localization보다는 상대적으로 단순한 task인 Action Recognition 만을 중심적으로 CLIP representation이 다뤄지고 있는 것이 조금 아쉽긴하지만 23년도 ICCV accepted paper 목록도 공개되었으니 계속해서 열심히 찾아봐야겠습니다.
이상으로 리뷰 마치겠습니다.
안녕하세요 김현우 연구원님.
저번에 리뷰했던 논문들 중에서 CLIP을 너무 적은 데이터 셋으로 파인튜닝하면 오히려 성능이 좋지 않았다는 내용이 있지 않았나요? Few-shot 세팅이라 본 논문에서 다루는 내용이랑 차이가 있을 것 같긴 한데… 논문에서도 “bridge and prompt”로 했다고 언급만 하고 진짜로 적은 데이터셋으로 학습하는 실험은 또 없고… 논문이 참… 설명이 하나도 없네요 ㅋㅋ
그리고 pretrained model 제공하면 이걸로도 실험 한번 돌려보는게 어떠신지…
이전에 리뷰했던 논문에서도 그렇고 CLIP의 zero-shot 성능보다 2-, 4-shot으로 linear probing하는 경우 일반성이 더 떨어진다는 것은 CLIP 본문과 여러 실험 결과에서 찾아볼 수 있긴 합니다.
일반성을 갖는 CLIP의 기존 pretrained representation을 fine-tuning할 때 본 논문과 같이 좋은 성능이 나온 것은 제가 리뷰 마지막에 언급한 lr값도 그렇고, 학습이 잘 되는 몇 없는 최적의 환경을 저자들이 잘 찾아냈기 때문이 아닌가.. 하는 생각이 드네요. Action recognition에서 task가 또 달라지면 여러 학습 세팅에 굉장히 예민할 것 같아 제가 TAL에 적용해보긴 힘들 듯 합니다..
참고로 깃허브엔 거의 모든 실험 세팅에 대한 모델 체크포인트를 제공하고 있어 이 논문의 힘을 빌려볼 수도 있을 것 같습니다.
안녕하세요. 김현우 연구원님.
좋은 리뷰 감사합니다.
굉장히 흥미로우면서도 혼란스런 논문이네요..🤯
복잡한 temporal modeling 없이 소량의 비디오 데이터로 파인튜닝을 하면 된다니요.. 그런데 만약 그렇다면 파인튜닝 + transformer 등을 활용한 temporal modeling을 수행하면 더 좋은 성능이 나오는 거 아닌가 싶은데, 혹시 이에 대한 언급이 있을까요?
그리고 image-text 데이터와 video-text 데이터의 도메인 차이 뿐 아니라 video-text 데이터 간에도 존재하는 domain gap들을 다루었는지도 궁굼합니다!
감사합니다.
1.
말씀해주신 방식은 완전하진 않지만 표 7, 표 8의 A5 성능에 해당한다고 볼 수 있을 것입니다. 표 7, 8의 A5는 ‘bridge and prompt’ 프레임워크 중 ‘bridge’ 단계에 의해 CLIP encoder full fine-tuning을 수행하고, 이후 단계에서 기존 A5 모델이 갖고 있는 textual learnable prompt와 2개의 transformer encoder를 또 학습합니다.
결국은 성능이 좀 낮은 것을 볼 수 있는데, 저자는 이에 대해 CLIP encoder의 일반성이 뒷단에 붙은 transformer layer에 의해 깨진다고 이야기하고 있습니다. 개인적으론 A5 모델 실험 시 모든 하이퍼파라미터는 기존 논문을 철저히 따랐다고 하는데, 최적화 대상이 달라짐에 따라 학습 하이퍼파라미터를 잘 조절해준다면 좀 더 긍정적인 결과가 나올 수도 있을 것으로 생각됩니다.
2.
본 방법론이 전적으로 CLIP represenation에 기대고 있으며, 이 CLIP image-text representation을 video-text 기반으로 adaptation하기 위해 전체 fine-tuning을 한 것입니다. 그래서 저자의 방식을 통해 image-text -> video-text로의 gap은 줄은 것이 사실이지만, 이후 video와 text 간 gap을 더 줄이기 위한 추가적인 메소드를 제안하고 있다고 보긴 어려울 것 같습니다.
만약 질문이 도메인이 서로 다른 비디오 데이터셋 간의 domain shift에 대응하는지에 대한 이야기였다면, 이것 또한 마찬가지로 전체 fine-tuning 이외 추가적인 메소드를 제안하고 있지는 않고, 이에 대한 모델의 일반화 능력은 리뷰의 zero-shot 성능을 참고하시면 좋을 것 같습니다.
실험 부분에서 혼동되는게 full finetune과 비교하는 방법론들은 actionclip과 xclip같은데
해당 방법들은 linear evaluation인가요 full finetune인가요?