
Jia, Chao, et al. "Scaling up visual and vision-language representation learning with noisy text supervision." International conference on machine learning. PMLR, 2021.


(background)
(background & 문제 제기)
(제안)
<img src="cat.png" alt="a small brown cat sitting on a sofa" />(실험)
(background: vision, vision-language model에 대한 pre-training datasets을 만드는 것은 heavy work이기 때문에 datasets 규모가 여전히 작다.)
기존 문헌에서, vision과 vision-language representation learning은 보통 서로 다른 training data sources를 사용하며 별도로 연구되어 왔다.
vision domain에서는
ImageNet, OpenImages, JFT-300M과 같은 large-scale supervised data로 pretraining하는 것이
transfer learning을 통한 downstream tasks의 성능 향상에 매우 중요한 것으로 입증되었다.
하지만 이러한 pre-training datasets을 구성하기 위해서는 data gathering, sampling and human annotation 등과 같은 heavy work가 필요하며, 이는 dataset이 scale되기 어렵게 만든다.
vision-language modeling에서도 pre-training은 de-facto(사실상 표준) approach가 되었다.
그러나 Conceptual Captions, Visual Genome Dense Captions, ImageBERT와 같은 vision-language pre-training datasets은
human annotaion, semantic parsing, cleaning and balancing의 과정이 훨씬 더 heavier work이다.
그 결과, 이러한 dataset의 규모는 최대 10M개 examples 수준에 머무르며,
이는 순수 vision domain의 pre-training datasets에 비해 적어도 한 자릿수 이상 작고,
또한 NLP pre-training을 위해 수집된 large corpora of text에 비해 훨씬 작은 규모이다.
(제안: noisy dataset을 대규모로 구성하여, vision and vision-language representaion learning을 대규모로 확장)
이 연구에서는 ,
1B(10억) 개 이상의 noisy image alt-text pairs로 구성된 dataset을 활용하여
vision and vision-language representation learning을 scale(확장)한다.
우리는 Conceptual Captions(Sharma et al., 2018)의 procedures(절차)를 따라 a large noisy dataset을 만들되,
원 논문에서 제안한 complex filtering and post-processing steps을 적용하지 않고,
simple frequency-based filtering만 적용했다.
결과적으로 dataset은 noisy하지만, Conceptual Captions보다 two orders of magnitude(두 자릿수=100배) 더 크다.
우리는 이 exacale dataset으로 pre-trained한 vision and vision-language representations이
a wide range of tasks에서 strong performance를 달성했음을 보인다.
우리 model을 train하기 위해,
a simple dual-encoder architecture를 이용하여
visual and language representation을 a shared latent embedding space (공유되 잠재 임베딩 공간)으로 align해주는 objective를 사용한다.
이러한 비슷한 objectives는 visual-semantic embedding(VSE)(Frome et al., 2013; Faghri et al., 2018) 학습에서도 사용된 바 있다.
우리는 이 model을 ALIGN: A Large-scale ImaGe and Noisy-text embedding이라고 부른다.
Figure 1의 top-left(내가 1이라고 표시해놓은 부분)는 ALIGN에서 사용한 방법을 요약한다.

aligned image and text representations는 본질적으로
cross-modality matching/retrieval tasks에 매우 적합하며, 해당 bechmarks에서 SOTA를 달성.
예를 들어, ALIGN은 Flickr30K와 MSCOCO에서 대부분의 zero-shot 및 fine-tuned R@1 metric에서 이전 SOTA method 보다 7% 이상 outperform한다.
또한 이러한 cross-modality matching은 classnames을 text encoder에 입력하기만 하면 zero-shot image classification이 가능하도록 한다.
ImageNet training samples를 하나도 사용하지 않고도 76.4% top-1 accuracy를 달성한다.
image representation 자체도 다양한 downstream visual tasks에서 superior performance를 보인다.
예를 들어, ALIGN은 ImageNet에서 88.64% top-1 accuracy를 달성한다.
Figure 1-bottom(내가 3이라고 표시해놓은 부분)은 ALIGN으로 구축된 실제 retrieval system에서 나온 cross-modal retrieval examples를 보여준다.
High-quality visual representations은 일반적으로 large-scale labeled datasets에서 pre-trained되어 image classification or retrieval에 사용된다.
최근에는 self-supervised learning과 semi-supervised learning도 alternative paradigms로 연구되고 있다.
그러나 이러한 방법들로 학습된 모델은 downstream tasks로의 transferability가 제한적이다.
image와 natural language captions을 확용하는 접근도 visual representations의 또 다른 방향이다.
Joulin et al. (2015); Li et al. (2017); Desai & Johnson (2020); Sariyildiz et al. (2020); Zhang et al. (2020)은
image로부터 caption을 prediction하는 방식으로 good visual representation을 학습할 수 있음을 보였으며,
이는 our work에도 영감을 주었다.
그러나 이러한 연구들은 Flickr나 COCO Captions처럼 small datasets에 한정되며,
그 결과 model은 cross-modal retrieval과 같은 tasks에 필요한 vision-language representation을 제공하지 못한다.
vision-language learning domain에서는 Visual-Semantic Embedding (VSE)와, improved versions(즉, object detectors, dense feature maps, or multi-attention layers 등)이 제안되어 왔다.
최근에는 cross-modal attention layer를 활용하는 advanced model들이 등장했고, image-text matching tasks에서 뛰어난 성능을 보인다.
하지만 이러한 모델들은 속도가 매우 느리고, real world에서 image-text retrieval systems에는 impractical하다.
이에 반해, 우리의 ALIGN model은 the simplest VSE form을 유지하면서도, 기존의 모든 cross-attention model을 image-text matching benchmarks에서 outperform한다.
우리 연구의 focus는 visual and vision-language representation learning을 scale up 하는 것이다.
이를 위해, 우리는 기존 dataset보다 much larger dataset을 사용한다.
구체적으로, 우리는 Conceptual Captions(Sharma et al., 2018)을 구축한 methodology를 따라
raw English alt-text data(image and alt-text pairs)를 수집한다.
Conceptual Captions dataset은 heavy filtering and post-processing을 거쳤다.
그러나 우리는 scale을 최우선으로 하기 때문에,
original work의 대부분의 cleaning steps을 생략하여
quality를 희생하는 대신 scale을 크게 늘린다.
대신, 아래에 설명한 minimal frequency-based filtering만 적용한다.
그 결과, 1.8B(18억) 개의 image-text pair로 구성된 a much larger but noiser dataset을 얻는다.
Figure 2는 해당 dataset의 sample이다.

Sharma et al. (2018)을 따라 다음 규칙으로 image를 걸러낸다:
자세한 내용은 Appendix A
우리는 dual-encoder architecture를 이용하여 ALIGN을 pre-train했다.
model은 한 쌍의 image encoder와 text encoder로 구성되어 있으며,
상위에는 cosine-similarity combination을 사용한다.
image encoder로는 EfficientNet을 global pooling과 함께 사용한다.
(classification head의 1x1 conv layer는 학습하지 않는다)
text encoder는 BERT의 token embedding을 text embedding encoder로 사용한다.
(우리의 training dataset으로부터 100k=10만 개의 wordpiece vocabulary를 생성했다.)
image tower와 dimension을 맞추기 위해, BERT encoder 위에 FC layer with linear activation을 추가했다.
image encoder와 text encoder는 둘 다 scratch부터 train된다.
image encoder와 text encoder는 normalized softmax loss(Zhai & Wu, 2019)를 사용해 optimized된다.
training 시에는,
matched image-text pairs를 positive로 보고,
training batch 안에서 만들 수 있는 all other random image-text pairs는 negative로 취급한다.
우리는 the sum of two losses를 minimize한다.


# 전제: torch.distributed.init_process_group(...) 이미 호출되어 있음
# rank, world_size 구함
rank = dist.get_rank()
world_size = dist.get_world_size()
# x_local : [B, D], y_local : [B, D] (torch.Tensor, device='cuda')
# L2 normalize
x_local = F.normalize(x_local, dim=1)
y_local = F.normalize(y_local, dim=1)
# 1) all_gather to get x_all, y_all (no grad for gathered tensors)
# create buffers
B, D = x_local.shape
x_gather_list = [torch.zeros_like(x_local) for _ in range(world_size)]
y_gather_list = [torch.zeros_like(y_local) for _ in range(world_size)]
# gather
dist.all_gather(x_gather_list, x_local) # each tensor is [B, D]
dist.all_gather(y_gather_list, y_local)
# concatenate to form [N, D]
x_all = torch.cat(x_gather_list, dim=0) # N = world_size * B
y_all = torch.cat(y_gather_list, dim=0)
# -> x_all and y_all do NOT require grad (gathered), that's fine.
# 2) compute logits in chunks to save memory
temp = learned_temperature # scalar
labels = torch.arange(rank * B, rank * B + B, device=x_local.device, dtype=torch.long)
# compute image->text logits: [B, N]
def compute_logits_chunked(query, keys, chunk_size=1024):
# query: [B, D], keys: [N, D]
N = keys.size(0)
out_list = []
for start in range(0, N, chunk_size):
end = min(N, start + chunk_size)
# matmul chunk: [B, chunk]
chunk = torch.matmul(query, keys[start:end].T) / temp
out_list.append(chunk)
return torch.cat(out_list, dim=1) # [B, N]
logits_i2t = compute_logits_chunked(x_local, y_all, chunk_size=4096) # tune chunk_size
logits_t2i = compute_logits_chunked(y_local, x_all, chunk_size=4096)
# 3) cross entropy
loss_i2t = F.cross_entropy(logits_i2t, labels)
loss_t2i = F.cross_entropy(logits_t2i, labels)
loss = 0.5 * (loss_i2t + loss_t2i)
loss.backward()
optimizer.step()
우리는 image-text 및 text-image retrieval tasks에서, finetuning 여부에 따라 ALIGN model을 평가한다.
평가에는 두 가지 benchmark dataset인 Flickr30K(Plummer et al., 2015) 와 MSCOCO(Chen et al., 2015) 를 사용한다.
또한 MSCOCO를 확장한 Crisscrossed Captions(CxC) (Parekh et al., 2021) 에서도 ALIGN을 평가한다.
CxC는 caption-caption, image-image, image-caption pairs에 대해 human semantic similarity judgement (사람이 직접 제공한 의미적 유사도 label)를 추가로 포함한다.
(CxC는 MSCOCO에서 image-caption 쌍에 대해, c-c, i-i, i-c 간의 의미적 유사도를 사람이 직접 평가해 추가로 붙인 확장 데이터셋.
기존 MSCOCO의 한계를 보완하기 위해,
기존에는 강아지 이미지와 "cat" 은 둘 다 완전히 무관하지는 않지만 그냥 "wrong caption"이었음.
CxC는 이러한 경우에 의미적 유사성 점수를 제공함.)
CxC의 training set은 original MSCOCO와 완전히 동일하므로,
MSCOCO로 fine-tuned한 ALIGN model을 그대로 CxC annotations을 통해 평가할 수 있다.
우리는 먼저 ALIGN을 ImageNet ILSVRC-2012 benchmark와
ImageNet-R(endition), ImageNet-A(dversarial), and ImageNet-V2를 포함한 variants들에 대해
zero-shot transfer 방식으로 평가한다.
이 모든 variants들은 the same set(or a subset) of ImageNet classes를 따르지만,
ImageNet-R과 ImageNet-A의 image는 ImageNet과 distributions이 매우 다르다.
우리는 또한 ALIGN의 image encoder를 다양한 downstream visual classification tasks에 transfer하여 평가한다.
이를 위해 ImageNet 뿐만 아니라 Oxford Flowers-102, Oxford-IIIT Pets, Stanford Cars, Food101 등
여러 a handler of smaller fine-graiend classification (소규모의 미세 분류) dataset을 사용한다.
ImageNet의 경우 두 가지 setting에서 결과를 보고한다:
또한, Kolesnikov et al. (2020)을 따라 ALIGN model의 robustness를 Visual Task Adaptation Benchmark(VTAB) (Zhai et al., 2019)에서 평가한다.
VTAB는 natural, specialized and structured image classification tasks를 포함한 19개의 visual classification tasks로 구성되어 있으며,
각 task마다 1000개의 training samples만 제공한다.











