基于监督学习+自监督学习的智能抠图,精确到发丝 | CVPR 2020
来源 | AI算法与图像处理(ID:AI_study)
华盛顿大学的研究者最近发表的论文在CVPR 2020提供了一个新的和简单的智能抠图方法。你可以在家里做这些日常设置,使用固定或手持相机。我们的方法也是最先进的,给出的输出可比专业的结果。在本文中,我们将介绍该方法的动机、技术细节和使用技巧。
论文:https://arxiv.org/pdf/2004.00626.pdf
项目:https://github.com/senguptaumd/Background-Matting
Matting是什么?
Matting是将图像分离为前景和背景的过程,这样你就可以将前景合成到新的背景上。这是绿屏效应背后的关键技术,广泛应用于视频制作、图形和消费应用。为了建模这个问题,我们将捕获的图像中的每个像素表示为前景和背景的组合:
我们的问题是解决给定的图像(C)每个像素的前景(F),背景(B)和透明度(alpha).显然这是高度不确定的,因为图像有RGB通道,这需要从3个观察值解决7个未知。
分割的问题
一种可能的方法是使用分割分离前景进行合成。尽管分割在近年来取得了巨大的进步,但它并不能解决所有的问题。分割给每个像素分配一个二进制(0,1)标签来代表前景和背景,而不是解决一个连续的alpha值。这种简化的效果如下例所示:
边缘的区域,特别是头发,有一个真正的alpha值在0到1之间。因此,分割的二进位性质创造了一个苛刻的边界周围的前景,留下可见的人工的痕迹。解决了部分透明度和前景颜色允许更好的合成在第二帧。
使用随意捕捉背景
由于matting是一个比segmentation更难的问题,额外的信息经常被用来解决这个无约束的问题,即使是在使用深度学习的时候。
许多现有的方法使用一个 trimap,或已知前景、背景和未知区域的手工标注的映射。虽然这对于一幅图像是可行的,但是标注视频是非常耗时的,并不是这个问题的一个可行的研究方向。
我们选择使用捕获的背景作为真实背景的估计。这使得前景和alpha值更容易解决。我们称之为“随意捕捉”的背景,因为它可以包含轻微的运动,颜色差异,轻微的阴影,或与前景相似的颜色。
上图显示了我们可以轻易地对真实背景作出粗略估计。当人离开场景时,我们捕捉他们身后的背景。下图显示了它的样子:
注意这张图片是如何具有挑战性的,因为它有一个非常相似的背景和前景颜色(特别是周围的头发)。它也是用手持电话录制的,包含了轻微的背景运动。
“我们称之为随意捕捉的背景,因为它可以包含轻微的运动,颜色差异,轻微的阴影,或与前景相似的颜色。”
Tips for Capturing
虽然我们的方法适用于一些背景扰动,但当背景是恒定的,在室内环境中效果最好。例如,它在被摄主体投射的高度明显的阴影、移动的背景(例如水、汽车、树木)或大曝光变化的情况下不起作用。
我们还建议在视频结束时让人离开场景,然后从连续的视频中拉出画面来捕捉背景。当你从视频模式切换到照片模式时,许多手机都有不同的变焦和曝光设置。当你用手机拍摄时,你也应该启用自动曝光锁定。
捕捉技巧的总结:
选择你能找到的最恒定的背景。
不要站得离背景太近,这样你就不会投下阴影。
启用手机的自动曝光和自动对焦锁定功能。
这种方法和背景减法一样吗?
另一个自然的问题是这是否像背景减法。首先,如果在合成中使用任何背景都很容易,那么电影行业就不会花费数千美元在绿色屏幕上。
此外,背景减法不能解决部分alpha值,给予相同的硬边缘分割。当有相似的前景和背景色或背景中的任何运动时,它也不能很好地工作。
网络细节
该网络由一个监督的步骤和一个非监督的细化组成。我们将在这里简要地总结它们,但要了解详细信息,请参阅论文。
监督式学习
为了首先训练网络,我们使用Adobe composiated -1k数据集,其中包含450个仔细标注的ground truth alpha mattes。我们以一种完全监督的方式训练网络,每个像素的损失输出。
请注意,我们有几个输入,包括图像、背景、软分割和时间运动信息。我们的新上下文切换块( Context Switching Block )也确保了对不良输入的鲁棒性。
Unsupervised Refinement with GANs
监督学习的问题是adobe数据集只包含450个ground truth输出,这远远不足以训练一个好的网络。获得更多的数据是极其困难的,因为它涉及到手工注释图像的alpha哑光。
为了解决这个问题,我们使用GAN细化步骤。我们从被监督的网络中获取输出的alpha哑光,并将其合成到一个新的背景中。然后鉴别器试着辨别这是真实的还是虚假的图像。作为回应,生成器学会更新alpha哑光,从而得到尽可能真实的合成,以欺骗鉴别器。
这里重要的部分是,我们不需要任何带标记的训练数据。该鉴别器是用成千上万的真实图像进行训练的,这些图像很容易获得。
在数据上使用GAN训练
GAN的另一个有用之处是,您可以在自己的映像上对生成器进行训练,从而在测试时改进结果。假设您运行网络,但输出不是很好。为了更好地欺骗判别器,你可以更新精确数据上生成器的权重。这将与您的数据过度匹配,但将改善您提供的图像的结果。
未来的工作
虽然我们看到的结果是相当好的,我们将继续使这种方法更准确和容易使用。
特别地,我们想让这个方法对背景运动,摄像机运动,阴影等情况更加健壮。我们也在寻找方法,使这种方法在实时工作和较少的计算资源能力。这可以在视频流或移动应用等领域实现各种各样的用例。
参考
[1] S. Sengupta, V. Jayaram, B. Curless, S. Seitz, and I. Kemelmacher-Shlizerman, Background Matting: The World is Your Green Screen (2020), CVPR 2020
[2] L.C. Chen, Y. Zhu, G. Papandreou, F. Schroff, and H. Adam, Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (2018), ECCV 2018
[3] Y.Y. Chuang, B. Curless, D. H. Salesin, and R. Szeliski, A Bayesian Approach to Digital Matting (2001), CVPR 2001
[4] Q. Hou and F. Liu. Context-Aware Image Matting for Simultaneous Foreground and Alpha Estimation (2019), ICCV 2019
[5] H. Lu, Y. Dai, C. Shen, and S. Xu, Indices Matter: Learning to Index for Deep Image Matting (2019), ICCV 2019
推荐阅读
空间-角度信息交互用于光场图像超分辨重构,性能达到最新SOTA | ECCV 2020
阿里巴巴副总裁司罗:达摩院如何搭建NLP技术体系?
Python 爬取 13966 条运维招聘信息,这些岗位最吃香
Python 编程语言的核心是什么?
Python轻松搞定Excel中的20个常用操作
2020 活久见:欧美主流 app「熔断」了
赠书 | DeFi沉思录:历史、中国与未来
你点的每个“在看”,我都认真当成了AI
相关文章:

安装Jpype
1、下载JPype-0.5.4.2 2、 python setup.py install error: gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE2 -fexceptions -fstack-protector --paramssp-buffer-size4 -m64 -mtunegeneric -D_GNU_SOURCE -fPIC -fPIC -I/usr/lib/jvm…

SQL SERVER中带参数的返回
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/ CREATE PROCEDURE LoginUser loginUN char(50) OUTPUT, loginPW char(40)ASif loginPW (select [password] from users where usernameloginUN) return 0;else ret…

Android Studio 编译单个module
前期自己要把gradle环境变量配置好 在Terminal中gradle命令行编译apk 输入gradle assembleRelease 会编译全部module编译单个modulecd ./xiruan //xiruan是module的名字 //意思是进入module目录gradle assembleRelease //编译出自己签名的apk //签名环境也要配置好gradle ass…

linux下文件字符集转化实战篇
linux下文件字符集转化实战篇------------------------------------------为什么转换编码,起因:分析应用程序日志,文件编码格式gb2312(含中文字符),通过linux shell脚本从日志中提取出需要的字段并生成有固…

如何得到数据库中所有表字段及字段中文描述
如何得到数据库中所有表字段及字段中文描述以下资料,通过csdn的一位师兄从SQL版主那得到:sql中SELECT (case when a.colorder1 then d.name else end) N表名, a.colorder N字段序号, a.name N字段名, (case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end)…
它估值25亿!被马云领投,是华为“老战友”,网友:也许股价能超茅台!
最近一条新闻被炒的沸沸扬扬:十年以来中国最大IPO,中芯国际将融资532亿元!何为IPO?翻译即为一家公司第一次向全社会公开售出它的股份。买的人越多,代表着社会对其信心越大。为什么2020年,能爆发这样1场最大…

改變人生的21種好習慣
當一個人生活枯燥的時候, 他忘了用心體會是一種習慣。 當一個人覺得人生乏味的時候, 他忘了培養幽默是一種習慣。 當一個人體力日差的時候, 他忘了運動建身是一種習慣。 當一個人工作疲憊的時候, 他忘了認真休息是一種習慣。 當一…
Python 编程语言的核心是什么?
作者 | Brett Cannon译者 | 弯月,责编 | 王晓曼头图 | CSDN下载自视觉中国出品 | CSDN(ID:CSDNnews)为什么要问这个问题?我想要用Python实现WebAssembly,这并不是什么秘密。这不仅可以让Python进入浏览器&a…

关闭页面不用提示的方法
Response.Write("<script>window.openernull;window.close();</script>") ;

VIM 必知必会12大类型操作
2019独角兽企业重金招聘Python工程师标准>>> VIM是在unix/linux系统下最常用的文本编辑器,呵呵……这就不用我再强调了,现在直接贴上vim的最常用的操作,方便日后温习及查阅! 1、插入 i 在光标前插入 I 在行首插入 a 在光标后插入 …

前后端分离的思考与实践(三)
Midway-ModelProxy — 轻量级的接口配置建模框架前言使用Node做前后端分离的开发模式带来了一些性能及开发流程上的优势(见《前后端分离的思考与实践 一》), 但同时也面临不少挑战。在淘宝复杂的业务及技术架构下,后端必须依赖Java搭建基础架构,同时提供…

替换HTML代码
将一些HTML替换掉 eg:strContentstrContent.Replace("&","&");strContentstrContent.Replace("","");strContentstrContent.Replace("<","<");strContentstrContent.Replace(">&quo…

什么是线程安全?
http://baike.baidu.com/view/1298606.htm 线程安全 目录 什么是线程安全?举例线程安全性线程安全程度不可变线程安全有条件的线程安全线程兼容线程对立什么是线程安全?举例线程安全性线程安全程度不可变线程安全有条件的线程安全线程兼容线程对立展开编…
中国开源大爆发进行时,你没掉队吧?
作者 | 陈利鑫头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从开源(Open Source)一词提出到如今,开源的概念越来越成熟,作为一种创造及协作模式,开源已经不仅仅局限于软件技术…

eclipse设置
2019独角兽企业重金招聘Python工程师标准>>> eclipse 下载 地址 http://www.eclipse.org/downloads/packages/release/Ganymede/SR2 设置 jdk 参数 jre definition vm arguments -Xms800m -Xmx800m -XX:MaxNewSize256m -XX:MaxPermSize256m -Dfile.encod…
吊打一切:YOLOv4的tricks汇总
来源 | AI算法与图像处理(ID:AI_study)即使是目标检测在过去几年开始成熟,竞争仍然很激烈。如下所示,YOLOv4声称拥有最先进的精度,同时保持高处理帧速率。它在 MS COCO数据集上,使用Tesla V100以接近65 FPS…

如何播放RM文件?
<EMBED SRC"MY_LIFE.RPM" WIDTH300 HEIGHT134 >Tip:SRC是可以省略的,当mime Type 参数如下时:<EMBED ...,TYPE"audio/x-pn-realaudio-plugin",...>,这样做会产生不可预料的结果,因此强烈推荐你包…

mongodb地理位置索引实现原理
地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B Tree,如何将地理位置转化为可建立BTree的形式,下文将为你描述。 首先假设我们将需要索引的…

NSMakeRange基础函数应用
NSRange NSMakeRange (NSUInteger loc,NSUInteger len );这是官方得接口描述。loc 为location缩写,len 表示长度。作用:在loc指定得位置开始往后获取len长度个得元素。示例程序使用这个函数来为指定数组得某个位置向后指定长度得元素集合。如NSRange NSM…

上传图片,要求图片200100象素,大小小于2M
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/上传图片,要求图片200100象素,大小小于2M,如果图片不符合要求,不能上传,否则上传图片,上传以后对图…
炸裂!这些大厂跪求的人才太牛了!
今年所有的互联网公司都在ALL in AI,百度、腾讯、阿里巴巴、京东等互联网巨头都在四处挖掘AI人才。AI的岗位需求很多,几乎每天都有数百个JD放出。而亿欧智库发布的《2020全球人工智能人才培养研究报告》提到,近4年AI人才的需求量以每年74%的速…

新春祝福必杀计之发送短信攻略
新的一年就要到了,陆陆续续的收到很多同事们的短信祝福,哎,不能欠人家的人情债啊,但是我实在是个懒人啊,这个祝福短信还是要回复的啊,我的手机里有超过百位联系人,全是和工作有关的,…
centos6.5环境DNS-本地DNS主从服务器bind的搭建
centos6.5环境DNS-本地DNS主从服务器bind的搭建在上一篇博客中我已经搭建好了一个本地DNS服务器,能够实现正向反向解析,那么我们只需要加入一台从DNS服务器即可完成,我们来开始配置主从服务器:一.主DNS服务器上面的额外…
再见,Python!
结合我最近这些年的 Python 学习、开发经验,发现近90%的程序员在学 Python 时都会遇到下面这3个问题:1.想学Python,但不知从何学起,应用方向太多了也不知道该选择什么方向...2.基础入门看似简单,但是进阶实战就举步维艰…

如何更新父窗体
Response.Write("<script languagejavascript>window.opener.locationwindow.opener.location.href;</script>") 第一种方案是:file a.htm function OpenDialog(url,param){return window.open(url,param, "DialogWidth:450px;DialogH…

文件体积单位的换算
单位转换(参考): 1bit(这个比特表示一个二进制数字) 1Byte(这个单词音译过来也叫“比特”但是表示一个十六进制的数字) 1B1Byte8bit 1 kB 1024 B (kB - kilobyte) 千 1 MB 1024 kB (MB - mega…

防止盗链下载问题
经常在网络上四处载东西,有时碰到直接拷贝一个类似 http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时,却被告知没有登录或者直接跳转到其他页面的情况,然后等登录后直接下载该文件。要实现上面情况…
中国人工智能市场破 50 亿!你还不了解 AI 云服务吗?
作者 | 马超责编 | 伍杏玲出品 | CSDN(ID:CSDNnews)从AI的发展趋势来看,最新的人工智能模型对于算力的要求往往较高,如谷歌的T5,其整个模型的参数数量达到了惊人的 110 亿,谷歌科学家更在T5的论…

Java中数据存储方式
2019独角兽企业重金招聘Python工程师标准>>> 1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你…

Oracle与JCP执行委员会分享了他们的Java EE策略
Anil Gaur是Oracle集团负责Java EE和WebLogic Server的副总裁。他受邀在上一次的JCP执行委员会会议上发表了演讲,透露了有关Java EE未来发展的一些信息。他所传达的信息和Oracle之前的说法一致:企业编程正在发生变化,Oracle希望适应这种变化。…