头像/证件照抠图与圣诞背景替换

CVPy抠图系列文章继续。

1. 头像/证件照抠图

之前已经有过《一键智能抠图》、《【CV派】新玩法——AI一键抠图+素描》、《一键动物抠图,毛发毕现——人是不是动物?》、《如何从头训练一个一键抠图模型》几篇文章。

之前的抠图模型是一个通用模型,任何物体都可以抠。但是正如在《如何从头训练一个一键抠图模型》文章结尾笔者提到的,边缘特别是人物头发处的抠图效果还有待提高:

上面的抠图效果还是有待提高,比如头发等边缘处,还是可见部分背景未分离。前几天刚转发了动物抠图的新论文,边缘和毛发的抠图效果很赞。其单开一条支路专门做轮廓边缘处的抠图的思路值得参考。

不过,作者暂时开源了测试代码,并没有训练代码。我昨晚肝到十二点半,终于根据论文实现了一版训练代码,但是貌似收敛的更慢,这个优化还是慢慢来吧。就这训练速度,想快也快不起来啊。反正就是玩,好玩就行。

来个示例图应该就很清楚了:

在这里插入图片描述
注意看右图的头发部分,可以看到头发部分抠图还是有些微背景分离不太完全,虽然只是很微小的一部分,但是对于想要换背景做证件照的人来说,这个效果其实是不可接受的。

为此,笔者专门针对头像抠图优化了一版模型,特别是针对头发部分,参考最近两年的抠图论文,重新设计了损失函数,并在十万量级的头像抠图数据集做实验调参,经过近一个月的实验和训练,终于训练出一个专门针对头像抠图的模型。

还是上面这张头像图片,在新模型下的效果如下:

在这里插入图片描述
**再仔细看看头发部分的抠图,是不是就顺眼多了。**其实这个图头发边缘的位置仍然有些白色背景,但是不放大仔细看已经不显眼了。

下面是一张纯头发部分的图片。

在这里插入图片描述
再来一张长发飘飘的图片。为了能够展现抠图模型的效果,我同时展示模型输出的Alpha,图下图的中间子图所示。

在这里插入图片描述
其实对于头像抠图来说,其中的两个难点如下:

  1. 头发等边缘细节抠图不精细
  2. 闭合边缘里的背景容易被判为前景

以上三张图可以看到,新模型对这两种难点都处理的很好。

2. 圣诞背景替换

有了以上的抠图模型,做背景替换就很简单了。背景替换可以用以下公式来描述:

Img2 = Img * Mask + Bg * (1 - Mask)

笔者掐指一算,圣诞节即将来临。鉴于给头像带圣诞帽已经是好几年前就玩过的了。那就趁着头像抠图再玩一把圣诞替换吧。

看几张替换之后的效果图吧:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

没有找到更好看的背景图我很抱歉,如果谁有更好看的圣诞风格背景图,希望能联系我一下~


最后,仍然是可以自己去玩CVPy网站上体验效果。

网址:CV-Studio (cvpy.net)

或者通过公众号下方的菜单,移动端访问也是支持的。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页