语义分割之《PIXEL DECONVOLUTIONAL NETWORKS》论文阅读笔记

  论文地址:PIXEL DECONVOLUTIONAL NETWORKS

  代码地址:github

一、简介

  这篇文章提出的PixelDCL主要是为了解决Deconvolution所造成的棋盘效应。

二、细节

1、Tranditional Deconvolutional Layers

  传统的Deconvolution操作分为两个:空洞卷积和转置卷积,这里讨论的是转置卷积。转置卷积的操作一般是先对输入进行padding或者插入0,然后对其使用普通的卷积操作即可。
在这里插入图片描述
  但是如果这样进行上采样会出现棋盘效应,如下图所示,可以看到Deconvolution操作可以分解为多个卷积操作的合集,而分为多少个具体看上采样的倍数。
在这里插入图片描述
  上图是一维情况的下的结果,下图是二维图像下的情况,可以看到得到的输出feature中点与点之间的关系基本没有。
在这里插入图片描述
  用公式描述的话,假设上采样两倍:
F 1 = F i n ⊛ k 1 , F 2 = F i n ⊛ k 2 , F 3 = F i n ⊛ k 3 , F 4 = F i n ⊛ k 4 F o u t = F 1 ⊕ F 2 ⊕ F 3 ⊕ F 4 \begin{aligned} F_1=F_{in}\circledast k_1,&F_2=F_{in}\circledast k_2,F_3=F_{in}\circledast k_3,F_4=F_{in}\circledast k_4\\ &F_{out}=F1\oplus F2\oplus F3\oplus F4 \end{aligned} F1=Fink1,F2=Fink2,F3=Fink3,F4=Fink4Fout=F1F2F3F4
   F i n , F o u t F_{in},F_{out} Fin,Fout分别对应输入和输出的feature, k i k_i ki表示核内的参数。
  为了更加直观的理解上面的说法,看下图,基本操作是先对输入填充0,然后进行卷积操作,最终得到的结果可以看到右上角的部分只和输入右上角的元素相关,其他位置相同,而且每个小方格中的四个位置的元素信息和对应的卷积核中对应位置中的信息相关,像素与像素之间基本不相关。
在这里插入图片描述
  从反卷积的上述解释中可以清楚地看出,这些中间特征图之间没有直接关系,因为它们是由独立的卷积核生成的。
  现如今解决这个问题的一种做法是使用后处理,但是这样会导致网络并不是end-to-end的。

2、Pixel Deconvolution Layers

  为了解决deconvolution layer存在的棋盘效应,作者提出了pixel deconvolutional layers(PixelDCL)可以将不同像素之间的关系有效的利用起来。
iPixelDCL:
  PixelDCL如下面的公式所示, F i n , F o u t F_{in},F_{out} Fin,Fout分别对应输入和输出的feature, k i k_i ki表示核内的参数。
F 1 = F i n ⊛ k 1 , F 2 = [ F i n , F 1 ] ⊛ k 2 , F 3 = [ F i n , F 1 , F 2 ] ⊛ k 3 , F 4 = [ F i n , F 1 , F 2 , F 3 ] ⊛ k 4 , F o u t = F 1 ⊕ F 2 ⊕ F 3 ⊕ F 4 \begin{aligned} F_1=F_{in}\circledast k_1,&F_2=[F_{in},F_1]\circledast k_2,F_3=[F_{in},F_1,F_2]\circledast k_3,F_4=[F_{in},F_1,F_2,F_3]\circledast k_4,\\ &F_{out}=F_1\oplus F_2\oplus F_3\oplus F_4 \end{aligned} F1=Fink1,F2=[Fin,F1]k2,F3=[Fin,F1,F2]k3,F4=[Fin,F1,F2,F3]k4,Fout=F1F2F3F4
在这里插入图片描述

PixelDCL:
  从上面的公式中可以看出,其实该层次中存在信息冗余,可以一处部分的冗余,这样不仅仅可以减少计算量还可以减少深度模型的参数量。
F 1 = F i n ⊛ k 1 , F 2 = [ F 1 ] ⊛ k 2 , F 3 = [ F 1 , F 2 ] ⊛ k 3 , F 4 = [ F 1 , F 2 , F 3 ] ⊛ k 4 , F o u t = F 1 ⊕ F 2 ⊕ F 3 ⊕ F 4 \begin{aligned} F_1=F_{in}\circledast k_1,&F_2=[F_1]\circledast k_2,F_3=[F_1,F_2]\circledast k_3,F_4=[F_1,F_2,F_3]\circledast k_4,\\ &F_{out}=F_1\oplus F_2\oplus F_3\oplus F_4 \end{aligned} F1=Fink1,F2=[F1]k2,F3=[F1,F2]k3,F4=[F1,F2,F3]k4,Fout=F1F2F3F4
  下面是一个改进的版本,先生成途中的紫色的feature,然后根据紫色的feature生成橘色的feature,将两个feature穿插成目标大小的feature,再用masked卷积生成剩下的位置的信息,最终填充到一起得到最终的feature。
在这里插入图片描述

三、结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值