Java教程

这个细到把头发丝都抠出来的算法,效果太赞了

本文主要是介绍这个细到把头发丝都抠出来的算法,效果太赞了,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

你以为这些人像发丝的勾勒是PS做的吗?

图片

NO!这是AI算法的效果!

图片

这么好的效果,大家一定好奇是通过什么AI手段实现的。经过小编的一番调研,这项技术叫做Matting,是指通过计算前景的颜色和透明度,将前景从影像中撷取出来,并生成一张Alpha图的技术。

图片

图片数据引用公开数据集[1]

还是不明白?我们通过和语义分割技术的对比理解会更有益于理解Matting的作用。语义分割是返回像素分类结果,分类结果是整型;而抠图返回的是属于前景或背景的概率p,在前景与背景交互区域会产生渐变的效果,使得抠图更加自然。

图片

图片数据<原图>引用公开数据集[2]

近期PaddleSeg团队复现了经典Matting算法MODNet,并进行了一定改进,提供了更丰富的backbone模型选择,适用边缘端、服务端等多种任务场景。

图片

在这里小编赶紧给大家贴上项目链接地址。欢迎小伙伴们体验:

https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.3/contrib/Matting

同时PaddleSeg团队提供了可部署在手机端的APP应用,欢迎大家收藏链接体验Matting的人像抠图效果。

APP下载链接:https://paddleseg.bj.bcebos.com/matting/models/deploy/app-debug.apk
Matting精细化抠图被广泛应用在多种行业,如视频剪辑,视频合成等领域。

图片

看到这么好的技术,有的小伙伴们会比较关注技术上是怎么实现的,那么我们就一起来看看Matting的技术演化过程。

Matting算法基本结构

基于深度学习的Matting分为两大类:

一种是基于辅助信息输入。即除了原图和标注图像外,还需要输入其他的信息辅助预测。最常见的辅助信息是Trimap,即将图片划分为前景,背景及过度区域三部分。另外也有以背景或交互点作为辅助信息。

一种是不依赖任何辅助信息,直接实现Alpha预测。

本文将分别对两类Matting算法展开介绍,和小伙伴们一起梳理Matting的发展历程。

图片

DIM -Matting

DIM(Deep Image matting)第一次阐述了在给定图像和辅助信息Trimap的情况下,可以通过端到端的方式学习到Alpha。其网络分为两个阶段,第一阶段是深度卷积编码-解码网络, 第二阶段是一个小型卷积神经网络,用来减少编码-解码网络引起的细节损失,提升Alpha预测的准确性和边缘效果。DIM通过卷积神经网络提取高级语义信息,真正打开了卷积神经网络在Matting中的应用,且在DIM之后诞生了大量的基于Trimap的Matting网络。

图片

图片数据引用论文[3]

BGMV2-以背景作为辅助信息

BGMv2(Background Matting v2) 改变思路,利用背景图像取代Trimap来辅助网络进行预测,有效避免了Trimap获取费时费力的问题,并将网络分为Base网络和Refiner两部分。在计算量大的Base网络阶段对低分辨率进行初步预测,在Refiner阶段利用Error Map对高分辨率图像相应的切片进行Refine。通过此,Background Matting v2 实现了高分辨率图像的实时预测。

图片

图片数据引用论文[4]

MODNet

辅助信息的获取极大限制了Matting的应用,为了提升Matting的应用性,Portrait Matting领域的MODNet摒弃了辅助信息,直接实现Alpha预测,实现了实时Matting,极大提升了基于深度学习Matting的应用价值。MODNet将Matting分解成三个子目标进行优化,通过任务分解提升Alpha预测的准确率。

图片

图片数据引用论文[5]

当前PaddleSeg提供的Matting算法便是对MODNet算法的复现,并在原著基础上提供了多个不同主干网络的预训练模型如RestNet50_vd、HRNet_w18等,来满足用户在边缘端、服务端等不同场景部署的需求。

对于这个技术,你觉得如何?评论区留言一起来说说呀!

这篇关于这个细到把头发丝都抠出来的算法,效果太赞了的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!