为了一段演示,停更两个月
停更的两个月 · 第 1 篇,共 4 篇
这两个月我一篇都没写。这不在计划里。
七月的时候我讲过 MoVox 是什么:它会读,会说,也会剪,只是画面那一块还是灰底板。我当时还说,接下来要分别写许可、硬件和技术栈。结果一篇都没写,我转头做演示去了。
我想要的,是一段能放到网上的片子。从一回书里截三十秒,屏幕上是水墨,有声音在念,字幕跟着念到的字走。主页上到现在还留着一块空位,写着”演示片段即将上线”。我实在不想对着那块空位,继续一篇接一篇地往下讲。
我没想到的是,光是画出一组我自己愿意验收的图,就把整个夏天剩下的时间都搭进去了。
这是那段时间里的第一篇笔记,一共四篇。另外三篇,一篇讲那本书,一篇讲声音,还有一篇讲我现在同时在用两台电脑。这几件事放在一起讲不清楚,所以分开写。这一篇,讲的是我为什么停更。
灰底板换成了画。可它还不是演示。
作画智能体那个位置,七月还是个空壳,现在坐进去了一个真正的图像模型。我做了一个验收页面,角色的脸、道具,我一张一张看,行就过,不行就打回去。还有一道工序会把一回书读完,定下每一幕里有谁、各自站在哪儿,再让模型画一张关键帧(keyframe)。剪辑智能体七月只能把声音和字幕铺在空白底板上,现在底下垫的是画了。
所以第一回有画了,72 幕,一幕不少。上周我坐下来,把这 72 张一张一张亲手审了一遍。审完我就知道,这些画一张都发不出去。
72 张里,我标了 29 张。本该是结义兄弟的两个人,长着同一张脸。关羽的青龙偃月刀,刀柄短了一大截。一个人明明在一顶帐篷里说话,几秒钟之后就换到了另一顶帐篷里,因为他那段长独白被切成了两半,每一半各自配了一间屋子。该有三个人的场面,画面上只有一个,神情还有点茫然,好像另外两个刚出去了。
这些都不是”模型不会画水墨”。画本身往往挺好看的。可是好看又画错了,比灰底板还糟,因为灰底板至少不会假装自己已经画好了。
我花了好几个星期去调那个画画的模型。可很多时候,是交给它的题目本身就出错了。
这句话,我真希望八月一开始就想明白。
光说道理太容易,我们拿一个具体的例子来看。第一回,卢植在帐中说话:一个人,一顶帐篷,一段话,书里并没有让他挪地方。可流水线还是把这段话切成了两幕,原因只是这一段的音频太长;而每一幕的场景,又都是从一张白纸开始各自编出来的。于是前一幕是”军营帐内,夜色沉沉,帐中点着几盏油灯”,后一幕是”一间低矮的军帐内,烛火微弱”。同一顶帐篷,画成了两间屋子,话说到一半人就换了地方。这两帧我都标了。有一阵子我还以为是图像模型看不懂中文。其实不是。写画面提示词(prompt)的那一步,从头到尾只看得到眼前这一幕,这一回前后发生了什么,它根本看不到。所以连续性不是做得差,是从设计上就没有。
这一处后来修好了。话长,可以拍成两个镜头,因为音频就是那么长;但不能画成两张画。同一个人、同一个地方、一口气说下来的一段话,两个镜头共用一张关键帧,变的只是镜头的运动。时间上怎么切,照旧;多出来的那间屋子,不要了。
再说三兄弟。刘备、关羽、张飞是结义兄弟,书里常常只写”三人”,因为读者看了上文,自然知道是哪三个。流水线却不知道。它对”这一幕准许谁上场”只记得上一幕。只要中间插进一幕只有刘备开口的戏,这份记忆就被清空了。下一幕再写”三人”,名单里能用的名字只剩刘备一个。于是提示词开头明明写着要画三兄弟,递给模型的参考图却只有一张。
我原先一直把”三兄弟的脸糊成一个人”当成画画的问题来对付:加遮罩,多给几张参考图,换着法子把三张脸塞进同一次生成里。其中有一部分确实是画画的问题,而且到现在还没解决。可是等我回过头去查模型到底被要求画什么,才发现 72 幕里,有 13 幕的提示词要画的人,名单里根本没有。叫它画三个人,只给它一张脸。换一个再好的模型,也变不出名单里没有的那两个人。
修法一点也不花哨,就是几行规规矩矩的代码,而不是更聪明的提示词。这个项目里真正管用的修复,大多是这个样子。记住最近五幕,而不是只记一幕。书上写着三个人,出场名单就不许少于三个。名字缩成一个字,比如”玄德谓关、张曰”里的”关”和”张”,也要认得出来。改完以后,这类冲突从 13 幕降到了 6 幕。剩下的 6 幕是另一个问题,而且更麻烦:角色表里只收开口说过话的人。一个人发号施令、上阵厮杀、最后战死,只要他没有一句”曰”,角色表里就没有他,模型手里自然也就没有他的脸。这个还没修。
修完还有一个副作用,得说在前面。要画三个人以上的场面,从 15 幕变成了 24 幕,这一回看上去反而更差了:以前少画两个人,画面还干干净净;现在真去画三个人,脸就开始糊在一起。这个交换我认。少画的人,后面再也补不回来;脸重复,至少是一个已经知道的问题。我之所以要特别提一句,是因为你要是只看我标了多少帧,会觉得这次修改是在倒退。但是那个数字,不是结论。
一个数字,往往不是结论。
我还做了另一个智能体,用的是视觉模型(vision model),专门看画好的帧,把坏的挑出来。不然每天晚上 72 张图,只能靠我一双眼睛。它不是流水线上新添的一道工序,主页上那五个位置,还是那五个环节;它是坐在验收关口上,陪我一起看的。然后我自己把第一回 72 张全部审了一遍,拿来和它对。
我标了 29 张,它标了 21 张。两个数看着挺接近,其实差得远。我标出的 29 处毛病,它漏了 15 处;另外还多标了 7 张我觉得没问题的。召回率(recall)48%,也就是真毛病它抓到了多少;精确率(precision)67%,也就是它标的里面有多少是真毛病。两个总数之所以凑得那么近,是因为漏掉的和多标的正好互相抵消了。两边只要有一方标过的,一共 36 张,双方意见一致的只有 14 张,也就是 39%。
这个审查智能体我还在用,但它只是帮我先筛一遍的工具,不是一把量尺。问题是,在这之前我已经拿它的计数判过好几次实验的输赢,其中有一次,两边只差了 38 帧里的 2 帧。两帧,根本就在误差范围之内。那次实验测到的,不是我以为它测到的东西。这一点我不打算粉饰。
同样的错误,我在文字那一头也犯过。那是下一篇的内容,这里先不抢它的结论。简单说就是:一个看上去很健康的数字,底下可能是一团乱麻。这件事,我已经在同一条流水线的两个不同位置上,各撞见了一次。
看着像提示词没写好的问题,有时候跟提示词根本没关系。
有两个问题,实打实地花掉了我好几个星期,这里简单说说。
张飞的丈八蛇矛。一开始道具描述里写的是”矛头呈三棱形且宽大锋利”,模型就老老实实照着画,结果他出场的每一幕,手里拿的都是一把带倒钩的戟。我改成”细长如蛇身蜿蜒”,这回倒好,它真画了一条蛇,盘在矛杆上。书里兵器的名字大多是比喻,模型却只认名词。“不”字也是一样:在正向提示词里写”不要什么”,等于亲手把那个东西塞了进去。它听不见那个”不”,只听得见后面的名词。
关羽的青龙偃月刀,我只想把刀柄加长,别的一概不动。可图像模型就是改不了比例:一次编辑的力度大到能把刀柄拉长,刀头也就跟着重画了。最后我写了一小段程序,直接在像素上把刀的下半截顺着刀杆往下挪,画里别的地方一笔不动,只是刀变长了。量长短这种事,该用尺子,而不是扩散模型(diffusion)。
所谓”演示还要再等等”,实际上就是这个样子。不是卡在某一个难题上,而是一大摞问题,看上去全是”这张画画错了”,可真正出在画画模型身上的,只有其中一部分。
剩下的,是我暂时还没法用一条规则解决的那个。
刘备、关羽、张飞三个人同框,画出来总是不像三个不同的人。同一个时代,在模型对这部书已有的印象里,脸差不多,胡子也差不多。水墨也帮不上忙,它不画毛孔,也不画能让人认出是谁的下颌线,给你的只有颜色和一个轮廓。三个人挤进同一个镜头,图像模型就开始把他们平均成一个人。
模型能接收的参考图只有三个位置,放的是我验收过的角色图,用来告诉模型这一帧里的人是谁。我原先是按谁在整部书里分量更重来排这三个位置的。结果这一幕真正的主角,如果在全书里只是个配角,就排不上号,画出来成了一个面目模糊的路人。改成按这一幕里谁更重要来排,这一类画面就好了。可是对三兄弟没用:他们三个都是主角,三个位置刚好放得下,偏偏第三个位置是最弱的。最近一次出图还暴露了一个坑:要是从名单里拿掉第三个兄弟,句子里却还写着”三人并肩立”,模型并不会回头去改那句话,而是干脆放弃这个站位,另画一个场面。渲染这一步能删掉一个分句,却没办法让前后的文字跟着改过来。
长远看,出路不在这三个位置上,而是角色 LoRA。LoRA 是 Low-Rank Adaptation 的缩写,中文叫低秩适配,说白了就是一次小规模的微调(fine-tune):现成的图像模型整体不动,只教它记住某一张脸,以后画这个人都带着这张脸,而且不占那三个参考图的位置。可是每一位兄弟,我手上验收过的图都还不够训练一个。所以这条路先放着,还没开始。名字写在这里,不等于已经做出来了。
眼下我选的是另一条路,靠的不是模型,而是分镜。每一帧里能认出脸的人最多两个,留给正在说话的那一位。真正非三个人不可的场面,比如桃园结义,就从背后拍。这是个权宜之计,我自己清楚。但我宁可先交出一个可用的权宜之计,也不想干等着一套训练数据。
还有一件事,得老实交代。
这几个星期,我一直在把一张张静止的画打磨得更好,却一次也没有把一整回从头到尾看完过。等我终于退后一步,把整条流水线从头看一遍,该先做什么其实一目了然:先让一整回能播起来,毛病全带着也无所谓,然后坐下来看,看完再决定哪些值得修,而不是对着一整页缩略图去判断。现在第一回已经能从头播到尾了:有画,有声音,有字幕,每张画上镜头还会慢慢推移。我也拿动画智能体要用的模型,试了几张关键帧:画动起来以后,人脸和水墨都还在,只有一场所有东西都在动的战斗戏没撑住。
所以,现在有一回能播的片子,但还是没有一段我愿意发出去的。没经过我验收的画,我不会发。
七月说好的许可那篇,还欠着,没打算不写。只是消失了两个月,回来第一件该讲清楚的事,不是它。
下一篇回到那本书。七月里我说阅读智能体已经能用了,可那时候的”能用”,其实是 99.96%。差的那一点点,就不是原来那本书了。