李欣旭
摘 要:在司机驾驶车辆过程中,利用深度学习与神经网络等方法对其使用手机的行为进行检测,比使用传统视觉检测方法具备更高的精度与稳定性。本文基于MobileNet神经网络搭建轻量化辨识模型。同时,本文还采集了司机驾驶图像以构建数据集,并将数据集用于训练模型。最后,构建检测算法在测试集上进行验证。此方法性能稳定,轻量化程度高,适用场景广泛。
关键词:司机状态 手机检测 深度学习 轻量化
中图分类号:TN219;TP183 文献标识码:A 文章编号:1674-098X(2020)09(b)-0111-04
Abstract: Deep learning and neural networks have higher accuracy and stability than traditional visual inspection methods in the field of image processing, such as detecting the driver's behavior of using mobile phone when the driver is driving a vehicle. Based on MobileNet, we build a lightweight neural network detecting model, collect driver driving images datasets for training the model, and develop an algorithm to verify this model.Our method has stable performance, a lightweight structure, and wide application prospects.
Key Words:Driver status; Mobile phone detection; Deep learning; Lightweight
汽车的出现使得人类出行更加便利,但是也带来了交通事故从而威胁到了生命财产安全。因此,司机在行车时需要保持高度集中以进行符合规范的安全驾驶。但是随着智能手机的发展,人们在日常生活中使用手机越来越频繁,不少司机在驾驶过程中出现了使用手机的情况,这样会大幅度降低司机的注意力,从而造成严重的交通事故。因此,研究一种全天候实时非接触式的对司机驾驶过程中使用手机的监控安防措施尤为重要。
1 基于MobileNet的司机使用手机状态检测方法
随着深度学习的发展,卷积神经网络的应用变得越来越普遍。深度神經网络因为具有自学习的特性,所以拥有更大的机会去提取获得数据中的有效信息。通常,使用更深更复杂的神经网络可以提高检测的精度,但是这种神经网络模型在存储空间的占用以及对运行资源的消耗上都不太乐观。此外,也存在一些使用轻量化神经网络模型工程化应用的案例,例如MobileNet[1]、ShuffleNet[2]、GoogleNet[3]等,在提升运算速度的同时,尽可能维持较好检测效果。
本文所针对是在司机驾驶过程中检测其是否使用手机的场景,该场景通常被期望作为一个功能模块被集成进司机监控系统中。这种系统一般采用嵌入式平台,其硬件资源有限,因此需要尽可能降低算法对硬件资源的消耗,故而本文使用轻量化神经网络MobileNet解决上述问题。
1.1 神经网络模型结构
MobileNet与传统神经网络的区别在于卷积过程的不同。对于一个典型的标准卷积,通常采用若干个3×3的卷积核对输入的多通道图像/特征图进行卷积。其中,每个卷积核都会对所有通道上的图像/特征图进行卷积,从而生成一张新的特征图。但是MobileNet采用的是深度可分卷积。对于深度可分卷积分,首先使用给定的卷积核尺寸对每个通道分别卷积并将结果组合,该部分被称为深度卷积。随后,深度可分卷积使用单位卷积核进行标准卷积并输出特征图,该部分被称为逐点卷积。如图1所示,深度可分卷积首先采用深度卷积对不同的输入通道分别进行卷积,然后采用逐点卷积将上面的输出结果进行整合。
卷积过程中也会进行“批规范化”操作和“激活”操作,批规范化能够使得输出结果的各个维度的均值为0,方差为1。激活函数则一般采用ReLU,其函数表达式如下式所示:
一个深层可分卷积过程和一个标准卷积过程输出的结果相差不明显,对于以3×3为卷积核的标准卷积,除去“批规范化”计算和“激活”计算过程,深度可分卷积的计算量约为标准卷积权重数的10%~25%。
本文所用神经网络结构如表1所示。首先是一个3×3的标准卷积,后面则是深层可分卷积与标准卷积的堆叠与组合。网络尾部设置了两个全连接层,输出数量根据预测类别数量决定,最后是一个Softmax函数。按照MobileNet-Smal版结构搭建模型以进一步减少了网络层数,以期望在保持检测效果的同时,进一步降低计算资源消耗。
1.2 模型训练过程
本文将摄像头放置于汽车方向盘位置附近,采集如图2所示视角的司机驾驶图像,从而构建数据集。数据集中包含三类情况:(1)司机在开车中使用手机;(2)司机正常开车;(3)司机不在驾驶位置上。并使用这些数据集训练上述神经网络模型。
训练时使用交叉熵损失函数,公式如下式所示:
训练过程中,使用小批量梯度下降方法,取128个样本为一个批量,学习率开始设为0.01。每学习完100次全部样本后,学习率降为原来的1/10。每训练一个批量的样本后,网络的权重都会被反向更新, 当损失值变化随训练过程趋于稳定之后,则停止训练,输出神经网络模型。
2 状态检测功能算法实现
在算法实现上,本文使用python语言与PyTorch库实现神经网络模型的搭建与训练工作,并在以上基础上建立了流程为:“读取图片-输入网络-计算结果-统计结果”的测试算法,并对结果进行了统计与评估。
在检测精度方面,本文使用精确度与召回值来评估。精确度与召回值的值都在0~1之间。召回率的值越高表示算法的漏检越低,精确度的值越高表示算法的误检越低。在检测速度方面,本文将算法部署在英伟达Nano上,并将大小为1920×1080的图片作为输入,然后统计算法每秒能够处理的图片数量作为检测速度。最终在测试集上得到检测精度和速度结果如表2所示。
3 结语
本文主要针对司机驾驶过程中使用手机的行为检测场景,通过分析实拍采集的真实视频数据,采用轻量化深度神经网络模型提取数据特征、识别行为结果。本文算法识别精度较高,并且是“输入-输出”的端对端结构,易于使用,占用计算资源较少,具有工程化应用潜力。
本文算法通过增加数据集的数量,有望进一步提高识别精度。此外,如果将以PyTorch构建的神经网络模型转化为针对嵌入式设备的定制化模型(例如TensorRT、TVM、ONNX模型等),则可以进一步提升识别速度。
参考文献
[1] 王傲然,刘玮.TensorFlow平台上基于MobileNet模型的商品识别[J].信息通信,2018(12):49-50.
[2] 陈明,李利军,范戈.一种新型的ShuffleNet多跳等效时分复用网络[J].光通信研究,2004(6):30-32.
[3] 白阳,万洪林,白成杰.基于GoogLeNet的静态图像中人体行为分类研究[J].电脑知识与技术,2017,13(18):186-188.
[4] 马秀梅,唐春晖,尹征,等.静态图像中的人体行为分类研究[J].信息技术,2015(4):98-101.
[5] 邹佳悦.人体行为识别算法研究[D].秦皇岛:燕山大學,2017.
[6] 杨红菊,冯进丽,郭倩.基于多核学习的静态图像人体行为识别方法[J].数据采集与处理,2016,31(5):958-964.
[7] 刘照邦,袁明辉.基于深度神经网络的货架商品识别方法[J].包装工程,2020,41(1):149-155.