引言

语义分割得到边缘信息指导修复其三

存在问题现在的图像修复方法主要的通过周围像素来修复,当修复区域与前景区域(显著物体)有交叠时,由于修复区域缺失前景与背景的时间内容导致修复结果不理想。

提出方法: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的更多相关文章

  1. spring源码:Aware接口(li)

    一.spring容器中的aware接口介绍 Spring中提供了各种Aware接口,比较常见的如BeanFactoryAware,BeanNameAware,ApplicationContextAwa ...

  2. 源码阅读笔记 - 2 std::vector (2) 关于Allocator Aware Container特性

    所有的STL容器,都保存一个或默认,或由用户提供的allocator的实例,用来提供对象内存分配和构造的方法(除了std::array),这样的容器,被称作Allocator Aware Contai ...

  3. ios app响应background,foreground 事件实现

    1 通过AppDelegate 实现 App进入后台事件方法 - (void)applicationDidEnterBackground:(UIApplication *)application AP ...

  4. 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 ...

  5. Windows Phone Foreground Toast

    Basically ToastPrompt is an UI component that derives from the Coding4Fun toolkit's abstract PopUp&l ...

  6. GMF:如何让网格显示在background,而不是foreground

    前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把 ...

  7. 收到远程通知,怎么区分是点击通知栏提醒进去的还是在foreground收到的通知?

    我现在是要区分点击通知栏的通知进入应用还是点击应用图标进入的,1,开始程序都是在后台.2,接受通知都是在foreground状态.applicationdidFinishLaunchWithOptio ...

  8. Spring中Aware相关接口原理

    Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextA ...

  9. Bean的前身今世&处理器&Aware

    出生: <bean>......</bean> 幼年:BeanDefinition  bean的接口定义 小学:GenericBeanDefinition  基础的bean映射 ...

  10. spring中的aware接口

    1.实现了相应的aware接口,这个类就获取了相应的资源. 2.spring中有很多aware接口,包括applicationContextAware接口,和BeanNameAware接口. 实现了这 ...

随机推荐

  1. PLC扩展模拟量输入模块是什么

    PLC模拟量输入模块就是采集电压.电流.热电阻.热电偶或者是温度等模拟量的采集模块,然后再通过总线传输到电脑上的智能模块.其实就是一款将远程现场的模拟量信号采集到计算机的设备,模拟量是表示了在一定的范 ...

  2. Learn day9 粘包\struct用法\hashlib校验\socketserver并发\模块引入\进程\join\守护进程

    1.粘包现象 总结 : 导致黏包现象的两种情况 hello,worl d (1) 在发送端,发送数据太快,频繁发送 (2) 在接收端,接收数据太慢,延迟截取 # ### 服务端 import sock ...

  3. Spring MVC 9大组件概述

    SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean.FrameworkServlet和 DispatcherServlet.HttpServletBean直接继承 ...

  4. Docker(12)- docker run 命令详解

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 创建一个新的容器并运行一个 ...

  5. Spring Cloud 纯干货,从入门到实战

    导读 之前写过一篇SpringCloud从入门到精通的点我直达,微服务基础知识点我直达,今天我们使用Spring Cloud模拟一个电商项目.分别有以下2个服务,商品.订单.下面我们开始叭 技术栈 S ...

  6. Spider_基础总结6--动态网页抓取--selenium

    # 有些网站使用 '检查元素'也不能够好使,它们会对地址进行加密,此时使用Selenium 调用浏览器渲染引擎可以模拟用户的操作,完成抓取: # 注:selenium既可以抓取静态网页也可以抓取动态网 ...

  7. animation关键帧动画语法

    基本声明和用法 @-webkit-keyframes NAME-YOUR-ANIMATION { 0% { opacity: 0; } 100% { opacity: 1; } } @-moz-key ...

  8. new与malloc的10点区别(转)

    1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存.自由存储区是C++基于new操作符的一个抽象概念,凡是通过ne ...

  9. ceph卡在active+remapped状态

    最近看到了有人的环境出现了出现了卡在active+remapped状态,并且卡住不动的状态,从pg的状态去看,这个pg值分配了主的pg,没有分配到副本的osd,集群的其他设置一切正常 这个从网上搜寻到 ...

  10. Cpython的全局解释器锁(GIL)

    # Cpyrhon解释器下有个全局解释器锁-GIL:在同一 # 在同一时刻,多线程中只有一个线程访问CPU # 有了全局解释器锁(GIL)后,在同一时刻只能有一个线程访问CPU. # 全局解释器锁锁的 ...