1x1卷积核的作用

1x1卷积的作用

1. 前言


往往很多人喜欢把事情搞得复杂,显得高大上,却并不实用,殊不知有时候简单的想法才是最美的。就好像是一堆巧妙的数学公式推导,常常有某一个极简的数学公式在作支撑,奇技淫巧无处不在。此外,研究算法的乐趣之一就是存在这些神奇的地方。如果是自己发现会很有成就感,如果在别人的思想中发现也会产生共鸣。

今天要记录 CNN 中的 1x1 卷积的神奇之处,或者说有什么用?当然我承认,我也是之前被问到这个问题!!当时想法是因为 input 的 feature maps 是有 channel 的,通过 1x1 卷积后,就将这些 channel 的特征线性组合起来,使得不同 channel 的特征联系起来,特征更丰富等等。也不能说当时的想法错误,只能说思考的不够全面。专门花了点时间去思考这个问题,当然从论文和前人的博客中也学到了很多,最后会添加部分 links.

2. 来历


1x1 卷积不管是不是最早出现在 Network In Network (NIN),这都是一篇很重要的文章,两点贡献:

  • mlpconv, 即引入 1x1 卷积

    传统的 CNN 的一层卷积层相当于一个线性操作,如下图 a,所以只提取了线性特征,隐含了假设特征是线性可分的,实际却并非如此,NIN 中引入 下图 b 中的 mlpconv layer,实质是像素级的全连接层,等价于 1x1 卷积,在其后跟 ReLU激活函数,引入更多的非线性元素。

  • 将 CNN 中的全连接层,采用 global average pooling 层代替。

    全连接层容易过拟合,减弱了网络的泛化能力。

在这之后,另一个经典的网络 GoogLeNetInception 结构中沿用了 NIN 中的 1x1 操作,如下图。是金子总会发光,然后是被应用到各个网络中去。

3. 1x1 卷积作用


  • 降维和升维

    简单的解释降维,例如,input 的 feature maps 是 16x16,channel=32,通过 一个 1x1,filters 数量为 8 卷积层,output 为 16x16x8。更深入的解释,以下图为例,如下图 a 为最原始的卷积,下图 b 中改进,引入 1x1 卷积,目的是:

    • 在网络中增加 1x1 卷积,使得网络更深
    • 网络的深度增加并没有增加权重参数的负担,反而大大减少,因为 feature maps 在输入到 3x3 或者 5x5 卷积时,先经过 1x1,已经降低了维度。模型效果并没有降低?(没有,这跟 1x1 卷积的后面几点作用有关)。如下例子,参数数量大大减少,随着网络深度加深,会成倍减少。
    // 假设
    input feature maps:28×28  channel:256
    1x1 convolutional layer:1x1 channel:16
    5x5 convolutional layer:5x5 channel:32
        
    // 那么
    // 1.在下图 a 中
    卷积核参数量 = 256x5x5x32 = 201800
    
    // 2.在下图 b 中
    5x5 卷层之前经过了 1x1 卷积
    输入的 size 为 28x28x256 经过 1x1 卷积后 size 为 28x28x16
    卷积核参数量 = 256x1x1x16 + 16x5x5x32 = 16896
    

再来看看升维,通常是在一个卷积之后添加一个 1x1 卷积来升维。例如经过一个卷积后,输出 feature maps size 为 16x16x32,作为 1x1x128 卷积的输入,则输出 16x16x128 的 feature maps 实现升维。

  • 跨通道信息交互(cross-channel correlations and spatial correlations)

    1x1卷积核,从图像处理的角度,乍一看也没有意义,在网络中,这样的降维和升维的操作其实是 channel 间信息的线性组合变化。

    另外补充,cross-channel correlation 和 spatial correlation的学习可以进行解耦。1x1的卷积相当于学习了feature maps之间的cross-channel correlation。实验证明了这种解耦可以在不损害模型表达能力的情况下大大减少参数数量和计算量。但是需要注意的是,1x1 的卷积层后面加上一个 normal 的卷积层,这种解耦合并不彻底,正常卷积层仍然存在对部分的 cross-channel correlation 的学习。之后就有了 depth-wise seperable convolution(后面记录 MobileNet 后,在这添加链接)。在 depth-wise seperable convolution中,1x1 的卷积层是将每一个 channel 分为一组,那么就不存在对cross-channel correlation的学习了,就实现了对cross-channel correlation和spatial correlation的彻底解耦合。这种完全解耦的方式虽然可以大大降低参数数量和计算量,但是正如在 mobile net 中所看到的,性能会受到很大的损失。

  • 增加非线性特性

    1x1卷积核,可以在保持 feature maps size不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数)。

4. 总结


1x1 卷积在图像处理的角度,乍一看好像没什么意义,但在 CNN 网络中,能实现降维,减少 weights 参数数量,能够实现升维,来拓宽 feature maps,在不改变 feature maps 的 size 的前提下,实现各通道之间的线性组合,实际上是通道像素之间的线性组合,后接非线性的激活函数,增加更多样的非线性特征。这就是为什么 GoogLeNet 用 1x1 卷积来降维,减少了计算量,但模型效果却没有降低,此外网络深度更深。可以说 1x1 卷积很 nice.

links


others

  • 16
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时私信沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于ResNet50和Cifar10数据集的全卷积图像识别分类源码+项目说明(Jupyter Notebook运行).zip **全卷积模型**:本项目将**CNN**模式后面的**全连接层换成卷积层**,所以整个网络都是**卷积层**。其最后输出的是一张已经标记好的**热图**,而**不是一个概率值**。 通常的CNN网络中,在最后都会有几层全连接网络来融合特征信息,然后再对融合后的特征信息进行softmax分类,如下图所示: 假设最后一层的**feature_map**的大小是**7x7x512**,那么**全连接层**做的事就是用**4096个7x7x512**的滤波器去卷积这个最后的**feature_map**。所以可想而知这个参数量是很大的!! 但是**全卷积网络**就简单多了。**FCN**的做法是将最后的全连接层替换为**4096个1x1x512**的**卷积核**,所以最后得出来的就是一个二维的图像,然后再对这个二维图像进行**上采样**(反卷积),然后再对最后反卷积的图像的每个像素点进行softmax分类。 我们都知道卷积层后的**全连接目的**是将 卷积输出的二维特征图(feature map)转化成($N\times 1$)**一维的一个向量**因为传统的卷积神经网络的输出都是分类(一般都是**一个概率值**),也就是几个类别的概率甚至就是一个类别号,那么全连接层就是高度提纯的特征了,方便交给最后的分类器或者回归。 根据全连接的目的,我们完全可以利用卷积层代替全连接层,在输入端使用 $M\times M$ 大小的卷积核将数据“扁平化处理”,在使用 $1\times 1$ 卷积核对数据进行降维操作,最终卷积核的通道数即是我们预测数据的维度。这样在输入端不将数据进行扁平化处理,还可以使得图片保留其空间信息: 使用全卷积层的优点: * 全卷积层能够兼容不同大小的尺寸输入。 * 与global avg pooling类似,可以大大减少网络参数量 **CIFAR-10**是一个更接近**普适物体**的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含**10 个类别**的**RGB**彩色图片:**飞机**(airplane)、**汽车**(automobile)、**鸟类**(bird)、**猫**(cat)、**鹿**(deer)、**狗**(dog)、**蛙类**(frog)、**马**(horse)、**船**(ship)和**卡车**(truck). 每个图片的尺寸为$32\times 32$,每个类别有**6000**个图像,数据集中一共有**50000**张训练图片和**10000**张测试图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值