【免费下载链接】InternVL-14B-FlickrCN-FT-364px
🎯InternVL-14B-FlickrCN-FT-364px是 OpenGVLab 开源的 InternVL 系列在中文数据集FlickrCN上微调而来的14B 参数图文检索模型,输入 364×364 图像和中文/多语言文本,输出图文匹配分数,支持"以图搜文"与"以文搜图"双向检索。它的核心设计是用96 个可学习的查询 Token(query tokens)作为视觉特征与语言模型之间的"桥梁",本文将带你用通俗的方式看懂这套机制。
🧩 这个模型是什么?
一句话概括:这是一个懂中文的"图搜模型"。
- 模型类型:微调后的检索模型(fine-tuned retrieval model)
- 支持任务:图-文检索(Image-to-Text / Text-to-Image Retrieval)
- 模型规模:14B 参数,图像尺寸 364×364
- 微调数据:FlickrCN(Flickr30k 的中文翻译语料)
- 底座模型:OpenGVLab/InternVL-14B-224px
InternVL 本身是当时最大的开源视觉/视觉-语言基础模型(14B),将 ViT 扩展到 6B 参数并与 LLM 对齐,在视觉感知、跨模态检索、多模态对话等 32 项任务上刷新了 SOTA。本模型就是它面向中文图文检索场景的精调版本。
🏗️ 架构总览:InternViT + QLLaMA 的组合拳
整个模型由"一个冻结的视觉塔 + 一个冻结的语言塔 + 少量可训练组件"拼成:
| 组件 | 作用 | 是否可训练 |
|---|---|---|
InternVisionModel(InternViT-6B) | 视觉编码器,把图像切成 14×14 patch 提特征 | ❌ 冻结 |
qllama(Llama 结构,32 层) | 语言骨干,负责文本编码与图像特征的深层加工 | ❌ 冻结 |
query_tokens(96 个) | 查询探针,"读取"图像内容 | ✅ 可训练 |
clip_projector/clip_projector2 | 注意力池化,把长特征序列压成 768 维向量 | 部分可训练 |
logit_scale、itm_head | 温度系数与图文匹配头 | ✅ 可训练 |
配置项都可以在 config.json 中找到,例如:
num_query_token: 96—— 查询 Token 数量(本文主角)clip_embed_dim: 768—— 对齐后的向量维度cross_attention_frequency: 2—— 每 2 层插入一次跨模态注意力force_image_size: 364—— 强制输入分辨率max_txt_len: 32—— 文本最大长度
💡 这种"冻结大底座 + 训练小模块"的方式(代码中甚至预留了 LoRA 开关
use_backbone_lora/use_qllama_lora),让微调成本大幅降低,同时保留了 14B 底座的强大表示能力。
🔑 96 个查询 Token 如何桥接视觉与语言?
这是整个模型最巧妙的部分。传统 CLIP 里,图像特征通常靠"平均池化"或 CLS token 压缩成一个向量,信息容易丢失。InternVL 换了一个思路:
第 1 步:放探针。模型定义了一组 96 个、每个 4096 维的可学习向量query_tokens,它们在序列最前面,像 96 个"探针"一样等待被填充图像信息:
self.query_tokens = nn.Parameter( torch.zeros(1, config.num_query_token, text_hidden_size) )(见 modeling_internvl.py)
第 2 步:读图。在 QLLaMA 的每一第 2 层(cross_attention_frequency=2),这 96 个 Token 会通过跨模态注意力LlamaCrossAttention,去"注视"InternViT 输出的整张 patch 特征图(364px 下约 26×26 个 patch),把图像中最相关的信息聚合到自己身上:
query_feats = hidden_states[:, :self.num_query_token, :] query_feats, _, _ = self.cross_attn( hidden_states=query_feats, vision_hidden_states=vision_hidden_states, ...)(见 modeling_qllama.py)
第 3 步:压缩。经过 32 层反复"读取"后的 96 个 Token,再用 16 头注意力池化clip_projector2压成1 个 768 维向量——这就是图像在统一向量空间里的最终表示。
用一个比喻:96 个 Token 就像 96 位"看图记者",每 2 层采访一轮图像特征,最后由编辑(attention pooling)把它们的消息汇总成一句话(768 维向量)。
文本侧则相对简单:文本经 QLLaMA 编码后取最后一个有效 Token的隐藏状态,再线性投影到 768 维(见 encode_text)。
第 4 步:算匹配分。两边向量归一化后做余弦相似度,乘上可学习的温度系数logit_scale(初始值 1/0.07,沿用 CLIP 经典设定),就得到匹配 logits:
logits_per_image = logit_scale * image_features @ text_features.t()(见 modeling_internvl.py)
⚖️ InternVL-C 与 InternVL-G:双模式检索
调用model(..., mode=...)时可以选择两种模式(见 encode_image):
- InternVL-C(CLIP 式):只走视觉塔 +
clip_projector池化,链路短、速度快,适合对延迟敏感的检索服务; - InternVL-G(Generic 通用式):在 CLIP 分支之外,叠加上述"96 查询 Token + QLLaMA"分支,两路向量归一化后相加(ensemble)。多模态理解更强,对复杂语义的区分更准。
可以理解为:C 模式是"快问快答",G 模式是"深思熟虑"——检索精度优先时选 G,吞吐优先时选 C。
🚀 快速上手:3 个关键步骤与 1 个易踩的坑
- 加载模型:用
AutoModel.from_pretrained('OpenGVLab/InternVL-14B-FlickrCN-FT-364px', torch_dtype=torch.bfloat16, trust_remote_code=True),建议放在 GPU 上并eval(); - 预处理:图像用仓库自带的
CLIPImageProcessor(会自动缩放到 364×364,参数见 preprocessor_config.json);文本用AutoTokenizer(use_fast=False, add_eos_token=True); - 打分:传入
image与text,设置mode='InternVL-G'(或'InternVL-C'),对返回的logits_per_image做 softmax 即得匹配概率,按分数排序就是检索结果。
⚠️最容易踩的坑(README 特别强调):
- 文本前必须加
'summarize:'前缀; - 必须手动设置
tokenizer.pad_token_id = 0。
缺了这两步,结果会"异常"。中文、英文、日文文本都可以直接输入,模型支持多语言查询。完整示例见 README.md 的 Model Usage 部分。
📂 关键文件导览
| 文件 | 说明 |
|---|---|
| config.json | 模型配置:96 查询 Token、768 维对齐、364px 分辨率等 |
| modeling_internvl.py | 主模型:query_tokens定义、双模式编码、相似度打分 |
| modeling_qllama.py | QLLaMA 语言骨干:LlamaCrossAttention、跨模态注意力插入逻辑 |
| modeling_intern_vit.py | InternViT-6B 视觉编码器 |
| configuration_internvl.py | 配置类InternVLConfig,含各超参默认值 |
| preprocessor_config.json | 图像预处理参数(364×364、归一化均值/方差) |
| README.md | 使用示例、性能说明与引用格式 |
📌 小结
InternVL-14B-FlickrCN-FT-364px 展示了大模型时代图文检索的新范式:
- 冻结 14B 大底座,只训练 96 个查询 Token 和少量投影头,微调成本极低;
- 96 查询 Token 通过每 2 层一次的跨模态注意力,把整张图的语义"采访"进语言模型空间,比简单池化保留更多细节;
- C/G 双模式兼顾速度与精度,可按业务场景切换;
- 面向中文检索场景在 FlickrCN 上精调,多语言文本 + 中文图像的检索开箱即用。
如果你的业务需要做中文图搜、电商以文搜图、多模态内容审核等场景,这个模型是一个值得评估的起点。
【免费下载链接】InternVL-14B-FlickrCN-FT-364px
相关推荐
InternVL-14B-FlickrCN-FT-364px性能实测:Flickr30K榜单SOTA表现深度解析
InternVL 14B FlickrCN FT 364px性能实测:Flickr30K榜单SOTA表现深度解析 本文实测 InternVL 14B Flick
拆解InternVL-14B-FlickrCN-FT-364px视觉编码器:6B参数InternViT的架构奥秘
拆解InternVL 14B FlickrCN FT 364px视觉编码器:6B参数InternViT的架构奥秘 🔍 本文带你快速读懂 InternVL 14
5分钟上手InternVL-14B-FlickrCN-FT-364px:图文检索快速入门教程
5分钟上手InternVL 14B FlickrCN FT 364px:图文检索快速入门教程 InternVL 14B FlickrCN FT 364px 是一
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考