跳到主要内容

阅读笔记 — Large Vision-Language Models (Pre-training and Transfer)

格式:每章一段要点 + 关键行号(行号=段落号,供脚注用)。 书是论文合集(Springer,2026),17 章 = 17 篇论文,编辑 Kaiyang Zhou(HK Baptist)/Ziwei Liu(NTU S-Lab)/Peng Gao(Shanghai AI Lab)。前言落款 2024-12。

前置材料

  • 03-fm-preface.txt:19 — 三位编辑的署名地:Kowloon Hong Kong / Singapore / Shanghai,December 2024。前言里把书名写成「Foundations of Vision-Language Models: Concepts and Roadmap」(与 ch1 同名,前言就是这篇 roadmap 论文的序)。
  • 06-fm-contributors.txt — 贡献者单位:NTU S-Lab(新加坡南洋理工)、上海 AI 实验室、BAAI(北京智源)、清华、南大、港中大、Nvidia、Apple、Caltech、UMD、南科大等。不是新加坡国立/牛津(任务提示有误,以书为准)。

Ch1 Foundations of VLMs: Concepts and Roadmap (07-ch01, 574 行)

综述/roadmap,三位编辑合写。

  • L37-41 引言:视觉与语言在 AI 里本是两个分立的领域(computer vision / NLP);儿童靠视觉+语言联合学概念(apple 例子 L39);现代 VLM 参数从几百万到几十亿,训练数据到 billions(L41)。
  • L53 预训练定义:在大规模数据上为通用任务训练(如预测被遮住的词/图块),学出可迁移的表示。
  • 视觉演化 L57:ImageNet→AlexNet(CNN)→ResNet(残差解决 vanishing gradient)→ViT(图块当序列,self-attention)。
  • 语言演化 L65-67:Word2Vec/GloVe(固定向量)→ELMo(上下文相关)→seq2seq→Transformer(self-attention 替代 recurrence,可并行)→BERT(masked LM)/GPT(next-token prediction)。
  • 汇合 L71-75:DeViSE(2013,共享嵌入)→CLIP/ALIGN(双编码器+大批量对比学习,zero-shot)→Flamingo(预训练视觉模型接预训练语言模型,caption 微调)→GPT-4V。
  • 三种对齐架构 L91-95:Dual-Encoder(CLIP,共享嵌入空间)/Cross-Attention(Flamingo、InstructBLIP,插在语言 transformer 的自注意力层之间)/Unified(UNITER,两模态 token 拼一个序列)。
  • 三种训练目标 L99-103:对比学习 / Masked Modeling(遮图遮字)/ 自回归(caption)。
  • 数据类型 L107-113:image-text pairs(COCO Captions、Flickr30k 几十万条人工 caption;LAION-5B 几十亿条网爬)、VQA、instructional(LLaVA-Instruct)、video-text(HowTo100M)。
  • 挑战 L123:jaguar 歧义(动物还是车);L127 transformer 序列长度二次复杂度;L131 PEFT(prompt learning/adapter)被批泛化弱,test-time prompt tuning 增算力;L151 GPT-4 级训练:数千加速器数周、数百万美元;L171 数据偏西方中心;L175 LAION caption 噪声;L179 长尾概念。
  • L189 CLIP 关键句:两个编码器从零训练,4 亿图文对,对比学习;成功归因于三件:transformers、对比学习、web 规模数据。共享表示空间的想法其实 10 多年前就有(DeViSE 一代)。
  • L191 其他训练目标:image-text matching(二分类)、masked LM、image-conditioned text generation。提到 ch3 把 masked video modeling+跨模态对比+next-token 合一套。
  • L193 encoder-decoder 路线:视觉编码器(常 ImageNet 预训练)+ 预训练 LLM;连接器:线性投影层(LLaVA)/ cross-modal attention(Flamingo)/ learnable-query transformer(BLIP-2)。Ch4 是这类,展示 in-context learning。
  • 1.4.2 prompting L197-203:prompt engineering(手工模板「a sketch photo of a {CLASS}」,试错耗时)→ prompt learning(把 prompt 当可学参数,文本嵌入或视觉 token,不动预训练权重,防过拟合)。泛化问题:在 airport/cathedral 上学的 prompt 到 wind farm/railway station 不灵(同任务新类)。解法:动态/条件 prompt(按图像生成 prompt)、test-time training(ch6)。Ch5 可微 prompt、Ch8 神经架构搜索 prompt、Ch7 adapter、Ch9 prompt learning 方法的校准。
  • 1.4.3 应用 L209-219:开放词汇感知(dense prediction 难,因 CLIP 训练只有图级 caption 无框标注;ch10 检测输出以 CLIP 文本编码器为条件;ch11 MaskCLIP 用图像编码器取 dense 特征、文本编码器合成分类权重)、3D(ch12 把 3D 投影到 2D 用 CLIP;ch15 avatar;ch16 motion)、生成(ch13 collaborative diffusion 人脸;ch14 不加算力提升扩散;ch17 场景生成)。
  • 脚注1 L575:GPT-4V 技术细节未公开。

走查素材:CLIP 4 亿对 + 三种架构分类 + 「a photo of a {CLASS}」。

Ch2 InternVL (08-15 号文件;作者:港中大/南大/复旦/清华/商汤/上海AI Lab)

问题:开源 MLLM 与商业闭源(GPT-4V/Gemini)的差距在三处(10-ch02-01 L5): (1) 参数规模——商业 ≥100B,开源常用 300M 视觉模型 + 7B/13B LLM; (2) 分辨率——商业动态分辨率保纵横比,开源固定 336×336/448×448; (3) 多语言——开源主要靠英文数据。

  • 两个关键设计(10 L11):InternViT-6B(60 亿参数视觉编码器)+ 渐进式图文对齐;模型可从 10B 扩到 100B。
  • 语言中间件(12 L5/L101-103):先拿 multilingual LLaMA-7B 当文本编码器做对比学习;核心假设是不同 LLM 的表示空间同质(都吃全网文本训练),视觉编码器只需对齐一个 LLM,之后换更大的 LLM(InternLM2-20B)只需少量增量训练。
  • 瑞士军刀用法(12 L107-117):① 纯视觉 backbone,特征图 H/14×W/14×D;② 对比任务:图像特征做 attention pooling,文本取 [EOS] token 特征,算相似度;③ 生成任务:VFM-MLP-LLM(类 LLaVA),pixel shuffle 把视觉 token 减到 1/4。
  • 三阶段渐进对齐(12 L123-139):S1 对比学习(噪声网页数据,对称交叉熵=CLIP 目标;ViT 随机初始化、LLaMA 预训练初始化、全参数可训)→ S2 增量预训练(丢掉 LLaMA 换 InternLM2-20B,LLM 冻结,只调 ViT+MLP;动态高分辨率训练最多 12 块)→ S3 SFT 全参数微调。
  • L149:发现倒数第 4 层往前特征最好,砍掉 ViT 最后 3 层(48→45 层);pixel-unshuffle 宽高各降 2 倍。
  • 动态高分辨率(12 L155-161):35 种纵横比组合(1-12 块);800×1300 图→896×1344→6 块 448×448+缩略图;训练视觉 token 256-3328,测试可到 40 块=10496 token(4K)。
  • 数据(12 L167):S1 原始 60.3 亿对→清洗后 49.8 亿(82.6%);六个过滤因子(CLIP 相似度/水印/不安全内容/美学分/分辨率/caption 长度);剔除 ImageNet/Flickr30K/COCO 重复以防 zero-shot 泄漏。S2:caption 53.9%/检测 5.2%/大 OCR 32%/小 OCR 8.9%(PaddleOCR 自造)。S3:十一类任务数据集+纯文本(OpenHermes2.5 等)保 LLM 能力。翻译管线(12 L391):用开源 LLM/GPT-3.5 把英文数据翻成中文。
  • 实验关键数:ImageNet 线性探测 88.2(ViT-22B 89.5 但 21.7B 参数+私有 JFT-3B);ADE20K 线性探测 47.2 mIoU vs ViT-22B 34.6(13-ch02-04 L277-285);zero-shot IN-1K 83.2;中文 IN-1K 64.5(L677-687);K400 单帧 71.0;Flickr30K 检索 R@1 94.7;InternVL-Chat 26B:DocVQA 90.9/ChartQA 83.8/TextVQA 80.6/OCRBench 724/MathVista 53.5(GPT-4V 49.9)(L1657-1673);ConvBench 多轮对话仍明显落后 GPT-4V(L2673);消融选了 variant 3(width 3200/depth 48/25 heads,L2735-2751);动态分辨率对 OCR 类任务有用,AI2D/MMMU 反而略降(L2809)。

Ch3 InternVideo2 (16-24 号;视频基础模型,上海AI Lab 系)

三阶段渐进训练(18-ch03-01 L7): S1 无掩码视频 token 重建(知识蒸馏:双教师 InternVL-6B 管语义 + VideoMAEv2-g 管运动;80% token 掩码,只在未掩码 token 上算 MSE;对齐 InternVL 末 6 层、VideoMAEv2 末 4 层;训完拆掉投影层)(20-ch03-03 L13-21); S2 多模态对比(视频+音频+语音+文本;音频编码器 12 层 transformer 90M 参数、BEATs 初始化、64 维 log-Mel;文本 BERT-Large 前 19 层编码、后 5 层加 cross-attention 当多模态解码器;损失 = 对比 CON + 匹配 MAC + MLM)(20 L25-47); S3 接 LLM(QFormer/BLIP 式)做 next-token prediction;后训练把视频切成最多 6 个子视频+1 个全局,8 帧→16 帧两轮;LLM 用 LoRA 微调(20 L61-65)。

  • 数据(21):402M 条目总数据集(18 L11);KMash 2M 无标注视频(S1);S2 用 LAION 300M 图、WebVid10M 9.7M、InternVid 40M、InternVid2 50M;InternVid2 总库 1 亿视频带 VAS(video-audio-speech)caption(21 L87);AutoShot 按语义切镜头(比 FFmpeg SceneDet 好,zero-shot t2v R@1 +7 点,见 22 号 Table 3.19 段);VidCap 系统:视频/音频/语音三个 captioner + Vicuna-1.5 融合;S3 MVBench 1.9M 指令数据。
  • 训练量(22 L7):S1 256×A100×18 天;S2 256×A100×14 天;S3 64×A100×3 天。
  • 结果:K400 92.1/K600 91.9/K700 85.9(16 帧 224,胜过用 576 分辨率的 CoCa-g);MiT 51.2 超 CoCa-g 2.2;zero-shot K400 72.7 但输 VideoPrism 76.4(后者训练集含 3.11 亿文本视频+3610 万人工标注,语料分布近 Kinetics);6B 在 Kinetics/UCF/HMDB 上略低于 1B——stage2 更大数据导致 stage1 知识遗忘(22 号 Table 3.6 上方段);视频检索六个 benchmark 全胜(除 MSR-VTT v2t 输 VideoPrism);MVBench 67.5/EgoSchema 60.2(输 GPT-4/Gemini,长上下文弱);Table 3.16:1B→6B zero-shot 动作识别 +1.4、检索 +1.9,微调仅 +0.4。
  • 消融:数据规模要随模型规模配(K710 0.66M 配 ViT-L,K-Mash1.1M 配 1B,K-Mash2M 配 6B);多模态教师(CLIP 类)+运动教师(MAE 类)组合最好;加音频编码器有用,加语音编码器反而有害(22 Table 3.18 段);融合 caption 把 MSR-VTT zero-shot t2v R@1 从 24.7 提到 27.1;QFormer 注入问题反而过拟合。
  • 局限(23 L7):没有新架构,是 scaling + 数据精修;固定分辨率/采样率/高压缩 token 限制细节;不保证一致的隐式世界模型(23 L11)。偏差分析:caption 里成人 87%、男性 62%、亚裔 56%(23 L15-19)——合成 caption 未必代表视频真实内容。

Ch4 Emu2 (25 号;BAAI 智源+清华+北大)

主张:大规模生成式多模态预训练模型可以获得 in-context learning(上下文学习)能力——看几个例子就会做新任务。37B 参数(25 L53)。

  • 架构(L95-101):Visual Encoder(EVA-02-CLIP-E-plus)+ Multimodal Modeling(LLaMA-33B)+ Visual Decoder(SDXL)。比 Emu 简化:图像切 8×8 块、平均、线性投影,不用 C-Former。统一目标:predict-the-next-multimodal-element(下一个元素可以是视觉嵌入或文本 token)(L65)。
  • 预训练(L111-115):每张图编码成固定 N=64 个视觉嵌入,与文本 token 交错成序列;阶段一 caption 损失只管文本 token,224×224,1.62 亿图文对+700 万视频对,35200 步;再 448 分辨率 4000 步;阶段二冻结视觉编码器,加交错数据/grounding 数据/纯文本(Pile),文本分类损失+图像回归损失,160M 图文样本+38 亿纯文本 token,20350 步。
  • 视觉解码器(L119-125):SDXL-base 当「去分词器(detokenizer)」独立训练成自编码器(从嵌入直接重建图,不需要语言模型参与);视频解码器用 Stable Diffusion 2.1 加时间层;输入 448 输出 1024;classifier-free guidance 10% 丢弃;自编码重建 CLIP-I 0.907(L951)。
  • 指令微调:Emu2-Chat([USER]/[ASSISTANT] 特殊 token,只监督 Answer 部分,2048 序列,图像改 16×16 token);Emu2-Gen(可控生成:文本+位置+参考图;物体坐标画在黑图上当视觉提示;回归损失只作用于最终图像嵌入;冻结视觉编码器防崩塌;50 万高质量对收尾)。
  • 结果:few-shot 16-shot VQAv2 68.8、VizWiz 57.0、TextVQA 50.3,胜 Flamingo-80B/IDEFICS-80B(37B vs 80B)(L181);Emu2-Chat VQAv2 84.9/OKVQA 64.8/GQA 65.1;视频 QA(MSVD 49.0)没专门训过视频 QA 也赢 InstructBLIP;RefCOCO 系列 grounding 通用模型里最好;zero-shot T2I CLIP-I 0.686/CLIP-T 0.297(不如 SDXL 0.310 的 CLIP-T? 实际文中说 outperform 各种模型,注意 CLIP-T 0.297 vs DALL-E3 0.320 — 表里并没有全胜,写时注意);DreamBench 单图主体驱动 DINO 0.766 最好。
  • 关键走查素材:训练样本格式 L169:「A photo of

    a man

    定位图嵌入[IMG]男人的图嵌入[/IMG] sitting next to

    a dog

    …[IMG]整图嵌入[/IMG]
    」。
  • L59:五位一作并列。

Ch5 CoOp / Context Optimization(26 号单文件,正文 L1-557,L559 起是参考文献)

作者:Kaiyang Zhou(港浸会,通讯)+ Jingkang Yang / Chen Change Loy / Ziwei Liu(NTU S-Lab)。本书主编自己的论文,是第 5-9 章那条「怎么把 CLIP 用起来」主线的起点。

  • 痛点走查(26 L41,最好的走查素材,书里给了真数字):Caltech101 上 prompt 里加一个「a」,准确率涨 5% 以上;DTD(纹理数据集)把上下文换成「texture」还能再涨。改一个冠词值 5 个点 —— 这是「人工调 prompt 不靠谱」最硬的证据。
  • 方法(26 L109-133):把「a photo of a」这几个上下文词换成 M 个可学向量 [V]_1…[V]_M(维度与词嵌入同,CLIP 是 512),类名照旧拼在后面;只训这些向量,CLIP 全部参数冻结;损失是普通交叉熵,梯度穿过文本编码器一路回传到这些向量上。两个变体:unified context(全类共享一套)与 class-specific context(CSC,每类一套,细粒度任务更好用)。
  • CLIP 背景(26 L85,可当术语解释素材):文本走 BPE 分词,词表 49152,句子前后加 [SOS]/[EOS],定长 77 token,嵌入 512 维,取 [EOS] 位置的特征做层归一化 + 线性投影。零样本推理公式 L99:p(y=i|x)=softmax(cos(w_i,f)/τ)。
  • 关键数(L249-275):16 shot 时平均比手工 prompt 高约 15%,EuroSAT 高 45%+、DTD 高 20%+;ImageNet 只 +4.77%;OxfordPets/Food101 几乎没涨(L249 明说 Food101 训练数据有噪声、颜色过艳、偶有标错,且多加数据反而下降=过拟合)。三种 prompt 方式对比表 L263-275:prompt engineering 58.18 / prompt ensembling 60.41 / CoOp 62.95。
  • 域泛化(L285-347):CoOp 学的 prompt 迁到 ImageNet-V2/-Sketch/-A/-R 反而比零样本 CLIP 好;linear probe 崩得很惨(-Sketch 19.07、-A 12.74,零样本 CLIP 是 33.32 / 21.65)。上下文越短越稳:M=4 全面优于 M=16。
  • 反直觉的坦白(L351):源域上 token 越多越好(4→8→16 是 72.65/73.20/73.42),但域泛化上越少越好 —— 书里明说「没有确定的规则」。
  • 初始化无所谓(L371):随机 vs 用「a photo of a」初始化,差 <0.01%。
  • 最诚实的一段(L375):学出来的向量没法解释。 在词表里找最近词,ImageNet 上是「potd/that/filmed/fruit/,.../∘」这种乱码,Food101 上「enjoyed」、DTD 上「pretty」、OxfordPets 上「fluffy/paw/snuggle」勉强沾边,但连起来不成句。作者只敢说「可能编码了词表之外的含义」,不下结论。→ 这是「可解释性」那条线的好素材,也是红线三里「书里说不知道就照实写」的实例。
  • 埋的伏笔:L551「Further Reading」自己指了 CoCoOp(条件 prompt,[54]),说的是 vanilla prompt learning 的泛化问题 —— 这正是 Ch6 TPT 要接的问题。

Ch6 TPT / Test-Time Prompt Tuning(27-35 号;UMD + Nvidia + Caltech + UW-Madison,Manli Shu 通讯)

这一章是 Ch5 的反驳:CoOp 用下游训练数据学 prompt,一旦换域就失灵;TPT 主张 拿一张测试图片当场学 prompt,不用任何训练数据和标注。

  • 核心机制(31 L43-53):给一张测试图 → 随机增广出 N 个视图 → 要求模型对这些视图的预测一致 → 最小化「平均预测分布的熵」(marginal entropy)→ 只更新 prompt 那 4 个 token,模型本体一动不动。
  • 置信度筛选(confidence selection,31 L53)是全章的关键设计:随机裁剪可能把关键内容裁掉,那种视图的预测是噪声。做法是按自熵从低到高排,只取前 ρ 比例(实现取 top-10%)进平均。
  • 实现走查素材(32 L23,真数字):把 1 张测试图增广 63 次 + 原图 = 一批 64 张;64 个预测里选最自信的 top 10%(=6 个多);算这几个的平均分布的熵;只走 1 步 AdamW,学习率 0.005;prompt 初值就是「a photo of a」那 4 个 token。
  • 效率-精度取舍(35 L13):N=64 是拐点,N=8 也还有 +2%;优化步数 1→2 只多 0.4%,再多没用 —— 所以默认 1 步,已经比零样本 CLIP 平均高 3% 以上。
  • 关键结果(32 L27 表 6.1,CLIP-ViT-B/16 一列):零样本 66.73 / 80 模板 ensemble 68.34 / CoOp 71.51 / CoCoOp 71.02 / TPT 68.98。看 ImageNet 单列 TPT 输,但看 ImageNet-A:零样本 47.87、CoOp 49.71、TPT 54.77;OOD 平均 TPT 60.81 最高。TPT 与 CoOp 可叠加:TPT+CoOp OOD 平均 62.83。
  • 跨数据集(32 L293 + 图 6.2):CoOp 在 DTD 上学的 prompt 拿到 Flower102 上只有 33.41%,而零样本 CLIP 是 61.75%,相对掉 46%。图 6.2 里少样本方法的平均改进「永远是负的」;TPT 在 10 个数据集上全为正。→ 这是全书最有冲击力的一个反例数字。
  • 第二个任务 Bongard-HOI(31 L25、32 L565):给两组支持图(一组有「骑车」这个人-物交互概念、一组没有),问查询图有没有。TPT 在这里同时学 prompt 前缀和两个二元「类名」token,在支持图上用交叉熵训 64 步,再推理查询图。结果 66.59 平均,胜过此前最好的 HOITrans 62.46、Meta-baseline 58.30,而 CNN-baseline 只有 49.92(≈瞎猜)。
  • 消融(33 L7-11):在整模型/文本编码器/视觉编码器/prompt 四组参数里,prompt 最有效,调视觉编码器最差 —— 与「微调图像编码器会扭曲预训练特征」一致。置信度筛选带来 OOD 平均 +1.61(33 L75-89)。
  • 局限自陈(34 L5):测试时优化拖慢推理速度,如何加速是待解问题。指了 test-time compute scaling(Snell 等)与 test-time training 提升推理能力(Akyürek 等)—— 这两条是 2024 年之后的线,书出版时刚起头

Ch7 CLIP-Adapter / Tip-Adapter(37 号单文件,正文 L1-645)

作者:张仁瑞(港中大)+ 高鹏(上海 AI 实验室)。第三条适配路线:不动 prompt,改在特征后面接小模块。

  • CLIP-Adapter(37 L187-197):在冻结的视觉编码器后面接一个两层 MLP(瓶颈结构),输出 f_a;最终 logits = α·f_a·W_c^T + f_c·W_c^T —— 残差混合:α 调「新学的」与「原来零样本的」各占多少。α 大表示预训练与下游域差得远。
  • Tip-Adapter(37 L211-233,训练自由):把 N 类 × K 张少样本图过一遍视觉编码器,特征当 key、one-hot 标签当 value,建一张缓存表;推理时测试特征当 query 算余弦相似度,A=exp(−β(1−f_test·F_train^T)),再用 A 加权 value;最后同样残差加上 CLIP 原来的 logits。整个过程只有两次矩阵乘法,零训练。
  • Tip-Adapter-F(37 L237-241):把缓存里的 key 解冻当可学参数,value(one-hot)保持不动;只要 20 轮就到 SOTA。
  • 三者关系(37 L247-265):CLIP-Adapter 是 Tip-Adapter 的一个特例 —— 令 W1=F_train、W2=L_train^T·W_c^{-1}、b=0、φ(x)=exp(−β(1−x)) 即可。三点差别:①key/value 初始化(随机 vs 直接由数据构造);②瓶颈维度(Tip 是 NK,能吃下全部少样本信息;CLIP-Adapter 故意压低防过拟合);③激活函数(Tip 的天然落在 [0,1],CLIP-Adapter 用 ReLU)。
  • 效率表(37 L43-155)是全书最好的一张成本对照表(16-shot ImageNet,单张 RTX 3090,batch 32): 零样本 CLIP 60.33 / 0 训练 / 推理 10.22ms / 2227MiB; linear probe 56.13(比零样本还低 4.20) / 13 分钟; CoOp 62.95 / 200 轮 / 14 小时 40 分 / 推理 299.64ms / 7193MiB; CLIP-Adapter 63.59 / 200 轮 / 50 分钟 / 10.59ms / 2227MiB; Tip-Adapter 62.03 / 0 轮 0 分钟 / 10.42ms / 2227MiB; Tip-Adapter-F 65.51 / 20 轮 / 5 分钟 / 10.53ms / 2227MiB。 → CoOp 推理慢 29 倍、显存多 3 倍,是因为可学 prompt 每次都要走一遍文本编码器;适配器路线可以把文本特征预先算好缓存起来。(37 L387)
  • 少样本曲线(37 L299-383):1-shot 时 linear probe 只有 22.17,CoOp 57.15,Tip-Adapter 60.70(不训练就赢);16-shot 时 Tip-Adapter-F 65.51。Tip-F 对 Tip 的增益随样本数增大:+0.62(1-shot)→ +3.48(16-shot)。
  • 插入位置消融(37 L475-547):ViT-B/16 上,插在第 12 层(末尾)70.88、第 10 层 71.85 最好、插在所有层反而最差 67.67(参数 5.20M vs 0.52M,过拟合)。
  • 分布漂移(37 L557-629):Tip-Adapter 不训练反而更稳 —— ImageNet-Sketch 上 35.90,超过 CoOp 的 31.04 和零样本的 35.44;linear probe 又崩到 19.13
  • 结论(37 L633)+ 延伸阅读指向 3D 点云适配器、LLaMA-Adapter(把适配器思路搬进 LLM,[63])。

Ch8 NOAH / Neural Prompt Search(38 号单文件,正文 L1-635)

作者:张远瀚 + Kaiyang Zhou + Ziwei Liu(NTU S-Lab + 港浸会)。这一章是对第 5-7 章的元层反思:三条路线谁都不是全场最优,那就让机器自己搜。

  • 起点观察(38 L41,全章的立论):在 VTAB-1k(19 个视觉数据集)上,没有任何一种方法在所有数据集上都好。VPT 在 SmallNORB/azimuth 上强,但在 SmallNORB/elevation、Clevr/count 上不如 Adapter 和 LoRA。而且对超参(Adapter 的维度、VPT 的 token 长度)极其敏感。
  • 三种参数高效微调法的位置差别(38 L37、L127,这是全书讲清 PEFT 三件套的最好一段): Adapter —— 接在 Transformer 块 MLP 的归一化输出之后,瓶颈型两层(降到 r 维再升回来); LoRA —— 挂在 Q、K 两个投影矩阵旁边当残差,用低秩分解 ΔW = W_down·W_up; VPT —— 在输入端塞 m 个可学 token,相当于往图里加了几个人造「像素」,与 [CLS] 和图块嵌入拼一起。
  • 搜索空间(38 L129):每个模块两个可调项 —— 嵌入维度 ∈{1,5,10,50,100},深度 ∈{3,6,9,12}(深度=装在前几层)。深度是「前 k 层」而不是任选 k 层。
  • 超网训练(38 L133-139):从 ViT-B/16 出发,12 层每层装满三个模块、维度都取最大 100;每次前向按「注意力采样」抽 5 个子网,外加最大和最小子网;权重纠缠(weight entanglement):训 100 个 token 时复用已经训过的 50 个 token 的权重。与 AutoFormer 的两点不同:模块级采样而非块级采样(可以让某个模块只留在浅层);只训 prompt 模块权重,主干全冻
  • 搜索(38 L159):进化搜索 —— 交叉(两个候选在相同层交换模块设计)+ 变异(以概率 P_m 随机改深度或维度),每轮只留 top-k。
  • 结果:VTAB-1k 上比最强的单一模块(LoRA)平均高约 1%,19 个里 10 个明显更好;Specialized 组反而略输(NOAH 84.9 vs LoRA 84.6,EuroSAT 上落后),作者归因于这类数据离预训练域(ImageNet-21K)远、超网训练不稳(38 L189)。
  • 域泛化是最大亮点(38 L217-279):ImageNet 16-shot 训练,四个漂移集上 NOAH 分别高出 6.8 / 4.8 / 5.0 / 5.2 个点。绝对值:ImageNet-A 上 Adapter 5.5、VPT 4.6、LoRA 6.9、NOAH 11.9(注意这一组的绝对分远低于 Ch6 的 CLIP 数,因为这里的主干是 ImageNet-21K 预训练的 ViT,不是 CLIP)。
  • 搜出来的结构长什么样(38 L379,这是全章最有价值的发现):Adapter 和 LoRA 集中在深层、维度 >4;VPT 几乎每层都有,但维度在不同组差别很大 —— Natural 组集中在浅层,Structured 组集中在深层。作者的解释:网络从浅层的像素级特征走到深层的语义特征,不同模块擅长的抽象层级不同;三者在深层共存就是互补性的证据。
  • 子网可迁移(38 L385):从 ImageNet 搜出的子网拿到 VTAB-1k 上重训,与各数据集自己搜的差距 <3%;Natural 组差 <1%,越像差越小。
  • 成本表(38 L391-533,GPU 小时/数据集):Adapter 1.2、LoRA 1.2、VPT 网格搜 7.2;NOAH = 超网 3.1 + 搜索 2.0 + 重训 1.2 = 6.3。参数量 NOAH 0.5M,而同等预算下网格搜出的 Adapter* 1.5M、LoRA* 3.0M,准确率还低 0.5%。
  • 进化 vs 随机搜索(38 L537):89.9 vs 88.7,进化高 1.2 点。
  • 重训可以省(38 L569):不重训的「继承」子网 75.1,重训 75.5,差 0.4 —— 资源紧就别重训。
  • 自陈局限(38 L635):超网训练本身是额外开销;少样本时优势不明显(1-2 shot 时 NOAH/LoRA/Adapter 打平,VPT 明显差;到 16 shot 才拉开约 2%)。

Ch9 DAC / 置信度校准(39 号单文件,正文 L1-1093)

作者:王硕远 + Kaiyang Zhou + 魏泓歆(南科大统计与数据科学系 + 港浸会)。这一章是对第 5-8 章整条路线的「安全性拷问」:调完之后,模型说的「我有 90% 把握」还算数吗?

  • 立论(39 L37、L87,反直觉,是全章的钩子):预训练 CLIP 零样本时校准得很好;一旦 prompt 微调,就出现「对基类反而不够自信、对新类过度自信」 —— 与人的直觉正好相反(直觉会以为学过的更自信、没学过的更保守)。
  • 校准是什么(39 L73-79):完美校准 = 模型说 q 的把握时,正确率就真是 q。度量用 ECE(期望校准误差):把样本按置信度分箱,算每箱「准确率与置信度之差」的加权平均。
  • 现成办法全失效(39 L93-147,表 9.1,ProDA + ViT-B/16 + ImageNet-1k):基类上温度缩放 TS 把 ECE 从 4.82 降到 1.94、DEN 降到 0.73;但新类上 TS 3.90、DEN 3.86,比不校准的 1.59 和零样本的 2.09 还差。分箱类方法(直方图分箱、保序回归)需要基类的概率输入,对零样本预测根本用不了
  • 病因(39 L155-185):把图像和文本嵌入用 SVD 投到 2D 看 —— 零样本 CLIP 里同模态内部聚得挺紧;prompt 微调后,基类文本与新类文本之间裂开一条明显的分布缝。定义「邻近度 proximity」= 对新类文本嵌入,取它在基类文本嵌入里最近的 K 个邻居,算平均 L2 距离再取 exp(−·)。邻近度越低 → 置信度越高 → 校准越差,而温度缩放不但治不了,有时还更糟。
  • 方法 DAC(39 L195-207):文本偏离分数 γ(c_i) = P(调后的新类嵌入, 调后的基类集) ÷ P(预训练的新类嵌入, 预训练的基类集)。推理时 logit = γ(预测类) · τ · sim(·),即按类给温度打折:离基类越远,温度调得越高、置信度压得越低。基类一律取 γ=1,所以基类的校准表现一个字都不改
  • 两个卖点(39 L207):只用文本标签算得出来,不需要新概念的图像(现实里往往拿不到);与算法无关,能挂在任何 prompt 微调方法后面。
  • 关键数(39 表 9.2/9.3):11 个数据集新类上平均 ECE,CoOp 从 13.84 → 7.00(降 6.84,DTD 上从 26.86 → 10.48、FGVC 从 28.44 → 17.38);CoCoOp 6.29 → 4.82;PromptSRC 已经是最好的方法,3.92 → 3.69(越好的方法可捡的越少)。
  • 效果集中在高置信区(39 L781):DTD 上 CoOp 在 0.9 置信箱的差距从 41.60 降到 11.37,一箱就改善 30.23
  • 效率(39 L1003 表 9.5,ImageNet-1k):DAC 推理 0.13 秒,而基于图像邻近度的 DEN 要 15.88 秒(慢 120 倍);新类 ECE:不校准 10.69、DAC 5.67、DEN 8.08、DAC+DEN 3.29(可叠加)。→ 「文本邻近度比视觉邻近度更管用,而且几乎不要钱」是本章的可带走结论。
  • 稳健性(39 L1045):最近邻个数 K 从 1 到 10,K=1 就已经有明显改善,默认取 5。特征必须归一化(39 L1061),否则特征范数会让 KNN 距离估歪。
  • 局限:整章只做后处理,不改训练;作者延伸阅读里指了「在微调阶段就缓解校准问题」的工作([43])。

(以下 Ch10-Ch12 是「把 CLIP 从分类挪到别的视觉任务上」这条线;Ch13-Ch17 是生成线。)

Ch10 OV-DETR / 开放词表目标检测(40 号单文件,正文 L1-538)

作者:臧宇航(上海 AI 实验室,通讯)+ 李伟 / Chen Change Loy(NTU S-Lab)+ Kaiyang Zhou + 黄晨(Apple)。

  • 问题(40 L47-55):传统检测器只认训练时定死的那几类 —— COCO 训出来的只认 80 类。现有的开放词表检测器几乎都靠**候选框网络(RPN)**先框出「可能是物体的区域」再分类;而 RPN 是在闭集类上训的二分类器,对没见过的类几乎不给响应(图 10.1a 里两只猫几乎一个框都没有)。
  • DETR 是什么、为什么卡住(40 L89-113):DETR 用 N 个可学的「物体查询」直接一口气吐 N 个预测框,再用匈牙利算法做一对一二分图匹配把预测和真值配起来,匹配代价 = 分类损失 + 框回归损失。卡点很硬:新类没有标签,分类代价算不出来,匹配就做不了。
  • 破法(40 L119-145,全章的关键一招):把「分成哪一类」换成「配不配得上」—— 二元匹配。每个真值框用 CLIP 抽两种嵌入:图像嵌入(把框裁出来过 CLIP 图像编码器)和文本嵌入(类名过文本编码器);训练时按概率 ξ 随机挑一种当条件输入,投影后加到物体查询上,得到「带条件的查询」;匹配损失变成二元交叉熵(matched / not matched)。新类没有类名可用,就只用图像嵌入当条件。
  • 一图多物的处理(40 L137):把查询复制 R 份、条件复制 N 份,一次前向产生 N×R 个查询,用注意力掩码保证各份互不干扰。
  • 额外的嵌入重建头(40 L149):要求模型能把条件嵌入重建回来(L1 损失),逼它给不同概念学出可区分的表示。总损失 = BCE 3.0 + L1 5.0 + GIoU 2.0 + 嵌入重建 1.0。
  • 结果(40 L189-373):OV-LVIS(886 基类 / 317 新类)新类 mask mAP 17.4,ViLD 16.1、ViLD 集成 16.6;总 mAP 26.6 vs ViLD 22.5(+4.1)。关键差别:ViLD 提新类是以牺牲基类为代价的(ViLD-text 基类 61.8 → ViLD 59.5),OV-DETR 不牺牲。 OV-COCO 新类 box AP50 29.4 vs OVR-CNN 22.8、ViLD 27.6。
  • 跨数据集迁移只要换文本嵌入(40 L377):在 LVIS 上训,换成 VOC/COCO 的类名文本嵌入直接测,全面胜过 ViLD。
  • 定性(40 L455-469):能用示例图当条件检测(哪怕示例图和目标图长得很不一样,比如「crape」「fork」);能在动漫角色这种完全没见过的域上工作。
  • 失败案例书里照实写了(40 L473-477):小目标和被遮挡的目标用图像查询检不到(换成文本查询能缓解);给一个不相干的、分布外的文本查询(比如「philosophy」)会硬吐出假阳性框。
  • 代价也照实写了(40 L481-525,这是全章最该讲的局限):条件设计要对每个类过一遍解码器。原始版在 COCO(80 类)上比 Deformable DETR 慢 2 倍(0.31→0.72 秒/次),在 LVIS(1203 类)上慢 16 倍(1.49→23.84 秒);并行化后 COCO 降 12.5%、LVIS 降 59.9%(到 9.57 秒),仍然慢 6 倍以上。作者的辩解:实际人机交互场景里用户心里只有少数几个目标物,条件数少,时间可忽略。

Ch11 MaskCLIP / 零样本稠密分割(41 号单文件,正文 L1-681)

作者:周翀(NTU S-Lab,通讯)+ Chen Change Loy + 戴勃。本章特别值钱的地方:它把失败的尝试也写了出来。

  • 先讲失败(41 L77-91,红线里「书里说不知道就照实写」的正面样板):按常规做法 —— 拿 CLIP 图像编码器的权重初始化 DeepLab、再加一个映射器把 CLIP 文本嵌入映成 DeepLab 分类器的 1×1 卷积权重、然后一起微调。结果:见过的类没问题,没见过的类全废。 作者给了三条归因:①主干结构与图像编码器不完全一样;②微调把初始化权重改掉了;③映射器只在见过的类上训过,泛化不了。一句话:微调破坏了 CLIP 原有的图文关联。
  • 成功的一招(41 L95-109,极其简洁,是全章的走查核心):CLIP 的 ResNet 图像编码器最后是一个「全局注意力池化」层 —— 全图平均特征当 query,每个空间位置出一对 key/value,输出 = 各位置 value 的加权和再过一个线性层。作者的观察:ℱ(v_i) 这个「每个位置各自的 value 过线性层」本身就已经是那个位置的语义响应了。 所以 MaskCLIP 的改动只有两步:①删掉 query 和 key 的嵌入层;②把 value 嵌入层和最后那个线性层改写成两个 1×1 卷积。文本编码器一个字不改,每个类的文本嵌入直接当分类器权重。
  • 为什么不能偷懒直接用自注意力出稠密特征(41 L109):因为预训练里只训过 q̄ 这一个 query。ViT 版只差两点:全局 query 来自 [CLS] token 而不是平均;多一个残差连接 —— 换掉就能用。
  • 两个免训练的精修(41 L115-121):key smoothing —— key 特征是这个图块的描述符,key 相似的图块预测应该相似,于是按 key 的余弦相似度把预测互相平滑一遍;prompt denoising —— 一张图里只会出现少数几个类,把「在所有位置的置信度都低于 0.5」的类整个丢掉,减少干扰项。
  • MaskCLIP+(41 L123-137):MaskCLIP 受制于 CLIP 的架构,那就拿它的输出当伪标签去训一个正经的分割网络(DeepLabv2/v3+),并把目标网络的分类器换成 MaskCLIP 的分类器以保住开放词表能力。训到约标准训练轮次的 1/10 就到顶,之后换成让目标网络给自己产伪标签(自训练)。作者特别说明:选伪标签而不是特征蒸馏,因为目标网络结构和 CLIP 图像编码器差太多;而且用伪标签观察不到基类掉点
  • 无标注分割结果(41 L163-255,mIoU):PASCAL Context / COCO Stuff。基线(不改动直接取稠密特征)r50 只有 8.3 / 4.6;MaskCLIP r50 18.5 / 10.2;+KS+PD 21.8 / 12.8;ViT-B/16 版 21.7 → +KS+PD 25.5 / 14.6;MaskCLIP+ (ViT-B/16) 31.1 / 18.0。→ 「删掉 q 和 k」这一个动作把 8.3 变成 18.5,翻了一倍多,是全章最有冲击力的数。
  • 抗损伤(41 L259-361、L371):在 PASCAL Context 上加 ImageNet-C 的各种损伤。ViT 版比 ResNet 版稳得多:高斯噪声 level 5 时 r50 从 18.5 掉到 2.1(基本全废),vit16 从 21.7 掉到 6.8;JPEG 压缩 level 5 时 r50 7.6、vit16 14.5。
  • 零样本分割(41 L385、L601-631):transductive 设定(未标注像素训练时能看到但没标签)。新类 mIoU 比此前 SOTA 高 50.5 / 24.4 / 46.0(VOC / Context / COCO Stuff)。总 mIoU 已经与全监督基线相当(VOC 全监督 88.2,MaskCLIP+ 88.1)。
  • 消融(41 L637,最能说明问题的一张表,PASCAL VOC 零样本): 改造过的 DeepLabv2(只换分类器)—— 见过类 83.4,没见过类 3.7;
    • MaskCLIP 引导 —— 见过类 89.5,没见过类 72.8;
    • 自训练 —— 见过类 88.8(略降 0.7,作者归因于模型漂移),没见过类 86.1
  • 局限自陈:自训练会让基类轻微掉点;MaskCLIP 本体受 CLIP 架构限制(ResNet 下采样 32 倍,对稠密预测不利,所以 ViT-B/16 的 16 倍下采样几乎全面更好,41 L159)。

Ch12 PointCLIP / PointCLIP V2(42 号单文件,正文 L1-702)

作者:朱向阳 + 张仁瑞(通讯)+ 高鹏(上海 AI 实验室 + 港中大)。主张:CLIP 一张 3D 数据都没见过,却能认 3D 点云 —— 只要把点云画成 2D 深度图。

  • 问题(42 L35):3D 数据集小、类别少,训不出强的预训练 3D 网络;而点云稀疏、无序,2D 那套方法搬不过来。
  • V1 的做法(42 L79-89):在线透视投影 —— 点 (x,y,z) 投到底视图就是 (⌈x/z⌉,⌈y/z⌉),像素值直接取 z 并复制三份当 RGB。不渲染、不建网格、不上色,几乎零开销。M 个视角各自过 CLIP 图像编码器、各自与文本分类器比一次,最后按每个视角的权重 α_i 加权求和。文本模板改成「point cloud depth map of a [CLASS].」。
  • V1 的视角间适配器(42 L93-95):把 M 个视角的特征沿通道拼起来,过三层 MLP 的前两层压成一个全局特征,再残差加回各视角特征;只训这个适配器,CLIP 两个编码器全冻。ModelNet40 上 16-shot 把准确率从 20.18% 拉到 87.20% —— 这是全章最大的一个跳。
  • V2 改进一:真实感投影四步(42 L105-121,最适合做走查): ① 量化:建 H×W×D 的 3D 网格,坐标归一到 [0,1],多个点落进同一格时取最小深度值(近的挡远的); ② 加密:局部最小池化 —— 每个体素取邻域窗口内的最小值,把稀疏点之间的空格填上;之所以用最小而不是最大/平均,同样是为了符合遮挡; ③ 平滑:非参数高斯核滤波,去掉加密带来的伪影,同时保住棱角; ④ 压扁:沿深度维取最小值得到 H×W 的深度图,复制三份当 RGB。
  • V2 改进二:用 GPT-3 生成 3D 专用文本(42 L127-145),四类指令 —— 生成图注、问答、同义改写、给关键词造句。例:输入「Describe a depth map of a [window]」,GPT-3 答「It portrays the [window] as a dark pane.」把 K 个类各自的描述合起来喂 CLIP 文本编码器,取代通用的「a photo of a [CLASS]」。
  • 零样本分类结果(42 L183-261):ModelNet10 / ModelNet40 / ScanObjectNN(PB_T50_RS): PointCLIP 30.23 / 23.78 / 15.38;CLIP2Point(要 3D 预训练)66.63 / 49.38 / 23.32;PointCLIP V2 73.13 / 64.22 / 35.36,而且一次 3D 训练都没做过
  • 两个消融(这是「哪一步真的在起作用」的最好证据): 投影四步(42 L265-330):不量化直接正交投影 57.35;量化后不加密只平滑 50.20;加密带来 +15.14、平滑带来 +5.7;池化方式对比 —— 最大 57.35、平均 60.71、最小 64.22,与遮挡的物理直觉一致。 GPT 提示(42 L360-425):一条命令都不用只有 39.11,只用图注 61.67,四类全用 64.22 —— 单靠改文本就 +25.11
  • 少样本(42 L429-440):ModelNet40 上 V1/V2 的 16-shot 都超过 87.60%,逼近全监督;一样本时优势最明显,胜过 PointNet / PointNet++ / SimpleView / CurveNet。
  • 零样本部件分割(42 L441-520):ShapeNetPart(16 类 50 个部件)。做法是取 CLIP 视觉编码器池化之前的稠密特征图、上采样到深度图尺寸,与部件文本特征逐像素对齐,再按 2D-3D 映射反投影回 3D,多视角取平均(因为遮挡使一个视角只看得到一部分)。结果:PointCLIP mIoU_I 31.0 → V2 49.5
  • 零样本 3D 检测(42 L553-575):用预训练的 3DETR-m 当 3D 候选框网络,框内取 1024 个点走上面那套分类流程。ScanNet V2 上 AP50:PointCLIP 4.76 → V2 11.53(绝对值仍然很低,这是这条路线的真实上限,书里没有粉饰)。
  • 结论与未来(42 L687):作者自己说下一步是户外 3D 检测和视觉定位,以及「3D 大模型」。

(Ch13-Ch17 是生成线:扩散模型怎么被多条件控制、怎么白捡质量、怎么长出 3D 和运动。)

Ch13 Collaborative Diffusion / 协作扩散(43 号单文件,正文 L1-422)

作者:黄子琪 + Kelvin C. K. Chan + 姜雨鸣 + Ziwei Liu(NTU S-Lab)。

  • 问题(43 L37-41):扩散模型可以被文字控制,也可以被分割掩码控制,但一次只能被一种控。想同时「用文字说年龄、用画笔画发型」就得从头训一个吃这两种条件的模型 —— 贵,而且换一组条件就得重训
  • 核心洞察(43 L43):不同模态在去噪的不同步骤、不同空间位置上是互补的(文字管年龄,掩码管发型轮廓),所以可以在两个已经训好的单模态模型之间架横向连接,不动它们的权重。
  • 扩散模型基础(43 L53-71,书里这一段写得完整,可以直接当术语解释的底稿):前向过程按方差表 β_1..β_T 一步步往图里加高斯噪声,直到变成纯噪声;反向过程学一串高斯转移把它denoise回来;训练目标退化成「预测这一步加的噪声 ε」的均方误差。
  • 方法(43 L87-101):动态扩散器(dynamic diffuser) D_φm 是一个小 UNet,吃当前噪声图 x_t、时间步 t、这一路的条件 c_m,吐一张 h×w 的影响力图 I_m,t;把 M 路的影响力图在每个像素上做 softmax 归一化;最终这一步的噪声预测 ε = Σ_m Î_m,t ⊙ ε_θm(x_t,t,c_m) —— 逐像素加权求和
  • 与 Composable Diffusion 的区别(43 L107):后者只能组合同一个模型的多个实例(权重相同);协作扩散能组合权重、架构、模态都不同的模型。
  • 编辑也能用(43 L113、L233-247):先按 Imagic 的三步(优化条件嵌入 → 微调模型 → 在目标条件和优化条件之间插值)分别做文本编辑和掩码编辑,再用同一批已经训好的动态扩散器把两个编辑合起来 —— 扩到编辑不需要再训动态扩散器
  • 规模对比(43 L207-227,很有说服力的一个数):单模态扩散模型 403.6M 参数,动态扩散器只有 13.1M,小 30 倍。
  • 数据(43 L253):CelebA-HQ 三万张,掩码来自 CelebAMask-HQ(19 类脸部部件),文本来自 CelebA-Dialog(刘海/眼镜/胡子/微笑/年龄五个属性的细粒度描述)。作者做了一件老实事:把「刘海、眼镜、微笑」这三个描述从文本里删掉了,因为掩码已经在管它们,留着会打架。
  • 结果(43 L299-331):FID↓ / 文本一致性↑ / 掩码一致性↑ —— TediGAN 157.81 / 24.27 / 72.19;Composable 124.62 / 23.94 / 76.11;本方法 111.36 / 24.51 / 80.25。25 人的用户研究里,生成任务 69.40%、编辑任务 84.37% 选它最好。
  • 影响力图长什么样(43 L339、L379,这是全章最漂亮的发现): 空间上 —— 掩码那一路的影响力集中在轮廓(头发、脸、眼睛的边界),文字那一路集中在皮肤区域(脸颊、下巴),因为年龄和胡子长度这类属性是皮肤纹理,文字描述得更好。 时间上 —— 掩码那一路在早期(t 大)更强,负责先把脸的布局摆出来;文字那一路在后期更强,负责把皱纹、胡子这些细节填进去。 消融证实两者都必要(43 L343-375):去掉空间变化 FID 从 111.36 涨到 117.81;去掉时间变化涨到 117.34,掩码一致性从 80.25 掉到 77.07。
  • 社会影响作者自己写了一节(43 L405-409):可能被用来恶意篡改真人脸;采样过程可能泄露训练数据;CelebA-HQ 是名人脸,与普通人的长相分布有偏

Ch14 FreeU / 白捡的质量提升(44 号单文件,正文 L1-326)

作者:司晨阳 + 黄子琪 + 姜雨鸣 + Ziwei Liu(NTU)。全书最「便宜」的一章:不训练、不加参数、不加显存、不加采样时间,只调两个数。

  • 出发点(44 L37):所有人都在拿预训练扩散 UNet 做下游应用,没人研究 UNet 内部到底在干什么
  • 发现一(44 L77-83):把去噪过程放到傅里叶域看 —— 低频分量变化很慢,高频分量变化剧烈。解释:低频承载全局结构和颜色,剧烈改动会把图的本质改掉;高频是边缘和纹理,而噪声本身就表现为随机高频,所以去噪要做的正是「削掉噪声高频、留住细节高频」。
  • 发现二(44 L89-103,全章立论):给 UNet 主干特征和跳连特征各乘一个缩放因子 b 和 s 做对照实验 —— 调大 b 图像质量明显变好,调 s 几乎没影响; 进一步看频谱:b 越大,生成图里的高频被压得越狠 —— 所以 UNet 主干干的活就是滤掉高频噪声;b=0.6 时图里一堆噪点,b=1.4 时很干净。 而跳连传过去的主要是高频信息。作者的推断:训练时这些高频让 UNet 更容易重建输入、更快收敛,但推理时它反而削弱了主干的去噪能力 —— 训练目标是重建,推理目标是从纯噪声里生成,两者要的不是一件事。
  • FreeU 的两个动作(44 L111-147): 主干因子:不是给所有样本一个固定倍数,而是结构感知缩放 —— 沿通道维求平均特征图(它天然带着结构信息),据此生成一张因子图 α_l 去放大主干特征。只放大一半通道(44 L119),因为全放大会把纹理磨平。 跳连因子:对跳连特征做 FFT,用一个傅里叶掩码把半径小于阈值(实验取 1)的低频分量乘上 s(<1)压下去,再 IFFT 回来 —— 专治主干放大带来的过平滑。
  • 结果(44 L165-239): 美学评分 MUSIQ-AVA / LAION-Aes:SD 1.4 5.231/5.365 → +FreeU 5.563/5.532;SD 2.1 5.432/5.503 → 5.686/5.612;SD-XL 5.675/5.538 → 5.994/5.776。 FID↓ / CLIP↑:SD-XL 43.82/0.31 → 40.79/0.33;LCM 62.03/0.30 → 50.88/0.32(少步蒸馏模型上提升最大)。 视频:ModelScope 4.115/4.469 → 4.338/4.602。
  • 能挂在哪(44 L157):Stable Diffusion / SD-XL、ModelScope、DreamBooth、ReVersion、Rerender、ScaleCrafter(配合能出 4096×4096)、AnimateDiff、ControlNet、LCM —— 只在推理时加,几行代码
  • 参数怎么选(44 L303-311):b 越大越好但过大(b=1.8)会过平滑,因为去噪太强会连细节高频一起削掉;s 越小背景细节越多。通道选择(44 L315):放大全部通道会过平滑,取一半就行,取前一半、后一半还是均匀取,差别很小
  • 结构感知 vs 常数因子(44 L295):用一个常数因子也能提质量,但会过平滑 + 颜色过饱和;用结构感知的因子图就没这问题。

Ch15 AvatarCLIP / 文本生成并驱动 3D 数字人(45-52 号;NTU S-Lab + 商汤,洪方舟等,Ziwei Liu 通讯)

  • 问题(47 L3-9):做一个数字人要设计形体、贴纹理、绑骨骼、录动捕,每一步都要专家和贵设备。而且根本没有高质量的「3D 人体-文本」配对数据集,所以监督式的文生 3D 人做不了。
  • 三条输入(49 L3):t_shape(形体)、t_app(外观)、t_motion(动作);输出一个可驱动的带色网格 + 一段姿态序列。
  • 三块预训练先验拼起来(49 L7-23):CLIP(判断「渲染图像不像这段文字」)、SMPL(参数化人体模型,β∈R^10 管体型、θ∈R^{24×3} 管关节旋转,顺带白送骨骼绑定)、NeuS(把有符号距离场 SDF 与神经辐射场 NeRF 结合的体渲染,几何和颜色都好)。
  • 粗形体(49 L37-47,「相对打分」这一招值得单讲):体型不是直接优化出来的,而是从码本里选。先训一个形体 VAE 把 SMPL 的 PCA 空间变得均匀,再 K-means 聚出码本。查询时的关键:光看一个人的渲染图判断不出「高」,得有参照。所以定一个中性体型 M_n 和中性文本 t_n 当锚,比较的是两个差向量的方向 —— Δf_I = 图像特征差、Δf_T = 文本特征差,让它们对齐。
  • 雕形体与生纹理(49 L51-89): 第一步把模板网格渲成多视角图,训一个 NeuS 当初始化; 第二步加第三个子网络:SDF 网络 f(p) 和原色网络 c(p) 负责继续重建模板(保住整体形状、保证还能绑骨骼),新加的色网络 c_c(p) 负责风格化,三者共享同一个 f(p)。总损失 = 重建 + CLIP 管纹理 + CLIP 管几何。 管几何那一路的巧思(49 L77-83):来自一个日常观察 —— 人看 3D 模型时会关掉贴图只看几何。所以他们从模型表面算法线,在相机方向附近随机取一个光照方向(极角/方位角各加一个 U(−π/4,π/4) 的扰动,免得光和相机在两侧),渲一张无纹理的灰度图交给 CLIP 打分。
  • 三个增强(49 L95-111):随机背景(纯黑/纯白/高斯噪声/模糊棋盘格,防止长出飘在空中的碎块,不然纹理会偏暗);随机相机(look-at 点从 N(0,0.1) 取并裁到 ±0.3,半径 U(1,2),方位角 N(0,π/3) 使大部分时间看正面);语义感知的提示词增强 —— t_app 是「Steve Jobs」时,额外造 t_face =「the face of Steve Jobs」和 t_back =「the back of Steve Jobs」,每四次迭代把相机对准脸部中心用 t_face 监督,因为人对脸最敏感。
  • 分辨率的现实约束(49 L91-93,这是很实在的一段工程细节):体渲染耗显存,32GB 卡上最大只能渲到约 110×110,而 CLIP 要 224。解法:先算模板网格的剪影再膨胀一圈,只渲剪影内的光线(打不到表面的光线对画面没贡献却照样吃显存),分辨率就能提到约 150×150。
  • 变成可驱动(49 L115):marching cubes 抽出网格,每个顶点从模板网格最近邻顶点拷一份蒙皮权重,用逆线性混合蒙皮把站姿退回零姿态,之后就能用任意姿态驱动。
  • 动作生成为什么要两段(49 L123):CLIP 判断不了一段动作和一句话像不像,也判断不了动作顺不顺 —— 它只会看单张渲染图。所以:①用 CLIP 从姿态码本里挑候选姿态;②用动作 VAE 提供的先验,把候选姿态当参照生成连贯序列。
  • 候选姿态(49 L129-137):用 VPoser 把 AMASS 数据集的姿态编码降维,K-means 出 4096 个中心当码本,解码成姿态、渲图、与 t_motion 算相似度,取 top-5
  • 参照式动画(49 L169-187,三条约束各治一个病,写得很干净): ℒ_pose —— 让序列里离每个候选姿态最近的那一帧靠上去,并且按相似度排名加权 λ(i)=1−(i−1)/k,越像的参照权重越大; ℒ_delta —— 负的相邻帧差之和,专治「只用重建损失会把动作磨平」,λ 调大动作就更剧烈; ℒ_clip^m —— 逐帧与文本算相似度,专治「候选姿态没有先后顺序」(比如「举起双臂」应该从自然站姿走到举臂,只有 ℒ_pose 时可能倒着来)。
  • 实测配置(50 L7-9):形体码本 40960 个隐码聚成 2048 个中心;NeuS 的 SDF 六层 MLP、色网络四层,每条光线 32 均匀 + 32 重要性采样,Adam 3 万步;动作 VAE 隐空间 256 维、序列 60 帧、AMASS 上训 100 轮;优化隐码 5000 步。
  • 消融(50 L31):四件事依次加上去 —— 加背景增强纹理不再发暗;加无纹理渲染监督几何从满是随机凸起变得干净、衣褶清楚;加随机着色纹理上下半身亮度不再割裂(书里举的例子是「Donald Trump」上半身明显比下半身亮);加语义提示脸才对
  • 用户研究:22 人评外观(文本一致性/纹理/几何三项全胜 Dream Field 和 Text2Mesh,且标准差最小);58 人评候选姿态、20 人评动画,均明显胜过基线。
  • 局限写得非常坦白(51 L7-9):①CLIP 分辨率低 + 监督弱,放大看就不行,作者自己指出换成 Stable Diffusion + 分数蒸馏采样(SDS,DreamFusion)会更好;②同一句提示每次跑出来的结果都差不多,因为 CLIP 文本特征固定、优化方向就固定(SDS 也有这毛病,VSD 可缓解);③码本限制导致生成不了分布外的姿态;④没有视频版的 CLIP,所以生成不了有风格的动作序列 —— 作者说更实际的路是拿配对的动作-文本数据训文生动作扩散模型。
  • 偏见写得同样坦白(51 L13):t_app 设成「doctor」生出来的多半是男性,设成「nurse」多半是女性 —— 这是 CLIP 训练数据里的性别偏见。

Ch16 文本驱动的 3D 人体动作生成(53 号单文件,正文 L1-404)

作者:张明远等九人(NTU S-Lab + 商汤),Ziwei Liu 通讯。一章讲三代方法:MotionDiffuse → ReMoDiffuse → FineMoGen。

  • 问题(53 L61):做游戏和虚拟人要高质量 3D 动作,现在靠动捕系统或 Blender/Maya 手工编辑,贵、慢、门槛高
  • 早期方法的毛病(53 L65):TEMOS 生成不了有风格的动作,同一句描述只出一种结果;MotionCLIP 能懂开放域语言,但它靠对齐「短文本 ↔ 动作序列」的特征来训,复杂动作生成不了;两者都只吃短提示、都不能细粒度编辑。
  • 动作怎么表示(53 L79-147,这段是全书唯一系统交代数据格式的地方):动作序列 Θ∈R^{F×D}。HumanML3D 每帧 263 维,由这些拼成 —— 根关节绕 Y 轴的角速度 + 沿 X/Z 的线速度、根关节高度、每个关节的局部位置与线速度、每个关节的 6 维旋转、四个 0/1 位表示左右脚跟脚尖是否触地。KIT-ML 251 维,UESTC/BABEL/HuMMan-MoGen 147 维。
  • 为什么用扩散模型(53 L155):GAN 难训;隐函数在复杂条件下不泛化;AE/VAE 把文本和动作编到同一个空间做确定性映射,而高层文本特征粒度不够,导致输出多样性受限
  • MotionDiffuse 的三处设计(53 L199-219): ① 主干用 Transformer 不用 UNet,理由很实在 —— 动作长度可变; ② 文本编码器用 CLIP 预训练权重冻住,后面接几层可学的 Transformer 编码层去适配; ③ 高效注意力替代普通自注意力:不算 n×n 的两两权重,而是先 softmax(K^T)⊗V 压出一张 d_k×d_k 的全局模板,再用 softmax(Q) 去查它,复杂度从 O(n²d) 降到 O(dd_k n)。动作序列常有几百帧,这个改动既快又更准 —— 全局模板让模型更容易从带噪序列里抓到整体动作内容; ④ 风格化块(stylization block):把文本嵌入和时间步嵌入相加成 e,由它生成缩放 W 和偏置 B,对特征做 Y·W+B。时间步信息让模型知道自己走到反向过程的哪一步。
  • ReMoDiffuse = 检索增强(53 L227-259)。灵感来自游戏业成熟的做法:建一个动作库,用时检索片段再融合。三个难点与三个解法: ① 检索什么 —— 混合检索:语义相似度用 CLIP 文本特征的余弦相似度;运动学相似度只能用「动作长度」(测试时拿不到目标动作,长度是唯一可用的运动学线索,书里说它「意外地有效」),得分 s_i = 语义相似度 × e^{−λγ},γ 是长度相对差; ② 怎么用检索结果 —— 语义调制注意力 SMA:query 是带噪动作序列,key 和 value 从三个源拼 —— 当前动作特征、文本条件、检索样本的动作特征 R_m 与文本特征 R_t;key 拼 [R_m;R_t] 而 value 只拼 R_m,这样既吸收检索样本的底层动作信息,又照顾到它与目标的语义差距; ③ 推理怎么放大效果 —— 条件混合:训练时以 10% 概率丢掉文本条件(无分类器引导的标准做法);把「检索」也当成一个条件,于是有四种组合的预测,用四个权重 w1..w4 混合,按 FID 最小去调这四个数
  • 消融里的一个坦白(53 L383):只按文本语义检索、把检索到的动作特征直接塞进注意力,比不检索还略差 —— 「检索增强在动作生成上有相当的难度」。必须同时考虑运动学相似度、并在注意力里处理语义落差才有用。ReMoDiffuse 不带检索的基线已经比 MotionDiffuse 的 FID 1.954 好不少(靠混合高效注意力 + 无分类器引导)。
  • 细粒度生成(53 L267):标注变成一个矩阵 Text_{i,j} —— i 是时间段、j 是身体部位。两种实现: MotionDiffuse 的测试期做法(53 L271-289) —— 对每个部位/时段各跑一次去噪得到各自的噪声项,用二值掩码 M_j 拼起来,再加一个梯度修正项去拉平不同部位噪声项之间的差,保证重叠处一致。好处:不改训练、不改结构,几乎任何动作扩散模型都能用; FineMoGen 的 SAMI(53 L293-331) —— 因为上面那种零样本修正只平滑了坐标维度,速度和加速度会突变。SAMI 把注意力拆成时间分支和空间分支:时间分支把每个全局模板当成一个从时间中心 G^t 向外辐射的信号,带初始状态 G^s 和速度 G^v,按高斯权重 e^{−(x_k−G^t)²/σ²} 决定它在第 k 帧的重要性;空间分支把表示手动切成 N_S 组、每组对应一个身体部位,并令注意力头数 = 部位数,再用一个可学的 N_S×N_S 权重 ω 让部位之间通信。
  • 数据集与指标(53 L341-367):KIT-ML(3911 个动作 / 6353 条描述)、HumanML3D(14616 个动作 / 44970 条描述,最全)、BABEL(约 43 小时,28k 序列级 + 63k 帧级标注)、HuMMan-MoGen(2968 段视频 / 160 个健身动作,专门评细粒度)、HumanAct12、UESTC。指标:FID 是主指标;R-Precision(把真描述混进 31 条错描述里排序,看 top-1/2/3 命中率);Diversity;Multimodality(同一句描述生成结果的差异度);MM Dist。
  • 结论里的一个可带走判断(53 L393):细粒度生成上,从模型结构上建模时空独立性,比在测试期用采样策略拼,效果更好

Ch17 Text2Light / 文本驱动场景生成(54 号单文件,正文 L1-477)

作者:陈昭熙 + 王广聪(大湾区大学)+ Ziwei Liu。生成的不是一张图,是 4K+ 的 HDR 全景 —— 能直接丢进渲染引擎当环境光。

  • 为什么要 HDR 全景(54 L31-33):3D 渲染里的真实光照和反射靠它;但拍一张这样的图又贵又受物理条件限制。一张全景信息量太大,手工做不现实,所以用自由文本控制最合适。
  • 四个难点(54 L37-43,书里列得很清楚):分辨率(现有生成模型做不到 4K+ 的场景级细节)、连贯性(场景有多个物体和结构布局,不像单个物体)、文本对齐(根本没有「文本-场景」配对数据,所以只能零样本)、动态范围(LDR 转 HDR 不稳)。
  • 球面位置编码 SPE(54 L71-81):把全景图每个像素 (i,j) 映回单位球面的 (θ,φ),θ=(2i/H−1)π、φ=(2j/W−1)π/2 —— 这就是等距柱状投影的逆运算;再对 (θ,φ) 做傅里叶位置编码(L=4)升到高维,让模型抓得住高频细节。
  • 阶段一:文本 → 低分辨率 LDR 全景(54 L93-141),三块: 双码本 —— 全局码本由一个 VQVAE 在 128×256 的降采样全景上训出来,管整体语义和布局(编码成 8×16);局部码本由另一个 VQVAE 在随机裁的 256×256 图块上训,管细节纹理(编码成 16×16)。单个 VQVAE 做不到既连贯又有细节,所以拆成两个; 文本条件的全局采样器(54 L107-127,最巧的一招) —— 没有配对数据怎么让文本管住生成?做法是把图像特征加噪当成「伪文本特征」:Ĉ_txt=(1−α)E_img(I)+α·ε·‖E_img(I)‖/‖ε‖,再取它在 CLIP 图像嵌入里的 top-K 最近邻一起当条件;用自回归 Transformer 在全局码本的索引序列上训,损失 = 负对数似然 + 对比正则(拉近真图像特征与伪文本特征)。推理时把 Ĉ_txt 换成真的 E_txt(T) 就零样本可用了; 结构感知的局部采样器 —— 另一个 Transformer,在全局条件 z_g 和球面位置编码的条件下逐块采样局部码本,推理时滑窗拼出整张 1K 全景。
  • 阶段二:超分 + 逆色调映射(54 L145-185):把全景当成球面上的连续场,任意 (θ,φ) 都可以查值。先把 LDR 图块编成 128×128 的像素对齐结构化隐码,查询点的特征由最近四个隐码按面积插值得到;再过一个复合算子 SR-iTMO = f_sr ∘ f_itmo,两个小 MLP 依次提分辨率和动态范围。因为是连续表示,训练时不必把 4K-8K 的原图缩到固定尺寸。动态范围那一项用尺度不变损失(对数域)。
  • 结果(54 L207-307,表 17.1,LDR 全景生成 FID↓ / IS↑ / 感知质量 / 结构完整性,后两项是 25 人 5 分制): StyleGAN2 14.62 / 5.07 / 2.43 / 2.20;StyleGAN3-T 16.61;StyleGAN3-R 15.13;InfinityGAN 104.62;Taming Transformer 112.38;本方法 10.72 / 6.65 / 4.26 / 4.25一个很值得讲的现象(54 L309):StyleGAN 系 FID 不算差,但它们抓不住全景的球面结构 —— 教堂内景乍看真实,天花板和长椅是扭的、断的;InfinityGAN 在水平方向出重复图案、两极处没纹理。FID 低 ≠ 结构对。
  • 零样本文本驱动(54 L323-383,表 17.2 FID / IS / 感知质量 / 文本一致性):StyleCLIP 57.86 / 4.28 / 1.98 / 1.33;FuseDream 38.16 / 5.89 / 2.41 / 1.57;本方法 32.01 / 6.46 / 4.38 / 4.56。消融:去掉 KNN 掉到 52.85 / 文本一致性 1.23(KNN 是关键),去掉对比正则 34.70(贡献不大)。
  • 逆色调映射(54 L397-433,MAE / RMSE):LANet 0.3218 / 51.73;ExpandNet 0.1894 / 26.68;HDR-CNN 0.1713 / 26.40;本方法 0.1442 / 26.38 —— 用两个小 MLP 就干掉了那些重型全卷积网络。
  • 消融(54 L439-449):去掉全局码本 FID 崩到 308.38(局部码本和采样器只在图块上训过,没有全局信息就拼不出整张全景,而且文本对齐能力也一起没了);去掉球面表示 56.37、只去掉傅里叶编码 31.19 —— 没有它模型会横向铺开重复纹理
  • 下游(54 L451-467):当环境光渲 3D 资产、VR 里 360° 漫游、文本编辑场景(给「cityscape at night」追加「with brick road」就能改路面)。
  • 局限写在「延伸阅读」那一节里(54 L477):①文本偏见 —— 不用配对数据,一切依赖 CLIP,而 CLIP 在某些词-图对上有偏;②罕见景象生成不了 —— 给「tree and aurora rays」它只理会「tree」,作者归因于训练文本对齐采样器时用了 KNN。

⚠️ 转码发现:书尾三个文件不属于这本书(必须避开)

55-apx-a-appendix-a.txt56-fm-references.txt57-fm-index.txt 的内容来自另一本完全不同的书 —— 一本讲电平交叉模数转换器(LCADC)/ 生物医学传感芯片的专著:

  • 55 号讲「零阶保持压缩与 Δ 编码」,开头写「In Chap. 3, Sect. 3.4 … level-crossing ADCs」,而本书第 3 章是 InternVideo2;
  • 56 号的参考文献第 1 条是「Analog Devices, AD620 仪表放大器」,第 2 条是「iPhone15 技术规格」;
  • 57 号索引词条是「Adaptive clocking」「Analog front-end (AFE)」「Biomedical sensor systems」。

结论:epub 打包时混进了同一系列另一本书的后附材料,约 50k 字符。

  • book-health 报 OK,查不出这种「内容是完整的,但不是这本书的」污染;
  • index.md 的结构表把它们当成正常章节列着,写总纲时不要照抄;
  • 写作时 55/56/57 三个文件一律不读、不引;
  • 本书自己真正的索引和总参考文献因此是缺失的(各章的参考文献在各章文件内部,不受影响)。
  • 版权页(02 号)本身是对的:ISBN 978-3-031-94968-5 / e-ISBN 978-3-031-94969-2,Springer Nature Switzerland 2026,系列「Advances in Computer Vision and Pattern Recognition」。

通读之后的整体判断(供写大纲的人用)

这本书到底是什么

不是教科书,是一本「专题论文合集」(edited volume):17 章 = 17 篇论文,每篇由原作者改写成章。 编者三人(Kaiyang Zhou 港浸会 / Ziwei Liu 新加坡南洋理工 S-Lab / Peng Gao 上海 AI 实验室)自己是其中多章的作者。 前言落款 2024 年 12 月,书标 2026 年版。第 1 章是编者写的综述兼路线图,它是全书唯一的「导游」,其余 16 章各自独立。这决定了拆解不能按原书章序一章对一章地写,否则读者读到的是 17 篇互不相干的论文摘要。

全书主线(通读之后排出来的)

CLIP 把图和文钉进同一个空间(Ch1)
↓ 那就把它做大 —— 但开源与闭源差在三处:参数、分辨率、语言(Ch2 InternVL)
↓ 再把时间维加进去 —— 视频、音频、语音(Ch3 InternVideo2)
↓ 再把「生成」加进去 —— 于是有了上下文学习(Ch4 Emu2)
——— 以上是「怎么造」,以下是「造好了怎么用」———
↓ 手调 prompt 不靠谱(加个「a」值 5 个点)→ 让 prompt 可学(Ch5 CoOp)
↓ 学出来的 prompt 换个域就废 → 拿测试样本当场学(Ch6 TPT)
↓ 换条路:不动 prompt,在特征后挂小模块,甚至不训练(Ch7 Tip-Adapter)
↓ 三条路谁都不全胜 → 让机器搜哪条路配哪个数据集(Ch8 NOAH)
↓ 但调完之后它说的「九成把握」还算数吗?(Ch9 DAC)
——— 以上是分类,以下是把这套东西挪到别的视觉任务上 ———
↓ 检测:候选框网络对新类没响应 → 把「分成哪类」换成「配不配得上」(Ch10 OV-DETR)
↓ 分割:微调会毁掉图文关联 → 干脆删掉 q 和 k,直接取 value(Ch11 MaskCLIP)
↓ 3D:CLIP 没见过点云 → 把点云画成深度图(Ch12 PointCLIP)
——— 以上是「认」,以下是「造」———
↓ 多条件控制:让两个单模态扩散模型逐像素分工(Ch13 协作扩散)
↓ 白捡的质量:UNet 主干在去噪、跳连在灌高频,重新配比就行(Ch14 FreeU)
↓ 3D 数字人:CLIP + SMPL + NeuS 三块先验拼起来(Ch15 AvatarCLIP)
↓ 动作:CLIP 判断不了「一段动作」,只能判断「一个姿态」(Ch16)
↓ 场景:没有配对数据,就把图像特征加噪当伪文本(Ch17 Text2Light)

真正的落点不是某一章,而是一个反复出现的主张:

不要重训基础模型。所有本事已经在预训练权重里了,缺的是「怎么把它取出来」。 全书 16 篇论文里,至少 11 篇的核心贡献是「冻住 CLIP,只动外围的一小块」, 而且最有效的几招都是「减法」:MaskCLIP 删掉 q/k、FreeU 只调两个数、Tip-Adapter 干脆不训练。

跨章伏笔(不通读看不出来的)

埋在哪在哪揭晓
Ch5 结尾的「延伸阅读」点名 CoCoOp 解决 vanilla prompt learning 的泛化问题Ch6 整章就是在打这个问题,并且用数字证明 CoCoOp 也没真解决(跨数据集平均改进仍为负)
Ch5 的 CoOp 是 Ch6/7/8/9 四章共同的基线和靶子Ch7 用成本表说明 CoOp 推理慢 29 倍;Ch8 说没有单一方法全胜;Ch9 说 CoOp 校准最差(ECE 13.84,是所有方法里最高的)
Ch1 §1.4.2 说 prompt learning「被批泛化弱、test-time tuning 增算力」Ch6 自己承认推理变慢是待解问题(34 L5)
Ch7 的适配器思路Ch12 直接复用成「视角间适配器」;Ch7 延伸阅读点名 LLaMA-Adapter,把同一招搬进 LLM
Ch11 的失败经验「微调会破坏图文关联」Ch6 消融独立验证了同一件事:调视觉编码器是四组参数里最差的
Ch15 结尾说「应该换成 Stable Diffusion + 分数蒸馏」Ch13/Ch14/Ch16/Ch17 正是扩散模型这条线;Ch16 的 MotionDiffuse 明确说文本编码器沿用 AvatarCLIP 和 MotionCLIP 的做法
Ch15 说「没有视频版的 CLIP,所以生成不了有风格的动作」Ch16 就是用配对的动作-文本数据训扩散模型来绕开这一点

建议怎么切章(按新词密度切,不按原书章序)

原书 17 章直接对应会出两个问题:①第 2/3/4 章是三篇超大规模系统论文,新词密度极高,一章塞不下;②第 5-9 章五章其实是同一个问题的五种答案,分开写会重复五遍 CLIP 背景。建议 9-11 章:

建议章讲什么对应原书为什么这么切
01图和文怎么被钉进同一个空间 —— CLIP 的双编码器、对比学习、「a photo of a {CLASS}」怎么变成分类器Ch1 §1.2-1.3 + Ch5 §5.3这是后面 16 章全部的地基。新词最密(嵌入/对比学习/零样本/token/温度),必须单独一章慢慢讲
02三种把图文接起来的架构,和三种训练目标Ch1 §1.3双编码器 / 交叉注意力 / 统一序列;对比 / 掩码重建 / 自回归。这张分类图是读懂后面所有章的地图
03把它做大会撞上什么 —— 参数、分辨率、语言三道坎;渐进式对齐;动态高分辨率Ch2 InternVL一整套工业级流程,数据清洗 60.3 亿→49.8 亿那组数字很有说服力
04加上时间维 —— 视频怎么学;三阶段;双教师蒸馏;合成 caption 的偏差Ch3 InternVideo2与 03 是同一套思路的推广,但新词(掩码建模/蒸馏/VAS caption)够多,不能并进 03
05从「看懂」到「会做」 —— 生成式多模态预训练、下一个多模态元素、上下文学习Ch4 Emu2全书唯一一章讲「生成式预训练」,是通向后半本生成线的桥
06调 prompt:从手工试错到可学向量,再到当场学Ch5 + Ch6两章共用一套背景,合起来才讲得出「学出来的 prompt 换域就废」这条因果
07另外三条适配路线,以及谁都不全胜 —— 适配器 / 缓存模型 / LoRA / VPT / 用搜索来选Ch7 + Ch8两章都在回答同一个问题:除了 prompt 还能动哪儿。Ch7 的成本表和 Ch8 的搜索结果互为佐证
08调完之后它还老实吗 —— 置信度校准、开放词表下的过度自信Ch9单独成章。这是全书唯一一章讲「可靠性」,主题与前后都不同,合并会被淹没
09搬到别的视觉任务上 —— 检测、分割、3DCh10 + Ch11 + Ch12三章的机制不同但共用同一条逻辑:CLIP 只学过图级 caption,所以稠密预测要各想各的办法。合起来才看得出这条共性
10控制扩散模型 —— 多条件协作、UNet 里主干与跳连的分工Ch13 + Ch14两章都在「不重训、只改推理」这条线上,而且 Ch14 的白捡质量正好可以挂在 Ch13 上
11长出立体和时间 —— 数字人、动作、场景Ch15 + Ch16 + Ch17三章都是「CLIP 管不了的东西怎么补上先验」:AvatarCLIP 补 SMPL+NeuS,Ch16 补动作 VAE 与扩散,Ch17 补双码本与球面编码

如果嫌 11 章太多,可以把 03+04 合成一章(都是「把它做大」)、10+11 合成一章,压到 9 章。 不建议再少 —— 09 那一章已经装了三个任务,再塞会违反「一节 ≤5 个生面孔」。

书没讲透、需要补外部来源的缺口(按重要性排)

#缺口为什么必须补上哪儿找
1CLIP 原论文本身(Radford 等,2021,ICML)全书 17 章有 14 章把 CLIP 当地基,但没有一章讲它是怎么训出来的(批量多大、温度怎么学、为什么用余弦相似度)。Ch5 §5.3 是全书最详细的一段,也只有三段先查我们自己的书架;查不到再抓 arXiv:2103.00020
2Transformer 与注意力机制Ch8 §8.3.1.1 给了 Q/K/V 的公式就完了;Ch16 讲「高效注意力」时默认读者已经懂标准注意力。默认读者什么都不知道的话,这是最大的一个洞docs/what-is-chatgpt-doing/ 里应该已经讲过;先 grep 自己的书架
3扩散模型的前向/反向过程Ch13 §13.2.1 和 Ch16 §16.2.2 各给了一遍公式,但都是给已经懂的人看的;Ch14 整章建立在「UNet 在去噪」之上书内两处公式 + 书架 + 通用知识,注意要讲清「为什么预测噪声等价于生成」
4LoRA / Adapter 的来历Ch8 把它们当已知概念用(只给了低秩分解的式子);Ch7 讲 CLIP-Adapter 时也假设读者知道 Houlsby 的原始 AdapterLoRA:arXiv:2106.09685;Adapter:arXiv:1902.00751。先翻书架的 frontier / agent 库,PEFT 相关多半已拆过
5书出版后这条线的走向全书的时间戳是 2024 年 12 月。Ch6 的延伸阅读点名了「LLM 的测试时计算扩展」(Snell 等)但没展开;Ch15 明确说「应该换成 SDS/VSD」但书里没做这是全书最值得补的一处「后来怎么样了」。需要外部来源,注意标查阅日期
6SMPL / NeuS / NeRF / VQVAECh15 和 Ch17 大量依赖,书里各给一段。SMPL 的 β/θ 交代得还行,NeuS 的权重函数 w(t) 只有公式没有直觉通用知识 + 原论文;NeuS arXiv:2106.10689
7ViT 与 ImageNet/ResNet 这条视觉线Ch1 L57 一句话带过(ImageNet→AlexNet→ResNet→ViT),但后面每一章都在用「ViT-B/16」「RN50」这种记法,读者根本不知道那是什么通用知识足够,但要在第 01 章就讲清「B/16 是什么意思」
8各个 benchmark 是什么全书充斥 ImageNet-A/-R/-Sketch/-V2、VTAB-1k、LVIS、COCO Stuff、ModelNet40、HumanML3D…… Ch5 表 5.1 和 Ch16 §16.5.1 给了部分说明,但分散在各章书内多处 + 通用知识。建议在第 01 章立一张「怎么读这些数据集名字」的表,后面直接引
9「开源 vs 闭源差距」这个说法过时了Ch2 说商业模型 ≥100B 而开源常用 300M 视觉 + 7B/13B LLM。这是 2023-2024 年的判断需要外部来源核实 2025-2026 的现状,或者写成判断块并注明时间戳
10各章之间的方法从没被放在一起比过Ch5-Ch9 五章的数字用的不是同一套设定(主干不同、shot 数不同、指标不同),书里没有一张横向对照表这是我们能加的价值:自己整理一张,并明确标注「不同设定,不可直接比较」

动笔前先看这份「必须解释」的清单

node scripts/book-dodged.mjs large-vision-language-models-pre-training还没写一个字的时候 就报出 11 个原书反复用、我们必须交代的缩写(阈值:原书出现 ≥15 次):

原书出现第一次该在哪一章交代
token11901(讲 CLIP 文本编码时,BPE 分词 + 77 长度那段)
LLM10503 或 05(InternVL 拿 LLaMA 当文本编码器那里,或 Emu2 接 LLaMA-33B 那里)
GPT7901(时代坐标)与 04(GPT-4V 是各章共同的对照物)
GAN7210 或 11(生成线的对照方法:TediGAN、StyleGAN、InfinityGAN 反复出现)
OCR5503(InternVL 的数据配比里 OCR 占 40% 以上,不解释读不下去)
LoRA4107(与 Adapter、VPT 一起讲)
CNN2901(ResNet 与 ViT 的对照)
NLP2301
GPU1707(成本表)或 03
F117出现在实验表里,若我们的正文不引那些表可以不提 —— 但要在书卡或笔记里写明为什么跳过
logits1501(把「相似度分数」落到这个名字上)

注意这个检查器只认缩写类词。 这本书真正承重、而检查器数不出来的词至少还有: 对比学习 / 零样本 / 少样本(few-shot)/ 提示(prompt)/ 提示学习 / 适配器 / 微调 / 参数高效微调 / 冻结 / 蒸馏 / 扩散模型 / 去噪 / 潜空间 / 分割 / 检测 / mIoU / mAP / FID / 校准 / ECE / 点云 / 深度图 / 码本 / 向量量化 / 神经辐射场 / 全景 / HDR。这些也一样要按红线三当场讲清。