社区所有版块导航
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学习  »  机器学习算法

深度学习AI美颜系列—-基于抠图的人像特效算法

数盟 • 7 年前 • 1580 次点击  

美颜算法的重点在于美颜,也就是增加颜值,颜值的广定义,可以延伸到整个人体范围,也就是说,你的颜值不单单和你的脸有关系,还跟你穿什么衣服,什么鞋子相关,基于这个定义(这个定义是本人自己的说法,没有权威性考究),今天我们基于人体抠图来做一些人像特效算法。

抠图技术很早之前就有很多论文研究,但是深度学习的出现,大大的提高了抠图的精度,从CNN到FCN/FCN+/UNet等等,论文层出不穷,比如这篇Automatic Portrait Segmentation for Image Stylization,在FCN的基础上,提出了FCN+,专门针对人像抠图,效果如下:

图a是人像原图,图b是分割的Mask,图cde是基于Mask所做的一些效果滤镜;

要了解这篇论文,首先我们需要了解FCN,用FCN做图像分割:

该图中上面部分是CNN做图像分割的网络模型,可以看到,最后是全连接层来处理的,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率;而下图部分是FCN,它将最后的三个全连接层换成了卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1),这样以来,所有层都是卷积层,因此称为全卷积网络;

FCN网络流程如下:

在这个网络中,经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2,4,8,16,32倍,对于第5层的输出,是缩小32倍的小图,我们需要将其进行上采样反卷积来得到原图大小的分辨率,也就是32倍放大,这样得到的结果就是FCN-32s,由于放大32倍,所以很不精确,因此,我们对第4层和第3层依次进行了反卷积放大,以求得到更加精细的分割结果,这个就是FCN的图像分割算法流程。

与传统CNN相比FCN的的优缺点如下:

优点:

①可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸;

②更加高效,避免了由于使用像素块而带来的重复存储和计算卷积的问题;

缺点:

①得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感;

②没有充分考虑像素与像素之间的关系,也就是丢失了空间信息的考虑;

在了解了FCN之后,就容易理解FCN+了,Automatic Portrait Segmentation for Image Stylization这篇论文就是针对FCN的缺点,进行了改进,在输入的数据中添加了人脸的空间位置信息,形状信息,以求得到精确的分割结果,如下图所示:

对于位置和形状数据的生成:

位置通道:标识像素与人脸的相对位置,由于每张图片位置都不一样,我们采用归一化的x和y通道(像素的坐标),坐标以第一次检测到人脸特征点为准,并预估了匹配到的特征与人体标准姿势之间的一个单应变换T,我们将归一化的x通道定义为T(ximg),其中ximg是以人脸中心位置为0点的x坐标,同理y也是如此。这样,我们就得到了每个像素相对于人脸的位置(尺寸也有相应于人脸大小的缩放),形成了x和y通道。

形状通道:参考人像的标准形状(脸和部分上身),我们定义了一个形状通道。首先用我们的数据集计算一个对齐的平均人像mask。计算方法为:对每一对人像+mask,用上一步得到的单应变换T对mask做变换,变换到人体标准姿势,然后求均值。

W取值为0或1,当变换后在人像内的取值为1,否则为0。

然后就可以对平均mask类似地变换以与输入人像的面部特征点对齐。

论文对应的代码链接:点击打开链接

主体FCN+代码:

到这里FCN+做人像分割已经讲完,当然本文的目的不单单是分割,还有分割之后的应用;

我们将训练数据扩充到人体分割,那么我们就是对人体做美颜特效处理,同时对背景做其他的特效处理,这样整张画面就会变得更加有趣,更加提高颜值了,这里我们对人体前景做美颜调色处理,对背景做了以下特效:

①景深模糊效果,用来模拟双摄聚焦效果;

②马赛克效果

③缩放模糊效果

④运动模糊效果

⑤油画效果

⑥线条漫画效果

⑦Glow梦幻效果

⑧铅笔画场景效果

⑨扩散效果

效果举例如下:

原图

人体分割MASK

景深模糊效果

马赛克效果

扩散效果

缩放模糊效果

运动模糊效果

油画效果

线条漫画效果

GLOW梦幻效果

铅笔画效果

媒体合作请联系:

邮箱:xiangxiaoqing@stormorai.com





今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/8xVx5vGN6e
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/13191
 
1580 次点击