完美世界TA谈Stable Diffusion插件,ControlNet、Segment Anything
【GameLook专稿,未经授权不得转载!】
GameLook报道/在过去一年里,AI绘图的能力几乎是在以月为单位迅速进步、发展,游戏行业自然也抓住了这一机遇,大小游戏公司都在研究如何利用AI技术提高效率,降低游戏研发的成本。
而由StabilityAI发布的Stable Diffusion模型,因其开源、可商用等特点,自然也在游戏研发等商业场景中备受青睐,开源也为Stable Diffusion当下繁荣的社区提供了先决条件。
在近日亚马逊云科技举办的2023游戏开发者大会上,来自完美世界移动项目中台技术美术主管Gary Guo就围绕Stable Diffusion,讲述了该工具在游戏资产管线上的应用,并分享了自己觉得好用的两个Stable Diffusion插件。
由于Gary Guo此次的分享与其今年3月底在微软“GDC 2023中国行—予力游戏赋能开发”大会上的分享,内容上有重合的部分,本文仅包含了其最后插件分享部分的内容,前半部分的内容可以前往GameLook之前发布的文章《完美世界TA分享:AIGC如何助力游戏开发,从业者如何适应新环境?》中查看。
以下是完美世界技术美术总监Gary Guo的演讲实录:
Gary Guo:大家好,我叫郭帆,是完美世界技术动态的TA主管。今天给大家分享一下Stable Diffusion,也就是最近大火的开源的绘画模型,在游戏资产管线中开发的应用。
Stable Diffusion是亚马逊深度支持的一个模型,包括StabilityAI官方,他们其实是在亚马逊的云上去部署了整个渲染的管线。
其实我们在用的过程中,尝试了很多的插件,这也是Stable Diffusion的特点:一是开源,二是它的效果足够好。这种情况必然会推动整个社区的繁荣,所以有非常多的SD插件可以使用。
ControlNet
如果大家有用过SD的话,应该自己经常会用到一些插件,包括我们跟StabilityAI聊的时候,他们也分享了一个有意思的事情,就是ControlNet的那个插件,允许用户做可控性的尝试,其实SD官方他们自己做过,但没多少人用。
SD官方一直在想用大模型来解决一些控制上的问题的时候,来自社区ControlNet插件却已经弯道超车,他们用额外的一些针对不同领域的,比如说描边,法线等预处理模型,然后再加上他们自己对应的处理叠加的模型,在不改大模型的情况下,就做到了很大程度上的可控性,这个其实对于StabilityAI有着很大的启发。
官方其实之前可能是路径依赖,就是想用大模型来解决这些问题,但实际上不需要用那么重的方式去做。从这一点能看出社区对整个Stable Diffusion的贡献。
这边分享我认为是比较好的两个SD插件,整个社区肯定还有非常多好的插件,但篇幅的原因就不展开了。
第一个就是ControNet,它本身是一个超大的方案合集,里面有各种各样的,有姿势,有描边,还有用法线来做参考。
这个模型其实已经出到了1.1版本,应该是最新的,比较重大的更新就是对整个OpenPose做了集成和优化,通过姿势还有面部的识别,最后的结果就是SD在做多人的时候比之前更好。
这是个尝试,左边是原图,然后我用ControlNet去做骨骼的OpenPose的提取,之后再用Pose来做对应的图的生成,你会发现他在多人的情况下有非常大的进步,原来你做多人其实挺麻烦的,默认其实是完全画不出来的,全部糊在一起,根本没法分辨人群,包括手的姿势也肯定是会多种多样的。
虽然现在这个手的姿势还是有问题的,一是跟图的精度有关,二是他确实可能会有些问题,但能看到他其实很少出现像以前那种特别扭曲的情况,这就是因为有了Openpose的限制。
ControlNet本身除了这个以外其实还有很多,比如说Tile、模型以及一些。新的更新,大家可以去官方网站上看一下。
也是用同样的方式做的多人的合成。你会发现他对人体的结构其实还原得非常准确了,当然细节还是有些问题,但对比两个月前的SD,其实已经迈了一大步。
同样也是用的类似的方法。你会发现识别的模型本身其实对图的精度要求也很高。我们尝试在用Contronet和OpenPose做的时候,这种其实是反面案例,这会导致模型对很多姿势识别的都有问题,主要原因是关节的位置非常黑,模型其实分辨不出来关节的位置和朝向。
第二,最好用写实的人的照片。因为他原来训练的素材其实就是大量的人的照片和姿势。如果你想要自己拍一张作为参考,就需要穿一些颜色比较鲜艳,不是太纯色的服装,比如灰色或者是白色的裤子,颜色需要稍微亮一点,像素稍微能够可识别一点。
当然还可以直接买一些姿势的参考包,作为原画和建模,其实应该有很多这种人体姿势的参考。
这种参考图为了让参考人看得更清晰,他其实会特意地去穿紧身的灰色素衣,甚至有些完全就属于半裸体的状态。这种情况下模型对于人的关节的识别是非常准确的,所以建议大家尝试去做一个自己姿势的参考包。
还有个思路,做这种姿势参考的时候,你其实可以用3D软件,Blender里就有快速调整姿势的一些插件,你可以快速地把想要的姿势摆出来。
Segment anything
第二个非常推荐的插件就是Segment anything。 这个其实最近推出不久,是Meta开源的一个模型。这个模型本身其实性能非常地强,大家应该也关注过。
官网:https://segment-anything.com/demo
模型下载地址:
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
安装路径:stable-diffusion-webui/extensions/PBRemTools/models
那它怎么去用的呢?
他其实要配合的是ControlNet或者inpaint,inpaint是Stable Diffusion内置的一个功能,叫做绘制/重绘。那他怎么配合呢?
以前如果你想重绘这个肩甲、重绘这个手,那你可能得用inpaint把这个地方涂出来,因为inpaint需要一个Mask(遮罩)的,告诉他哪个地方需要重绘,哪个地方不用重绘。
以前你在做这一部分的时候,你要把这张图拆开,其实是非常麻烦的,可能需要把它导到ps里面,然后再用ps去沿着边缘抠图。你在抠图的时候有多难受,你在用inpaint的时候,想精确地控制就有多难受。
Segment anything本身就是解决这样一个问题的,它可以快速地把你想要切割的部分分割出来。
具体的话,我这边有个案例,就比如我们想把这个肩甲给拆出来,Segment anything搭配Inpaint的Mask,我们其实只需要点击一下肩部的两个地方,它就会把这个地方快速地拆出来。
最后你再把拆除的地方配上关键词,比如我们给他换个颜色,可以让他去重画这一部分。
Segment anything本身其实就是一个非常好的插件了,配合ControlNet也是能够做出更多更可控的部分。比如说我想把脸重画一点,甚至Segment anything配合它插件自带的功能,你可以直接输入关键词face,他可以帮你把所有的脸部提取出来,你可以输入裙子,他可以帮你把裙子全部提取出来。
它实用性对于美术来讲,其实就已经非常的好用了,你可以甚至在它的底层技术上做一些简单的开发,让他能够快速地把所有的元素拆解到不同的图层里,也非常容易实现。
这样的话,使用ControlNet做一些大的控制,然后配合Segment anything做一些细节的控制,加起来,你其实是能够对AI的结果有一些比较可控的把握。
今天给大家分享的主要内容就是这些,整个Stable Diffudion在美术资产方面的一些应用、一些定制化的模型资产的产出、气氛参考以及做一些可控性,这些其实都是非常值得探索的内容。
谢谢亚马逊的邀请,有问题的话,我们之后再有机会再沟通。
如若转载,请注明出处:http://www.gamelook.com.cn/2023/05/518215