OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  CLIP Interrogator — 反推图像提示词的多模态分析工具

CLIP Interrogator — 反推图像提示词的多模态分析工具

 
  meander ·  2026-04-06 11:00:26 · 5 次点击  · 0 条评论  

clip-interrogator

想为现有图片找到一个合适的提示词来生成类似的新图像吗?CLIP Interrogator 来帮你找到答案!

立即运行!

🆕 现已作为 Stable Diffusion Web UI 扩展 提供!🆕


在 Colab、HuggingFace 和 Replicate 上运行版本 2!

在 Colab 中打开 通用徽章 Replicate Lambda


版本 1 仍在 Colab 中可用,用于比较不同的 CLIP 模型

在 Colab 中打开

关于

CLIP Interrogator 是一个提示词工程工具,它结合了 OpenAI 的 CLIP 和 Salesforce 的 BLIP 来优化文本提示词,使其与给定图像匹配。将生成的提示词用于 DreamStudio 上的 Stable Diffusion 等文生图模型,来创作酷炫的艺术作品吧!

作为库使用

创建并激活 Python 虚拟环境

python3 -m venv ci_env
(linux 系统) source ci_env/bin/activate
(windows 系统) .\ci_env\Scripts\activate

使用 PIP 安装

# 例如,安装支持 GPU 的 torch:
pip3 install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu117

# 安装 clip-interrogator
pip install clip-interrogator==0.5.4

# 或者安装支持 BLIP2 的最新开发版本
#pip install clip-interrogator==0.6.0

然后你可以在脚本中使用它

from PIL import Image
from clip_interrogator import Config, Interrogator
image = Image.open(image_path).convert('RGB')
ci = Interrogator(Config(clip_model_name="ViT-L-14/openai"))
print(ci.interrogate(image))

CLIP Interrogator 使用 OpenCLIP,它支持许多不同的预训练 CLIP 模型。要为 Stable Diffusion 1.X 获得最佳提示词,请将 clip_model_name 设置为 ViT-L-14/openai。对于 Stable Diffusion 2.0,请使用 ViT-H-14/laion2b_s32b_b79k

配置

Config 对象允许你配置 CLIP Interrogator 的处理过程。
* clip_model_name: 指定使用哪个 OpenCLIP 预训练的 CLIP 模型。
* cache_path: 保存预计算文本嵌入的路径。
* download_cache: 为 True 时将从 huggingface 下载预计算的嵌入。
* chunk_size: CLIP 的批处理大小,为降低 VRAM 使用可设置更小的值。
* quiet: 为 True 时将不显示进度条或文本输出。

在 VRAM 较低的系统上,你可以调用 config.apply_low_vram_defaults() 来减少所需的 VRAM 量(以牺牲一些速度和质量为代价)。默认设置使用约 6.3GB VRAM,低 VRAM 设置使用约 2.7GB。

有关如何使用 Config 和 Interrogator 类的更多示例,请参阅 run_cli.pyrun_gradio.py

根据你自己的术语列表进行排序(需要版本 0.6.0)

from clip_interrogator import Config, Interrogator, LabelTable, load_list
from PIL import Image

ci = Interrogator(Config(blip_model_type=None))
image = Image.open(image_path).convert('RGB')
table = LabelTable(load_list('terms.txt'), 'terms', ci)
best_match = table.rank(ci.image_to_features(image), top_count=1)[0]
print(best_match)
5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 20 ms
Developed with Cursor