目录
- 1. 作者介绍
- 2. 人脸美颜基本原理
- 2.1 获取人脸关键点信息
- 2.2 基于皮肤区域的祛斑算法
- 2.3 脸部器官美型处理
- 2.4 美妆处理
- 3. 实验流程(附代码)及结果
- 3.1 调用腾讯API流程
- 3.2 安装依赖库
- 3.3 代码实现
- 3.4 实现结果
- 常见问题报错以及解决方案
1. 作者介绍
齐方涛,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:502856671@qq.com
路治东,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2063079527@qq.com
2. 人脸美颜基本原理
美颜的目的就是要让人看起来更美,包括:皮肤细腻、白皙、光滑、脸部各个器官及脸型可以进行细致的调整,通过美妆调节可以达到快速上妆的效果。人脸美颜效果,从技术上主要通过四个关键步骤实现。
2.1 获取人脸关键点信息
美颜处理依赖于人脸关键点信息,基于这些关键点,可以精确的知道脸部各个器官的位置信息,从而进行美化处理。人脸关键点基本信息主要包括眉毛、眼睛、嘴巴、脸部外轮廓等关键点。
基于检测的关键点对脸部关键点进行稠密化处理,插入额外的关键点,如额头区域和脸部外围限制区域,使其能够覆盖整个脸部区域。
基于稠密化的人脸关键点,对其构建整张脸的三角网格,实现对整个脸部区域的三角剖分(Delaunay Triangulation),将人脸切分成多个无重叠的三角区域,从而实现对脸部各器官的各种美化处理。
皮肤美化处理主要包括磨皮和美白。磨皮需要把脸部皮肤区域处理的细腻、光滑。美白需要将皮肤区域处理的白皙、红润。
2.2 基于皮肤区域的祛斑算法
使用Sobel粗略提取斑点信息是通过连通区域判断得到最终斑点区域,结合高斯滤波+泊松融合来实现祛斑效果。
基于皮肤区域的磨皮算法是通过高反磨皮或双曲线磨皮算法对人像磨皮,结合皮肤区域得到精确磨皮效果。
基于皮肤区域的美白调色算法是通过PS中的曲线调节来得到美白调色的LUT,结合肤色区域进行融合得到调色结果。
2.3 脸部器官美型处理
脸部美型处理主要包括脸型调整和脸部器官调整,基于人脸关键点通过图像形变的形式来实现脸部各个器官的形状调整。图像形变算法主要是局部扭曲算法和三角剖分。
局部扭曲算法,一般包括局部缩放、局部平移、局部旋转等。如大眼功能可以通过局部缩放来实现。
三角剖分的方法是通过对三角网顶点进行平移,再将平移后的顶点更新到对应的纹理坐标,从而实现整个关联三角网的变形。
2.4 美妆处理
美妆效果的好坏强依赖于素材模板精准的标定数据和准确的人脸灌浆点数据,具体流程如下:
1.妆容素材的管理及解析
结合各种妆容及贴纸素材,构建一套完整的绘制机制,根据对妆容效果描述文件的解析,结合顶点绘制规则对各个类型的素材进行绘制处理及融合。
素材模板和当前人脸器官进行对齐。
素材的描述文件中有相应的标定信息,结合当前图像的人脸关键点,采用三角剖分的方式实现对素材模板的变形,达到与当前人脸器官对齐的目的。
2.不同器官的定制化处理
由于不同器官的处理流程不一样,需要针对不同的器官采用不同的处理方式。如美齿需要结合牙齿区域的mask模板,通过美齿颜色查找表实现牙齿区域颜色的调整;眉毛的处理则需要先将当前图像的眉毛结合当前眉毛模板的素材进行眉毛区域的形变调整,同时将当前图像的眉毛部分进行减弱,再和对齐后的眉毛模板进行融合。
3.图像融合
由于素材模板和脸部器官的差异性,需要采取不同的融合方式来实现图层的融合处理,如腮红可以直接基于素材的半透明通道进行融合,修容处理则需要采用高反差算法进行融合处理。
3. 实验流程(附代码)及结果
3.1 调用腾讯API流程
1.进入腾讯云官网搜索人脸美颜之后点击产品文档
2.点击人脸美颜之后点击调试按钮
3.配置参数并查看代码
4.获取密钥
3.2 安装依赖库
Pip install tencentcloud-sdk-python -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3 代码实现
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.fmu.v20191213 import fmu_client, models
try:
# 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
# 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
# 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
cred = credential.Credential("SecretId", "SecretKey")#自己的密钥
# 实例化一个http选项,可选的,没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "fmu.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = fmu_client.FmuClient(cred, "ap-beijing", clientProfile)
# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.BeautifyPicRequest()
params = {
"Url": "这里输入图片的Url地址",
"Whitening": 80,
"Smoothing": 80,
"FaceLifting": 80,
"EyeEnlarging": 80,
"RspImgType": "url" #本文选用Url格式,这里输入url
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个BeautifyPicResponse的实例,与请求对象对应
resp = client.BeautifyPic(req)
# 输出json格式的字符串回包
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
3.4 实现结果
运行效果如图:(左图为原图,右图为美颜后效果图)
常见问题报错以及解决方案
1.缺少相应的安装包或者安装失败
解决方案:报错 版本不匹配 出现这个问题先检查清华源 然后软件包名字不对 通过CSDN查阅或者腾讯云文档 应改为pip install tencentcloud-sdk-python –i https://pypi.tuna.tsinghua.edu.cn/simple
2.参数不合法
解决方案:出现该错误是因为参数没有选择正确,文中几个参数 “Whitening”,“Smoothing”,“FaceLifting”,"EyeEnlarging"都是美颜参数,选择范围是[0,100],而"RspImgType"是返回图像方式(base64 或 url ) ,二选一。url有效期为1天。我在这里选择了url,故结果输出url图片地址,点击进去就可以参看结果。