TwilightRain | 我只是想让 AI 画张画,结果它先学会了修画室

我只是想让 AI 画张画,结果它先学会了修画室

约 6059 字 · 阅读约 15 分钟

事情的起因其实非常简单。我想试试 AI 绘画。

我觉得打开网页、输入一句话、等几秒钟就能拿到图片的在线服务固然不错。

但是万一,我让它润色一下我的自拍,它把我的大头照上传了,咋办?

所以我想把绘画模型放在自己的电脑里,让它在本地画画。

至于具体怎么实现,我其实没有特别明确的计划。

我只知道自己已经准备好了一个绘画模型,电脑里也有一套可以运行它的工具。

剩下的事情,我打算交给 AI。

我的要求也不复杂,参考已有的图片,画一张风格相近的新图。画面里有一个橙色系的女孩,只不过原来的女孩是躺着的,我希望她换成趴着的姿势。

就这么一点要求。

我当时甚至已经开始期待成品了。

毕竟,AI 都能写文章、做表格、编程序了,让它帮忙画张画,应该不算什么大事吧?

后来我才知道,自己对「不算什么大事」这几个字,存在相当严重的误解。

一、画还没开始画,画室先出了问题

如果把 AI 绘画比作请画家作画,那么我手里的这套工具,就相当于一间刚刚装修好的画室。

里面有画笔、颜料、画布,还有一位据说很会画画的画家。

问题是,这间画室还没有真正开张过。

我把要求交给 AI,让它自己安排。

它检查了一下现有的东西,决定先搭建一套最基本的绘画流程。

这个过程有点像给画家安排工作,先拿到参考图片,再理解我的要求,接着动笔,最后把成品保存下来。

听起来很合理,AI 也确实很快完成了准备。

它开始第一次尝试。系统报错了,我还没意识到问题有多麻烦。

毕竟第一次使用新工具,遇到一点小毛病很正常。

AI 检查了一番,发现问题出在一个名字上。

简单来说,它给画室里的某个抽屉贴了一张标签,写着「参考图片一」。

可是画室的管理系统要求,这张标签必须写成「图片区·参考图片一」。

少了前面几个字,管理系统就不认。

这就有点像学校教务处要求提交「高二三班张三」的作业,你只写了「张三」。

人一看就明白是谁,机器却坚持说找不到。

AI 找到了原因,修改了标签。这回成功了。

我以为事情终于走上正轨。结果没过多久,我打开绘画界面,按下运行按钮。

熟悉的错误又出现了。我看着屏幕,陷入沉思。不是刚修好吗?

二、刚修好的错误,怎么又活过来了?

这次 AI 也没有立刻给出答案。它重新检查了画室,发现了一件很有意思的事情。

原来,这间画室有两扇门。一扇门是 AI 自己使用的,可以直接把任务交给绘画系统。

另一扇门是给人使用的,也就是我眼前那个可以拖动方框、连接线路的绘画界面。

AI 刚才修好的,是第一扇门。第二扇门里,还放着旧版本的任务单。

于是就出现了非常滑稽的一幕,AI 从自己的门进去,一切正常。我从界面进去,同一个错误原封不动地出现。

更麻烦的是,旧任务单还不止一份。

电脑里有两个地方保存着这些绘画流程,其中一处还会在启动时把自己的内容复制到另一处。

这意味着,就算今天修好了,如果没有处理干净,明天重新打开画室,旧错误还有可能回来。

AI 只好把相关的任务单全部检查一遍,统一修改,再确认重新打开时不会恢复旧版本。

这倒是很像生活中的某些场景。比如老师修改了课件,结果上课时打开的还是昨天的版本。

当时那几行报错
1
TypeError: unexpected keyword argument 'image_1'

这个节点的参考图输入是个会自动扩展的槽位,名字从 image_1 排到 image_16。而在 API 报文里,键必须写成带点的路径,

1
"images.image_1": ["9", 0]

扁平写法能过提交校验,死在执行阶段。根因在读得到的那几行源码里,那一层用点号把前缀和槽位名拼起来,所以在它眼里 images.image_1 和 image_1 是两个不同的东西,前者能对上前缀,后者对不上。

改完,命令行通过。

同一个报错,从界面回来。我贴了一份界面上的报错过来,问这是怎么了。一模一样的 TypeError,一模一样的 image_1。

这次的原因不在代码里。工作流存成 JSON 之后,那个槽位是这么一行,

1
{ "localized_name": "image_1", "name": "image_1", "shape": 7, "type": "IMAGE", "link": 11 }

三、我的电脑不大,AI 却想开一家画廊

画室终于可以正常接收任务了。

但还有一个现实问题。我的电脑并不是专门用来训练大型 AI 的昂贵设备。它只有一块显存为 8GB 的显卡。

显存可以简单理解成显卡工作时使用的桌面。

桌面越大,能同时摊开的东西越多。

而我准备的绘画模型,光是主要文件就已经超过了 10GB。

这就像你买回来一套很大的绘画工具,却发现工作台根本摆不下。

好在 AI 并没有直接宣布放弃。

它检查了模型的特点,发现可以采用一种更节省空间的运行方式。

有些暂时用不到的东西,可以先放在电脑的其他地方,需要时再拿出来。

就像画家不必把所有颜料同时摆在桌面上。

经过调整,这套模型居然真的能够在我的电脑上工作。当然,代价是速度。

AI 随后测试了两种不同的画面尺寸。

较小的画面,大约几十秒就能完成一次绘制。

换成更大的画面,等待时间就明显增加,整次任务需要两分多钟。

我这才发现,原来「画得更大」并不是把图片简单放大。

它意味着画家需要处理更多细节,也意味着电脑需要花费更多时间。

不过,对于一个刚开始折腾 AI 绘画的人来说,这已经相当令人满意。

毕竟,最初我还担心电脑根本带不动。现在至少可以确定,这间画室虽然不大,但确实能开张。

四、别人家的豪华画室,搬过来却不能用

解决了基础问题之后,AI 开始考虑怎样让绘画更方便。

这时候,我找到了一套别人分享的绘画方案。

打开一看,密密麻麻,全是方框和连线。

足足一百多个步骤。

如果说我们刚刚搭好的流程是一间小画室,那么这套东西看起来简直像一家设备齐全的美术工厂。

我自然有点心动。

既然别人已经做好了,直接拿来使用,不就省事了吗?

于是我让 AI 检查一下,这套方案能不能在我的电脑上运行。

AI 起初给出了一个令人振奋的消息,需要的工具似乎都在。

但它没有停在这里,而是继续核对。

结果发现,第一次检查的方法出了问题。

这有点像你去仓库询问,「有没有油画颜料?」

仓库管理员没有回答,只递给你一张盖着「已受理」印章的空白纸。

你却把这张纸当成了「有货」的证明。

AI 第一次检查时,就犯了类似的错误。

它重新核对清单,结果发现,这套豪华方案不仅缺少十几种工具,还缺少一批配套材料。

为了避免误判,它又实际打开绘画界面,尝试运行。

结果也很明确,跑不起来。这套方案并不是简单补几个文件就能使用。

要让它正常工作,还需要解决一整串额外的问题。

AI 最终放弃了直接照搬的计划。

我倒没有觉得特别遗憾。别人用得很好的东西,不一定适合自己。

别人家的厨房有十几种专业设备,不代表你必须把它们全部买回来,才能做出一顿好饭。

既然豪华工厂搬不过来,那就继续经营自己的小画室好了。

五、我只想改一个地方,AI 却可能重画整张图

接下来,事情终于开始接近我最初的愿望。

我希望 AI 不只是凭文字生成图片,还能参考已有的画面进行修改。

比如,一张画里的人物、背景、衣服和装饰都已经很好了。

我只想改其中一个小地方,其他部分最好保持原样。

这听起来很简单。

但 AI 绘画有一个麻烦的特点,你告诉它「只改这里」,它不一定真的只动这里。

它可能顺手调整背景,改变光线,甚至让人物的其他细节也发生变化。

就像你请一位画家修改人物的帽子。

第二天去取画,却发现他不仅换了帽子,还重新画了衣服,顺便把窗外的天气也改了。

画家可能觉得这样更协调。但我不一定愿意。

AI 为此设计了一套新办法。先在原图上划定一个区域,告诉绘画模型,这里可以重新画。其他地方不要动。

等新内容画好,再把修改后的部分放回原图。

这样,原来不需要修改的部分,就能直接保留下来。

听起来像是给图片做一次精细的修补。

不过,真正实现时又出现了一个意想不到的问题。

AI 发现,用来标记修改区域的东西,如果直接放进原始图片里,绘画模型可能会把它误认为图片本身的一部分。

换句话说,我原本想告诉画家「这里需要修改」。

画家看到的却可能是「这里原来就是空白的」。

两者完全不是一回事。

于是 AI 改变了方案。

它把原始图片和修改范围分开保存。

一份告诉画家原来的画面是什么样。另一份专门告诉它哪里可以修改。再把结果组合起来。

经过测试,这套方法终于跑通。修改范围之外的原图,可以原样保留。

这一次,我们的小画室总算有了一项真正实用的本领,不是每次都重新画一张,而是可以只修改画面中需要改变的地方。

六、我说参考第二张,它偏偏看上第三张

到这里,我已经开始觉得事情有希望了。

AI 不仅能够绘画,还能够同时参考多张图片。

这正是我需要的功能。

因为很多时候,我们想要的效果并不完整存在于某一张图片中。

可能第一张的人物姿势很好,第二张的服装漂亮,第三张的头饰更符合想象。

如果能把这些特点组合起来,就方便多了。

于是我让 AI 按照第二张参考图进行修改。

结果出来之后,我发现有点不对。

它好像参考了第三张。

我把情况告诉 AI。它重新做了一组对照测试。

先要求使用第二张,再要求使用第三张。

结果非常有趣,两次生成的内容,都明显偏向同一张参考图。

也就是说,AI 并没有可靠地理解我所说的「第二张」「第三张」。

这件事乍看有点不可思议。

毕竟,我们平时看图片时,第一张、第二张、第三张,分得清清楚楚。

但绘画模型理解多张图片的方式,并不一定和人类看相册的方式相同。

AI 于是换了一种表达方法。

不再简单地说,「参考第二张图片的头饰。」

而是改成,「参考那张带有黑色蕾丝和深红色玫瑰装饰的头饰。」

结果这次,它找对了。

同样的参考图片,同样的绘画设置,只是把要求说得更具体,结果就发生了变化。

这件事和日常生活中与人沟通的经验很相似。你告诉学生「把第二段改一下」,对方可能还要数第二段是哪一段。

但如果你说「把描写秋天落叶的那一段改得更生动」,意思就清楚得多。

和 AI 沟通时,具体描述事物的特征,有时比单纯告诉它编号更可靠。

七、从修改图片,到凭空画出一张图

到这里,画室已经能够完成一件重要的事,拿着已有的图片,根据要求进行修改。

但我最初想折腾的是 AI 绘画。

总不能永远拿着别人的图片改来改去。

我还希望有一天,自己只需要描述一个场景,AI 就能从空白画布开始,把它画出来。

比如,黄昏时分,一间安静的旧书店,窗外正在下雨,暖黄色的灯光落在木质书架上。

没有参考图片。只有文字。能不能画出来?

于是,我们开始搭建另一套绘画流程。

这一次,AI 不再需要先拿到一张图片,而是直接根据文字创建画面。

过程中也遇到了一些限制。

例如,现有工具中适合这套模型的空白画布,只能直接生成正方形。

如果想画成长方形,就没有之前那么方便。

AI 检查了原因,发现并不是随便调整一个数字就能解决。

这套绘画模型对画布的内部格式有自己的要求,不能直接套用其他模型常见的办法。

它没有强行拼凑一套看似能用的方案,而是先按照现有条件完成了正方形画布的绘画流程。

至少现在,画室已经具备两种能力,一种是根据文字,从头画出一张图片。另一种是参考已有图片,对画面进行修改。

对于刚开始尝试本地 AI 绘画的我来说,这已经比最初预想的进展大得多。

八、最后才发现,画室还会偷偷恢复旧布置

就在我以为事情终于可以结束的时候,又出现了一个小插曲。

我找到了这套绘画模型官方提供的工作流程。

既然是官方版本,自然值得拿来比较一下。

于是我让 AI 检查,我们自己搭建的流程,和官方提供的到底有什么区别?

结果相当令人欣慰。主要步骤、连接方式和关键设置都一致。

不同的地方,主要是示例文字、随机设置,以及保存图片时使用的名称。

也就是说,AI 之前根据说明自己搭建的流程,并没有漏掉重要环节。

这让我放心了不少。不过,检查过程中,AI 又发现了一个容易被忽视的问题。

还记得前面那两份绘画任务单吗?

原来,每次启动画室时,其中一个文件夹里的内容都会被复制到另一个文件夹。

而且,这种复制可能直接覆盖已有内容。

这就意味着,你今天在绘画界面里认真调整了半天,还点击了保存。

明天重新启动,昨天的修改却可能不见了。启动程序又把旧版本搬了回来。

这简直像一间神奇的教室。放学前明明已经重新布置了桌椅。

第二天早上进门,却发现所有桌椅又恢复成了上周的样子。

AI 最后统一整理了两边的文件,让它们保持一致。

多余的版本也进行了清理。

到这里,这间折腾了两天的小画室,才算真正收拾妥当。

九、两天过去,我终于拥有了一间能用的 AI 画室

回头看看,这两天发生的事情实在有些出乎意料。

我最初只是想让 AI 帮忙画张画。

具体一点,是让参考图片里的女孩换个姿势。

结果,AI 先后忙着修理绘画工具、处理反复出现的错误、研究电脑能不能带动模型、检查别人分享的方案、尝试局部修改、纠正参考图片的识别问题,最后还得防止保存好的成果被旧文件覆盖。

如果把这些过程全部写成技术记录,大概就是一篇充满陌生名词、参数和错误信息的文章。

但站在一个普通使用者的角度,我看到的其实是另一件事。

我提出一个愿望,AI 尝试把它变成现实。

遇到问题时,它需要寻找原因。

发现方案不合适时,它需要重新选择。

第一次判断错了,就得重新检查。

有时候它甚至需要推翻自己刚刚得出的结论。

而我不必从第一天起就理解所有工具的内部原理。

当然,这不意味着 AI 什么都能做对。

恰恰相反,这两天里,它也犯过错误。

它曾经把一次没有得到明确结果的检查当成成功。

它也曾经以为修好了一个问题,结果另一个入口还留着同样的毛病。

有些问题,是直到真正运行起来才暴露的。

所以,我越来越觉得,使用 AI 并不是把一句话交给它,然后闭着眼睛等待奇迹。

更像是和一个知识丰富、行动积极,但偶尔也会犯迷糊的助手一起完成任务。

你需要告诉它自己想要什么。

看到结果不符合预期时,需要指出来。

至于具体该怎么修、怎么试、怎么安排步骤,可以让它承担更多工作。

这可能才是普通人接触这些新工具时,最有意思的地方。

过去,想在自己的电脑上搭建一套 AI 绘画工具,意味着先学习大量陌生知识。

现在,至少可以尝试换一种顺序。

先有一个想法。

让 AI 帮忙寻找实现的方法。

在一次次尝试中,慢慢理解自己正在使用的东西。

不必等到什么都学会了,才允许自己开始。

当然,这次折腾也留下了一个颇为滑稽的事实,我原本是来学画画的,结果前两天几乎都在装修画室。

好消息是,画室终于能用了。

接下来,总该轮到真正画画了吧?

希望如此。

毕竟,我最初想要的那张画,还在等着呢。

评论