细数那些“高大上”的卷积

  1. 卷积只能在同一组进行吗?-- Group convolution
  2. 卷积核一定越大越好?-- 3×3卷积核
  3. 每层卷积只能用一种尺寸的卷积核?-- Inception结构
  4. 怎样才能减少卷积层参数量?-- Bottleneck
  5. 越深的网络就越难训练吗?-- Resnet残差网络
  6. 卷积操作时必须同时考虑通道和区域吗?-- DepthWise操作(Xception)
  7. 分组卷积能否对通道进行随机分组?-- ShuffleNet
  8. 通道间的特征都是平等的吗? -- SEnet
  9. 能否让固定大小的卷积核看到更大范围的区域?-- Dilated convolution
  10. 卷积核形状一定是矩形吗?-- Deformable convolution 可变形卷积核

1.空洞卷积(dilated conv)

空洞卷积也可以叫扩张卷积。在图像分割领域,图像输入到CNN(典型的网络比如FCN)中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,deconv可参见知乎答案如何理解深度学习中的deconvolution networks:https://www.zhihu.com/question/43609045/answer/132235276),之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv

(a)图对应3x3的1-dilated conv,和普通的卷积操作一样
(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的conv)
(c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。

重新思考卷积: Rethinking Convolution

在赢得其中一届ImageNet比赛里VGG网络的文章中,他最大的贡献并不是VGG网络本身,而是他对于卷积叠加的一个巧妙观察。

This (stack of three 3 × 3 conv layers) can be seen as imposing a regularisation on the 7 × 7 conv. filters, forcing them to have a decomposition through the 3 × 3 filters (with non-linearity injected in between).

这里意思是 7 x 7 的卷积层的正则等效于 3 个 3 x 3 的卷积层的叠加。而这样的设计不仅可以大幅度的减少参数,其本身带有正则性质的 convolution map 能够更容易学一个 generlisable, expressive feature space。这也是现在绝大部分基于卷积的深层网络都在用小卷积核的原因。

然而 Deep CNN 对于其他任务还有一些致命性的缺陷。较为著名的是 up-sampling 和 pooling layer 的设计。这个在 Hinton 的演讲里也一直提到过。

主要问题有:

  1. Up-sampling / pooling layer (e.g. bilinear interpolation) is deterministic. (a.k.a. not learnable)
  2. 内部数据结构丢失;空间层级化信息丢失。
  3. 小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建。)

在这样问题的存在下,语义分割问题一直处在瓶颈期无法再明显提高精度, 而 dilated convolution 的设计就良好的避免了这些问题。对于 dilated convolution, 我们已经可以发现他的优点,即内部数据结构的保留和避免使用 down-sampling 这样的特性。但是完全基于 dilated convolution 的结构如何设计则是一个新的问题。

空洞卷积gridding问题
是的,空洞卷积是存在理论问题的,论文中称为gridding,其实就是网格效应/棋盘问题。因为空洞卷积得到的某一层的结果中,邻近的像素是从相互独立的子集中卷积得到的,相互之间缺少依赖。

  • 局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。

  • 远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。

解决方案

  1. (通向标准化设计:Hybrid Dilated Convolution (HDC))Panqu Wang,Pengfei Chen, et al.Understanding Convolution for Semantic Segmentation.//WACV 2018


通过图a解释了空洞卷积存在的问题,从左到右属于top-bottom关系,三层卷积均为r=2的dilatedConv,可以看出最上层的红色像素的感受野为13且参与实际计算的只有75%,很容易看出其存在的问题。

使用HDC的方案解决该问题,不同于采用相同的空洞率的deeplab方案,该方案将一定数量的layer形成一个组,然后每个组使用连续增加的空洞率,其他组重复。如deeplab使用rate=2,而HDC采用r=1,r=2,r=3三个空洞率组合,这两种方案感受野都是13。但HDC方案可以从更广阔的像素范围获取信息,避免了grid问题。同时该方案也可以通过修改rate任意调整感受野。

  1. Fisher Yu, et al. Dilated Residual Networks. //CVPR 2017
  • Removing max pooling:由于maxpool会引入更高频的激活,这样的激活会随着卷积层往后传播,使得grid问题更明显。
  • Adding layers:在网络最后增加更小空洞率的残参block, 有点类似于HDC。
  • Removing residual connections:去掉残参连接,防止之前层的高频信号往后传播。

更多请参考空洞卷积 ~


2.Deformable Convolutional Networks-v1-v2(可变形卷积网络)

《Deformable Convolutional Networks》是一篇2017年Microsoft Research Asia的研究。基本思想也是卷积核的采样方式是可以通过学习得到的。作者提出了两种新的op:deformable convolution和deformable roi pooling,主要是通过给传统卷积采样点加offsets的方式来获得新的采样点。

论文引入了两种新的模块来提高卷积神经网络 (CNN) 对变换的建模能力:可变形卷积 (deformable convolution) 和可变形兴趣区域池化 (deformable ROI pooling)

可变形卷积 Deformable Convolution

先看传统卷积的一个定义:

R代表一个receptive field的grid: R={(−1,−1),(−1,0),...,(0,1),(1,1)},以3*3为例。 对于输出中每一个像素position P0,一般的卷积就是


而可变形卷积做的是:


图中,把原来的卷积过程分成两路,上面一路学习offset Δpn,得到H*W*2N的输出(offset),N=|R|表示grid中像素个数,2N的意思是有x,y两个方向的offset。有了这个offset以后,对于原始卷积的每一个卷积窗口,都不再是原来规整的sliding window(图1中的绿框),而是经过平移后的window(蓝框),取到数据后计算过程和卷积一致。Δpn不是整数像素,而是一个高精度的小数,不能直接获取像素坐标,而如果采用简单粗暴的取整又会有一定误差,因此就采用了和STN中一样的做法——双线性插值,插出每个点的像素值。

可变形兴趣区域池化 Deformable RoI Pooling

区别在于用的是FC,原因是ROI pooling之后的结果是固定大小的k*k,直接用FC得到k *k个offset。但是这些offset不能直接用,因为ROI区域大小不一,并且input feature map的w和h也是大小不一。作者提出的方法是用一个scale r:


下面是roi pooling原来的公式(用的是average?这个比较奇怪,一般都是用max的,当然按照这个逻辑,max pooling也很容易推出)


有了offset之后就可以这样做:


和前面一样,因为offset是带小数的,不能直接得到像素,需要用双线性插值算法得到每一个像素值。注意,这里的offset只有k*k个,而不是每一个像素一个。

【改进】:专栏 | MSRA视觉计算组提出第二代可变形卷积网络,增强形变,更好效果


3. Octave conv

近期,来自 Facebook AI、新加坡国立大学、奇虎 360 的研究人员联合提出了一种新的卷积操作 (OctConv),用于替代现有的通用卷积。这款新卷积不仅占用更少的内存和计算,还有助于提高性能。卷积神经网络(CNN)在很多计算机视觉任务中都取得了卓越的成就,然而高准确率的背后,却是很高的冗余度和不可忽视的计算开销。


图1. 现有的卷积操作(1x1 卷积)

对于一个卷积操作而言(图 ),每个位置都是由一个 D 维特征向量 表示,而特征提取,则是通过滑动卷积,对每个位置分别处理得到对应的特征。

但是,这种为每个位置都分别存储一份特征表达,并分别一一处理的策略明显是不合理的。因为,对于图像而言,相邻位置往往描述的是同一个语义,从而共享一部分特征。


图2. AlexNet 的第一层卷积核

与此同时,CNN 所学习到的卷积核,也并非全是高频卷积核,如图 2 所示。这意味着,一部分卷积专注于提取「低频特征」,而另一部分则专注于提取「高频特征」。对于低频卷积所对应的特征图而言,我们也许只需要保留它的低频信号即可,没必要存储在高分辨率下的特征图。


图3. 本文的:(a) 主要动机; (b,c) 新的特征表达方式;(d) OctConv

如图 3 所示,本文提出将特征图分为两组:低频特征(蓝色)和 高频特征(橙红),并将空间上变化较为缓慢的「低频特征图」存储在低分辨率的张量中,共享相邻位置间的特征。而本文所提出的 OctConv 则是一种可以直接作用在该特征表达下的卷积操作。它包含每个频率自身状态的更新(绿色箭头),以及频率间的信息交互(红色箭头)。


Octave Convolution(OctConv)的命名应该是受到了 SIFT 特征的启发。而 Octave 是八个音阶的意思,音乐里降 8 个音阶代表频率减半。本文通过一个 Octave 将 高频 和 低频 特征隔离到不同的组中,并将低频的分辨率减半。

研究人员指出 OctConv 可以直接用于替代现有卷积,并且即插即用,无需调参,也不影响 CNN 的网络结构以及模型大小。由于 OctConv 专注于降低 CNN 空间维度上的冗余,因此它与现有专注于网络拓补结构设计,以及减少网络特征容易的方法是正交和互补的。

【详细参考】:即插即用新卷积:提升CNN性能、速度翻倍

参考链接:
https://www.zhihu.com/question/54149221/answer/192025860
https://www.zhihu.com/question/54149221/answer/323880412
通过简单代码来回顾卷积块的历史
如何理解空洞卷积(dilated convolution)?
https://www.cnblogs.com/ranjiewen/p/10040410.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容