跳到主要内容

一句话长出一个能动的人(AvatarCLIP)

这一章讲三件事: 一件「连训练数据都不存在」的事怎么可能做成; 拿现成模型当零件拼的时候,拼接处会冒出哪些具体麻烦; 以及 CLIP 这个打分器的天花板在哪儿。 它在全书链条里的位置: 第 15、16 章讲的是「造一张图」, 这一章要造一个能摆姿势、能动起来的立体人—— 而这件事的监督信号从一开始就不存在。

⚠️ 这一章不用扩散模型。 它的画笔是体渲染,而「改」靠的是最基本那套动作—— 看结果差多少,再把每个可调的数朝「差得少一点」的方向挪一丁点(这套动作叫梯度下降); CLIP 只负责在旁边说一句「像 / 不像」。作者在结论里自己说了该被什么取代, 那正是第 15 章那条线——第 10 节会讲。

1. 顶层全景:两条流水线,一条造人一条让他动

输入是三句话:
形体:「一个又高又胖的男人」
外观:「钢铁侠」
动作:「跑步」

═══ 第一条流水线:造一个能动的静态人 ═══

① 形体不优化,**从 2048 个代表里挑一个**
—— 而且要拿一个「中性体型 + 中性句子」当参照,比的是两个差的方向

② 把挑中的那具身体渲成多视角图,训出一个立体表示当起点

③ **再加一个专管风格的颜色网络**,原来那套继续负责「还是个人形、还能绑骨骼」

④ 交给 CLIP 打两次分:一次看彩色图(管纹理),
**一次看无纹理的灰度图(管几何)**

⑤ 抽出网格,从模板身上**拷一份蒙皮权重** → 这个人现在能摆任意姿势了

═══ 第二条流水线:让他动起来 ═══

⑥ **CLIP 判断不了一段动作**,所以先用它从 4096 个姿势里挑最像的 5 个

⑦ 再靠一个「学过大量真人动作」的先验,把这 5 个姿势串成 60 帧连贯的动作

一个会跑步的钢铁侠

图说:注意这条链上**没有一处是从头训练的**。
三块先验(CLIP、人体模型、动作先验)全是现成的,
**被训练的只有那个立体表示的几个小网络,以及最后那一串代表动作的数。**

这一章的主走查,就用书里自己那个例子:三句话 →「一个又高又胖的钢铁侠在跑步」。

做了什么具体的数或状态
从 40960 个候选体型压成 2048 个代表一本「体型册子」
拿「中性体型」当参照,比两个差向量的方向,挑出最像「又高又胖」的那一具一具光身子的模板
把它渲成多视角图,训一个立体表示起点有了
加第三个颜色网络专管风格;原来那对继续管「保住人形」三个小网络共用同一个「表面在哪」的函数
渲一张彩色图交 CLIP 打分(管纹理)「像不像钢铁侠」
再渲一张无纹理的灰度图交 CLIP 打分(管几何)衣褶、盔甲的凹凸
显存不够:32GB 卡只渲得到约 110×110,而 CLIP 要 224先算剪影、膨胀一圈、只渲剪影内 → 约 150
三个增强:随机背景、随机相机、每四轮把相机对准脸
(优化是一轮轮跑的,一轮叫一次迭代)
脸不糊、不长飘着的碎块
抽出网格,每个顶点从模板最近的那个顶点拷一份蒙皮权重能绑骨骼了
动作:从 4096 个姿势里挑 前 5 个 最像「跑步」的5 个孤立的姿势
优化动作那串数(256 维),生成 60 帧一段连贯的跑

这些数全是书里的真数;三句话用的是书里图例里的那一组1

2. 为什么这件事一开始就没有常规做法

这一节回答:为什么要绕这么大一个圈?

传统做法要多少人

书里开篇就把做一个数字人的工序列了出来:设计形体、贴纹理、绑骨骼、按动作捕捉数据做动画2

每一步都要专门的人、专门的软件、大量人力和昂贵设备—— 这些资源通常只有大公司有。

(数字人在这一章指的是「一个能在电脑里被摆姿势、被驱动的立体人物模型」, 电影、游戏、时尚行业都在用。)

真正的卡点

用一句话来控制它当然最直观。但书里紧接着写了那个致命的事实3:

目前根本没有高质量的「3D 人体–文本」配对数据集。

这句话的含义要说透: 监督学习就是「拿一堆『题目 + 标准答案』去训」—— 这里的题目和答案是成对的(这具身体 ↔ 这句描述); 没有这样的数据,就没法训练一个「输入一句话、输出一个人」的模型。 这条路不是难走,是根本不存在。

于是只剩一条路

CLIP 见过 4 亿对图文,它知道「一张图像不像一句话」。 所以:能不能不训练任何新模型,而是拿 CLIP 当裁判,一点点把一个立体的东西「调」成它认可的样子?

这就是这一章的全部思路。而书里也马上点了它的难处3:

CLIP 没法直接监督一个 3D 的东西,也没法直接监督一段动作。

因为 CLIP 只认平面图。 中间那一层——怎么把立体的东西变成 CLIP 看得懂的平面图—— 正是这一章大部分工作量的所在。

3. 三块现成的先验,各管一段

这一节把三个零件讲清,后面全靠它们。

零件一:CLIP,负责打分

它的用法就是第 01 章那件事,只是换了个方向: 不再是「这张图属于哪一类」,而是**「这张图和这句话有多不像」——差得越多,损失越大**4然后把这个损失往回传,去改那个立体的东西。

零件二:一个参数化的人体模型,负责体型和骨架

它是从大量真人体表扫描数据里学出来的一个「人体公式」:
**10 个数** 管体型(高矮胖瘦)
**24×3 个数** 管每个关节的旋转角度(姿势)
给定这两组数,它就吐出一具完整的人体网格。

图说:这个模型叫 **SMPL**,是这一行的通用底座,你在任何一篇讲数字人的材料里都会撞见它。
这一章用它干两件事:**当立体人的初始形状**,以及**白送一套骨骼绑定**
——因为它天生就知道哪块皮肤跟着哪根骨头动。

第二件事后面会变得很关键(第 8 节)5

零件三:一种体渲染方法,负责几何与颜色

这一块要慢一点讲,因为它决定了「立体的东西怎么变成平面图」。

① 怎么表示一个立体的东西?
不存网格,而是存两个函数:
f(点) → **这个点离最近的表面有多远**(在里面是负数,外面是正数)
c(点) → **这个点是什么颜色**
两个函数都用小网络实现。
(第一个叫**有符号距离场**——「有符号」就是指里外用正负号区分。)

② 怎么把它变成一张图?
从相机出发,对每个像素射一条光线,沿着这条光线采样一串点,
**按权重把这些点的颜色累加起来** —— 这个像素的颜色就出来了。
(这种「沿光线累加」的画法叫**体渲染**;
用小网络存颜色、靠体渲染出图这一整套的开创者叫**神经辐射场**,常写作 NeRF。)

③ 权重怎么定?
靠第一个函数:**离表面越近,权重越大**;被前面的东西挡住了,权重就压下去。

图说:这一章用的具体方法叫 **NeuS**,它的贡献正是把「离表面多远」这个函数
和体渲染接在一起,**所以几何和颜色都能出得很好**。
**整章要优化的东西,就是这几个小网络里的数。**

这一章还做了一处修改:书里把颜色对「从哪个方向看」的依赖去掉了—— 原方法保留它是为了表现反光,而这里要的是一套从各个角度看都一致的纹理6

4. 第一步:体型不是优化出来的,是挑出来的

这一节是主走查第 ①、② 步,也是全章第一个值得学的设计。

为什么不直接优化

最直接的想法是:那 10 个体型数就是 10 个可调的旋钮,让 CLIP 引着调不就行了? 书里没有走这条路,而是先建一本「体型册子」再从里面挑7

① 那 10 个数的空间分布不均匀(它是用主成分分析压出来的),
所以先训一个小的**变分自编码器**把它换成一个更均匀的空间
(**变分自编码器**:一个「压缩 + 还原」的小网络对,
压缩那半把一具身体变成一小串数,还原那半再把它变回身体;
训练时逼这一小串数服从一个规整的分布,所以空间是均匀的)

② 在这个均匀空间里采 40960 个点,用聚类归成 **2048 个代表**
(**聚类**:把一堆点自动分成若干组,每组取一个中心当代表)

③ 每个代表解码回一具身体网格 → 这就是那本「体型册子」

图说:书里管这本册子叫**码本**——一份「所有可能性的代表清单」。
**这个词第 19 章还会再用一次,那里是另一种码本。**

关键的一招:相对打分

问题来了:CLIP 看着一具光身子的渲染图,判断得出「这个人高」吗?

书里的观察是:判断不出7

有些属性(比如身高)光看一张渲染图是定不下来的—— 因为没有参照物。 一个人单独站在画面里,你说不出他是 1.6 米还是 1.9 米。

解法很漂亮:定一个「中性体型」和一句「中性描述」当锚,比的不是绝对值,是两个差的方向。

图像这边的差: 这个候选体型的图 减去 中性体型的图 → 一个方向
文字这边的差: 「又高又胖的男人」 减去 那句中性描述 → 另一个方向

让这两个方向对齐,得分就高。

例(为演示编的):中性体型是一个中等身材的人。
候选 A 比它高一头、瘦一圈 → 图像的差指向「更高更瘦」
文字的差指向「更高更胖」 → 两个方向只对上一半,得分中等
候选 B 比它高一头、宽一圈 → 两个方向基本一致,得分最高 → 选 B

图说:**这就把一个「绝对判断」换成了「相对判断」,而后者 CLIP 做得到。**
书里说这一招的灵感来自 CLIP 在 2D 图像编辑里的用法。

5. 第二步:雕形状、生纹理,同时不能把人雕坏

这一节是主走查第 ③–⑥ 步,是全章工作量最大的地方。

两级优化

第一级:先把挑出来的那具模板身体「翻译」成立体表示。 做法是把模板渲成多视角图,拿这些图训那两个小网络,训到能还原出模板为止8

第二级:在这个起点上加风格。这里有一个真实的两难。

两难是这样的:
要让它像钢铁侠,几何就得变(盔甲的板块、面罩的形状)
可几何一旦乱变,它就不再是个标准人形 —— **后面绑不了骨骼、动不起来**

第一个方案:把「表面在哪」那个函数冻住,只让颜色变
✗ 等于只贴图不改形。书里说这不理想 —— **几何和纹理一样要紧**

第二个方案(书里采用的):**再加一个颜色网络**
f(点) :表面在哪 —— 三个网络共用它,**允许它微调**
c(点) :原来的颜色 —— 继续负责「还原出模板那具身体」
c_c(点) :**新加的颜色** —— 负责「像钢铁侠」

图说:关键在于 c(点) 这一路仍然背着「还原模板」的任务,
**所以每次 f(点) 想乱动,这一路的重建损失就会把它拉回来。**
**这是一根缰绳,不是一道锁。**

总的损失有三项:重建(拉住形状)+ CLIP 管纹理 + CLIP 管几何8

几何怎么让 CLIP 打分:一个来自日常的巧思

问题:CLIP 看的是彩色图,而彩色图上纹理会盖住几何。 一个贴了钢铁侠贴图的圆柱体,和一个真有盔甲结构的身体,在 CLIP 眼里可能差不多。

书里的解法来自一个观察:人在看 3D 模型时,会把贴图关掉,只看形。

做法:**渲一张无纹理的灰度图**
① 从「表面在哪」那个函数算出每一点的**法线**
(**法线**:垂直于表面朝外的那个方向,它决定这一点朝向哪儿)
② 随机取一个光照方向,按「法线和光照方向的夹角」算明暗
③ 得到一张只有明暗、没有颜色的图 → 交给 CLIP 按同一句话打分

一个必须注意的细节:**光照方向要在相机方向附近取**
(极角和方位角各加一个 ±45 度以内的随机扰动)
—— 否则光和相机在模型的两侧,**正对着你的那一面全黑,几何细节根本看不见。**

图说:这一步专治「几何不管、光靠贴图糊弄」。消融实验里,
**不加它的几何满是随机凸起,加了之后衣褶都清楚了。**

书里还顺手做了一件事:给彩色渲染也加上随机的明暗变化—— 这让生成的纹理更均匀;消融里举的例子是,不加时某个人物的上半身明显比下半身亮9

6. 一个很实在的工程约束:显存不够,渲不到 CLIP 要的大小

这一节短,但它是全书少见的、把硬件约束写进方法的一段。

渲一张 H×W 的图要做 H×W×Q 次查询(Q 是每条光线上采样几个点)。
体渲染很吃显存,所以分辨率被卡得很死:

**32GB 的卡上,最大只渲得到约 110×110**
**而 CLIP 的输入要 224×224**

解法(书里叫「膨胀剪影渲染」):
① 先按当前相机参数算出模板身体的**剪影**(它在画面上占哪一块)
② 把这块**向外膨胀一圈** —— 留出雕形状的余地
③ **只计算落在这块里面的光线**

为什么这样能省:**打不到任何表面的光线对画面毫无贡献,却照样吃显存。**

结果:分辨率提到约 **150×150**。

图说:这一段值得记住的不是那两个数,是那个思路——
**先算出「哪里根本不用算」,再把省下的算力投到该算的地方。**

7. 三个增强,各治一个具体的病

这一节是主走查第 ⑧ 步。三条都很具体,不是套话10:

增强做什么治什么病
随机背景每次随机换成纯黑、纯白、随机噪点、或一张模糊的棋盘格防止长出飘在空中的碎块;不加时纹理还会明显发暗
随机相机每次迭代随机采相机位置:看向的点在原点附近抖动、距离在 1 到 2 之间、方位角按正态分布采所以大部分时间看正面防止网络找到「只在几个固定角度好看」的捷径
语义感知的提示词增强外观是「乔布斯」时,额外造出「乔布斯的脸」和「乔布斯的背面」两句;每四次迭代把相机对准脸部中心,用「脸」那句监督防止五官长错或者被忽略——因为人对脸最敏感

第三条尤其值得学:它把「人的注意力分布不均匀」这件事直接写进了训练循环。 脸只占身体表面积的很小一块,按面积算它得到的监督信号本来微乎其微, 所以要人为地给它加配额。 (这一句解释是我们补的,书里只说了「人对脸敏感」。)

8. 怎么让这个人动起来:白送的那套骨骼派上用场

这一节是主走查第 ⑨ 步。

① 从那个立体表示里抽出一个网格
(用的是一个标准算法,它能把「表面在哪」这个函数变成一堆三角面片)
② 每个顶点去模板身体上找**离它最近的那个顶点**,把那个顶点的**蒙皮权重**拷过来
(**蒙皮权重**:一个顶点跟着哪几根骨头动、各占多少比例。
这套权重本来要靠人工绑定,现在从模板那儿白拿)
③ 把它从「站姿」退回到零姿态
—— 之后给任何一组关节角度,这个人就摆出对应的姿势

图说:第 ② 步能成立,全靠第 5 节那根缰绳 —— **生成出来的网格和模板对得上**。
**如果几何乱变,最近邻就找错了,拷过来的权重就是错的,这个人会扭曲。**
所以「保住形状」不是审美要求,是功能要求。

9. 动作那一半:CLIP 在这里直接失效

这一节是主走查第 ⑩、⑪ 步,也是这一章对全书最有价值的一处交代。

失效在哪儿

书里说得很直接11:

CLIP 不适合直接判断「一段动作序列和一句话像不像」, 它也判断不了一段动作顺不顺、连不连贯。

原因不难想:它只看单张图。 一段动作是有先后的、有速度的, 而这些信息在任何单独一帧里都不存在。

这一句是第 01 章那个边界的自然后果,也是全书「CLIP 是打分器」这条线的天花板: 它能给一张图打分,给不了一个过程打分。

但它没有全废

书里马上补了一句:CLIP 很擅长判断「一张渲染出来的姿势」和一句话像不像11所以把任务拆成两段:

第一段(CLIP 干得了):挑姿势
从一个大型真人动作数据集里,把姿势编码降维,聚成 **4096 个代表**
每个代表解码成姿势、渲成图,和「跑步」这句话算一次相似度
取**最像的前 5 个** → 候选姿势

第二段(CLIP 干不了,换别人):串成动作
先在同一个数据集上训一个「动作先验」——
它学过大量真人动作长什么样,所以知道什么样的序列是连贯的
然后**优化它的那一小串数(256 维)**,让解出来的 60 帧动作满足三条约束

图说:分工的界线很清楚 —— **CLIP 管「像不像」,动作先验管「顺不顺」。**

10. 三条约束各治一个病

这一节把上面第二段那三条约束讲清,它们写得很干净12:

约束做什么治什么病
靠近候选姿势序列里离每个候选姿势最近的那一帧,要靠上去;而且按相似度排名加权(第 1 名权重 1,越往后越轻)保证生成的动作真的包含那几个姿势
鼓励幅度(取负号)把相邻两帧之间的差加起来取负,当成损失的一项专治「只用上一条会把动作磨平」——调大它的系数,动作就更剧烈
逐帧和文字比一次每一帧都算一次「像不像那句话」,而且越靠后的帧罚得越重专治「候选姿势没有先后顺序」——比如「举起双臂」应该从自然站姿走到举臂,而不是倒着来

第二条是这三条里最反常识的:它是一个「越平滑越罚」的损失。 常规做法里平滑几乎总是好事;而这里如果只要求靠近那几个候选姿势, 最省事的解就是从头到尾几乎不动——每一帧都离所有候选姿势差不多远。 加一个负号,就把这个偷懒解堵死了。 (这一层解释是我们补的,书里只说了「只用重建损失会过度平滑」。)

11. 作者的判断与证据

书里给了证据的:

说法证据
直接优化体型参数不行专门设了这个基线做对照
相对打分有效定性结果 + 与直接优化的对照
背景增强有效不加时纹理明显发暗
无纹理渲染监督几何有效不加时几何满是随机凸起,加了之后衣褶清楚
随机明暗有效不加时某个人物上半身明显比下半身亮
语义提示有效不加时脸生成得不对
直接优化姿势不行三个基线对照(直接调关节角、直接调姿势编码、用一个可逆映射网络)
整体质量领先22 人评外观(三项全胜两个对照方法,且分歧最小)、58 人评候选姿势、20 人评动画

属于作者的推断:

  • 「身高这类属性光看渲染图判断不出」——这是设计相对打分的动机, 书里用的是「我们观察到」,没有单独量化;
  • 「候选姿势越靠后越不像描述」——那个加权系数就建立在这个假设上, 书里没有验证这个单调性真的成立。

12. 边界与局限:作者自己写的四条,加一条偏见

这一节几乎全是转述,因为书里写得非常坦白13

① 放大看就不行。 原因是两条叠加:监督太弱(CLIP 只给一个总的相似度分), 外加 CLIP 的输入分辨率本来就低作者自己指出了该换成什么:换成扩散模型 + 一种叫分数蒸馏采样的技术。

这一条要和第 15 章连起来读:作者点名的那条路,正是那一章讲的那类模型。 换句话说:这一章的方法在书出版时就已经知道自己会被取代。

② 同一句话每次跑出来都差不多。 原因很清楚:CLIP 的文本特征对同一句话是固定的,所以优化方向也是固定的。 书里说这个毛病在它点名的那条新路上同样存在,并指了一个后续方法可以缓解。

③ 生成不了分布外的姿势。 因为姿势是从那 4096 个代表里挑的—— 册子里没有的东西,它想不出来。

④ 没有视频版的 CLIP。 所以生成不了有风格的动作序列。 作者说更实际的路是拿配对的动作–文本数据去训一个文生动作的模型—— 那正好是下一章的内容。

⑤ 偏见,书里单列了一节14:

外观描述设成「医生」,生成出来的多半是男性;设成「护士」,多半是女性。 作者明说这来自 CLIP 训练所用的大规模互联网数据里固有的性别偏见。

书里还提了另一条风险: 这类工具一旦普及,可能被用来制造名人的假视频。

13. 可带走的

  1. 这件事没有监督学习的路:根本不存在「3D 人体–文本」的配对数据集;
  2. 办法是拿三块现成先验拼:CLIP 打分、参数化人体模型给体型和骨架、体渲染负责几何与颜色;
  3. CLIP 只认平面图,所以这一章大部分工作量在「怎么把立体的东西变成它看得懂的图」;
  4. 体型是挑的不是调的:40960 个候选压成 2048 个代表,从册子里选;
  5. 而且要相对打分:CLIP 看一张图判断不出「高」,所以拿中性体型当参照、比两个差的方向;
  6. 风格和形状的两难,靠加第三个颜色网络化解:新网络管像不像,老网络继续背着「还原模板」的任务当缰绳;
  7. 几何要单独打分,办法是渲一张无纹理的灰度图——灵感来自「人看模型会关掉贴图只看形」;
  8. 光照方向要在相机方向附近取,否则正对你的那面全黑,几何看不见;
  9. 显存不够时先算「哪里不用算」:算出剪影、膨胀一圈、只渲剪影内,110 提到 150;
  10. 三个增强各治一个病:随机背景防飘块、随机相机防捷径、每四次迭代对准脸因为人对脸最敏感;
  11. 保住形状不是审美要求是功能要求——形状对得上模板,才能拷来蒙皮权重、才能绑骨骼;
  12. CLIP 在动作上直接失效:它只看单张图,判断不了一段动作像不像、顺不顺;
  13. 所以拆成两段:CLIP 从 4096 个姿势里挑前 5 个,动作先验把它们串成 60 帧;
  14. 三条约束各治一个病,其中「鼓励幅度」那条取负号,专门堵死「几乎不动」这个偷懒解;
  15. 作者自己说了这套该被什么取代(扩散模型 + 分数蒸馏),也照实写了性别偏见。

14. 原文地图

主题原书章原文位置
做数字人的四道工序、只有大公司做得起15. Text-Conditioned Zero-Shot 3D Avatar Creation and Animationtext/47-ch15-01-15-1-introduction.txt:3(搜「rigging skeletons」)
没有配对数据集;CLIP 没法直接监督 3D 和动作同上text/47-ch15-01-15-1-introduction.txt:9(搜「no high-quality avatar-text dataset」) · text/47-ch15-01-15-1-introduction.txt:11(搜「cannot directly supervise」)
三个零件:CLIP 的损失、人体模型、体渲染同上text/49-ch15-03-15-3-our-approach.txt:7(搜「CLIP-guided loss function」) · text/49-ch15-03-15-3-our-approach.txt:13(搜「automate the skeleton binding」) · text/49-ch15-03-15-3-our-approach.txt:15(搜「signed distance fields」)
体型码本怎么建、相对打分怎么算同上text/49-ch15-03-15-3-our-approach.txt:41(搜「shape Variational Autoencoder」) · text/49-ch15-03-15-3-our-approach.txt:43(搜「challenging to determine solely from the renderings」)
两级优化、第三个颜色网络、三项损失同上text/49-ch15-03-15-3-our-approach.txt:65(搜「introduce an additional color network」) · text/49-ch15-03-15-3-our-approach.txt:71(搜「three-part loss function」)
无纹理渲染、法线、光照方向的限制同上text/49-ch15-03-15-3-our-approach.txt:81(搜「the light direction is sampled within a small range」)
随机明暗提升纹理均匀性同上text/49-ch15-03-15-3-our-approach.txt:85(搜「improves the uniformity of the generated textures」)
显存约束与膨胀剪影渲染同上text/49-ch15-03-15-3-our-approach.txt:91(搜「approximately 110」) · text/49-ch15-03-15-3-our-approach.txt:93(搜「dilated to ensure that sufficient space」)
三个增强同上text/49-ch15-03-15-3-our-approach.txt:97(搜「Gaussian-blurred chessboard」) · text/49-ch15-03-15-3-our-approach.txt:103(搜「predominantly focused on the front side」) · text/49-ch15-03-15-3-our-approach.txt:107(搜「the face of Steve Jobs」)
抽网格、拷蒙皮权重、退回零姿态同上text/49-ch15-03-15-3-our-approach.txt:115(搜「blend weights for each vertex」)
CLIP 判断不了一段动作;两段式同上text/49-ch15-03-15-3-our-approach.txt:123(搜「lacks the ability to evaluate the smoothness」)
姿势码本 4096、取前五同上text/49-ch15-03-15-3-our-approach.txt:129(搜「K-means clustering is applied to identify K centroids」) · text/50-ch15-04-15-4-experiments.txt:9(搜「4,096 centroids」)
三条约束同上text/49-ch15-03-15-3-our-approach.txt:177(搜「place more emphasis on reference poses」) · text/49-ch15-03-15-3-our-approach.txt:181(搜「overly smoothed」) · text/49-ch15-03-15-3-our-approach.txt:187(搜「does not ensure the correct ordering」)
实现细节:2048 个代表、60 帧、256 维同上text/50-ch15-04-15-4-experiments.txt:7(搜「2,048 centroids」) · text/50-ch15-04-15-4-experiments.txt:9(搜「60 frames」)
四组消融同上text/50-ch15-04-15-4-experiments.txt:33(搜「textures tend to appear excessively dark」)
四条自陈局限同上text/51-ch15-05-15-5-discussion.txt:7(搜「especially when zoomed in」) · text/51-ch15-05-15-5-discussion.txt:9(搜「out-of-distribution poses」)
性别偏见与假视频风险同上text/51-ch15-05-15-5-discussion.txt:13(搜「the generated avatar is typically male」)

Footnotes

  1. 出处:「15. Text-Conditioned Zero-Shot 3D Avatar Creation and Animation」图 15.2 的说明(text/49-ch15-03-15-3-our-approach.txt:29,搜「a tall and fat Iron Man that is running」)。主走查用的三句话就是书里这张图用的那一组。各步的数值分别见:体型码本 40960 → 2048(text/50-ch15-04-15-4-experiments.txt:7,搜「2,048 centroids」);姿势码本 4096、取前五、序列 60 帧、动作隐空间 256 维(text/50-ch15-04-15-4-experiments.txt:9,搜「4,096 centroids」);渲染分辨率 110 与 150(text/49-ch15-03-15-3-our-approach.txt:91,搜「approximately 110」;text/49-ch15-03-15-3-our-approach.txt:93,搜「around 150」)。

  2. 出处:同上第 3 段(text/47-ch15-01-15-1-introduction.txt:3,搜「rigging skeletons」)。原文:创建数字人涉及多个复杂步骤——设计形体、贴纹理、绑骨骼、按动捕数据做动画;传统上这个过程需要多种专家、高级软件、大量人力和昂贵设备,而这些资源通常只有大企业才有。

  3. 出处:同上第 9 段(text/47-ch15-01-15-1-introduction.txt:9,搜「no high-quality avatar-text dataset」)与第 11 段(text/47-ch15-01-15-1-introduction.txt:11,搜「cannot directly supervise」)。原文:自然语言可以当成直观的控制信号,但目前没有高质量的数字人–文本数据集来支撑有监督的文本驱动 3D 生成;而在动画那一侧,少数用动作–文本数据集的工作也受限于配对数据不足。第 11 段接着写:CLIP 无法直接监督 3D 数字人的生成,也无法直接监督动作序列的合成,这在静态生成与真实动作合成两方面都构成挑战。 2

  4. 出处:同上第 7 段(text/49-ch15-03-15-3-our-approach.txt:7,搜「CLIP-guided loss function」)。原文:CLIP 的两个编码器把成对的图文映到共享空间,配对的靠近、不配对的推远;这里定义的损失是「1 减去图像特征与文本特征的余弦相似度」,最小化它就让生成的图像去贴合文本描述。

  5. 出处:同上第 13 段(text/49-ch15-03-15-3-our-approach.txt:13,搜「automate the skeleton binding」)。原文:这个参数化人体模型建立在大规模人体表面扫描数据上,10 个数控制体型、24×3 个数编码关节旋转角度;本框架用它当初始网格,并用它来自动完成骨骼绑定、让生成的数字人能被驱动。

  6. 出处:同上第 15 段(text/49-ch15-03-15-3-our-approach.txt:15,搜「signed distance fields」)与第 53 段(text/49-ch15-03-15-3-our-approach.txt:53,搜「omit the color network’s dependence on the viewing direction」)。原文:所用的体渲染方法把有符号距离场与神经辐射场的长处结合起来,沿光线累加颜色,权重函数带遮挡感知且无偏,从而能在多视角图上学到准确的距离场;本章去掉了颜色对观察方向的依赖——原方法保留它是为了表现随视角变化的着色效果,而这里要的是各视角一致的纹理。

  7. 出处:同上第 41 段(text/49-ch15-03-15-3-our-approach.txt:41,搜「shape Variational Autoencoder」)与第 43 段(text/49-ch15-03-15-3-our-approach.txt:43,搜「challenging to determine solely from the renderings」)。原文:那 10 个体型数的空间由主成分分解学得,分布不均匀,所以先训一个变分自编码器得到更均匀的隐空间,再用 K 均值聚类构造码本;并明确指出「身高这类属性,在没有参照的情况下只看体型渲染图很难判断」,因此定义一个中性体型和一句中性文本当参照,让 CLIP 做相对打分——比较的是图像特征差与文本特征差两个方向是否对齐;这一招的灵感来自 CLIP 在 2D 图像编辑里的用法。走查里那个「候选 A / 候选 B」的例子是为演示编的。 2

  8. 出处:同上第 53 段(text/49-ch15-03-15-3-our-approach.txt:53,搜「multi-view renderings」)、第 63 段(text/49-ch15-03-15-3-our-approach.txt:63,搜「fixing the weights of the signed distance function」)、第 65 段(text/49-ch15-03-15-3-our-approach.txt:65,搜「introduce an additional color network」)与第 71 段(text/49-ch15-03-15-3-our-approach.txt:71,搜「three-part loss function」)。原文:第一级用模板网格的多视角渲染训一个随机初始化的立体表示;第二级面临取舍——把距离场网络冻住可以保证形状不变,但那只是给光身子贴图,忽略了几何和纹理同样重要;所以改成保留原有两个子网络、再引入一个额外的颜色网络,三者共享同一个距离场网络:原来那对负责重建模板,新的那一路负责风格化;第二级的损失 = 重建 + CLIP 管纹理 + CLIP 管几何。 2

  9. 出处:同上第 81 段(text/49-ch15-03-15-3-our-approach.txt:81,搜「the light direction is sampled within a small range」)与第 85 段(text/49-ch15-03-15-3-our-approach.txt:85,搜「improves the uniformity of the generated textures」)。原文:无纹理渲染要先由距离场的梯度沿光线累加出法线,再采一个随机光照方向;光照方向必须在相机方向附近的小范围内采(极角与方位角各加一个 ±π/4 内的均匀扰动),否则光与相机分处模型两侧,几何细节就看不见;另外给彩色渲染也加随机明暗,实测能提升纹理的均匀性。消融里的对照见 text/50-ch15-04-15-4-experiments.txt:33(搜「textures tend to appear excessively dark」)。

  10. 出处:同上第 97 段(text/49-ch15-03-15-3-our-approach.txt:97,搜「Gaussian-blurred chessboard」)、第 103 段(text/49-ch15-03-15-3-our-approach.txt:103,搜「predominantly focused on the front side」)与第 107 段(text/49-ch15-03-15-3-our-approach.txt:107,搜「the face of Steve Jobs」)。原文:随机背景有四种(纯黑、纯白、随机高斯噪声、随机块大小的高斯模糊棋盘格),目的是让 CLIP 更关注前景、防止生成飘浮或断开的体块;随机相机用「看向点 + 相机位置 + 上方向」的方式采样,看向点从正态分布采后裁到 ±0.3,半径在 1 到 2 之间均匀采,方位角按正态分布采以便大部分迭代都看正面;语义提示增强则在外观描述之外额外造出「某人的脸」和「某人的背面」两句,每四次迭代把相机的看向点调到脸部中心,用「脸」那句直接监督——因为人对面部特征格外敏感。

  11. 出处:同上第 123 段(text/49-ch15-03-15-3-our-approach.txt:123,搜「lacks the ability to evaluate the smoothness」)。原文:经验上 CLIP 不适合直接评估动作序列与自然语言描述之间的相似度,而且它没有评估动作序列平滑性或连贯性的能力;但 CLIP 很擅长评估一张渲染出来的人体姿势与一句描述的相似度,所以可以用它来引导单个姿势的生成,再把相似的姿势当作生成动作序列的参照。 2

  12. 出处:同上第 177 段(text/49-ch15-03-15-3-our-approach.txt:177,搜「place more emphasis on reference poses」)、第 181 段(text/49-ch15-03-15-3-our-approach.txt:181,搜「overly smoothed」)与第 187 段(text/49-ch15-03-15-3-our-approach.txt:187,搜「does not ensure the correct ordering」)。原文三条:第一条最小化每个参照姿势与序列中最近那一帧的距离,并按相似度排名加权,排名越前权重越大;第二条是相邻帧差之和取负,因为只用第一条会让生成的动作过度平滑,加大它的系数动作会更剧烈;第三条逐帧算与文本的相似度并用一个随帧序号递增的系数加权,因为第一条不保证候选姿势的先后顺序,缺少顺序监督会导致不稳定、不一致的结果。

  13. 出处:同上第 7 段(text/51-ch15-05-15-5-discussion.txt:7,搜「especially when zoomed in」)与第 9 段(text/51-ch15-05-15-5-discussion.txt:9,搜「out-of-distribution poses」)。原文四条:弱监督加上 CLIP 的低分辨率使结果在放大时不理想,作者指出换成图像扩散模型、用分数蒸馏采样能得到更高质量;同一句提示很难生成有明显差异的结果,因为同一句话的 CLIP 文本特征不变、优化方向固定;码本设计使分布外的姿势生成不了;没有视频版的 CLIP,所以生成不了有风格的动作序列,作者认为用配对的动作–文本数据训一个文生动作扩散模型是更实际的路。

  14. 出处:同上第 13 段(text/51-ch15-05-15-5-discussion.txt:13,搜「the generated avatar is typically male」)。原文:外观提示设成「doctor」时生成的多半是男性,设成「nurse」时多半是女性,这反映出训练 CLIP 所用的大规模互联网数据里可能固有的性别偏见;此外这类工具广泛可得之后,可能被用来制作名人的虚假视频,带来滥用风险与负面社会后果。