본 논문은 Microsoft Research에서 2020년에 작성한 논문이다.
논문 링크: https://arxiv.org/abs/2012.06946
1. Introduction
본 논문은 MiniVLM이라는 경량 Vision-Language 모델을 제안한다.
- 대부분의 VL 모델들은 대부분 두 가지 모듈로 구성되어 있다. (1) Vision module: 이미지 피처를 추출하는 모듈로, imageNet으로 학습된 CNN을 기반으로 한다. (2) Feature fusion module: 멀티 모달 Transformer를 기반으로 두 가지 데이터 추출한 visual 피처와 토큰화된 sentence를 말 그대로 혼합하는 모듈이다.
- 두 모델을 함께 사용하는 경우 수억 개의 파라미터가 사용된다고 한다. 그렇다면, 아주 당연하게, 좋은 성능을 내는 모델을 자원이 한정된 기기에서 사용하는 데엔 큰 무리가 있을 것이다.
- 저자들은 정확도와 속도 간의 밸런스를 맞추며 성능 저하를 최소화하면서도 edge-device에서도 사용할 수 있는 MiniVLM 이란 모델을 제안한다.
메인 contribution은 다음과 같다.
- Visual module로 Object Detection에서 사용되는 EfficientNet 모델 기반의 TEE 구조를 제안한다.
- Fusion Module로는 MiniLM 모델을 사용한다. 이는 저자들이 이전 연구에서 제안한 모델로, 지식 증류 기법을 통해 NLP 모델을 경량화한 것이다. 글을 읽다 막히는 부분이 있을 때, 아래의 포스트를 참고하면 도움이 될 것이다.
[논문 리뷰] MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained Transformers (2020)
본 논문은 Microsoft Research에서 2020년에 작성한 논문이다.논문 링크: https://arxiv.org/pdf/2002.109571. Introduction본 논문은 수억 개의 파라미터를 갖는 일반적인 NLP 모델을 경량화한 MiniLM 모델을 제안한다.
happy-support.tistory.com
2. TEE: Two-stage Efficient feature Extractor
ResNet을 백본으로 사용하는 Faster R-CNN을 피처 추출기로 사용하는 것이 일반적이다.
하지만 이는 너무 많은 연산을 필요로 하며, 추론 시간의 대부분을 차지하는 것으로 알려져 있다.
저자들은 일반적인 object detection 태스크와 VL 태스크 간의 차이점을 언급한다.
VL 모델은 visual과 textual 데이터 간의 관계에 대해 학습하는 것에 집중해야 한다.
다르게 말하면, VL 태스크에선 아주 정확한 bounding box 좌표를 추출할 필요는 없다.
대략적인 box만 뽑아서 그것의 rich(충분한) visual representation을 학습하는 것이 더 중요하다는 뜻이다.
저자들은 이러한 직관을 바탕으로 TEE라는 구조를 제안한다.
앞에 나오는 EfficientNet 모델부터 4x4 RoIAlign라고 적힌 구간을 이해하기 위해선 Object Detection 태스크 에서의 two-stage detector 방식에 대한 이해가 필요하다.
Two-stage detector
위의 사진은 Faster R-CNN 논문에서 가져온 것으로, 그림을 보면 feature maps에서 화살표가 두 갈래로 나뉜다.
그 부분이 바로 two-stage라고 불리는 구간이다.
이 방법론은 하나의 이미지에서 객체가 있을 만한 후보 영역을 뽑아내는 Region Proposal 단계와 해당 영역에서의 정확한 위치와 그 객체의 클래스를 예측하는 Detection 단계로 나누어진다.
Faster R-CNN은 VGG나 ResNet을 backbone으로 feature maps를 추출하고, 위의 두 단계를 거쳐 task를 수행한다.
이 설명을 왜 하고 있느냐! 😲
논문에 나온 사진을 반시계 방향으로 90도 돌려보면 사실 TEE도 two-stage detector 방식을 따름을 알 수 있다.
본 논문에선 backbone으로 EfficientNet(정확하게는 EfficientNet-0)을 사용했다.
EfficientNet은 (1) 모델의 depth, (2) 필터 개수, (3) 입력 이미지의 해상도라는 세 가지 인자를 조절하여 피처를 효율적으로 빠르게 추출하는 모델이다. (더 자세하게 알고 싶은 분들은 관련 포스트를 찾아보길 바란다! 좋은 설명들이 매우 많다 😄)
BiFPN
그래. EfficientNet으로 feature를 추출했다는 건 완벽히 이해했다.
그럼 BiFPN은 무엇이지? 😗
BiFPN을 이해하기 전에 먼저 FPN(Feature Pyramic Network)에 대해 알아야 한다.
기존 연구들에선 object detection의 성능을 높이기 위해 이미지를 다양한 크기로 resize 하고 이들 각각의 피처를 추출하여 task를 수행했다.
FPN은 위 과정에서 발생하는 과도한 연산 문제를 해결하기 위해 고안된 방법론으로, 하나의 이미지만을 이용해 다양한 크기의 피처 맵을 사용하는 아이디어를 바탕으로 한다.
위 사진이 바로 BiFPN(Bi-directional FPN) 방법론을 시각화한 것이다.
EfficientDet이라는 object detection 모델을 제안하며 만들어진 구조인데, 저자들은 이 BiFPN을 통해 mutiscale의 feature 들을 쉽고 빠르게 fusion 할 수 있었다는 점을 강조하고 있다.
본 논문에서 BiFPN을 사용한 것도 "빠르다"라는 장점 때문이라고 생각할 수 있다.
RPN & RoIAlign
자 다시 논문 이야기로 돌아와 보자.
Two-stage detector는 RPN으로 bounding box 검출과 객체 클래스 분류를 수행하게 된다.
두 단계를 각각 bounding box regression과 objectness prediciont이라고 부르는데, 본 논문에서는 각 단계에서 커널 사이즈가 1인 오직 단 1개의 Conv 레이어만을 사용했다고 한다. -> 모델 크기 축소!
그렇다면 RoIAlign은 무엇일까? 😲
Object Detection 과정에서 추출한 RoI들의 크기는 제각각일 것이다.
이들의 크기를 통일하기 위해 제안된 RoI Pooling 이란 방식이 있는데, 이 방법론의 상위 호환 버전 정도로 생각하면 된다!
보통은 14x14 또는 7x7 크기로 통일을 하는데, 본 논문에서는 더 작게 4x4로 통일했다고 한다. -> 데이터 크기 축소!
Output
추출된 RoI들은 2개의 FC 레이어를 거쳐 1024차원의 피처를 생성한다.
보통 2048로 생성한다고 하는데, 저자들은 해당 단계에서 또한 데이터 크기를 축소하여 모델을 경량화한 것을 알 수 있다.
+ 논문에서는 겹치는 proposal을 제거하는 Non-maximum suppression 단계를 1번만 수행했다고 한다. -> 연산량 감소!
최종 output은 region features R, bounding box B, object tag C(개, 고양이, 울타리 등)가 된답니다~ 😗
TEE 모듈에 대해 이해하느라 정말 수고 많으셨습니다!
두 output은 다음 섹션에서 소개할 Fusion 모델의 입력으로 들어갑니다! 😋
3. Multi-modal Transformer - MiniLM
저자들은 정확도와 속도를 최대한으로 잡는 compact 한 Fusion 모델을 찾기 위해 여러 경량 모델들에 대해 조사했다.
조 이후 본 논문에선 hidden state 크기가 384인 12개의 레이어를 갖는 MiniLM이란 모델을 채택했다고 한다.
-> 이 단락에서 잠깐 멈추고 MiniLM 논문을 읽기 시작했고, 다 읽고 나서야 두 논문 다 마이크로소프트사에서 작성한 거구나..!!!? 란 걸 알아차렸다😂
논문 내의 Fusion 모델 섹션이 매우 짧은 것도 바로 이런 이유 때문이다. 😄
Fusion 모델의 입력은 아래의 세 가지 요소로 구성이 된다.
- 4개의 모서리 좌표와 width & height로 정규화된 bounding box
- 토큰화된 객체 class 이름
- 각각의 downstream task에 맞게 작성된 토큰화된 sentence
최종적으로 Fusion 모델은 주어진 task에 알맞은 결과를 생성하도록 학습된다! 😍
4. Pre-training
학습을 어떻게 진행했는지에 대해 살펴보고 리뷰 마무리해 보도록 하겠습니다! 😄
Vision module
VL task의 핵심은 좋은 visual 피처를 추출하는 것이라고 할 수 있다.
Vision module의 학습은 다음의 3단계로 진행되었다고 한다.
- Backbone 네트워크를 classification 데이터셋인 ImageNet으로 pre-training
- Object Detection 네트워크들을 Object365 데이터셋으로 pre-training
- Visual Genome 데이터셋으로 fine-tuning
Fusion module
- 저자들은 MS COCO, Conceptual Captions (CC), SBU captions, Flicker30k, GQA , VQA, VG-QA 데이터셋들을 결합하여 pre-training에 사용했다.
- Fusion 모델의 입력을 구성하기 위해선 image와 sentence 뿐만 아니라 object tag가 필요하다. 저자들은 SOTA 성능을 보이는 OSCAR 모델을 이용해 직접 pseudo captions를 생성해서 pre-training에 사용했다.
- 사람이 검증한 긍정 tag와 TEE-3의 예측 tag를 결합한 데이터셋인 OI-Caps-7M 또한 pre-training에 사용되었다. 실험 결과를 보면 OI-Caps-7M을 사용해 지식 증류 기법을 수행했을 때 성능이 더 좋아졌다는 것을 알 수 있다.
Object tags에 대한 부분을 제외하면 pre-training 방법은 OSCAR 모델과 동일하다고 한다.
OSCAR 모델에서는 널리 알려진 MLM(Masked Language Modeling)과 특정 이미지에 텍스트가 올바르게 매칭되어 있는지 판단하는 ITM(image-text matching)이란 학습 기법으로 pre-training을 진행하였습니다.
5. Conclusion
본 논문에서는 Vision Language task를 수행하는 경량 모델 MiniVLM을 제안하였다.
메인 contribution은 visual 피처를 추출하는 FEE 네트워크를 구성하고 MiniLM이란 경량 NLP 모델을 사용해서 모델 크기와 추론 속도를 대폭 축소시켰다는 점이다.
FEE 네트워크의 backbone으로는 빠른 추론속도를 보이는 EfficientNet을 사용했고, 각각의 모듈들의 크기와 피처 크기를 줄여나가며 경량화를 수행했다.
Fusion 모델의 경우 지식 증류 기법을 적용해 경량화된 MiniLM을 채택하여 사용하였다.
본 논문에서는 OSCAR 모델과 비교했을 때 두 모듈의 파라미터 수와 FLOPS를 크게 줄였음에도 불구하고, 여러 다운스트림 작업에서 큰 성능 저하가 발생하지 않는다는 사실을 실험 결과로 입증하고 있다.
개인적으로 Fusion 모델의 경우 다른 경량 NLP 모델들을 비교한 후에 MiniLM을 선택했다고 하는데, 이 부분에 대해선 속이 시원하지 않았다. 왜냐면 TinyBERT(4) 모델이 파라미터수나 FLOPS가 훨씬 더 적음에도 불구하고, 별도의 성능 비교 실험 없이 그냥 MiniLM을 채택했기 때문이다... 모듈에 여러 모델을 넣어보며 실험하는 것도 좋은 연구거리가 될 것 같다. 📚
이 논문도 온디바이스AI 강의를 듣는 중에 읽게 되었는데, 멀티 모달에 대해 공부하는 나에게 정말 좋은 경험이 되었다!
저의 글이 언제나 여러분께 도움이 되길 바라겠습니다 ~ ❣️
궁금한 점이 있다면 언제든 댓글 남겨주세요. 😍