5.4 inceptionV4inceptionV4主要是借鉴了resNet残差网络的思想,可以看做是inceptionV3和resNet的结合。inceptionV4模型大小163M,错误率仅仅为3.08%。主要在ResNet网络中讲解6 ResNet6.1 ResNetV1ResNet由微软提出,并夺得了2015年ILSVRC大赛的冠军。它以152层的网络深度,将错误率降低到只有3.57%,远远低于5.1%的人眼识别错误率。它同样利用全局平均池化来代替全连接层,使得152层网络的模型不至于太大。网络中使用了1x1 3x3 5x5 7x7等不同尺寸的卷积核,从而提高卷积的多样性。resNetV1_152模型大小为214M,不算太大。ResNet提出了残差思想,将输入中的一部分数据不经过神经网络,而直接进入到输出中。这样来保留一部分原始信息,防止反向传播时的梯度弥散问题,从而使得网络深度一举达到152层。当前有很多人甚至训练了1000多层的网络,当然我们实际使用中100多层的就远远足够了。残差网络如下图ResNet的主要特点,就一个字,深!6.2 ResNetV2ResNetV2相对于V1的最大变化,就是借鉴了inceptionV2的BN归一化思想,这样来减少模型训练时间。7 MobileNet为了能将模型部署在终端上,需要在保证准确率的前提下,减小模型体积,并降低预测时的计算时间,以提高实时性。为了能到达这一目的,Google提出了mobileNet框架。最终mobileNetV1_1.0_224模型以16M的大小,可以达到90%的top-5准确率。模型甚至可以压缩得更小,mobileNetV1_0.25_128只有10M左右,仍然能达到80%的准确率。7.1 mobileNet depthwise原理mobileNet模型的核心是,将一个普通的卷积拆分成了一个depthwise卷积和一个1x1的普通卷积(也叫pointwise卷积)。depthwise卷积层的每个卷积只和输入的某一个channel进行计算,而combining则由1x1的卷积来负责。如下图对于卷积核dk*dk,输入通道为M,输出通道为N的普通卷积,每个输出通道都是由M个卷积分别和输入通道做计算,然后累加出来,所以需要的参数量为dk x dk x M x N。而对于depthwise卷积,每个卷积只和输入通道的某一个通道发生计算,并且不需要累加操作,其卷积后的输出通道和输入通道相等,仍然为M。然后再经过一层1x1的普通卷积。故其参数为dk x dk x M + 1 x 1 x M x N。mobileNet参数量比原来减少了多少呢,我们由下面的计算可以得出 (dk x dk x M + 1 x 1 x M x N) / (dk x dk x M x N) = 1/N + 1/(dk^2)由于输出通道一般都比较大,为48 96 甚至4096, 故一般取1/(dk^2), 对于最常见的3x3卷积,mobileNet参数量可以降低为原来的1/9.7.2 mobileNet网络结构mobileNet一共包含28层,第一层的卷积为普通卷积,之后的卷积为分解的3x3 depthwise卷积和1x1 pointwise卷积。另外,最后有一个全局平均池化层和全连接层。并利用softmax得到分类结果。如下图所示7.3 mobileNet可裁剪化为了得到更小的模型,mobileNet还可以进行输入通道和分辨率的剪裁,称为Width Multiplier 和 Resolution Multiplier。Width Multiplier 表示输入通道变为baseline的多少倍, Resolution Multiplier表示输入图像缩小为多少。经过剪裁后的mobileNetV1_0.25_128模型,只有10M左右,准确率仍然可达到80%左右。作为端上图像预处理完全足够。下面是Width Multiplier 和 Resolution Multiplier的结果8 总结CNN已经广泛应用在物体识别和分类领域,短短几年间就出现了AlexNet VGG inception ResNet等优秀的神经网络结构,并且每隔几个月就问世一种优秀网络结构,可以说是百花齐放。这要归功于TensorFlow等框架的成熟和GPU等硬件性能的提升,使得网络结构的设计和验证日趋平民化。各种网络结构,其实本质上也是在解决神经网络的几大痛点问题,如下