Foreground-aware Image Inpainting
引言
语义分割得到边缘信息指导修复其三
存在问题:现在的图像修复方法主要的通过周围像素来修复,当修复区域与前景区域(显著物体)有交叠时,由于修复区域缺失前景与背景的时间内容导致修复结果不理想。
提出方法:a foreground-aware image inpainting system,可明确区分结构推断和内容修复。模型首先预测前景轮廓,然后根据预测发前景轮廓进行区域修复。
论文来源:CVPR 2019
相关论文:
《Image inpainting for irregular holes using partial convolutions.》部分卷积《Free-form image inpainting with gated convolution》门控卷积
《Spg-net: Segmentation prediction and guidance network for image inpainting.》通过语义分割获取前景蒙版,来修复图像
论文贡献:
1.提出区分结构推断和内容修复的模型,使用显式轮廓指导explicit contour guidance修复图像
2.为了推断图像结构(图像边界),提出了边界修复模型来参数精确的图像边界
3.为了高效率完成模型的训练,我们采用curriculum的训练方法来训练结构推断和内容修复的模型
数据集的制作:
基于前景感知的图像修复框架要求我们训练一个轮廓补全模块并自动推断轮廓,因此我们需要一个带有标记轮廓的训练数据集。
salient object segmentation datasets(显著物体目标检测):显著目标检测来源于视觉显著性,即找到一张图像中人眼最关注的目标区域,是一个二分类的问题。背景全部变为黑色,而目标变为白色,但是一般只能检测一个显著性目标,不会涉及到分类的问题。
从各种公共数据集(显著性分割数据集:包括MSRA-10K[10]、人工注释的Flickr自然图像数据集等)中收集了超过15762幅包含一个或几个突出对象的自然图像。每个图像在这个突出数据集中被注释与一个精确的分割掩码。数据集的内容非常多样化,包含了各种各样的对象,包括动物、植物、人、面孔、建筑物、街道等等。每个图像中物体的相对大小有很大的差异。我们将所有样本分为12,609张训练图像和3,153张测试图像。
利用mask的数据集:Places2, Paris ,CelebFace
网络结构:

1 Contour Detection

通过DeepCut生成一个具有精确边界的物体蒙版;
由于图像上缺失区域的存在,导致生成的语义分割模板带有噪声,使用二值化孔洞蒙版的方式移除蒙版中被误分类为物体的像素点,再通过connected component analysis连接成分分析进一步移除小集群来获得前景蒙版;
再通过Sobel边缘检测算子获得物体的不完整边界
2Contour Completion Module

目的:是补全缺失区域内的输入图像的缺失轮廓。预测出的edge map是二值图像。1表示前景对象的边界,0表示图像中的其他像素。
架构:
输入:待修复的图像、生成的非完整边界、孔的蒙版
输出:完整的物体边界
主体是GAN网络,经过粗细两层修复网络。
粗网络:encoder-decoder结构,得到孔洞粗略的边界预测,不能作为有效指导。
细网络:在粗网络的基础上机上 contextual attention layer。
类似于下图

PatchGAN
损失函数:


细网络上增加hinge loss,采用ReLu函数

3 Image Completion Module

损失函数



实验结果

Foreground-aware Image Inpainting的更多相关文章
- spring源码:Aware接口(li)
一.spring容器中的aware接口介绍 Spring中提供了各种Aware接口,比较常见的如BeanFactoryAware,BeanNameAware,ApplicationContextAwa ...
- 源码阅读笔记 - 2 std::vector (2) 关于Allocator Aware Container特性
所有的STL容器,都保存一个或默认,或由用户提供的allocator的实例,用来提供对象内存分配和构造的方法(除了std::array),这样的容器,被称作Allocator Aware Contai ...
- ios app响应background,foreground 事件实现
1 通过AppDelegate 实现 App进入后台事件方法 - (void)applicationDidEnterBackground:(UIApplication *)application AP ...
- Enlisting multiple 1-phase aware participants in the same transaction
In some cases it may be necessary to enlist participants that aren't two-phase commit aware into a t ...
- Windows Phone Foreground Toast
Basically ToastPrompt is an UI component that derives from the Coding4Fun toolkit's abstract PopUp&l ...
- GMF:如何让网格显示在background,而不是foreground
前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把 ...
- 收到远程通知,怎么区分是点击通知栏提醒进去的还是在foreground收到的通知?
我现在是要区分点击通知栏的通知进入应用还是点击应用图标进入的,1,开始程序都是在后台.2,接受通知都是在foreground状态.applicationdidFinishLaunchWithOptio ...
- Spring中Aware相关接口原理
Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...
- Bean的前身今世&处理器&Aware
出生: <bean>......</bean> 幼年:BeanDefinition bean的接口定义 小学:GenericBeanDefinition 基础的bean映射 ...
- spring中的aware接口
1.实现了相应的aware接口,这个类就获取了相应的资源. 2.spring中有很多aware接口,包括applicationContextAware接口,和BeanNameAware接口. 实现了这 ...
随机推荐
- Reverse for ‘password_reset_complete‘ not found. ‘password_reset_complete‘ is not a valid view funct
关注公众号"轻松学编程"了解更多 原因 在使用xadmin与django 2版本以上修改密码时会报这个错,这是由于django修改密码成功后使用的是success_url参数,而x ...
- windows下redis的PHP扩展安装
1.查看已安装PHP的信息,打印phpinfo(); 主要看三个信息:PHP版本,是否线程安全(TS或NTS),系统是x64还是x86.用以确定扩展文件的版本. 2.需要php_redis.dll这个 ...
- 想学 iOS 开发高阶一点的东西,从何开始?
前言 如果你正在学习 iOS, 或者正在从事IOS开发? 还是一个一个迷茫的待就业大学生,或是公司的到一个半老员工? 现在到了开发的一个阶段了,基本的东西很熟了,想着提高技术? 学习难一点的东西,不知 ...
- .netcore 简单使用ElasticSearch
.netcore 简单使用ElasticSearch(7.6) 最近在捣鼓学习了下ElasticSearch,在此记录下使用.netcore操作elastic search 的实现(简单的封装,使用) ...
- MarkdownPad 2中编辑
一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 #######七级标题 ########八级标题 #!/bin/bash declare -i evenSum=0 declare -i i ...
- Thinkphp3.2 cms之分类管理
四.分类管理 <?php namespace Admin\Controller; use Think\Controller; class CateController extends Contr ...
- 4G模块与WIFI模块的工作及应用区别
在物联网行业中,4G模块和wifi模块经经常会被使用,但是由于网络不同,二者的工作原理和场景还是有很大的不同,本篇主要讲讲4G模块和WIFI模块的功能和应用场景 什么是4G模块? 4G模块是基于4G网 ...
- JavaScript ES 模块:现代化前端编程必备技能
自从 ES 模块被添加到规范中后,JavaScript 中的模块就更加简单了.模块按文件分开,异步加载.导出是用 export 关键字定义的:值可以用 import 关键字导入. 虽然导入和导出单个值 ...
- JS中的Array之方法(1)
a=[2,4,5,6,7,90]; [1]. a.toString(); // 返回字符串表示的数组,逗号分隔 "2,4,5,6,7,90" [2]. a.join('||'); ...
- [MIT6.006] 4. Heaps and Heap Sort 堆,堆排序
第4节课仍然是讲排序,但介绍的是一种很高效的堆排序. 在编程过程中,有时候会需要进行extrat_max的操作,即从一个数列里挨个抽取最大值并将其它从原数列中移除.而排序问题也可以看作是一个extra ...