技术领域
[0001] 本发明涉及深度卷积神经网络领域,更具体的说是涉及一种深度卷积神经网络轻量化方法。
相关背景技术
[0002] 随着深度学习技术的快速发展,该技术在各领域的运用场景也是逐渐变多。为了在实际运用中达到更好的效果,研究人员在卷积神经网络方向上的研究一直在不断深入,这也导致了深度卷积网络模型的结构越来越复杂,虽然各方面的性能指标都有明显的提升,但也产生了推理速度下降及模型大小过大等问题。当前很多应用场景都是嵌入式端,嵌入式端通常资源有限,不能部署过大的深度卷积神经网络模型,因此针对深度卷积神经网络的轻量化技术有很大的研究价值及前景。
[0003] 中国专利公开号为“CN113420651A”,名称为“深度卷积神经网络的轻量化方法、系统及目标检测方法”,该方法首先获取训练好的MobileNet模型作为预训练模型,搭建深度可分离卷积结构的Faster RCNN模型,训练后得到初始Faster RCNN模型;对初始Faster RCNN模型中特征提取主干网络进行稀疏低秩分解、通道裁剪和训练,得到初步轻量化后的Faster RCNN模型;对初步轻量化后的Faster RCNN模型中区域建议网络进行张量Tensor‑Train分解,训练后得到二次轻量化后的Faster RCNN模型;对二次轻量化后的Faster RCNN模型中识别与分类网络进行稀疏低秩分解、通道裁剪和训练,得到最终轻量化后的Faster RCNN模型。该方法的模型轻量化效果有限,复杂度高且实现效率低下,不适用于其他网络。
具体实施方式
[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 本发明实施例公开了一种深度卷积神经网络轻量化方法,如图1所示,包括以下步骤:
[0030] 步骤1,构建网络模型。整个网络由主干网络、特征融合网络和输出网络组成;主干网络由三个卷积块、A池化、七个瓶颈模块组成,其中每个卷积块由跳跃连接、卷积层、激活函数和归一化层组成,如图3所示;其中每个瓶颈模块由倒残差结构、卷积层、激活函数组成,如图4所示;其中卷积块一、卷积块二、卷积块三对图片进行浅层特征提取;A池化进行下采样提取图片深层次的语义信息;其中瓶颈模块一、瓶颈模块二、瓶颈模块三、瓶颈模块四、瓶颈模块五、瓶颈模块六、瓶颈模块七对特征图进行升维提取特征之后再进行降维;其中卷积块一、卷积块二、卷积块三由卷积层一、卷积层二、卷积层三组成,每一个卷积层由卷积,归一化层和损失函数组成,卷积核的大小统一为n×n;瓶颈模块一、瓶颈模块二、瓶颈模块三、瓶颈模块四、瓶颈模块五、瓶颈模块六、瓶颈模块七由卷积层四、卷积层五、卷积层六、组成,每一个卷积层由卷积,归一化层和损失函数组成,卷积核的大小统一为n×n;最后得到特征图的大小与输入图像大小保持一致。特征融合网络选用特征金字塔网络FPN,FPN由三个上采样层、八个卷积、M池化组成;其中卷积一、卷积二、卷积三、卷积四将特征提取网络每一层通道数变为256;卷积五、卷积六、卷积七、卷积八对融合后的特征图进行平滑操作。训练采用Pascal VOC 2007数据集。
[0031] 步骤2,对第一深度卷积神经网络模型进行剪枝操作,得到第二深度卷积神经网络模型。
[0032] 步骤3,将第一深度卷积神经网络模型作为教师模型,将第二深度卷积神经网络模型作为学生模型,进行知识蒸馏操作,得到第三深度卷积神经网络模型。
[0033] 步骤4,对第三深度卷积神经网络模型进行稀疏低秩分解,得到最终的网络模型。
[0034] 所述步骤1中网络模型结构如图2所示,主干网络由三个卷积块、A池化、七个瓶颈模块组成,其中每个卷积块一、卷积块二、卷积块三由跳跃连接、卷积层、激活函数和归一化层组成,卷积核大小为1×1,步长为1;A池化以步长为2实现下采样操作,经过试验表明,利用利用步长为2的卷积进行下采样得到的特征图细节比A池化进行下采样得到的特征图细节差;瓶颈模块一、瓶颈模块二、瓶颈模块三、瓶颈模块四、瓶颈模块五、瓶颈模块六、瓶颈模块七由三个卷积层和激活函数构成,卷积核大小为1×1和3×3,步长为1。激活函数定义如下所示:
[0035] ReLU6=min(6,max(0,x));
[0036]
[0037] 所述步骤1中特征融合网络包含上采样层一、上采样层二、上采样层三,上采样层中使用的是最近领域插值法。最近邻域插值法原理是根据目标图像的像素点的浮点坐标找到原始图像中的4个像素点,取距离该像素点最近的一个原始像素值作为该点的值,最近邻域插值法定义如下所示:
[0038] 所述步骤1中数据集使用的是Pascal VOC 2007,其中训练集包含5011张图片、15662个图像标注,测试集包含4952张图片、14976个图像标注。
[0039] 所述步骤4中网络的输出与标签计算损失函数,通过最小化损失函数达到更好的融合效果。损失函数选择交叉熵和分类损失。交叉熵计算公式如下所示:
[0040]
[0041] 分类损失定义如下所示:
[0042]
[0043] 总的损失函数定义为:
[0044] Tloss=L1+L2;
[0045] 设定训练次数为100,每次输入到网络图片数量大小为8‑16左右,每次输入到网络图片数量大小的上限主要是根据计算机图形处理器性能决定,一般每次输入到网络图片数量越大越好,使网络更加稳定。训练过程的学习率设置为0.0001,既能保证网络快速拟合,而不会导致网络过拟合。网络参数优化器选择自适应矩估计算法。该算法的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。损失函数函数值阈值设定为0.0003左右,小于0.0003就可以认为整个网络的训练已基本完成。
[0046] 所述步骤2中剪枝操作具体原理及操作如下,深度学习网络模型从卷积层到全连接层存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以表现出同样的模型表达能力,这种情况被称为过参数化,而对应的技术则被称为模型剪枝。剪枝技术按照细粒度的不同可分为结构性剪枝以及非结构性剪枝。结构性剪枝剪除的基本单元为神经元,由于是对神经元直接进行剪枝,结构性剪枝后的模型能够在现有硬件条件下实现明显的推理加速以及存储优势。但其缺点是剪枝的颗粒度较大,往往会对压缩后模型的精度产生较大的影响。非结构剪枝剪除的基本单元为单个权重,其经过剪枝后的模型精度损失更小,但最终会产生稀疏的权重矩阵,需要下层硬件以及计算库有良好的支持才能实现推理加速与存储优势。本发明在冗杂的训练模型中加入一些策略,使得训练完后每层卷积网络能够获得一组权重参数,体现出主次之分。根据主次关系,删减一些没有太大作用的权重结构,达到降低一部分的准确率却提高了模型的时效性的作用。
[0047] 所述步骤3中知识蒸馏操作具体原理及操作如下,知识蒸馏是一种模型压缩方法,是一种基于“教师——学生网络思想”的训练方法,知识蒸馏是将己经训练好的模型包含的知识,蒸馏提取到另一个模型里面去。知识蒸馏后的学生模型的精度一般是小于教师模型,但又大于蒸馏前的学生模型,知识蒸馏的目的是在不改变学生模型参数的情况下提高学生模型的精度。
[0048] 所述步骤4中稀疏低秩分解具体原理及操作如下,稀疏低秩分解是将原始矩阵分解为两个或多个低维矩阵的乘积,低维矩阵含有更少的元素信息却能表示出完整的原始矩阵。
[0049] 其中,卷积、激活函数等是本领域技术人员公知的概念,具体流程和方法可在相应的教科书或者技术文献中查阅到。
[0050] 本发明通过构建一种深度卷积神经网络轻量化方法,可以将现有的大部分算法的网络模型进行压缩,实施方法简单且效果较好。最终压缩效果如表1所示:
[0051] 表1
[0052]模型 大小 精度 处理速度
原模型 128.6Mb 72.31% 6.1FPS
压缩后模型 32.75Mb 68.91% 18.2FPS
[0053] 从表中可知,本发明提出的方法可将模型压缩75%左右,有良好的压缩性能,同时精度仅下降3.4%,很好的平衡了模型压缩和精度两项要求,且处理速度也得到了很大的提升,这些指标也进一步说明了本发明提出的方法具有很好的网络压缩功效。
[0054] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0055] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。