深度学习(7)之图像抠图 Image Matting算法调研

news2024/11/17 6:27:56

目录

1.Trimap和Strokes

2. 相关数据集

3.论文算法调研

3.1 Deep Image Matting

3.2 Semantic Image Matting

3.3 Background Matting

3.4 Background Matting V2

3.5 Semantic Human Matting

3.6 HAttMatting

3.7 MMNet:Towards Real-Time Automatic Portrait Matting on Mobile Devices

3.8 Fast Deep Matting for Portrait Animation on Mobile Phone

3.9 MODNet: Trimap-Free Portrait Matting in Real Time


1.Trimap和Strokes

Trimap和Strokes都是一种静态图像抠图算法,现有静态图像抠图算法均需对给定图像添加手工标记以增加抠图问题的额外约束。

  1. Trimap,三元图,是对给定图像的一种粗略划分,即将给定图像划分为前景、背景和待求未知区域
  2. Strokes则采用涂鸦的方式在图像上随意标记前景和背景区域,剩余未标记部分则为待求的未知区域

Trimap是最常用的先验知识,多数抠图算法采用了Trimap作为先验知识,顾名思义Trimap是一个三元图,每个像素取值为{0,128,255}其中之一,分别代表前景、未知与背景,如图


2. 相关数据集

  • Adobe Composition-1K
  • matting_human_datasets  : https://github.com/aisegmentcn/matting_human_datasets
  • VideoMatte240K
  • PhotoMatte85
  • RealWorldPortrait-636
  •  https://github.com/thuyngch/Human-Segmentation-PyTorch
  • Automatic Portrait Segmentation for Image Stylization: 1800 images
  • Supervisely Person: 5711 images

3.论文算法调研

3.1 Deep Image Matting

Paper:https://arxiv.org/pdf/1703.03872.pdf 

GitHub: https://github.com/Joker316701882/Deep-Image-Matting

Adobe在17年提出了Deep Image Matting,这是首个端到端预测alpha的算法;整个模型分Matting encoder-decoder stage与Matting refinement stage两个部分,Matting encoder-decoder stage是第一部分,根据输入图像与对应的Trimap,得到较为粗略的alpha matte。Matting refinement stage是一个小的卷积网络,用来提升alpha matte的精度与边缘表现。

说明:网络输入是一个patch图像(经过crop)和相应的 trimap, 通过concat, 共4通道输入网络,推理时也要提供trimap图,现实中不太方便

3.2 Semantic Image Matting

Paper: https://arxiv.org/abs/2104.08201 

Github: https://github.com/nowsyn/SIM

与Deep Image Matting类似,需要加入trimap进行抠图

3.3 Background Matting

Paper:https://arxiv.org/abs/2004.00626

GitHub: https://github.com/senguptaumd/Background-Matting

这篇文章要介绍的是一篇基于深度学习的无交互的抠图方法。它的特点是不需要Trimap图,但要求用户手动提供一张无前景的纯背景图,如图1所示,这个方法往往比绘制三元图更为简单,尤其是在视频抠图方向 。这个要求虽然不适用于所有场景,但在很多场景中纯背景图还是很容易获得的。

说明: 不需要Trimap图,但需要提供一张无前景的纯背景图 

3.4 Background Matting V2

Paper:  https://arxiv.org/abs/2012.07810

GitHub: https://github.com/PeterL1n/BackgroundMattingV2

Background Matting得到了不错的效果,但该项目无法实时运行,也无法很好的处理高分辨率输入。所以项目团队又推出了Background Matting V2,该项目可以以30fps的速度在4k输入上得到不错的结果。

说明: 与Background Matting类似,V2不需要Trimap图,但需要提供一张无前景的纯背景图

3.5 Semantic Human Matting

Paper: https://arxiv.org/pdf/1809.01354.pdf

GitHUb: https://github.com/lizhengwei1992/Semantic_Human_Matting 

阿里巴巴提出的Semantic Human Matting: 

  • 首次实现无需Trimap方式生成alpha图
  • 提出了新的fusion的策略,用概率估计alpha matte
  • 构造了新的数据集

将网络分成两个部分。

  • TNet: 对前景、背景、未知区域做像素级别的分类(相当于预测Trimap了)。
  • MNet: 将TNet的输出当做输入,生成更加精细的alpha matte。
  • 两个网络的输出经过Fusion Module生成最终的结果

T-Net对像素三分类得到Trimap,与图像concat得到六通道输入送入M-Net,M-Net通过encoder-decoder得到较为粗糙的alpha matte,最后将T-Net与M-Net的输出送入融合模块Fusion Module,最终得到更精确的alpha matte。

3.6 HAttMatting

Paper:  https://wukaoliu.github.io/HAttMatting/  

GitHub:https://github.com/wukaoliu/CVPR2020-HAttMatting (仅有效果图,连测试模型都没有,存在很大的质疑)

Attention-Guided Hierarchical Structure Aggregation for Image Matting

这也是一篇不需要提供trimap或者其他交互的抠图方法(可认为是自动化抠图),核心思想是抑制高级特征中的冗余语义,并消除空间线索中无用的背景细节,然后对其进行聚合以预测准确的alpha 通道。

为此,该文使用通道注意力(channel-wise attention)模型来蒸馏金字塔特征,并对空间线索使用空间注意力(spatial attention ),以同时消除前景以外的图像纹理细节。

说明:该文声称可以无trimap或者其他交互辅助的条件下,进行完全自动化抠图!! 实质上,存在很多矛盾,就比如上去,上述效果图,模型怎么知道要抠图是那个球球,而不是那条马呢?

更多质疑:[质疑][CVPR2020]只有强者才能“抠”脚 - 知乎 

3.7 MMNet:Towards Real-Time Automatic Portrait Matting on Mobile Devices

Paper: https://arxiv.org/abs/1904.03816

Github: https://github.com/hyperconnect/MMNet 

Mobile Matting Network (MMNet)采用了标准的编码-解码框架。其中,编码器通过多次下采样,逐步减小输入特征的尺寸,在捕获更高级语义信息的同时,也在丢失空间/位置信息。另一方面,解码器对特征图进行上采样,逐步恢复空间/位置信息,同时使其放大为原先的输入分辨率。另外,作者将来自跳连接的信息与上采样信息相串联,还采用了增强块来改善解码效果。如此,输出的alpha抠图就能与原始图像的尺寸保持一致了。MMNet的具体结构图1所示。

说明:17年的Paper,无需Trimap,在移动设备上实现了实时自动抠图功能,网络的体积较小, 效果有待验证

3.8 Fast Deep Matting for Portrait Animation on Mobile Phone

Paper: https://arxiv.org/abs/1707.08289 

GitHub: https://github.com/huochaitiantang/pytorch-fast-matting-portrait 

网络由两个阶段组成。

第一阶段是人像分割网络,它以一幅图像为输入,获得一个粗二进制mask。第二阶段是feathering模块(羽化模块),将前景/背景mask细化为最终的alpha matte。第一阶段用轻全卷积网络快速提供粗二进制mask,第二阶段用单个滤波器细化粗二进制mask,大大降低了误差。

说明:无需Trimap,输入RGB图像,输出是matte, 效果有待验证

3.9 MODNet: Trimap-Free Portrait Matting in Real Time

Paper: https://arxiv.org/pdf/2011.11961.pdf

Github: https://github.com/ZHKKKe/MODNet 

在线体验:Portrait Matting 

MODNet模型学习分为三个部分,分别为:语义部分(S),细节部分(D)和融合部分(F)

  • 在语义估计中,对high-level的特征结果进行监督学习,标签使用的是下采样及高斯模糊后的GT,损失函数用的L2-Loss,用L2loss应该可以学到更soft的语义特征;
  • 在细节预测中,结合了输入图像的信息和语义部分的输出特征,通过encoder-decoder对人像边缘进行单独地约束学习,用的是交叉熵损失函数。为了减小计算量,encoder-decoder结构较为shallow,同时处理的是原图下采样后的尺度。
  • 在融合部分,把语义输出和细节输出结果拼起来后得到最终的alpha结果,这部分约束用的是L1损失函数。

个人觉得结构设计上较为清晰,监督信息与方式利用合理

 说明:无需Trimap, MODNet整体Matting效果,相当不错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx虚拟主机、优化和防盗链

一、Nginx虚拟主机 1、基于域名的nginx虚拟主机的操作步骤 1.1 为虚拟主机提供域名和IP的映射(也可以使用DNS正向解析) echo "192.168.2.66 www.xkq.com www.wy.com" >> /etc/hosts1.2 为虚拟主机准备网页文档 mkdir -p /var/www/html/ly/ mkdir -p /var/w…

经典文献阅读之--VGICP(体素化的ICP匹配)

0. 简介 之前我们在以前的文章中介绍了很多有关于点云匹配相关的知识,最近两年处理GICP这一大一统的ICP匹配方法以外,还有一个工作对体素化和ICP这两者打起了心思,《Voxelized GICP for Fast and Accurate 3D Point Cloud Registration》提出…

动车的颜色种类

01 大家平时见到最多的动车 可能就是白色的吧 和谐号动车组开行后 白就是动车的经典配色 白色为底 车腰一条蓝色飘带让其设计感十足 我们也可以把这种动车配色 称为和谐白 02 复兴号CR400AF型电力动车组 最高运营速度350公里每小时 因其车身采用银色底色 搭配侧窗…

大数据时代必备技能,从0开始学好数据可视化

当今社会,数据可视化已经成为了一项非常重要的技能。随着大数据时代的到来,越来越多的人开始关注数据可视化,并希望能够快速地掌握这项技能。那么,如何快速学习数据可视化呢?以下是AdBright数据分析师的一些建议。 什么…

CDN的发展史和未来

互联网是一种不断变化的机制,新形式的数据和内容正在不断创造。在它商业化后不久,必须解决尽快将大量数据推送给最终用户的问题,CDN因此应运而生。 CDN的根源产生于近20年前,并一直是内容交付的驱动力,自其创立以来&a…

企业电子招投标系统源码之了解电子招标投标全流程

随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

虚拟机里安装ubuntu-23.04-beta-desktop-amd64,开启SSH(换源、备份),配置中文以及中文输入法等

一、下载 官网 清华镜像站(推荐) 二、配置虚拟机 【自定义】 点击“下一步”,此处【默认】,再点击“下一步”。 点击“稍后安装操作系统”,再点击“下一步”。 点击“Linux(L)”,版本选择【Ubuntu 64 位】,再点击…

升级H2数据库2.x版本遇见的问题

目录 一、引言二、集成H2基础配置三、升级H2版本2.x遇到的问题报错1报错2 三、H2关键字 一、引言 之前在跑代码单元测试时,一直用的内存数据库H2代替实际的Mysql数据库,如此便省去了对Dao的大量mock代码,类似于在跑Junit单元测试时直接跑了集…

报错:crbug/1173575 non-js module files deprecated

文章目录 报错分析解决方法一:尽可能使用JS模块文件方法二:使用type"module"属性方法三:忽略警告 报错 分析 这个错误报告 (crbug/1173575) 指的是非 JavaScript 模块文件将不再被支持,并且已经弃用。这个问题是因为Ch…

【获奖案例巡展】信创先锋之星——云上贵州信创工程中心大数据中台

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

【ctfshow】命令执行->web29-web44

前言 半夜网抑云听歌听emo了 z 刷会儿题不然睡不着了呜呜呜 红中(hong_zh0) CSDN内容合伙人、2023年新星计划web安全方向导师、 华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、 吉林师范大学网安大一的一名普通学生、搞网安论文拿了回大挑校二、 阿里云专家博…

2023年,人工智能和数据训练呈现哪些新趋势?

最近,多才多艺的“全能网友”ChatGPT一次次火出圈。未来人工智能将以多快的速度、发展到何种地步?人们已经开始坐下来认真地探讨和思考。 我们生活在这个日新月异的时代。新的一年,人工智能的真正能力和应用场景又发生了哪些演进?…

【学习笔记】go-gRPC 初尝试

安装protoc 安装地址 找到对应版本的anz安装文件 解压,将文件夹移动到goroot目录中,可以通过命令go env查看goroot目录。 如我的goroot目录为D:\Program Files\Go 或者移动到自定义目录,并将该目录设置到环境变量中即可。 安装go插件 …

混淆矩阵的输出,异常检测可视化(针对二分类)

对于二分类任务: 真阳性(True Positives, TP)为真实值为1,预测值为1,即正确预测出的正样本个数真阴性(True Negatives, TN)为真实值为0,预测值为0,即正确预测出的负样本…

网关(史上最全)

什么是网关 网关,很多地方将网关比如成门,没什么问题,但是需要区分网关与网桥的区别。 网桥工作在数据链路层,在不同或相同类型的LAN之间存储并转发数据帧,必要时进行链路层上的协议转换。可连接两个或多个网络&…

漫画:是喜,还是悲?AI竟帮我们把Office破活干完了

图文原创:亲爱的数据 国产大模型烈火制造。阿里百度字节美团各科技大佬不等闲。 大模型嘛,重大工程,对我等“怀保小民”来说,只关心怎么用,不关心怎么造。 我来介绍一下自己,我是一个写稿男团组合的成员&am…

13、fishhook原理Dobby

一、fishhook原理 1.1 fishhook代码分析 int rebind_symbols(struct rebinding rebindings[], size_t rebindings_nel) {//prepend_rebindings的函数会将整个 rebindings 数组添加到 _rebindings_head 这个链表的头部//Fishhook采用链表的方式来存储每一次调用rebind_symbols…

Java动态代理(JDK/CGLIB)静态代理

Java Guide动态代理阅读笔记。 一、代理模式 代理模式是一种比较好的理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real obiect)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 …

vue2+vue3——36+

vue2vue3——36 尚硅谷vue2vue2 Vue监测数据的原理_数组【18:56】数组vue 查看 没有 set() get()对象 有 get() set() 监测不到 不更新测试 : 数据改了 , 单页面没变 修改数组的 7方法 : filter 不改变原数组, 返回新的 数组 可以替换掉 原数…

逍遥自在学C语言 | 位运算符~的高级用法

前言 在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~ 运算符的一些高级用法。 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 ——…