深度学习的模型大致可以分为两类,一类是卷积神经网络,另外一类循环神经网络,在计算机视觉领域应用最多的就是卷积神经网络(CNN)。CNN在图像分类、对象检测、语义分割等经典的视觉任务中表现出色,因此也早就有一大批各种各样的经典卷积神经网络模型与一些鬼斧神工的卷积操作,今天小编就斗胆总结一波这些经典的卷积操作都有哪些?(不完全版本,欢迎补充….)
01 正常的卷积与参数
一个正常的图像卷积,其工作方式与原理如下图所示:
图-1 (二维图像卷积)
图-2 (三维图像卷积)
可以看出其基本的参数有:
卷积核大小(Convolution filter)
图-1中卷积核大小为ksize x ksize=3x3,步长(stride) 这里指每次移动的像素距离,步长为1,表示卷积核每次移动一个像素距离,依此类推。
填充(padding)
表示卷积核对边缘的处理方式,常见的填充方式有两种:same与valid,其中same表示根据卷积核大小填充ksize/2 。当卷积核为3x3时,填充1个像素;5x5时,填充两个像素,依此类推。Valid表示不填充。输入与输出通道数目从图二可以看出输入的6x6x3的图像数据,有三个通道输入,通过两个4x4x3的filter之后输出的是3x3x2的图像数据,有两个通道输出。
02 空洞卷积(Dilated Convolution)
看到这些卷积与参数,第一个变化就出现了,通过改变卷积核大小,担心不改变参数数目,实现了卷积核的多尺度,从而实现了对特征多尺度提取,它就是空洞卷积。图示如下:
在保持卷积核参数不变的情况下,扩大了感受野区域。空洞卷积在图像分类、对象检测、语义分割网络模型中均有应用。
03 转置卷积(transposed convolution)
转置卷积又被称为反卷积,此反卷积跟不同于图像处理中的反模糊卷积。2D转置卷积的计算基本原理如下图所示:
举例说明,卷积操作为:
转置卷积操作为:
最终图示如下:
04 1x1卷积
1x1卷积在输出指定通道数目特征图,升降卷积神经网络的通道数上面有特殊用途,在Inception系列网络中开始大量应用,在网络模型结构设计有重要作用,Faster-RCNN中RPN网络就是使用1x1实现指定通道输出的典范。1x1卷积图示如下:
1x1 Conv
1x1卷积的好处是可以升降维度通道数目,同时它还是一个channel-wise的卷积操作,可以降低卷积核的参数数目,减小模型规模。此外1x1卷积还有一个很高级隐藏应用技巧就是做全局深度池化操作,实现基于通道数的池化操作。
05 组合卷积
组合卷积最早见AlexNet模型的相关论文,集大成者是ShuffleNet网络,关于组合卷积跟正常卷积的区别,见下图:
组合卷积主要是基于filter分组,实现分组卷积,正常的卷积如下:
分组filter之后的分组卷积:
分组卷积的优势是可以更好的结构化学习,克服过拟合,减少参数、产生类似正则化效果,从而提升整个网络的精度与效率。
06 深度可分离卷积
深度可分离卷积结构是构建轻量化网络模型的利器之一,最早出现在相关的模型结构是以MobileNet为代表的轻量级网络模型,应用于图像分类、对象检测、语义分割当场景下。深度可分类卷积的图示如下:
深度可分离卷积可以大幅减少卷积神经网络的参数,因此它在模型层数不变而模型总参数量却可以大幅下降而精度只会稍微损失,因此是模型小型化设计与轻量化模型推理的很好骨干网络。