精细到发丝级别的抠图算法,工程师的浪漫YYDS!
你以为这些人像发丝的勾勒是PS做的吗?
不!这是AI算法的效果!
这是什么AI技术能把发丝精细的识别,甚至还能有透明度渐变?经过小编的一番调研,这项技术叫做Matting,是指通过计算前景的颜色和透明度,将前景从影像中撷取出来,并生成一张Alpha图的技术。
该数据引用公开数据集[1]
近期PaddleSeg团队复现了经典Matting算法MODNet,并进行了一定改进,提供了更丰富的backbone模型选择,适用边缘端、服务端等多种任务场景。
在这里小编赶紧给大家贴上项目链接地址。欢迎小伙伴们star收藏: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分为两大类:
1.一种是基于辅助信息输入。即除了原图和标注图像外,还需要输入其他的信息辅助预测。最常见的辅助信息是Trimap,即将图片划分为前景,背景及过度区域三部分。另外也有以背景或交互点作为辅助信息。
2. 一种是不依赖任何辅助信息,直接实现Alpha预测。
本文将分别对两类Matting算法展开介绍,和小伙伴们一起梳理Matting的发展历程。
DIM -Matting
DIM(Deep Image Matting)第一次阐述了在给定图像和辅助信息Trimap的情况下,可以通过端到端的方式学习到Alpha。其网络分为两个阶段,第一阶段是深度卷积编码-解码网络, 第二阶段是一个小型卷积神经网络,用来减少编码-解码网络引起的细节损失,提升Alpha预测的准确性和边缘效果。在DIM之后诞生了大量的基于Trimap的Matting网络。
图片来源:Xu, Ning, et al. "Deep image matting." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
BGMV2:
以背景作为辅助信息
BGMv2(Background Matting v2) 改变思路,利用背景图像取代Trimap来辅助网络进行预测,有效避免了Trimap获取费时费力的问题,并将网络分为Base网络和Refiner两部分。在计算量大的Base网络阶段对低分辨率进行初步预测,在Refiner阶段利用Error Map对高分辨率图像相应的切片进行Refine。通过此实现了高分辨率图像的实时预测。
图片来源:Lin, Shanchuan, et al. "Real-time high-resolution background matting." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.
MODNet
辅助信息的获取极大限制了Matting的应用,为了提升Matting的应用性,针对Portrait Matting领域MODNet摒弃了辅助信息,直接实现Alpha预测,实现了实时Matting,极大提升了基于深度学习Matting的应用价值。MODNet将Matting分解成三个子目标进行优化,通过任务分解提升Alpha预测的准确率。
图片来源:Ke Z, Li K, Zhou Y, et al. Is a Green Screen Really Necessary for Real-Time Portrait Matting?[J]. arXiv preprint arXiv:2011.11961, 2020.
当前PaddleSeg提供的Matting算法便是对MODNet算法的复现,并在原著基础上提供了多个不同主干网络的预训练模型如RestNet50_vd、HRNet_w18 来满足用户在边缘端、服务端等不同场景部署的需求。
图片数据引用说明:
[1]Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, Pamela Rott. A Perceptually Motivated Online Benchmark for Image Matting.

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Protobuf 为啥比 JSON、XML 牛?
收录于 《深入微服务》 大家好,我是 “潇洒哥老苗”。 今天,我带大家更深层次的认识认识 Protobuf,如果你对 Protobuf 的用法还不熟悉,直接前往:https://developers.google.com/protocol-buffers/docs/proto3。 当对 Protobuf 有了基本的认识后,就会明白了 Protobuf 序列化的数据会比 JSON、XML 传输效率更高。 那为啥会高呢?本篇就带着这个问题一探究竟。 看表面 对于 JSON、XML,为了便于数据传输时的可阅读性,会保留数据的结构化信息,举个 JSON 例子,如下: { "name": "laomiao", "age": 18 } 当发送该信息时,接受方收到后就会明白,这是个 “key/value” 形式的数据,并且"name" 后是姓名,"age" 后是年龄。 那如何压缩该数据呢? 我们可以删除 “花括号”、“name”、“age” 以及其它的 “冒号”、“逗号”、“引号” 等结构数据。 laomiao18 那这样删除了,接收方怎么知道,哪个是姓名?哪个是年龄? 删除 ”结构“ 只需要发送方...
- 下一篇
[iOS研习记]——谈谈静态库与动态库
[iOS研习记]——谈谈静态库与动态库 在iOS项目开发中,静态库和动态库我们时刻都在使用,离开了库的支持,我们将会举步维艰。比如,你要画界面,总离不开UIKit这个库吧,你要使用的各种基础数据结构,如NSString,NSArray等,也离不开Foundation这个基础库。除了官方的库外,开发中我们也会从Github等开源社区下载第三方的开源库进行使用。一般我们使用的第三方库或自己开发的库都采用静态库的方式使用,而系统提供的库大多是动态库,方便多进程共享。虽然我们天天在用库,但你对静态库和动态库真的了解么?静态库和动态库的结构是怎样的?静态库和动态库有什么区别?它们又是怎么应用的?本节博客,我们就来聊一聊这些问题。 1. 引言 静态库与动态库有很多相似之处,当然也有很多差异。 从后缀名来说,.a为后缀名的库文件是静态库,.dylib为后缀名的库文件是动态库。在iOS开发中,更多时候我们使用的库是以.framework为后缀的。framework可以是静态库,也可以是动态库,framework本身是一种打包方式。我们知道,我们在编写代码时,编写的都是“源码”,而要让计算机理解这些源码...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)