ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

⏰ 日程

[2025-01-23] 我们的 论文 被 ICLR 2025 接收!💥

[2024-08-07] 我们发布了 CLIP 模型权重!💥

[2024-08-05] 我们发布了 训练与评估代码!💥

[2024-07-30] 我们的 论文 在 arXiv 上发布!💥

💡 动机

overview

在本工作中,我们提出了一种针对 CLIP 模型的简单后训练方法,该方法通过自监督扩散过程在很大程度上克服了其视觉方面的不足。我们引入了 DIVA,它使用 DIffusion 模型作为 CLIP 的视觉助手。具体而言,DIVA 利用文本到图像扩散模型的生成反馈来优化 CLIP 表示,且仅使用图像(无对应文本)。我们证明 DIVA 显著提升了 CLIP 在极具挑战性的 MMVP-VLM 基准上的性能,该基准在很大程度上评估了细粒度视觉能力(例如,3-7% ↑),并增强了 MLLM 和视觉模型在多模态理解和分割任务上的性能。在 29 个图像分类和检索基准上的广泛评估证实,DIVA 保留了 CLIP 强大的零样本能力。

🤖 架构

overview

给定一张图像,CLIP 模型将视觉特征编码为条件的主要部分,然后生成式扩散模型以含噪图像和条件作为输入,预测所添加的噪声。我们通过生成式反馈,利用扩散损失最大化图像似然来优化 CLIP 的表示。

🔨 安装

克隆此仓库并安装所需的软件包:

git clone https://github.com/baaivision/DIVA.git
cd DIVA
mkdir -p outputs logs datasets pretrained_weights/CLIP pretrained_weights/SD

conda create -n diva python=3.9
conda activate diva
pip install -r requirements.txt

核心软件包:

🍹 DIVA 生成式微调的准备

数据获取

对于数据准备,请参阅 image2datasetMMVP 以获取本工作中使用的训练和评估数据。收集好相应的数据集后,直接将其放入 dataset/ 文件夹路径中。

预训练权重下载

对于预训练权重的准备,请参阅 OpenAI ViT-L-14/224&336MetaCLIP ViT-L/H-14SigLIP ViT-SO-14/224SigLIP ViT-SO-14/384DFN ViT-H-14/224DFN ViT-H-14/378SD-2-1-base 以获取判别式 CLIP 模型以及提供生成式反馈的所利用的扩散模型的模型权重。下载完所有这些必要的权重后,分别将它们移动到对应的文件夹路径 pretrained_weights/CLIP/pretrained_weights/SD/

代码修改

为了准备我们 DIVA 的条件设计,需要修改已安装的 CLIPOpenCLIP 软件包中的部分源代码。

对于 OpenAI CLIP,请使用我们提供的 condition/OpenAICLIP_for_clip_model.py 中的内容替换 Your Conda Installation Path/anaconda3/envs/diva/lib/python3.9/site-packages/clip/model.py 中的内容。

对于 MetaCLIP 和 DFN,请分别使用我们提供的 condition/MetaCLIP_for_openclip_transformer.pycondition/DFN_for_openclip_transformer.py 中的内容替换 Your Conda Installation Path/anaconda3/envs/diva/lib/python3.9/site-packages/open_clip/transformer.py 中的内容。

对于 SigLIP,请使用我们提供的 condition/SigLIP_for_timm_models_visiontransformer.py 中的内容替换 Your Conda Installation Path/anaconda3/envs/diva/lib/python3.9/site-packages/timm/models/vision_transformer.py 中的内容。

🍻 训练与评估快速入门

完成上述所有准备步骤后,您可以使用以下命令直接开始训练我们的 DIVA:

# For OpenAICLIP
bash DIVA_for_OpenAICLIP.sh

# For MetaCLIP
bash DIVA_for_MetaCLIP.sh

# For SigLIP
bash DIVA_for_SigLIP.sh

# For DFN
bash DIVA_for_DFN.sh

模型库

方法图像尺寸参数量 (M)平均分
OpenAI ViT-L-14224²427.625.9 (+6.6)
OpenAI ViT-L-14336²427.925.2 (+5.2)
MetaCLIP ViT-L-14224²427.627.4 (+3.7)
MetaCLIP ViT-H-14224²986.131.9 (+6.7)
SigLIP ViT-SO-14224²877.440.7 (+2.9)
SigLIP ViT-SO-14384²878.038.5 (+1.5)
DFN ViT-H-14224²986.143.7 (+4.4)
DFN ViT-H-14378²986.737.8 (+3.0)

值得注意的是,由于在训练阶段引入的条件设计中的随机性,以及在推理阶段针对 OpenAI CLIP 的局部 patch token 选择,使用我们提供的 OpenAI CLIP 权重在 MMVP_VLM 基准上获得的分数可能与我们论文中报告的结果不一致。此时,如果分数不符合预期,我们建议多次尝试不同的随机种子。

🎨 可视化

scene

💙 致谢

DIVA 基于出色的 Diffusion-TTA, MMVP, CLIP, OpenCLIP, timm.

📝 引用

@article{wang2024diffusion,
      title={Diffusion Feedback Helps CLIP See Better},
      author={Wang, Wenxuan and Sun, Quan and Zhang, Fan and Tang, Yepeng and Liu, Jing and Wang, Xinlong},
      journal={arXiv preprint arXiv:2407.20171},
      year={2024}
}