原文标题:《让 AI 学会画手的方法来了,给输入加个 buff 就能控制生成细节,华人小哥出品丨 GitHub 4.6k 星》
给画画 AI 加个 buff,画起图像就像开了挂。
加个人体骨骼绑定 buff,Stable Diffusion 直接快进到生成 3D动漫:
加个抽象到爆的草图buff,AI 变着风格生成“完全一致”的狗子:
就连号称“AI 杀手”的手部细节,也能在控制之下画得惟妙惟肖:
这个名叫 ControlNet 的新 AI 插件,可以说是给画画 AI 来了最后的“临门一脚”——
原本 AI 无法控制的手部细节、整体架构,有了它之后,加上 Stable Diffusion 这样的扩散模型,足以生成任何人们想要的图像。
发出不到两天,ControlNet 就在 GitHub 上火了,目前已经狂揽 4.6k 星:
△“让我们控制扩散模型”
各种效果图更是在推特上爆火,试玩过的网友直呼:
游戏结束!
所以,这个 ControlNet 究竟给扩散模型加了什么 buff?
ControlNet 的原理,本质上是给预训练扩散模型增加一个额外的输入,控制它生成的细节。
这里可以是各种类型的输入,作者给出来的有 8 种,包括草图、边缘图像、语义分割图像、人体关键点特征、霍夫变换检测直线、深度图、人体骨骼等。
那么,让大模型学会“按输入条件生成图片”的原理是什么呢?
ControlNet 整体思路和架构分工如下:
具体来说,ControlNet 先复制一遍扩散模型的权重,得到一个“可训练副本”(trainable copy)。
相比之下,原扩散模型经过几十亿张图片的预训练,因此参数是被“锁定”的。而这个“可训练副本”只需要在特定任务的小数据集上训练,就能学会条件控制。
据作者表示,即使数据量很少(不超过 5 万张图片),模型经过训练后条件控制生成的效果也很好。
“锁定模型”和“可训练副本”通过一个 1×1 的卷积层连接,名叫“0 卷积层”。
0 卷积层的权重和偏置初始化为 0,这样在训练时速度会非常快,接近微调扩散模型的速度,甚至在个人设备上训练也可以。
例如一块英伟达 RTX 3090TI,用 20 万张图像数据训练的话只需要不到一个星期:
作者基于当前大火的 Stable Diffusion 进行了具体实现,主要架构如下:
针对不同的输入,作者也给出了对应不同的模型,生成效果也都不错。
例如这是采用 Canny 边缘检测算法检测出的边缘,用于生成图像:
这是基于霍夫变换的直线检测算法生成的直线草图,用于生成各种风格的室内设计:
当然,自己作画也可以,例如这是基于用户草图生成的小龟:
提取深度图,并让 AI 生成一幅相似的图像,直接举一反五:
语义分割下的游泳池图像,不仅水里有倒影细节,建筑也变化多样:
不过目前来看,最受欢迎的还是基于人体姿态估计算法,控制动漫人物的动作生成:
看到这里,是不是已经有了大胆的想法?(手动狗头)
这个项目的作者 Lvmin Zhang,2021 年本科毕业于东吴大学,目前在斯坦福大学读博。
他最出名的项目之一,是 2017 年开发的 AI 上色插件 style2paints,目前 GitHub 上已经有 15.9k 星。
style2paints 也经过了好几次迭代,目前即将更新到第五版。
这是第四版的效果,只需要线稿,AI 就能自动给你的图像完成上色:
除了这个项目以外,他也是 CV 顶会的常客了。
值得一提的是,现在已经有基于 ControlNet 的国内产品上线了。
这个产品名叫稿定 AI,包含照片转插画、插画线稿上色、插画优化翻新等功能,正是基于 ControlNet 打造。
作画效果大概是酱婶的:
感兴趣的小伙伴们可以去试玩一波了~
项目地址:
https://github.com/lllyasviel/ControlNet
参考链接:
[1]https://lllyasviel.github.io/Style2PaintsResearch/
[2]https://twitter.com/search?q=controlnet&src=typed_query
[3]https://www.gaoding.com/ai
本文来自微信公众号:量子位 (ID:QbitAI),作者:萧箫
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。