主要观点总结
本文记录了一个用户如何通过分析可行性、前期准备、完成第一单到决定金盆洗手的过程,其中穿插了AI技巧和技术实践,讲述了自动化流水线的构建。文章还分享了技术细节,并强调AI不能代替插画师,但能让掌握Photoshop的人如美工代替插画师。最后,作者因插画师退出和修改量大等问题,决定关门大吉,并反思了AI对生产力的提升以及AI到稳定商用的距离。
关键观点总结
关键观点1: AI在插画领域的应用
作者通过AI技术生成儿童插画,并探索了自动化流水线的方法,提高了生产力。
关键观点2: AI技术的实践和挑战
文章详细描述了使用AI技术时遇到的难题和解决方案,如文化原因导致的交警服问题、跳绳的小孩的修复等。
关键观点3: 插画师与AI的协同工作
作者提到AI不能完全代替插画师,但能让美工类人员代替插画师,并探讨了插画师退出和修改量大的问题。
关键观点4: 对AI技术的反思
作者通过实际项目体验,反思了AI对生产力的提升以及AI到稳定商用的距离,认为AI和传统手段应结合起来使用。
正文
为准确还原客户想要的两种风格:水彩与扁平,自己训练模型不可避免。Lora 模型非常擅长解决这个问题。
说实话,玩 SD 和 ComfyUI 这么久,训练 Lora 这事我竟然还是第一次干。之前没有专门尝试,因为我确定训练模型会越来越简单,真有需要再临时学。这不现在只要在 Liblib 的图形界面里点点鼠标就可以完成了。
不过,训练过程还是有些设置项要考虑:如何裁剪图片、给训练图打什么标、训练多少轮,这些还是得好好琢磨。读了一篇别人的 LoRA 训练经验,解答了全部疑问:
-
训练图最好是方形图。我没有用 Liblib 的图像裁剪功能,而是自己写程序把图都裁剪成了方形。这样能把一些裁剪效果不好(比如人只剩半张脸、主体不完整)的图剔除掉,以保证模型训练质量。
-
风格类 Lora,模型特征无差别应用在整个画面所有元素上,完全不打标是个不错的选择。这样训练出来的 Lora,使用时不需要触发词,只要挂上 Lora,风格就出来了。
-
关注 LOSS 函数的变化趋势,训练轮次增加,LOSS 逐渐减少。但到达一定轮次,曲线趋于平缓,LOSS 几乎不再下降。如果不确定这是局部最小值还是全局最小值,看看模型的样例图也大概能判断。其实对于细节较少的非写实类图片,有 8-10 轮训练,效果就很理想了。
自动出图工作流
把训练好的 Lora 传到 Runcomfy 的存储里,资源就绪。搭建一个最基础的 Flux 文生图工作流,再挂上两个 Lora,一个手部细节优化 Lora,一个自己训练的风格 Lora。
这样就准备好了两套生图工作流,一套水彩风格、一套扁平风格。分别导出 API 格式文件,留待程序调用。
另一个核心工作流是高清放大。本质是基础的 Flux 图生图工作流,但有这几个区别:
降噪值设为 0.15,能保证图片高清放大时忠实于原图内容
挂了一个 4 步生图 Lora,它能让 Flux dev 生成图片时只需要 4 步(通常要 20 步),但质量降低,把 Flux dev 当 Flux schnell 用,以大幅减少生图时间。也不知道作者哪来的奇思妙想。这种用法很适合图像放大的场合,质量降低的影响很小,肉眼看不出来。
采样节点前后都接了 TTP_Image_Tile_Batch 节点。它的作用是把原图分割成许多小块,生成的时候,Flux 每次只专注画一个小块里的内容。由于注意力集中了,可以画得更细致、细节更加准确和丰富。最后怎么分割的就再怎么拼回来,以此达到高清放大的目的。
特别讲讲降噪值这个概念,想要 ComfyUI 玩得溜,这个概念必须深刻理解。我一直把它理解成在一堵汉白玉石墙上雕刻浮雕。比如说这墙有 1 米厚,降噪值为 1(最大值),就意味着你可以随心所欲地雕。整堵墙凿通,然后正反两面开工雕出个大卫像都没问题。降噪值如果为 0.15,也就是你只能动表面 15% 的厚度,里面的不能动,这样最终只能是浅浅的浮雕。
在文生图的情况下,这堵墙原本就是一块平板,没有任何图案。降噪值越大,AI 发挥的余地越大,所以一般都会开满。
但在图生图情况下,这墙上原本就雕有图像。如果你想一定程度保留原图的特征,降噪值反而不能开太大。一面九龙壁,你把降噪值开低一点,AI 只能动动表面,它就会把心思花在龙鳞龙须这些细节上,不至于把整条龙改成了迎客松。
手动修补工作流
经过测试,Lora 模型和生图、放大工作流可以稳定输出了。但为了应对各种可以预见的特殊修改,还是应该把手动修补的工具也准备好。虽然我打算丢给插画师,但得有 Plan B,如果插画师实在忙不过来,我自己还能临时顶一下。
手动修补工作流有这几个:
文生图局部重绘、图生图局部重绘、转绘
。
文生图局部重绘
,
用的是 Flux dev fill 模型,这个模型是专门用来局部重绘和扩图的。工作流其他方面和基础文生图一样,只是还挂了我训练的风格 Lora。当需要给人物加一顶帽子、换双鞋子,改改猫尾巴的形状,就用这个工作流。
图生图局部重绘
,用 Flux dev fill 结合 Flux redux 模型。要放入图中的物体,经过 Flux redux 的处理,能以合理的方式、相同的风格融入画面中,同时最大限度保持物体特征。Redux 无视文字提示词,图片是唯一的输入信息。这个技巧最常用来给电商模特换衣服。
转绘
,则是 Flux dev 基础模型和 Flux redux 的结合,给一张图片生成一个整体看上去差不多、但没有任何一处细节相同的仿制品。再挂上我的风格 Lora,就能把照片转绘成扁平或水彩插画,同时原图特征都尽量保持住。这是关键的自媒体洗稿技巧,把网图一转绘,既相似又避免盗图处罚,别人的图摇身一变,成了自己的原创内容。
之后所有的手动修改,除了 PS 和偶尔使用的豆包,都是这 3 个工作流交替使用搞定的。配合不同的降噪值使用,又能产生更多用法变化,解决不同的问题。
▍
搭建自动化生图系统
试稿的插画我是手动生成的,现阶段还在调试技术细节。同时,我也在一边搭建我的自动化出图系统。
两轮试稿通过后,客户已经打算给我派活了。但我的系统还没搭建完成,手动生成太耗时,所以这个单子我暂时推掉了,说等我系统完成开始接单。系统搭建完成后,我用第二轮试稿的任务又跑了一遍,非常丝滑。有了这套系统,我具体要做的事情只剩这几件:
1. 把客户的插图内容(Excel 中的一列)复制到我的多维表里,等 Deepseek 自动为每张插图生成绘图提示词。
2. 把多维表导出成表格文件,并把它放到我的程序目录下。
3. 运行 1 号程序(生成),它会从表格文件中找到所有绘图提示词,启动云端机器,每幅插图输出 4 张图片,全部完后自动关闭云端机器。
4. 手动挑选图片,如果某幅插图一张可用的都没有,就在多维表的重试列中打勾,之后再重复执行 2、3 步直到成功。
5. 运行 2 号程序(放大),它会启动云端机器,把挑选出的图都高清放大(童书是印刷品需要高清图片)。
6. 运行 3 号程序(分辨率),它会把放大后的图片转换成印刷所需的分辨率,并缩放到客户指定的尺寸。
7. 执行我准备好的 PS 批处理动作,给所有图片加上纹理细节。
8. 运行 4 号程序(整理),把处理好的图片按书籍分到不同文件夹,便于最终发送给客户。
这一套看似复杂,但手动操作其实很少。挑图费点时间,其他的环节我只负责按一下运行键,然后挂机下楼遛娃。
关键是来 100 张图也好、2000 张图也好,我都是这套流程。要是量大又急,我还可以改一改配置,用速度更快的云端机器。虽然成本略高一点,但机器成本和插画师成本相比,九牛一毛。
技术分享
要实现刚才提到的系统,就要把分散在不同工具里的自动化能力衔接起来。
一个完整的流程,最初的输入来自客户的 Excel 表格,其中一列是插图内容的简略需求描述。最终的输出是一个个项目文件夹,里面是图片文件。中间的复杂过程,能自动化的通通要自动化掉,难关只能自己一个个攻克。
飞书多维表生成绘图提示词
从简略描述到具体的绘图提示词,飞书多维表是最适合的工具。它能调用非常丰富的第三方 AI 模型,不局限于自家模型,可以实现复杂文本处理任务的自动化。
我的表格结构有点复杂,从上到下有图片表、人设表、项目表 3 层,另外还有两张维度表,用来定义两种风格的提示词和图片复杂度等级(不同复杂度价格不同)。上层表依赖下层表,从下层表中读取数据。下层表汇总上层表,用以统计图片量、估算营收。
从下往上讲。基础是项目表,定义了项目名称、所属月份、图片风格,汇总计算图片数量,根据每张图的复杂度去需求类型表里查出价格并求和,估算整个项目营收,同时也记录一些备注性质的信息。
上一层人设表,专为人物一致性要求而准备。如果是绘本类的书籍,要求主角服装样貌贯穿全书。这张表里定义了人物的名称,选择人物所属项目,并由 Deepseek 随机为该人物生成详细的外貌描述。此处给 Deepseek 的指令,要求它只关注人物外貌,忽略动作环境等会随场景而变化的因素。还要明确要求 Deepseek 定义发型发色、服装款式颜色等主要外貌特征,且保证人物都是中国人。最后,为了我自己浏览方便,还调用阶跃星辰的文生图 API,输出一列小尺寸缩略图。虽然有费用,但这个很便宜可以忽略不计。
上层的图片表变化最多,要展开讲讲。图片表每行都是一张具体的插图,客户表格里的需求内容往场景列(scene)一贴,多维表自带的免费豆包模型就会把描述总结成 10 个字以内的画面标题。这个标题既为了自己方便查找,也用来拼接出图片文件名。
然后,为每张插图选定所属项目(可以选好一行其他复制粘贴),就会有一列从项目表里读取该图片的风格,并把风格提示词作为前缀加到完整绘图提示词的开头。
如果画面里出现了主角,则在人物列选择人物。我准备了 3 个人物列,也就是说一个画面支持 3 个主角同时出现。人物列会从人设表里把外貌描述读取过来,作为完整绘图提示词的信息素材。
我还加了一列人工指令,当对画面有明确而具体的要求时,就直接写在这里。比如要求时间是夜晚、环境是户外。这也会作为信息素材。
接下来轮到 Deepseek 表演了。我让它参照需求列的内容用英文写绘图提示词,重点满足人工指令列的要求,其次满足一些通用要求:
-
-
-
外貌特征优先从主角信息里照抄,一个字都不能改。非主角人物,外貌再自由发挥。
-
-
-
Deepseek r1 能够漂亮地完成任务,绝大多数时候生成的提示词直接可用,准确且详细。不过,这里的 Deepseek 不是免费的,可以用火山方舟的 API。这部分成本比 Runcomfy 要低许多,不用太担心。
如果被这种层层关联的表结构绕晕了,我的建议是,认真弄明白多维表里的【单向关联】和【查找引用】这两种特殊列的用法,然后你就会发现这事也没那么难。
还有个问题是,飞书多维表个人免费用户一张表最多 2000 条数据,对于这个项目体量来说远远不够。所以图片表得滚动清理,不够用了就删掉旧的。因此我给项目表加了一列完成状态,打勾就完成了。图片表再把完成状态从项目表里读过去,就可以通过筛选一次性把已定稿的图片删掉,为新项目腾出空间。