InstantID: Zero-shot Identity-Preserving Generation in Seconds
TL; DR:InstantID = IP-Adapter + (Face) ControlNet,实现了具有较高保真度的人脸 ID 生成。
方法
InstantID 想做到的事情是:给定一张参考人脸 ID 图片,生成该 ID 的多种姿势,多种风格的图片,并保证和参考图人脸 ID 的保真度。模型的整体结构总览如下图所示,主要由三个模块组成:
- Face(ID) embedding 模块:用于捕捉参考图的人脸 ID 特征
- 一个轻量的适配模块(加解耦的交叉注意力层):用于理解视觉 prompt
- IdentityNet:用于人脸的精细生成
ID Embedding
CLIP 这种弱对齐数据训练出的模型,提取出的 image features 比较泛,比较杂,粒度比较粗。不适合于提取精细的、高保真的人脸特征。作者这里用了一个人脸识别或 ReID 中预训练好的人脸模型来提取参考图像中的人脸 ID 特征。
Image Adapter
image prompt 可以用来控制一些很难用文本描述的生图细节(如人体姿态、纹理细节等),极大地补充了图像生成模型的可控生成能力。与 IP-Adapter 类似,InstantID 这里用交叉注意力层(图示上方)来将图片特征注入到扩散模型的 UNet 中。不同之处还是没有用 CLIP 的 image embedding,而与 ID embedding 一样是用的人脸的 Embedding。
IdentityNet
虽然模型已经能够同时参考文本 prompt 和图像 prompt 进行生成了(相当于 IP-Adapter),但想要精确地保持参考人脸的特征,生成出 ID 一致的高保真度的人脸,这还不够。因此,作者还引入了一个 IdentityNet,其实就是一个 Face ControlNet。但是与 ControlNet 有两点不同:一是没有使用全部的人脸关键点,而是使用了五点,这是为了对人脸有控制的同时保持一定的自由度;二是没有使用文本 prompt 特征,而是将 face embedding,通过 cross attention 引入进来,这是为了避免额外的文本信息和背景信息对人脸保真的干扰。
效果展示
看一下 InstantID 主页 show 出来的不同人脸在不同画风、不同 prompt 下的生成结果,可以看到保真度还是很高的,基本都能认出来。
总结
InstantID = IP-Adapter + (Face) ControlNet 看效果人脸的保真度还是不错的。但是仅能聚焦在人脸,可以试着搞搞人物全身特征的定制化。