整理时间:2018.06.21
常规卷积
卷积核的维度由四个参数决定:输入特征图的通道数、滤波器的高度、滤波器的宽度和输出特征图的通道数。
卷积的计算可以参见 cs231n
分组卷积(Group Conv)
实质就是AlexNet针对把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。分组卷积是分在不同GPU上的话,每个GPU的计算量就降低到 1/groups.
备注:
特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样一来,就只能在最后时刻才融合不同组之间的特征,对模型的泛化性是相当不利的.
GroupConv的改进:
可学习的组卷积(Learned Group Convolutions)
来源于Condensenet
问题来源:顺序分组和随机分组几种方法,发现顺序分组带来较大的精度损失。作者推测可能是因为密集连接的每一层接收的是前面所有输出特征的串联,串联的特征图存在内在的顺序,按照所谓的排序顺序进行分组破坏了这种内在顺序。若采用随机分组,效果好一点但是还是难以避免精度损失的问题。
CondenseNET具体做法:主要分为浓缩阶段、优化阶段、测试阶段。
- 浓缩阶段分为两步(或多步),第一步为常规的卷积训练。在训练过程中加入了稀疏正则化,即loss函数中采用group Lasso进行正则,第二步为剪枝,剪枝基于通道进行,确定了分组数后,每组输出通道内对应的输入通道相同,稀疏度也相同。每组内由原来的全通道连接模式剪去相同数量的连接数,剪去的数量是按照一定比例的。
- 优化阶段,在此基础上进一步进行剪枝,最终达到预设的比例。
ShuffleNet
问题来源:特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样一来,就只能在最后时刻才融合不同组之间的特征,对模型的泛化性是相当不利的。
解决方法:方法为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle,shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle,然后分到下一层组卷积当中,以此循环。
深度可分离卷积(Depthwise Separable Convolution)
问题来源:针对卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道和空间区域分开考虑?
核心:Deepwise本质就是先针对每一个channel做conv,有多少个channel就使用多少个filter,得到新的feature maps后,再对新的channel 的feature maps进行标准的1*1跨channel的conv操作。
举例:input_channel=3,output_channel=256,如果直接3*3的conv,那么参数量为3*3*3*256=6912
使用DW,分两步参数量为 3*3*3*3 + 3*1*1*256?还是3*3*3 + 3*1*1*256,应该是后者
一些问题:
- Depthwise Separable Convolution == depthwise convolutions + pointwise convolutions ???
- depthwise separable convolution在框架中称为separable convolution,主要不要和 spatially separable convolution混淆。
- Depthwise +Pointwise vs Separable convolution
- depthwise convolutions就是指的对输入channel进行的单次conv
- pointwise convolutions指的就是1*1 conv
- Xception和inception的两个区别?一个顺序的问题,Inception先是1*1,然后再conv,Xception相反,另外一个就是Xception在deepwise的时候使用的不是relu而是linear
- depth multiplier of 1 (no depth expansion)
空洞卷积(Dilated Conv)
核心:固定的卷积核看到更大的感受野.
问题来源:解决语义分割中像素的问题pixel-wise的像素问题,pooling容易不可逆的丢失信息,即内部数据结构丢失;空间层级化信息丢失。
阐释:Dilation卷积,通常译作空洞卷积或者卷积核膨胀操作,它是解决pixel-wise输出模型的一种常用的卷积方式。一种普遍的认识是,pooling下采样操作导致的信息丢失是不可逆的,通常的分类识别模型,只需要预测每一类的概率,所以我们不需要考虑pooling会导致损失图像细节信息的问题,但是做像素级的预测时(譬如语义分割),就要考虑到这个问题了。FCN
相关应用:
IDCNN用于NER
ByteNet: using dilation cnn扩大receptive field
- Neural Machine Translation in Linear Time
核心点:Masked One-dimensional Convolutions +Residual Blocks+ Dynamic Unfolding+Dilation
- Neural Machine Translation in Linear Time
交错的分组卷积(Interleaved Group Convolution,IGC)
来源:interleaved Group Convolutions for Deep Neural Networks
问题来源:神经网络基本卷积单元中的冗余问题+组卷积不存在关联的问题
主要方法:由于每组卷积之间不存在交互,不同组的输出通道与输入通道并不相关。为了让输入通道与每一个输入通道实现关联,交错组卷积过程巧妙地引入了第二次组卷积,即第二次组卷积过程中,每组的输入通道均来自于第一次组卷积过程不同的组,达到交错互补的目的。
备注:消除卷积核冗余的角度看,一个组卷积等价于具有稀疏核的普通卷积,而交错组卷积,即两次组卷积则等价于两个稀疏核相乘的普通卷积。这两个稀疏矩阵相乘可以得到两两相关的稠密矩阵,是一个线性的过程。
在网络模型大小及计算复杂度相同的条件下,相较于普通卷积,使用 IGC 模块的网络更宽,性能更优。
可变形卷积(Deformable convolution)
核心:卷积核的形状可以非矩形,添加了offset
Super-separable convolutions
来源:slicenet
稀疏卷积Sparse convolutional
Invertible 1×1 Convolutions
来源:open ai的脸生成 Glow
CoordConv
来源:An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution
效果:比传统卷积快150倍