社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  aigc

AIGC-照片美颜精修解决方案

OpenCV学堂 • 7 月前 • 205 次点击  

目前,基于扩散模型的内容生成技术给图像生成领域带来了革命性的变革,从NovelAIMidjourney,从StableDiffusion开源到WebUIControlNet,无论是AIGC相关的公司愈演愈烈,还是新的论文和技术层出不穷,不禁让我们感叹“生命短暂,学海无涯”,同时,也让我们看到当下无数机会与挑战的大爆发!面对这些新的机会,人像美颜这个垂域又将如何发展?这里,我将使用AIGC相关技术,来对人像照片美颜的方式和方法做一些尝试与解决方案的研究。

我将以WebUI为例,进行人像美颜效果的尝试。

环境安装

WebUI安装,这里不再累赘,网络资源已经泛滥;

ControlNet安装:

WebUI-ControlNethttps://github.com/Mikubill/sd-webui-controlnet

①打开WebUI,点击Extensions--Install from URL,然后输入Controlnetgit链接,点击install即可。安装界面如下:

安装完成之后,会在stable-diffusion-webui/extensions/路径下新增sd-webui-controlnet文件夹。

②从https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main 下载相关模型并放置到如下路径下:stable-diffusion-webui/extensions/sd-webui-controlnet/models

重启WebUI即可完成整个安装。

解决方案介绍

我们用AIGC相关技术实现美颜效果,有两种途径:一种是直接使用AIGC生成固定人物的美颜照片,另一种是修改用户的照片实现美颜效果;

目前鉴于AIGC的可控性不强,我们很难达到非常完美的任意用户照片的美颜效果生成,因此,这里我们挖掘如何修改用户的照片实现美颜效果,也就是使用AIGC的方式来进行P图美颜。

初步方案:

使用img2img模式,结合controlnet保留用户形象内容不变,生成磨皮美颜效果,然后,使用皮肤分割+五官解析技术,将原图和效果图进行alpha融合,最终实现美颜效果。

这个方案中的难点:如何有效保留用户原图信息,如何使用有效的磨皮美颜prompt达到美颜效果;

具体实现

1.StableDiffusion大模型选择

美颜效果主要表现为皮肤白皙,没有褶皱,斑点,雀斑,法令纹,眼角纹,痣等等,为了达到这类效果,我们首先要选择合适的SD模型,这里我们选择ChilloutMix模型,具体下载地址:

C站地址:ChilloutMix | Stable Diffusion Checkpoint | Civitai

huggingface地址:swl-models/chilloutmix at main (huggingface.co)

这个模型的效果举例如下:

2.有了大模型之后,我们以WebUI为例,进行分析,打开WebUI,由于我们要进行修图,所以,我们需要选择img2img模式,在该模式下选择ChilloutMix大模型。我们选择一张测试图,如下图:

导入WebUI后,如图所示。

3.叠加两个Controlnet控制,分别为canny边缘控制、depth深度信息控制,参数设置分别如下(选用canny和depth的原因是我们需要通过边缘和深度信息尽可能的保留用户原图信息):

4.img2img参数设置

这里提供美颜专用的prompt

positive:masterpiece,best quality,high res, (photorealistic:1.4),(red face blush:1.2),red lips,extremely detailed

negative:(worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality,(skin spots:2), acne,acne marks,mole (skin blemishes:2), (age spot:2), watermark,signature water mark

主要描述说明:

face blush:腮红

red lips:红色唇彩

skin spots:皮肤斑点

acne:雀斑

age spot:老年斑

skin blemishes:皮肤瑕疵

mole:

对于Prompt描述,我们可以自行研究,这里给的主要是磨皮和简单的唇彩腮红效果,实际上可以定义各种人脸效果,包括肤色调节,美白,妆容等等,这也就是AIGC做人像美颜的优越性体现。除了这些参数之外,其他参数设置:

5.基于上述参数设置,点击运行,效果图如下:

原图                                                                     AIGC生成效果

通过修改描述词,微调效果如下:

上述效果我们仔细看会发现,其实与原图还是有一些差别的,这些差别在某些情况下会导致不像用户,为此,我们做到这里并没有结束,我们需要挑选我们想要的美颜区域,叠加到用户原图之上,以此来保证用户ID相似性。

6.我们使用皮肤分割技术+五官解析技术,将效果图中的皮肤区域+嘴唇+眉毛区域融合到原图,得到最终效果图:

最终效果图

这个效果我们可以发现,很好的保留了用户的眼睛区域,以及其他非皮肤区域,整体看下来遵循用户原图场景内容,这个也是关键点,我们要做的是照片精修,而不是照片重构和生成,对于影楼以及专业修图人员来讲,用户还是希望是自己的照片的。

对于皮肤分割和五官解析,这里给出美图AI开放平台的技术链接(查找五官分割/皮肤分割)

美图AI开放平台 (meitu.com)

上述就是AIGC来做人像精修美颜的一种解决方案,其中有一些地方还是可以改进的,比如prompt工程,再比如人脸区域的canny边缘(如果有更加精确的边缘算法,我们实际上是不需要后续的五官分割再融合算法的),这里只大概介绍了一下方法思路,算是抛砖引玉吧!


OpenCV4系统化学习


深度学习系统化学习

推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示

ZXING+OpenCV打造开源条码检测应用

攻略 | 学习深度学习只需要三个月的好方法

三行代码实现 TensorRT8.6 C++ 深度学习模型部署

实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

对象检测边界框损失 – 从IOU到ProbIOU

初学者必看 | 学习深度学习的五个误区


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/175259
 
205 次点击