让AI学会画手的方法来了,给输入加个buff就能控制生成细节,华人小哥出品丨GitHub 4.6k星

“让我们控制扩散模型”

萧箫 发自 凹非寺
量子位 | 公众号 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

版权所有,未经授权不得以任何形式转载及使用,违者必究。