One-Stage Inpainting with Bilateral Attention and Pyramid Filling Block

论文链接:https://arxiv.org/abs/1912.08642

源码地址:https://github.com/KumapowerLIU/One-Stage-Inpainting-with-Bilateral-Attention-and-Pyramid-Filling-Block

1. 引言

这篇论文解决的问题是图像修复(Image inpainting): a task to generate the alternative structures and textures of plausible hypothesis for missing regions in corrupted input images.

早期的工作的思路是texture synthesis,但是这些方法没有集合语义信息,只是重建局部的纹理模式。近年来,基于深度学习的图像修复方法开始出现,早期的方法没能有效利用上下文信息, 因此,容易产生noise patterns和texture artifacts。

在这篇论文中,作者提出了一个双阶段的模型,训练分为两步(the first training is to recover meaningful structures and the second training is to generate textures)。其中,第一次是利用简单的U-net修复出目标的结构,在第一次训练中label没有纹理。第一次训练完成后,利用第一次训练的得到的参数进行第二次训练,第二次的label就是原图(有纹理),这样就能够在测试的时候节省很多时间。同时,在第二次训练时,加入了Bilateral Attention 和 Pyramid Filling Block 提升效果。

论文的贡献有三点:(1)提出了 bilateral attention layer,作用为 characterize the value and distance relationship between deep feature patches to ensure local correlation and long-term continuity. (2)提出了 pyramid filtering block,作用为 fill the hole regions of deep features progressively by using high-level contextual semantic features. (3)设计 training strategy,减少了测试阶段的 inference time。

2. 方法框架

2.1 总体架构

第一次训练的架构如下图所示。作者表示,这里使用了Image-to-image translation with conditional adversarial networks 中提到的网络架构,但是去掉了最后一层。

第二次训练的架构如下图所示。编码器和解码器使用的是第一次训练中得到的参数,同时,在这个网络中使用了 BA-layer,PF-block 和 SE-block。作用分别是:PF-block filled the feature maps from deep to shallow. SE-block optimizes the feature maps in the channel dimension, and the BA-layer reconstructs it in spatial dimension.

作者指出,论文最重要的部分是 attention 方法。

2.2 Bilateral attention

作者指出,受到传统双边滤波算法的启发,提出了从值和距离两个角度描述特征相似程度,类似于双边滤波。具体来说,具体来说,以当前的特征点为中心,计算其与周围8个点包括它自己的值的相似度(其实就是3×3的kernel),这里可以用点积来计算,并将这9个值分别乘以这些权重然后相加得到新的特征点。同时,我们以当前特征点为中心,利用高斯分布,来刻画其与周围24个点(5×5的kernel)的相似度,然后同样进行加权相加,得到新的特征点,最后这两个特征点拼接并降维得到最后的特征图,整体架构如下图所示:

2.3 金字塔修复模块

在这个模块中,利用已经被填满的高级语义特征逐步填充浅层的特征,具体来说从高到低采用金字塔架构逐步填充特征,并把这些特征利用skip-connection的方式连接到decoder,同时我们采用short-cut的方式将原特征图与填充完的特征图进行连接,这是因为在经过第一次训练阶段之后,马赛克区域并不是完全无效的。

3. 效果与结论

从实验效果上来看,该算汉的效果优于当前主流方法。总结起来,论文工作为三方面:The bilateral attention layer ensures the local correlation and long-term continuity of feature patches. Meanwhile, the pyramid fill block helps our model fill void regions with high-level semantic information to achieve better predictions. Moreover, the one-stage architecture is effective in reducing the time.

基于Bilateral Attention和Pyramid Filling Block的图像修复方法的更多相关文章

  1. C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法

    本文实例讲述了C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法.分享给大家供大家参考.具体如下: 这个类不是我实现的,英文原文地址为http://www.egg ...

  2. 基于OpenCV的火焰检测(一)——图像预处理

    博主最近在做一个基于OpenCV的火焰检测的项目,不仅可以检测图片中的火焰,还可以检测视频中的火焰,最后在视频检测的基础上推广到摄像头实时检测.在做这个项目的时候,博主参考了很多相关的文献,用了很多种 ...

  3. 【翻译自mos文章】ABMR:在asm 环境中測试Automatic Block Recover 特性的方法

    ABMR:在asm 环境中測试Automatic Block Recover 特性的方法 參考原文: ABMR: How to test Automatic Block Recover Feature ...

  4. 基于点云的3ds Max快速精细三维建模方法及系统的制作方法 插件开发

                                 基于点云的3ds Max快速精细三维建模方法及系统的制作方法[技术领域][0001]本发明涉及数字城市三维建模领域,尤其涉及一种基于点云的3d ...

  5. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  6. 基于位图(Bitmap、BitmapData)的图片处理方法(C#)

    目前操作位图的主流方法有三种: 1.基于Bitmap像素的处理方法,以GetPixel()和SetPixel()方法为主.方法调用简单,但是效率偏低. 2.基于内存的像素操作方法,以System.Ru ...

  7. tcpproxy:基于 Swoole 实现的 TCP 数据包转发工具的方法

    假设我们希望有一台机器A(ip 192.168.1.101)要开放端口6379给用户访问,但可能实际情况是用户无法直接访问到A(ip 192.168.1.101), 但却有一台机器B(ip 192.1 ...

  8. 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法

    当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...

  9. 基于梯度场和Hessian特征值分别获得图像的方向场

    一.​我们想要求的方向场的定义为: 对于任意一点(x,y),该点的方向可以定义为其所在脊线(或谷线)位置的切线方向与水平轴之间的夹角: 将一条直线顺时针或逆时针旋转 180°,直线的方向保持不变. 因 ...

随机推荐

  1. Selenium Grid的原理、配置与使用(转)

    Selenium GridSelenium Grid在前面介绍Selenium的时候说过它有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试.讲分布式之前还是要说说UI自动化的 ...

  2. 入门大数据---Spark整体复习

    一. Spark简介 1.1 前言 Apache Spark是一个基于内存的计算框架,它是Scala语言开发的,而且提供了一站式解决方案,提供了包括内存计算(Spark Core),流式计算(Spar ...

  3. 【python + NATAPP】实现内网穿透的简易数据传输

    1. 服务端 接收两张图像的地址,返回这两张图像的相似度 import os, shutil, requests import cv2 import numpy as np import imgs_s ...

  4. 学习Java的Day03

    接口的特点!!!! 接口不能创建对象 接口的变量使用public static final修饰,如果不写默认添加: 接口的方法为public abstrict,如果不写默认添加: 子类必须重写接口中所 ...

  5. mpvue实战-手势滑动导航栏

    写点东西记录一下美好时光,上周学习了一下通过mpuve开发微信小程序,看完文档,就准备撸起袖子加油干的时候,一开始就被支持手势滑动的导航栏给搞懵逼了.求助一波百度和谷歌未果后,只能自己动脑动手!为了给 ...

  6. I/O模式及select、 poll、 epoll

    I/O多路复用技术 复用技术(multiplexing)并不是新技术而是一种设计思想,在通信和硬件设计中存在频分复用.时分复用.波分复用.码分复用等.在日常生活中复用的场景也非常多.从本质上来说,复用 ...

  7. 很实用的h5实现名片扫描识功能快速结合市场运营

    功能描述: 点击名片识别按钮,将名片上的个人信息扫描并解析出来显示. 实现步骤: 1.点击第一个页面上的名片识别按钮,调出手机摄像头和相册,让用户进行选择 2.获取照片或者图片的base64数据,传值 ...

  8. SpringBoot01-启动类启动做了那些事情

    1.第一个步骤进入SpringApplication构造函数 public SpringApplication(ResourceLoader resourceLoader, Class<?> ...

  9. vue页面原样导出excel表格

    github地址:https://github.com/wuzhiaite/vue-samples 1.excel导出 做过业务系统的知道,进行涉及到excel的导出,列表数据动则几十万,但是也有一部 ...

  10. Buy a Ticket,题解

    题目连接 题意: 没个位置有一个点权,每个边有一个边权,求对于每个点u的min(2*d(u,v)+val[v])(v可以等于u) 分析: 我们想这样一个问题,从u到v的边权*2再加一个点权就完了,我们 ...