“让我们控制扩散模型”
萧箫 发自 凹非寺
非常AI | 公众号 QbitAI
给画画AI加个buff,画起图像就像开了挂。
加个人体骨骼绑定buff,Stable Diffusion直接快进到生成3D动漫:
加个抽象到爆的草图buff,AI变着风格生成“完全一致”的狗子:
就连号称“AI杀手”的手部细节,也能在控制之下画得惟妙惟肖:
这个名叫ControlNet的新AI插件,可以说是给画画AI来了最后的“临门一脚”——
原本AI无法控制的手部细节、整体架构,有了它之后,加上Stable Diffusion这样的扩散模型,足以生成任何人们想要的图像。
发出不到两天,ControlNet就在GitHub上火了,目前已经狂揽4.6k星:
各种效果图更是在推特上爆火,试玩过的网友直呼:
游戏结束!
所以,这个ControlNet究竟给扩散模型加了什么buff?
给AI画画模型加buff
ControlNet的原理,本质上是给预训练扩散模型增加一个额外的输入,控制它生成的细节。
这里可以是各种类型的输入,作者给出来的有8种,包括草图、边缘图像、语义分割图像、人体关键点特征、霍夫变换检测直线、深度图、人体骨骼等。
那么,让大模型学会“按输入条件生成图片”的原理是什么呢?
ControlNet整体思路和架构分工如下:
具体来说,ControlNet先复制一遍扩散模型的权重,得到一个“可训练副本”(trainable copy)。
相比之下,原扩散模型经过几十亿张图片的预训练,因此参数是被“锁定”的。而这个“可训练副本”只需要在特定任务的小数据集上训练,就能学会条件控制。
据作者表示,即使数据量很少(不超过5万张图片),模型经过训练后条件控制生成的效果也很好。
“锁定模型”和“可训练副本”通过一个1×1的卷积层连接,名叫“0卷积层”。
0卷积层的权重和偏置初始化为0,这样在训练时速度会非常快,接近微调扩散模型的速度,甚至在个人设备上训练也可以。
例如一块英伟达RTX 3090TI,用20万张图像数据训练的话只需要不到一个星期:
作者基于当前大火的Stable Diffusion进行了具体实现,主要架构如下:
针对不同的输入,作者也给出了对应不同的模型,生成效果也都不错。
例如这是采用Canny边缘检测算法检测出的边缘,用于生成图像:
这是基于霍夫变换的直线检测算法生成的直线草图,用于生成各种风格的室内设计:
当然,自己作画也可以,例如这是基于用户草图生成的小龟:
提取深度图,并让AI生成一幅相似的图像,直接举一反五:
语义分割下的游泳池图像,不仅水里有倒影细节,建筑也变化多样:
不过目前来看,最受欢迎的还是基于人体姿态估计算法,控制动漫人物的动作生成:
看到这里,是不是已经有了大胆的想法?(手动狗头)
曾开发爆火AI上色插件
这个项目的作者Lvmin Zhang,2021年本科毕业于东吴大学,目前在斯坦福大学读博。
他最出名的项目之一,是2017年开发的AI上色插件style2paints,目前GitHub上已经有15.9k星。
style2paints也经过了好几次迭代,目前即将更新到第五版。
这是第四版的效果,只需要线稿,AI就能自动给你的图像完成上色:
除了这个项目以外,他也是CV顶会的常客了。
One More Thing
值得一提的是,现在已经有基于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