Unsupervised Prompt Learning for Vision-Language Models
Tony Huang, Jack Chu, Fangyun Wei
TL;DR
This work tackles prompt design in vision-language models by removing the need for labeled target data. It introduces unsupervised prompt learning (UPL), which first generates pseudo labels on unlabeled data using a simple CLIP prompt and then learns a shared continuous prompt representation via self-training, with optional pseudo-label and prompt ensembles to boost quality. Across 11 datasets, UPL improves over the original CLIP with handcrafted prompts, and UPL*—which aggregates multiple CLIP models for pseudo-labeling—achieves further gains, rivaling 8-shot prompting methods. The approach reduces the reliance on labeled data for prompt engineering while achieving strong transfer performance, and it generalizes to other prompt-learning frameworks.
Abstract
Contrastive vision-language models like CLIP have shown great progress in transfer learning. In the inference stage, the proper text description, also known as prompt, needs to be carefully designed to correctly classify the given images. In order to avoid laborious prompt engineering, recent works such as CoOp, CLIP-Adapter and Tip-Adapter propose to adapt vision-language models for downstream image recognition tasks on a small set of labeled data. Though promising improvements are achieved, requiring labeled data from the target datasets may restrict the scalability. In this paper, we explore a different scenario, in which the labels of the target datasets are unprovided, and we present an unsupervised prompt learning (UPL) approach to avoid prompt engineering while simultaneously improving transfer performance of CLIP-like vision-language models. As far as we know, UPL is the first work to introduce unsupervised learning into prompt learning. Experimentally, our UPL outperforms original CLIP with prompt engineering on ImageNet as well as other 10 datasets. An enhanced version of UPL is even competitive with the 8-shot CoOp and the 8-shot TIP-Adapter on most datasets. Code and models are available at https://github.com/tonyhuang2022/UPL.
