旗胜V3论坛 >
读Xception和DeepLab V3
回复

查看: 回复:1

读Xception和DeepLab V3

\"收藏此主题\"

好车之狼

 
 
注册:
2008-04-12
  • 0粉丝
  • 0精华
  • 208帖子
最近读了Xception的论文《Xception: Deep Learning with Depthwise Separable Convolutions》和DeepLab V3 的论文《Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation》,觉得有必要总结一下这个网络里用到的思想,学习的过程不能只是一个学习网络结构这么简单的过程,网络设计背后的思想其实是最重要的但是也是最容易被忽略的一点吧。

1. Xception(Extreme Inception)
卷积层的学习方式:
在一层卷积中我们尝试训练的是一个3-D的kernel,kernel有两个spatial dimension,H和W,一个channel dimension,也就是C。这样一来,一个kernel就需要同时学习spatial correlations和cross-channel correlations,我把这里理解为,spatial correlations学习的是某个特征在空间中的分布,cross-channel correlations学习的是这些不同特征的组合方式。Inception的理念:
首先通过一系列的1x1卷积来学习cross-channel correlations,同时将输入的维度降下来;再通过常规的3x3和5x5卷积来学习spatial correlations。这样一来,两个卷积模块分工明确。Inception V3中的module如下图。Inception的假设:
corss-channels correlations 和 spatial correlations是分开学习的,而不是在某一个操作中共同学习的。Inception到Xception的转变:
1. 首先考虑一个简版的Inception module,拿掉所有的pooling,并且只用一层3x3的卷积来提取spatial correlations,如Figure2;
2. 可以将这些1x1的卷积用一个较大的1x1卷积来替代(也就是在channel上进行triple),再在这个较大卷积产生的feature map上分出三个不重叠的部分,进行separable convolution,如Figure3。
3. 这样一来就自然而然地引出:为什么不是分出多个不重叠的部分,而是分出三个部分来进行separable convolution呢?如果加强一下Inception的假设,假设cross-channel correlations和spatial correlations是完全无关的呢?
4. 沿着上面的思路,一种极端的情况就是,在每个channel上进行separable convolution,假设1x1卷积输出的feature map的channel有128个,那么极端版本的inception就是在每个channel上进行3x3的卷积,而不是学习一个3x3x128的kernel,取而代之的是学习128个3x3的kernel。将spatial correlations的学习细化到每一个channel,完全假设spatial correlations的学习于cross-channel correlations的学习无关,如Figure4所示。简版InceptionXception architecture:
一种Xception module的线性堆叠,并且使用了residual connection,数据依次流过Entry flow, Middle flow和Exit flow。

顺便写一点读Xception时的小发现,Xception的实验有一部分是关于应不应该在1x1卷积后面只用激活层的讨论,实验结果是:如果在1x1卷积后不加以激活直接进行depthwise separable convolution,无论是在收敛速度还是效果上都优于在1x1卷积后加以ReLU之类激活函数的做法。这可能是因为,在对很浅的feature(比如这里的1-channel feature)进行激活会导致一定的信息损失,而对很深的feature,比如Inception module提取出来的特征,进行激活是有益于特征的学习的,个人理解是这一部分特征中有大量冗余信息。

2. DeepLab V3 

论文里,作者直言不讳该框架参考了spatial pyramid pooling(SPP) module和encoder-decoder两种形式的分割框架。前一种就是PSPNet那一款,后一种更像是SegNet的做法。
ASPP方法的优点是该种结构可以提取比较dense的特征,因为参考了不同尺度的feature,并且atrous convolution的使用加强了提取dense特征的能力。但是在该种方法中由于pooling和有stride的conv的存在,使得分割目标的边界信息丢失严重。Encoder-Decoder方法的decoder中就可以起到修复尖锐物体边界的作用。关于Encoder中卷积的改进:
DeepLab V3 效仿了Xception中使用的depthwise separable convolution,在DeepLab V3的结构中使用了atrous depthwise separable convolution,降低了计算量的同时保持了相同(或更好)的效果。Decoder的设计:
2.1. Encoder提取出的特征首先被x4上采样,称之为F1;
2.2. Encoder中提取出来的与F1同尺度的特征F2
 
回复本楼

太平洋汽车全新推出“太平洋车友会”;来太平洋车友会,结识志同道合的车友了解详情>>

dfggr4333fggt

 
 
注册:
2009-12-18
楼主,认识你很高兴,我们有机会一起玩吗?
 
回复本楼
未登录用户

只可添加一张图片,多张图片请选高级模式

高级模式
温馨提示:回复超10字可获1金币,有独特见解超30字可获3金币,灌水用户将扣除金币并锁号处理。希望广大车友共同维护论坛的友好回复氛围。
常用表情
您可能感兴趣

支付宝扫码询价
领最高888元现金红包

关闭