SPG-Net: Segmentation Prediction and Guidance Network for Image Inpainting

pytorch

引言

利用语义分割获取空洞的边缘信息,进而指导修复其一

(挖个坑)deeplab系列

存在的问题:现有的基于生成模型的方法并没有利用分割信息来约束目标形状,导致边界模糊。

解决方法:提出引入语义分割信息,以消除类间的差异和类内的差异。将修复过程将图像修复过程分为分割预测segmentation prediction (SP-Net)和分割指导segmentation guidance (SG-Net)两步,首先预测待修复区域的分割标签,然后根据分割指导生成修复结果。

语义分割部分:两个公共数据集上进行了广泛的比较:Cityscapes数据集和Helen Face数据集

Cityscapes dataset有2,975张街景图像用于训练,我们使用验证集进行测试,其中包含500张图像。

Helen Face数据集有2000张脸图像训练和100张图像测试。并对两个数据集的分割标签进行了精细标注,用于训练。Cityscapes和Helen Face dataset分别注释了35和11个类别。为了更好地捕捉街景的全球结构,我们将35个类别划分为8个类别,分别是道路、建筑、标志、植被、天空、人、车辆和未标记的其他类别。

为了与现有的方法进行比较,我们训练大小为256x256的图像。对于每一张图像,我们在随机位置应用一个带有单个孔的掩模。洞的大小在图像大小的1/8到1/2之间。为了对整个网络进行训练,我们首先使用了目前最先进的语义分割方法Deeplabv3+,并确定了其模型参数。然后分别对SP-Net和SG-Net进行200个epoch的训练,最后100个epoch的学习速率呈线性衰减。

网络结构

整个框架包含三个步骤,首先,我们使用Deeplabv3+从I_0估计S_0。然后利用分割预测网络(SP-Net)对I_0和S_0进行分割预测得到S_R。最后将S_R传递到分割引导网络(SG-Net)作为输入,对最终结果进行预测。

3.1 Segmentation Prediction Network (SP-Net)

网络架构

SP-Net的目标是在缺失的洞中预测分割标签映射。SP-Net的生成器基于FCN,但用残块代替了膨胀卷积层。用渐进式扩张因子来增加接受野,提供更广阔的输入视野,以捕获图像的全局结构。具体来说,我们的生成器由4个下采样卷积层、9个残块和4个上采样卷积层组成。内核大小在第一层和最后一层为7,在其他层为3。9个残块前3个残块的膨胀系数为2,后3个残块的膨胀系数为4,后3个残块的膨胀系数为8。下采样层和上采样层的输出通道分别为64、128、256、512和512、256、128、64,残差块的输出通道均为512。除最后一层产生最终结果外,在每个卷积层之间使用ReLU和批处理归一层。最后一层使用softmax函数生成一个概率图,预测每个像素的分割标签的概率。

损失函数:

使用多尺度判别器做高分辨率判别器,即3个相同网络架构但处理图像尺寸不同的判别器。每个鉴别器都是一个完全卷积的PatchGAN三个尺寸分别是原尺寸,二分之一,四分之一。

感知损失

联合损失

3.2 Segmentation Guidance Network (SG-Net)

网络架构:它以一个256x256x3的不完整图像i_0和SP-Net预测的分割标签映射S作为输入。SG-Net与SP-Net共享类似的架构,有4个向下采样卷积层、9个剩余块和4个向上采样层。与SP-Net不同的是,最后一个卷积层使用tanh函数生成像素值范围为[−1,1]的图像,然后将像素值重新调至正常图像值。

损失函数:增加了一个感知损失,基于AlexNet的感知网络来测量两个图像补丁之间的感知差异。

联合损失:

实验结果

定性比较:

定量比较

SPG-Net: Segmentation Prediction and Guidance Network for Image Inpainting的更多相关文章

  1. [CVPR2017]Online Video Object Segmentation via Convolutional Trident Network

    基于三端卷积网络的在线视频目标分割 针对半监督视频目标分割任务,作者采取了和MaskTrace类似的思路,以optical flow为主. 本文亮点在于: 1. 使用共享backbone,三输出的自编 ...

  2. 论文阅读:EGNet: Edge Guidance Network for Salient Object Detection

    论文地址:http://openaccess.thecvf.com/content_ICCV_2019/papers/Zhao_EGNet_Edge_Guidance_Network_for_Sali ...

  3. Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network(GCN全局卷积网络)

    作者认为语义分割的两个挑战是分类和定位,而这两个挑战又是比较对立的.对于分类问题,模型需要有变形和旋转不变形,而对于定位问题,模型有需要对变形敏感. 提出的GCN遵循两个主要原则: 1.对定位问题,模 ...

  4. Foreground-aware Image Inpainting

    引言 语义分割得到边缘信息指导修复其三 存在问题:现在的图像修复方法主要的通过周围像素来修复,当修复区域与前景区域(显著物体)有交叠时,由于修复区域缺失前景与背景的时间内容导致修复结果不理想. 提出方 ...

  5. Semantic Segmentation on Remotely Sensed Images Using an Enhanced Global Convolutional Network with Channel Attention and Domain Specific Transfer Learning

    创新点: 1.在GCN(global convolutional network)基础上,把他的backbone替换成更多层的,使其适应中分辨率影像,resnet50,101,152 2.利用 cha ...

  6. Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation

    Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregati ...

  7. dense prediction

    Dense prediction  fully convolutional network for sementic segmentation 先用feature extractor 提特征,然后再使 ...

  8. [Papers] Semantic Segmentation Papers(1)

    目录 FCN Abstract Introduction Related Work FCN Adapting classifiers for dense prediction Shift-and-st ...

  9. Review of Semantic Segmentation with Deep Learning

    In this post, I review the literature on semantic segmentation. Most research on semantic segmentati ...

随机推荐

  1. Redis常用命令(6)——SortedSet

    ZADD 格式:ZADD key score member [[score member] [score member] ...] 作用:向有序集合key中插入一个或多个元素.如果元素已经存在,更新s ...

  2. Scipy 学习第3篇:数字向量的距离计算

    计算两个数字向量u和v之间的距离函数 1,欧氏距离(Euclidean distance) 在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间"普通"(即直线)距离.使用这 ...

  3. 使用scrapy框架模拟登录

    scrapy模拟登录 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True 或# CO ...

  4. CF1295E Permutation Separation

    线段树 难得把E想出来,写出来,但却没有调出来(再给我5分钟),我的紫名啊,我一场上紫的大好机会啊 首先考虑是否能将$k$在$1$--$n-1$的每一个的最小代价都求出来 因为$k$从$i$到$i-1 ...

  5. NS-3环境布置及安装

    MMP的,入坑NS3了,LTE是什么鬼!!! ubantu安装NS3解决依赖环境 一堆安装包需要安装,试了N多次(CentOS没安装明白,转而ubantu).利用脚本进行按装. 貌似得先对本机软件进行 ...

  6. input 与 button 的问题 (空隙/不等高/对不齐)及 解决办法

    1. input 与 button 为什么有空隙? - 要明白为什么,需要了解一下几点基础知识(耐心看完,你会发现竟如此简单)     1. input 与 button 都属于行级块元素,都具有文本 ...

  7. 2、CPU详解

    一.五大组成单元 => 三大核心组件 组成计算机五大单元可以合并成三大核心组件:CPU.IO设备.主存储器 1.控制单元+算数逻辑单元 => CPU 2.主存储器,即主记忆体 3.输入单元 ...

  8. 最全总结 | 聊聊 Python 办公自动化之 Excel(下)

    1. 前言 前面谈到 Python 处理 Excel 文件最常见的两种方式,即:xlrd/xlwt.openpyxl ​其中, xlrd/xlwt 这一组合,xlrd 可以负责读取数据,而 xlwt ...

  9. Linux C Socket 编程

    1 Socket 是什么 Socket(套接字),就是对 网络上进程通信 的 端点 的 抽象.一个 Socket 就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制. 从所处的位置来 ...

  10. Spring Cloud 整合分布式链路追踪系统Sleuth和ZipKin实战,分析系统瓶颈

    导读 微服务架构中,是否遇到过这种情况,服务间调用链过长,导致性能迟迟上不去,不知道哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶 ...