【免费下载链接】tipsv1-so400m14
TIPSv1-So400m/14 是谷歌开源的 TIPS 对比式视觉-语言模型中的 So400m 尺寸版本,一次encode_image调用即可输出三种图像特征:cls_token(整图嵌入)、register_tokens(第二个 CLS/寄存器 token)、patch_tokens(逐 patch 空间特征)。本文带你 3 分钟看懂三者的含义与用法,零样本分类、图像检索、空间可视化都能直接上手。
📌 TIPSv1-So400m/14 是什么?一分钟速览
TIPS(Text-Image Pre-training with Spatial awareness,ICLR 2025)是一组对齐图像与文本嵌入的对比学习模型,最大亮点是不仅输出"整图一个向量",还把逐 patch 的空间特征与文本对齐。So400m/14 的核心规格如下:
| 项目 | 数值 |
|---|---|
| 视觉编码器 | ViT-So400m,27 层,patch 大小 14 |
| 文本编码器 | 27 层 Transformer |
| 嵌入维度 | 1152 |
| 原生分辨率 | 448×448(共 1024 个 patch) |
| 参数量 | 413M 视觉 + 448M 文本 |
更多变体(S/14、B/14、L/14、g/14)与详细信息见 README.md,模型超参数见 config.json。
🧩 一图看懂:encode_image 的三大输出
调用out = model.encode_image(pixel_values)会返回一个包含三个字段的TIPSv2ImageOutput(定义见 modeling_tips.py):
| 输出 | 形状(batch=1) | 含义 | 典型用途 |
|---|---|---|---|
cls_token | (1, 1, 1152) | 整图全局嵌入,与文本塔对齐 | 零样本分类、图文检索 |
register_tokens | (1, 1, 1152) | 第二个 CLS token(寄存器 token),用合成描述训练 | 研究、辅助信号 |
patch_tokens | (1, 1024, 1152) | 每个 14×14 patch 的空间特征 | 定位、分割、特征可视化 |
cls_token:图文对齐的主力
它用网页 alt-text(图片替代文本)训练,是与文本编码器对齐的那个向量——做相似度、检索、零样本分类时默认选它。
register_tokens:多出来的"第二个座位"
TIPS 的视觉编码器带有一个额外 CLS token(num_register_tokens: 1,见 config.json),它用合成描述(synthetic captions)训练,与文本塔的对应关系不同,多数场景不必用它,做研究或需要第二路全局信号时再考虑。
patch_tokens:TIPS 的差异化能力
448 ÷ 14 = 32,32×32 = 1024 个 patch,每个 patch 都有一个 1152 维向量。把它 reshape 成(32, 32, 1152)就得到一张二维空间特征图,可用来做 grounding、分割和特征可视化。
🚀 快速上手:三分钟跑通图像特征提取
一键安装依赖
pip install transformers torch torchvision sentencepiece scikit-learn requests加载模型
from transformers import AutoModel model = AutoModel.from_pretrained("google/tipsv1-so400m14", trust_remote_code=True) model.eval()编码图像 + 编码文本
import requests from PIL import Image from torchvision import transforms # 注意:只 ToTensor() 缩放到 [0, 1],不需要 ImageNet 归一化 image = Image.open("bus.jpg").convert("RGB") transform = transforms.Compose([transforms.Resize((448, 448)), transforms.ToTensor()]) out = model.encode_image(transform(image).unsqueeze(0)) print(out.cls_token.shape) # (1, 1, 1152) — 整图嵌入 print(out.patch_tokens.shape) # (1, 1024, 1152) — 逐 patch 空间特征 text_emb = model.encode_text(["a photo of a bus", "a photo of a cat"]) print(text_emb.shape) # (2, 1152)🎯 两个最常用的实战配方
配方一:零样本图像分类(用 cls_token)
import torch.nn.functional as F classes = ["bus", "car", "dog", "cat"] cls = F.normalize(out.cls_token[:, 0, :], dim=-1) text_emb = F.normalize(model.encode_text(classes), dim=-1) similarity = cls @ text_emb.T print(classes[similarity.argmax()]) # 预测类别配方二:空间特征可视化(用 patch_tokens + PCA)
import numpy as np from sklearn.decomposition import PCA feat = out.patch_tokens[0].detach().cpu().numpy() rgb = PCA(n_components=3, whiten=True).fit_transform(feat).reshape(32, 32, 3) rgb = 1 / (1 + np.exp(-2.0 * rgb)) # sigmoid 缩放到 [0, 1],对比度更好把rgb保存成图片,就能看到特征图在图像上的空间分布——这正是 TIPS "spatial awareness" 的直观体现。
❓ 常见问题 FAQ
Q:做图文相似度该用哪个 token?A:用cls_token。它是与文本编码器对齐训练的那个;register_tokens用合成描述训练,语义对应关系不同,别混用。
Q:为什么算相似度前要用F.normalize?A:TIPS 输出的特征未做归一化,L2 归一化后点积才等价于余弦相似度。
Q:图像尺寸必须是 448 吗?A:原生分辨率是 448×448,但只要是 patch 大小 14 的整数倍即可,模型会自动对位置编码做插值(实现见 image_encoder.py)。
Q:文本分词器在哪里?A:仓库内的 tokenizer.model 是 SentencePiece 词表,输入统一转小写,最长 64 token,分词实现见 text_encoder.py。
📁 关键文件速查
| 文件 | 作用 |
|---|---|
| README.md | 用法示例与模型家族对照表 |
| modeling_tips.py | encode_image/encode_text入口与输出结构 |
| image_encoder.py | So400m ViT 定义(27 层、register=1) |
| config.json | 视觉/文本编码器超参数(嵌入维度、层数等) |
| configuration_tips.py | 配置解析,含num_register_tokens |
| tokenizer.model | SentencePiece 分词器词表 |
✅ 总结
cls_token= 整图嵌入,图文匹配、零样本分类的首选register_tokens= 第二个 CLS,合成描述训练,偏研究方向patch_tokens= 1024 个 patch 的空间特征,TIPS 的差异化能力(定位、分割、可视化)- 嵌入维度 1152,原生分辨率 448×448,patch 大小 14
- 算相似度前先
F.normalize,图像只需缩放到 [0, 1] 无需额外归一化
记住这三件套的角色分工,你就可以用 TIPSv1-So400m/14 开始提取图像特征了 🎉
【免费下载链接】tipsv1-so400m14
相关推荐
NohBoard终极指南:5个简单步骤打造专业级键盘可视化工具
NohBoard终极指南:5个简单步骤打造专业级键盘可视化工具 想要在直播或录制视频时展示你的按键操作吗?NohBoard正是你需要的免费开源键盘可视化工具!这
AnyLanguageModel 对接 OpenAI:Chat Completions 与 Responses 双 API 详解
AnyLanguageModel 对接 OpenAI:Chat Completions 与 Responses 双 API 详解 AnyLanguageMode
Lune安全指南:10个技巧保护你的Luau脚本免受常见安全威胁
Lune安全指南:10个技巧保护你的Luau脚本免受常见安全威胁 Lune是一个独立的Luau运行时,专为编写和运行Luau程序而设计。作为一个用Rust构建的
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考