彭洪德,唐 述,王 兵
(1.重庆迪科汽车科技集团有限公司,重庆 400039;2.重庆邮电大学 计算机网络和通信技术重庆市重点实验室,重庆 400065)
近十年,人工智能、大数据和第五代移动通信技术(5G)等迅猛发展为汽车的智能化和网联化提供了强大的技术支持。同时,国家相关的支持政策也陆续出台。在此背景下,车辆智能网联已成为近几年的研究热点。
基于此,本文将智能网联技术与传统客车相结合,探讨基于深度学习神经网络的客车智能辅助驾驶技术和智能客车车联网系统平台面临的关键问题,并提出合理的解决方案。
目前,客车智能辅助驾驶主要面临两大难题:一是如何在复杂的客车内部环境中,准确检测驾驶员和车内乘客的异常行为,如驾驶员疲劳驾驶和乘客的危险举动等,并实时预警;二是如何能够准确、实时的识别和判断出客车外部道路的情况,包括车道线、周围障碍物等,并实时作出准确的决策。
要解决这些问题,就需要一种针对客车内部环境和外部行驶状况的高鲁棒性、高效率的行为识别和目标检测方法。深度学习神经网络兼具高准确度和高效率的优点,是当前最热门的人工智能技术之一。基于深度学习神经网络的行为识别方法和目标检测方法非常适合解决这类极具针对性的问题。
1) 数据集收集及预处理。由于目前世界上几乎没有针对客车驾驶行为、乘客行为的数据集和车辆行驶过程中的路况数据集,且考虑到客车内部和外部环境的独特性,因此必须先创建相关的数据集。在数据集的创建过程中,因受客车内部和外部的光线、车辆运行情况变化和周围物体等因素的影响,会导致采集的数据在对比度、饱和度和色调等方面存在较大差异。为了减少上述因素对行为识别的干扰,需要对数据集进行去噪、裁剪、数据增强等预处理。
2) 基于卷积神经网络的行为识别模型。在数据集收集和预处理之后,采用卷积神经网络来同时实现车内和车外准确的实时预测和预警。图1为本文提出的用于客车车内和车外辅助决策的卷积神经网络结构图,图2为本团队研究的客车智能辅助驾驶技术应用效果图。
(a) 神经网络整体框架图
图2 客车智能辅助驾驶技术应用效果图
图1中的网络结构共有45个卷积层,其中32个在残差块内部。图1中的每个卷积正则化层块是由一个卷积层、一个批量正则化操作和一个泄漏修正线性单元组成,其中(3×3,16,1)分别表示卷积核的大小、输出通道数和卷积步长,(64)×4表示该模块的输出特征地图有64个通道,一共有4个同样的模块串联。每一个残差块也是由卷积层、批量正则化和泄漏修正线性单元组成。
3) 部署神经网络的两种方式。在进行客车内部的行为识别和外部的路况检测时,既可采用服务器端实现,也可采用车载终端的方式来实现。如果采用服务器端的方式,则需要借助车联网,其特点是利用服务器强大的计算和存储能力,同时对多辆车载视频进行行为识别和决策结果返回,可支持大规模神经网络和大量车辆的数据处理,但是必须依赖网络的带宽和时延,具体流程如图3所示。
图3 服务器端的车内行为识别和车外路况检测流程图
车载终端的方式是将神经网络部署到车上的终端中,比如车载盒子。这种方式不依赖网络,但是终端的计算能力和存储能力有限,不能支持大规模神经网络的部署。
长途客车、旅游客车、城市定线客车和短途接驳客车等营运类客车的数量很大,加之客车内外的智能辅助驾驶数据较多,因此大量异构数据的并发问题是目前智能客车车联网系统平台面临的主要问题。为了有效解决这个问题,本文分别从前端开发和后端开发两个方面提出解决方案。
智能客车车联网系统平台的前端采用MVVM(模型-视图-视图模型)的软件开发模式,如图4所示。其中,模型(M)称为数据层,主要负责存储相关数据;视图(V)指用户操作界面,主要负责响应用户交互;视图模型(VM)用于封装业务逻辑。基于这三部分,前端可以实现界面UI、业务逻辑、存储数据的分离。
图4 MVVM模式架构图
根据MVVM软件开发模式,系统界面构建选择Vue框架。Vue是基于MVVM模式实现的渐进式框架。Vue框架采用数据劫持、发布者-订阅者模式的方式,通过定义对象特征来对每个数据进行设置和获取,具有数据驱动(双向数据绑定)和组件系统两大核心特点。利用Vue框架,开发者不需要进行文档对象模型(DOM)操作来改变视图,只需要改变数据,视图会自动更新。
为了解决大量异构数据的并发问题,智能客车车联网系统平台的后端采用了MQTT协议(消息队列遥测传输协议)、基于Docker的平台系统部署和Golang开发语言三种主要技术。
1) MQTT协议。MQTT协议构建于TCP/IP协议上,是一种基于发布和订阅模式的轻量级通讯协议,用于管理车载设备的Redis和MySQL数据存储库。其最大优点在于可以用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽、轻量、简单、开放和易于实现的即时通讯协议,其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议有三种身份:发布者、代理者(即服务器)、订阅者。使用MQTT协议,将各个智能网关定义为发布者,通过消息代理服务器发布,不同节点将获取到不同种类的环境参数。同时将应用层的各个接收设备,如Web端和移动端的数据展示平台,定义成订阅者,实现环境参数数据跨网段传输给数据展示平台,并将设备的控制指令发送到对应的终端节点。不同的信息可能需要传递给不同的接收者,所以在发送信息时,发送者必须标示这则信息的主题,而转发信息者则会依照这则信息的主题,将数据返回给接收者。
智能客车车联网车载设备消息的订阅与发布采用MQTT协议,能够保证车辆在网络不稳定的情况下仍然能稳定可靠地将车内数据实时传输到服务器。车载盒子即为消息的发布者,智能客车车联网服务器端将车载盒子的主题提供给车载盒子,用于阅读数据,此时即为消息的订阅者,使用MQTT客户端获取消息;MQTT服务器为消息的代理,使用MQTT服务器端获取发布者发送的消息并发送给MQTT客户端。MQTT的工作原理如图5所示。
图5 MQTT工作原理
2) 基于Docker的平台系统部署。客车智能网联平台系统的部署采用Docker,可以极其快速地部署服务器,并且大大降低服务器存储上的开销。同时采用边缘计算方式处理,数据通过代理服务器进行预处理之后再进入主逻辑服务器处理,降低了主逻辑服务器处理数据的压力,大大提高了系统稳定性。
3) Golang开发语言。Golang是一种新的、并发的、带垃圾回收的、快速编译的语言,其主要特点是改进了传统的多线程编程语言,使并发编程更简单、更不容易出错。
本文探讨了智能客车车联网所面临的主要问题,并提出了一些合理的解决方案,希望能够对本领域的研究起到一定的参考作用。