在通常的卷积神经网络的基础上可以做一些小的但非常有效地改进。
这个知乎专栏统计了一些比较新的又非常有效地卷积操作:
https://zhuanlan.zhihu.com/p/28749411
这些操作均是针对何时进行卷积、如何进行卷积、如何控制卷积等展开的。
——————————————————————————————————————
深度残差网络resnet可以理解为讲上上层与上一层的输出共同作为当前层的输入,
DenseNet可以理解为之前的人一层均可作为当前层的输入。
直观上来看,DenseNet的网络参数呈指数增长,但事实并非如此:
DenseNet有很强的抗过拟合性,之前的所有层的特征均作为当前层输入,
实际效果也显示,在DenseNet的判别阶段,随机性的去掉一些连接节点,
也不会对输出产生多大影响。
由于DenseNet对特征非常充分的利用,因此,其每一层的特征维度可以大幅度减小,
如由普通网络的512直接减少为5,但是当前层的输入维度却仍然保持在较高的维度。
一些框架对DenseNet支持不太好,当之前的层与当前的层一块儿作为输入时,
这些框架都会新开辟一块内存,这样导致DenseNet的训练非常吃内存,而显然一些
计算是重复性的。关于改进DenseNet的计算与训练的一篇论文:
https://arxiv.org/pdf/1707.06990.pdf
论文题目是:Memory-Efficient Implementation of DenseNets
——————————————————————————————————————
针对图像,卷积操作有PointWise与DepthWise两种类型,前者即在每一层都将通道
融合在一起卷积,而后者只在最后一层才将通道进行融合,即进行线性叠加,而在
之前所有层的卷积都值针对各自的通道卷积。
——————————————————————————————————————
在通常的卷积操作中,每一个通道都是按照相同的方式进行融合的(线性叠加),
而事实却是,每一个通道的重要性不同,因此在融合时应当按照重要性进行融合,
如果能自动学习出每个通道的重要性是最好的。关于这一网络SENET有一个专栏:
https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650729486&idx=3&sn=5b2b6f0e7443ecf0971d4743d5480bb6&chksm=871b2870b06ca166bc18413060898886db534c2b5ade468f832d3f85d5d75549f15293cea6cd&mpshare=1&scene=1&srcid=0822wk5DEWG7YU89UZr1yEup#rd
这个结构相当于在原有的卷积融合中增加了一个平行的小网络,而这个小网络的参数
也是需要同主干网络一样一层一层训练的。
——————————————————————————————————————
在某一层卷积操作中,以前的网络只是利用固定大小的卷积核进行卷积,
但实际上在在某一层上,采用不同大小的卷积核得到多种尺度特征后共同作为输入效果非常好。
同时,在采用多卷积核的基础上,为了减少网络参数量,可以首先在图像上用1*1卷积核对图像进行降维。
GoogleNet、Inception V3等网络均采用这种多卷积核的trick。
——————————————————————————————————————
可变形卷积:即卷积核不再是矩形,而是可以自动学习的形状。
可变性卷积的介绍:http://weibo.com/ttarticle/p/show?id=2309404116774126794221