一、特征
1、提取
(1)不同大小卷积核
常用大小的卷积核有1x1,3x3,5x5,1x1的卷积核多用来改变通道数,从而改变计算量;3x3的卷积核常用于提取特征,比5x5常见;7x7的卷积核用于需要关注空间特征时候,且不会过多使用。
模型(卷积层)参数:输入 W x H x C, 卷积核 KxK,输出 w x h x c
模型参数量计算: K*K*C*c+c ,表示有特定物理量的个数,卷积核是因子,同时作用于输入通道的对应位置,输出通道表示有多少个这样的存在,第二项是偏置,这里理解的是相加操作。
模型计算量计算::K*K*C*w*h*c+w*h*c,表示得到输出,所需要的计算步骤。第二项表示相加的过程。
(2)提取技巧
减少卷积过程中的参数量
深度可分离卷积:图像通过卷积从输入通道到指定输出通道,是为了得到上下文信息和空间信息,从上面的计算量公式知,输入通道和输出通道是相乘关系,如果能实现原卷积的功能,通道之间的关系又可以用加法表示,那么计算量会大大降低。
方法是:将标准卷积分解为深度卷积和逐点卷积。当输入为DI*DI*M,卷积核为Dk*Dk,输出为Do*Do*N,
标准卷积的参数量为:Dk*Dk*M*N
深度卷积是M个Dk*Dk的卷积核分别在对应的输入上进行卷积(不是M个卷积结果对应相加为M份的过程,在对应相加之前停下),参数量是 Dk*Dk*M
逐点卷积是N个利用1*1的卷积核在M层深度卷积结果上进行对应点相加,输出N个通道的结果,参数量是1*1*M*N
所以深度卷积和逐点卷积两个过程加起来的参数量是:Dk*Dk*M+1*1*M*N。
标准卷积与深度可分离卷积方法的参数量的比值是 (Dk*Dk*M+1*1*M*N)/(Dk*Dk*M*N)=1/N +1/(Dk*Dk)2、融合
(1)concat等
CNN特征融合,增加特征的维度将不同卷积层的特征放在一起,是concat。
保持特征维度不变,进行直接的相加,是Mul(+)。(在不同通道求和之前,输出矩阵是与权重乘过的,之后的求和也就相当于变相加权。取自知乎回答)
(2)pyramid(金字塔)
特征金字塔网络是为了获得目标的多尺度特征,所使用的方法是特征上采样相加(+)。
二、模型网络设计
模型搜索(NAS):因为模型设计以及调参需要耗费很多时间,谷歌在提出 AutoML概念后,16年出了模型搜索文章,利用长度可变的LSTM模型,得到每层卷积网络的核相关参数,得到每一层的网络,当网络达到一定层数时,即认为结束。今年FAIR在此基础上,将子网络层依据图模型构建不同的网络结构,实验表明会有一些模型比现有的模型效果好。
三、模型轻量化
剪枝:原理是移除权重小于某阈值的连接。如根据权重的绝对值和的大小来剪枝。
量化:一般也代表了低精度,常规精度一般使用 FP32(32位浮点,单精度),低精度现在常指INT8(8位的定点整数)。
还包括 ,二进制神经网络:在运行时具有二进制权重和激活的神经网络,以及在训练时计算参数的梯度;
三元权重网络:权重约束为+1,0和-1的神经网络
XNOR网络:过滤器和卷积层的输入是二进制的。 XNOR 网络主要使用二进制运算来近似卷积。
蒸馏:为了减少网络的训练时间,提出在以训练好的网络上训练student网络的方法。
写一个只有简单几层的student网络,在训练student网络的时候,读入训练数据,但是groundtruth是teacher网络perdict的结果,将硬结果变成软结果,在输出softmax之前将结果都加上一个值T(通常是1)来升温,会使训练的studenr网络的结果更好。