Long-CLIP
这个仓库是Long-CLIP的官方实现
Long-CLIP: 解锁CLIP的长文本能力
Beichen Zhang, Pan Zhang, Xiaoyi Dong, Yuhang Zang, Jiaqi Wang
💡 亮点
- 🔥 长输入长度 将CLIP的最大输入长度从77增加到248。
- 🔥 强大性能 在长描述文本-图像检索任务中R@5提高20%,在传统文本-图像检索任务中提高6%。
- 🔥 即插即用 可以直接应用于任何需要长文本能力的工作中。
📜 新闻
🚀 [2024/7/3] 我们的论文被ECCV2024接收。
🚀 [2024/7/3] 我们发布了在SDXL中使用Long-CLIP的代码。详细信息请参考SDXL/SDXL.md
。
🚀 [2024/5/21] 我们在修复DDP中的bug后更新了论文和检查点,并在Urban-1k上添加了结果。特别感谢@MajorDavidZhang发现并修复DDP中的这个bug!现在微调只需要在8个GPU上花费0.5小时!
🚀 [2024/5/21] Urban-1k:论文中Urban-200数据集的扩展版本已在此页面发布。
🚀 [2024/4/1] 训练代码已发布!
🚀 [2024/3/25] 推理代码和模型(LongCLIP-B和LongCLIP-L)已发布!
🚀 [2024/3/25] 论文已发布!
👨💻 待办事项
- 基于OpenAI-CLIP的Long-CLIP训练代码
- Long-CLIP的评估代码
- 零样本分类和文本-图像检索任务的评估代码
- Long-CLIP的使用示例
- Long-CLIP的检查点
🛠️ 使用方法
安装
我们的模型基于CLIP,请为CLIP准备环境。
如何使用
首先,通过运行以下命令从github克隆我们的仓库。
git clone https://github.com/beichenzbc/Long-CLIP.git
cd Long-CLIP
然后,下载我们模型的检查点LongCLIP-B和/或LongCLIP-L,并将其放在./checkpoints
下
from model import longclip
import torch
from PIL import Image
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = longclip.load("./checkpoints/longclip-B.pt", device=device)
text = longclip.tokenize(["一个男人正在过马路,附近停着一辆红色汽车。", "一个男人在城市场景中驾驶汽车。"]).to(device)
image = preprocess(Image.open("./img/demo.png")).unsqueeze(0).to(device)
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
logits_per_image = image_features @ text_features.T
probs = logits_per_image.softmax(dim=-1).cpu().numpy()
print("标签概率:", probs)
评估
零样本分类
要在imagenet数据集上运行零样本分类,请在准备好数据后运行以下命令
cd eval/classification/imagenet
python imagenet.py
同样,对于cifar数据集运行以下命令
cd eval/classification/cifar
python cifar10.py #cifar10
python cifar100.py #cifar100
检索
要在COCO2017或Flickr30k上运行文本-图像检索,请在准备好数据后运行以下命令
cd eval/retrieval
python coco.py #COCO2017
python flickr30k.py #Flickr30k
训练
训练详情请参考train/train.md
。
⭐ 演示
Long-CLIP-SDXL
长描述文本-图像检索
即插即用文本到图像生成
引用
如果您发现我们的工作对您的研究有帮助,请考虑引用:
@article{zhang2024longclip,
title={Long-CLIP: Unlocking the Long-Text Capability of CLIP},
author={Beichen Zhang and Pan Zhang and Xiaoyi Dong and Yuhang Zang and Jiaqi Wang},
journal={arXiv preprint arXiv:2403.15378},
year={2024}
}