卷积是人工神经网络(ANN)中非常重要的数学运算。卷积神经网络(CNN’s)可用于学习特征以及借助图像帧对数据进行分类。 CNN有很多类型。 CNN的一类是深度方向可分离的卷积神经网络。
由于以下两个原因,广泛使用了这类CNN:
- 与标准CNN相比,它们需要调整的参数数量更少,从而减少了过拟合
- 由于计算量少,因此它们在计算上更便宜,这使其适合于移动视觉应用
这些类型的CNN的一些重要应用是MobileNet,Xception(均由Google提出)
本文介绍了深度智能可分离卷积网络使用的体系结构和操作,并通过简单的卷积神经网络推导了其效率。
了解正常卷积运算
假设有一个输入数据,大小为Df x Df x M ,其中Df x Df可以是图像大小,M是通道数(对于RGB图像为3)。假设有N个大小为Dk x Dk x M的过滤器/内核。如果完成了正常的卷积运算,则输出大小将为Dp x Dp x N。
The number of multiplications in 1 convolution operation = size of filter = Dk x Dk x M
由于有N个滤镜,并且每个滤镜都在水平和垂直方向上滑动了Dp次,
the total number of multiplications become N x Dp x Dp x (Multiplications per convolution)
因此对于正常的卷积运算
Total no of multiplications = N x Dp2 x Dk2 x M
深度明智可分卷积
现在来看深度可分离卷积。此过程分为2个操作–
- 深度卷积
- 点式卷积
- 深度明智的卷积
在深度操作中,卷积一次应用于单个通道,这与标准CNN对所有M个通道都进行卷积不同。因此,这里的过滤器/内核的大小为Dk x Dk x 1 。给定输入数据中有M个通道,则需要M个这样的过滤器。输出大小为Dp x Dp x M。
这项操作的费用:
A single convolution operation require Dk x Dk multiplications.
由于滤波器在所有M个通道上的滑动时间是Dp x Dp次,
the total number of multiplications is equal to M x Dp x Dp x Dk x Dk
因此对于深度明智的卷积运算
Total no of multiplications = M x Dk2 x Dp2
- 点明智的卷积
在逐点运算中,对M个通道应用1×1卷积运算。因此,此操作的过滤器大小为1 x 1 x M。假设我们使用了N个这样的滤波器,输出大小将变为Dp x Dp x N。
这项操作的费用:
A single convolution operation require 1 x M multiplications.
由于滤镜滑动了Dp x Dp次,
the total number of multiplications is equal to M x Dp x Dp x (no. of filters)
所以对于逐点卷积运算
Total no of multiplications = M x Dp2 x N
因此,对于整体操作:
Total multiplications = Depth wise conv. multiplications + Point wise conv. multiplicationsTotal multiplications = M * Dk2 * Dp2 + M * Dp2 * N = M * Dp2 * (Dk2 + n)
因此对于深度明智的可分离卷积运算
Total no of multiplications = M x Dp2 x (Dk2 + N)
这些类型的卷积运算的复杂度之间的比较
Type of Convolution
Complexity
<
Standard
N x Dp2 x Dg2 x M
Depth wise separable
M x Dp2 x (Dk2 + N)
Complexity of depth wise separable convolutions -------------------------------------------------- = RATIO ( R ) Complexity of standard convolution
解决后:
Ratio(R) = 1/N + 1/Dk2
例如,假设N = 100,Dk =512。则比率R = 0.010004
这意味着,在该示例中,与标准构造神经网络相比,深度方向可分离卷积网络执行的乘法要小100倍。
这意味着我们可以部署更快的卷积神经网络模型而不会损失很多准确性。