本发明涉及深度学习的图像分类领域,具体通过对mobilenetv2瓶颈结构的改进以及模型压缩来实现模型轻量化。
背景技术:
1、传统的分心驾驶行为检测方法主要包括基于驾驶员面部特征的驾驶行为监测和基于驾驶员身体姿态特征的分心驾驶行为监测。然而,这些方法大多依赖于手动提取的纹理或形状特征,不能同时兼顾驾驶行为监测的准确度与实时性需求,在实际应用中存在一定的局限性。
2、随着深度学习的发展技术的发展,一些研究者提出了基于深度学习的分心驾驶行为识别方法,即采用深度学习方法识别驾驶员的面部或者定位驾驶员的面部关键点,来判断驾驶员是存在分心驾驶行为。虽然准确率较高,但是模型结构也比较大且冗余,所消耗的计算资源也在一直增加,训练难度大且实时性较差,难以满足实际应用中设备部署的需求。而近年来成为研究热点的轻量级网络模型,能够在尽量保持精度的前提下,从体积和速度两方面对网络进行轻量化改造,进而达到部署和应用的目的。
3、本发明是借助于howard等人提出的mobilenet及其变体mobilenetv2,充分利用深度可分离卷积和倒残差结构,达到实时高效、容易部署的效果。但由于mobilenetv2中的1*1卷积带来的大量计算量,此类模型在轻量化方面的表现仍有不足。因此,用ghost module替换mobilenetv2网络中的逐点卷积,以此来减少运算量,使用leaky relu函数替换原激活函数,避免了神经元死亡问题,并通过通道剪枝算法进一步减小模型参数,较好的提升了准确率并实现了网络轻量化的目的。
技术实现思路
1、本发明针对正常驾驶、左手发短信、左手打电话、右手发短信、右手打电话、操作收音机、喝水、身体后转、整理面容和与乘客说话10种驾驶行为进行判断,以轻量级网络模型mobilenetv2作为驾驶行为识别模型的基础,用ghost module替换逐点卷积,减少了大量的浮点运算,使用leaky relu函数替换原有激活函数,避免了神经元死亡问题,并通过通道剪枝算法进一步减小模型参数,提升神经网络的计算效率,实现端到端的司机分心驾驶行为检测。本发明中的高精度、高效率和低内存消耗的分心驾驶检测算法,解决了目前驾驶行为识别的算法研究大多数只考虑提升准确率而忽略轻量化的问题。
2、该方法可由以下步骤实现:
3、步骤一、下载开源数据集state farm数据集,训练集与测试集按照8:2划分,并对所有数据集进行预处理。
4、步骤二、用ghostmodule替换mobilenetv2网络中的逐点卷积,使用leaky relu函数替换relu6函数。
5、步骤三、采用通道剪枝算法对上述结构进行模型压缩。
6、步骤四、设置训练超参数,将数据集图像输入到改进后的moblienetv2网络模型,得到训练完备的分心驾驶行为检测模型。
7、步骤五、将待测图像输入训练得到的检测模型中,输出驾驶行为检测结果。
8、本发明的优点及有益效果如下:
9、1.本文提供了一种新的轻量化分心驾驶检测模型,可以得到较高的测试精度;
10、2.本文解决了模型中逐点卷积带来计算量大的问题,在准确率波动较小的前提下,模型参数量大幅度降低,有利于实际应用和部署。
1.一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征是:该方法由以下步骤实现:
2.根据权利要求1所述的一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征在于:在进行训练前,还需要对图像进行预处理,对数据集中的尺寸统一调整为模型输入尺寸大小224×224,再通过归一化函数处理,得到预处理后的图像数据集。
3.根据权利要求1所述的一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征在于:步骤二中针对逐点卷积计算量大的问题,使用ghost module替换mobilenetv2中的逐点卷积;leaky relu函数在原函数的基础上,当x≤0时引入一个非常小的α值作为梯度,能够避免神经元坏死,同时补充了梯度。
4.根据权利要求1所述的一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征在于:步骤三的剪枝算法分为以下几个步骤:首先,为找到网络中不重要的通道,我们对加入改进的mobilenetv2进行缩放系数稀疏化训练,得到具有稀疏缩放系数的模型;接着在剪枝阶段,我们剪枝掉低于阈值的缩放系数所对应的通道,得到剪枝后的网络,并对剪枝网络进行重训练以弥补剪枝带来的精度损失。
5.根据权利要求1所述的一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征在于:因为检测网络中每个卷积层后都增加了批量归一化(bn)层,设zin和zout表示bn层的输入和输出;b表示当前的mini-batch,bn层变换如(1)(2)所示:
6.根据权利要求1所述的一种改进mobilenetv2的分心驾驶行为检测模型轻量化方法,其特征在于:步骤五中设置超参数,将初始学习率设置为0.0001,batch_size设置为16,训练100个epoch后,得到最终的分心驾驶行为网络模型参数。