基于图像生成的个性化肖像框架
摘要
FaceChaine提供了一系列的生成方案,通过少量的图像输入,就能生成逼真的个性化肖像。它是一个个性化肖像生成框架,包含丰富的人脸感知相关的模型,例如人脸检测,深度人脸向量提取,人脸属性分析等等。输入主要的肖像生成功能,社区还包括虚拟试穿,2D数字人功能
介绍
最近的一些工作都聚焦于使用少量的图像再基础模型的基础上去做微调,让微调网络记住某个特定人物身份信息。这样就可以结合提示词在大模型的基础上得到更多新样式的高保真图像。
目前人物为主的个性化肖像文生图方法主要分两种:1.基于lora,2基于人脸身份。现有方法普遍存在的缺陷:1.面部形状和面部特征位置与输入人脸图像不同;2.合成人脸会存在扭曲或者损坏的情况。将两个lora注入到基础模型当中,一个作为风格影响,一个作为身份影响。
架构
该架构主要构建在stable diffusion模型上。采用了Lora技术,是一个有效的参数化策略,用来微调Stable Diffusion模型。FaceChain提供了一系列人脸相关的感知模型来做预处理,确保人脸图片符合Lora训练的标准。
个性化肖像生成的PipeLine架构解析
训练过程
输入数张一致性人物的图片,通过关键点检测,然后进行旋转增强,对图片进行人物属性分析,对面部进行美肤,并对人物属性打标签,送入stable diffusion进行微调,得到人物Lora.
推理过程
将在线训练的人物Lora和离线训练好的风格Lora合并进基础模型,这样通过特定提示词,可以生成特定人物特定风格的人物肖像图像,对生成的图像与指定中模板的脸部进行人脸融合,这样就可以得到模板样式的肖像图,对生成的图片进行人脸识别找出与输入人脸图最相似的一些图像作为最终输出。
数据处理
人脸提取
图片旋转。参考https://modelscope.cn/models/ Cherrytest/rot_bgr
人脸旋转。将人脸扭正,具体算法是通过两组点进行最小二乘法回归得到旋转矩阵,由于模板的五个点和检测的五个点会存在大小差异,所以在进行最小二乘之前需要对两组点进行归一化。参考https://modelscope. cn/models/damo/cv_ddsar_face-detection_ iclr23-damofd
人脸区域裁剪并进行分割。通过人脸检测模型确定人脸的检测框,确保人脸框占比索要裁剪的区域的0.35-0.45.然后通过分割模型拿到脸部掩码。参考 https://modelscope.cn/models/ damo/cv_resnet101_image-multiple-humanparsing
皮肤修饰。提高人脸皮肤的质量,为Lora他创造更好的训练素材。https://modelscope.cn/models/ damo/cv_unet_skin-retouching
打标签
1.对每一张图打上特定的标签,具体是针对图像独有的特性,比如人物表情,配饰等
2.删除与人物身份绑定的特征,如眼睛,嘴唇,耳朵。
3.指定一个触发词,当该词被填入时,就可以触发生成某个特定身份的肖像。
具体做法就是先使用反推提示词模型,对图片进行反推,然后将与身份相关的提示词去除,最后通过一个性别与年龄预测模型,将提示词作为触发词合并进总体的提示词中。参考https:// modelscope.cn/models/damo/cv_resnet34_ face-attribute-recognition_fairface
模型训练
超参数Lora的秩为32,LR为1e-4,开启cosine with restarts schedule,训练20轮。使用8bit AdamW优化器,节省显存。
模型推理
先通过stable diffusion将两个Lora模型合并,风格模型和人物模型权重分别为0.25和1.然后通过facefusion提升人脸的相似度和质量,具体做法就是在训练数据集中挑选一张最好的人脸模板与生成的图像进行人脸融合。最终通过人脸识别模型挑选出一些与原始人脸比较像的图片作为最终生成结果。
模型后处理
模板人脸选择。人脸模板选择模型参考https://www.modelscope.cn/models/damo/ cv_manual_face-quality-assessment_fqa
人脸融合。参考https:// www.modelscope.cn/models/damo/cv_unetimage-face-fusion_damo
相似度排名。 最终生成结果需要跟原始人脸做对比进行评分,找出最像的一些图片作为最终结果。相似度评估模型参考https://www.modelscope. cn/models/damo/cv_ir_face-recognitionood_rts
重绘。主要就是通过重绘可以将人脸区域重新绘制为想要的肖像。
使用原始的重绘存在一些问题(使用controlnet控制pose)
1.指定人物的人脸形状和标准模板的人脸形状不兼容,使用controlnet提取的时模板人脸的形状,这会导致生成特定身份的人脸变形。
2.重绘的掩码会导致原始图片与人脸区域有明显违和感。
3.多种条件相会结合会产生影响。
为了保证重绘人脸区域和原始图片交界处的真实感,对重绘添加了很多组件。
第一步文生图推理
引入了68个脸部标志点作为脸部pose引导条件,还有脸部变形算法,生成最终的关键点pose。
在文生图推理中只使用骨骼姿态作为引导条件。保证人脸的整体位置和身份特征。使用了生成的面部特征的68个关键点和模板的68个面部关键点求仿射变换矩阵M。这样才能既保证人脸不变形,与模板pose也保持一致。
第二次文生图推理
使用人脸分割模型分割出人脸区域并适当扩展来处理人脸变形。为了解决重绘得到的伪影,使用了多种控制组合,1.面部68个关键点pose;2使用模板的canny controlnet外部边缘保证和谐的边缘;3使用一个比较大重绘强度。两个推理过程都用到了人脸融合技术(facefusion)