【网络结构】轻量级网络模型shuffleNet

推荐一下看到的比较好的文章:

『高性能模型』轻量级网络ShuffleNet_v1及v2:https://www.cnblogs.com/hellcat/p/10318630.html

CNN模型之ShuffleNet:https://zhuanlan.zhihu.com/p/32304419

轻量化网络ShuffleNet MobileNet v1/v2 解析:https://zhuanlan.zhihu.com/p/35405071

纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception:https://zhuanlan.zhihu.com/p/32746221

 

个人理解与MoblieNet之间的区别在于分组卷积后的操作

MobileNet包括depthwise convolution和pointwise convolution两部分,depthwise convolution将输入特征分组卷积,减少每组卷积特征通道数,从而减少参数量和计算量;pointwise convolution表示将分组后的卷积特征整合。

ShuffleNet顾名思义就是有重组的过程,具体是在分组卷积特征提取后不同分组特征整合部分,不再是采用MobileNet中的1*1卷积而是采用打乱整合的思想。

这个打乱整合也不是真的随机打乱,而是有规律的。例如分组卷积得到特征为N*C,N是分组数,C是每个分组的通道数,这时特征数:batch_size*(N*C)*W*H,将N*C维度拆分为N*C数组,这时特征数batch_size * N *C * W *H(这里是五维),再对N*C进行转置得到C*N矩阵,最后reshape回N*C。

import numpy as np
inputs=np.arange(15).reshape(3, 5)
input_t = np.transpose(inputs)
output = input_t.reshape(15)
 print(inputs)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

print(input_t)
[[ 0  5 10]
 [ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]]

print(output)
[ 0  5 10  1  6 11  2  7 12  3  8 13  4  9 14]

这里N=3,表示分3组,C=5,表示每组5通道,输出仍是3*5,达到了分组特征之间交换的目的。

相比MobileNet中的1*1*N*C卷积,ShuffleNet减少了计算量和参数量。

因为比较懒,还没实现,其中遇到的问题还不知道,希望交流指正,由于硬件条件不允许,想试一试显存小的网络

有个疑问,轻量级网络结构对小数据集友好么

你可能感兴趣的:(网络模型,深度学习)