DreamBooth 是一种个性化的文本到图像生成模型,它可以通过向扩散模型(比如Stable Diffusion)中注入少量主体对象,从而达到对基础模型的微调。使用微调后的模型可以生成在不同的场景、姿势和视角中的该主体上下文图像。
Dreambooth由Google提出,使用Dreambooth,一旦系统捕获了对象,就可以合成该对象的任何图像,也就是梦有多远,就能带你走多远。
It's like a photo booth, but once the subject is captured, it can be synthesized wherever your dreams take you.
听起来不错,但它是如何工作的呢?
我们先看几个例子:
输入几只狗的图片,生成这只狗在不同场景下的图片:
上面的狗有的在游泳,有的在笼子里,有的在睡觉等。
输入几张狗的照片,就可以生成同一个狗的多种艺术风格的照片:
生成的狗有的是梵高风格,有的是达芬奇风格等。
重点是狗还是这同一只狗!
如果你接触文生图不久,或者经验不多,也许你并不觉得惊奇,其实现在的文生图包括图生图的一大挑战就是在不同场景生成同一主体对象。下面我一步步来解释这个问题。
当前的文生图模型,很难做到保持原有主体对象的关键视觉特征,举个例子:对于下面的输入图像:
使用当前模型,比如OpenAI的 DALL-E2和Google 的Imagen 模型 ,使用文生图基于prompt生成新的图像:
retro style yellow alarm clock with a white clock face and a yellow number three on the right part of the clock face in the jungle
在丛林中的复古样式的黄色闹钟,白色的钟面,在钟面的右边有黄色的数字3
对比看下生成的效果:
DAEE-E2没有遵从指令表现在:没有丛林背景,数字3没有在右边,数字3不是黄色。一致性和上下文都没有遵从指令要求。
Imagen 没有遵从指令表现在:数字3没有在右边,数字3不是黄色。上下文遵从指令要求,但是一致性没有遵从指令要求。
最后是DreamBooth 上下文和一致性都完美遵从了指令要求。
DreamBooth是如何做到的呢?为了避免过拟合问题,DreamBooth并没有基于大模型重新训练,而是通过引入带有唯一标识的文本prompt和输入图像对:
,下面图例中的[V] 表示占位符
来对文生图模型进行微调。
还有一种类似的技术叫做文本反转。不同之处在于,Dreambooth 对整个模型进行了微调,而文本倒置注入了一个新单词,而不是重用一个罕见的单词,并且只对模型的文本嵌入部分进行了微调。
通过这种方法,能够在不同环境中保持对象的细节,以及场景和主体之间的真实交互:
比如不同场景中的太阳镜:
不同场景中的包包:
不同场景中的花瓶:
不同场景中的紫砂壶:
上面这些图非常适合拍摄商品图啊。下面来看一个活物,题外话:不知道为什么论文作者喜欢写狗的照片!不同场景中的宠物狗:
还可以展示动物不同角度:
变换颜色:
动物杂交(将两种动物合成一种新的动物),比如将狗和犀牛糅合在一起,当然如果你愿意(看),还有人杂交的图片,比如拜登和特朗普:
还可以给狗装扮不同的饰品:
这么厉害的模型可以怎么用呢?
我还是从一个场景中说起:有些人在写网文小说,也有人在做儿童绘本,但是在不同场景中人物形象就是难以控制一致,最好绞劲脑汁,折腾出来了各种奇淫异技,包括我之前也写过几篇这种文章,包括:
《在Stable Diffusion中如何保持人物形象一致性》【如何让Stable Diffusion在不同场景保持人物形象的一致性 - 知乎】
《如何在Midjourney中保持人物形象一致性》【如何在Midjourney 中创建形象一致的人物角色 - 知乎】
这些方法不能说完全没有效果,只是准确度不高,比较费力,属于治标不治本的技能范畴。
除了上面文章中提到的这些方法,这篇文章顺带在介绍一个方法,这是最省力的方法。
使用名人形象作为自己的身份角色,比如:
medium-full shot of [NAME OF CELEBRITY] with a warm smile, sitting in a charming soho cafe filled with plants, looking out the window as people walk by
除了政治人物,还有明星,运动员,知名科学家等的形象都可以拿来用,但是不足之处在于这种名人效应太强了,商业作品有可能侵权,还有种办法,修改名人形象,比如生成名人儿童照片,像下面这样:
其他冷门名人也可以用类似生成你想要的角色:
[NAME OF CELEBRITY] as a 25 year old female scientist, (walking in a tunnel), blue hair, wispy bangs, (white lab coat), (pants), smiling, stunningly beautiful, zeiss lens, half length shot, ultra realistic, octane render, 8k
这样稍微变通,既能保持了名人的基本形貌,也不至于跟原人物形象雷同。甚至还可以将名人变性,改变性别,种族等方法 :
[NAME OF CELEBRITY] as a 25 year old sexy gorgeous thai female mechanic, blue hair, wispy bangs, ((thicc)), (((dirty clothes))), smiling, stunningly beautiful, zeiss lens, half length shot, ultra realistic, octane render, 8k
Negative: Male, man, cartoon, 3d, video game, unreal engine, illustration, drawing, digital illustration, painting, digital painting, sketch, black and white
[NAME OF CELEBRITY] as a 25 year old jacked handsome Jamaican male mechanic, buzzed haircut, chiled jaw, ((swole)), ((huge biceps)), (((dirty clothes))), smiling, stunningly handsom, zeiss lens, half length shot, ultra realistic, octane render, 8k
这是没办法中的办法,尽管如此,我们还是能够在不违法法理的情况下得到了一致性的人物形象。
如果你实在是对人物形象要求比较高,那只能寄出大杀器了,训练自己的模型,在Stable diffusion中主要有三个可选:
- Textual Inversion (cheap and good)
- DreamBooth (expensive and best)
- Hypernetwork (cheap and ok)
在要求较高的场景中 DreamBooth是你的首选,尽管效果最好,但是成本也最高,其他一般场景 Hypernetwork和ControlNet Deep preprocessing 也可以选,至少比上面文章中列举的目前网络上在用的方法更好。
最后,关于DreamBooth训练方法,因为调参比较复杂,还不一定能成功,我在接下来的文章中视情况再做介绍。
题外话,最近很火的生成个人写真的小程序很火,妙鸭,网上大多推测它使用了LoRA模型训练,如果真是这样的话,说明它还不够先进,国外有基于DreamBooth训练个人形象:只需要花费3美元,就可以在一个月内无限迭代生成自己的专属形象,据报告最早做这个网站的人已经赚了2500万美金。
本文首发 纵横AI大世界 公众号。加入我的知识星球,带你了解更多关于AI方面的前沿技术、应用案例以及变现机会。