龙诗科, 蒋奇航, 包友南, 王建琦
(1.桂林航天工业学院 航空宇航学院,广西 桂林 541004;2.广西无人机遥测重点实验室,广西 桂林 541004)
近年来,人工智能技术在理论上得到快速发展,特别是在视觉信息检测识别领域发展迅速,已经应用在各个无人系统载体平台上。然而,视觉平台的搭建在具体实际应用上存在不足:1)硬件体积和功耗较大;2)算法运行环境较为复杂;3)算法执行效率较低。目前,关于视觉信息方面的人工智能技术研究与实验基本依靠性能强大的深度学习工作站等设备,而实际无人系统载体平台往往无法部署出大体积、大功耗且成本较高的工作站[1]。因此,开发出体积小巧、成本低、易于算法移植的应用平台具有实际应用价值。
人工智能一般分为训练和部署两个阶段[2]。训练阶段对机器的性能要求较高,一般采用深度学习工作站或服务器集群进行训练,训练完成后通过部署到实际的应用环境中。部署阶段中,要求部署的对象具有相同的软件运行环境以及拥有对应的硬件加速支持[3]。在部署的环境中,软件程序中能直接使用已经训练成功的模型,硬件必须要有能支持加速运算的GPU支持。
在人工智能网络部署方面,国外应用较早,较为瞩目的是近年Google的AlphaGo项目,该项目先后击败了围棋世界冠军李世石、柯洁[4]。国内关于人工智能落地方面,近期也在快速跟进,支付宝采用了第五代风控引擎—AlphaRisk技术对用户的支付风险进行分析,AlphaRisk是全自动全天风险防御系统,该系统能在不断学习分析各种诈骗行为和用户的支付的风险,为用户提供保障。人工智能同样在交通出行中发挥了重大作用,目前,我国的主要高铁站均配备了人脸检测的检测机,能够实时快速识别需要出行的旅客人脸信息,提高高铁站的运行效率。
本文研究并设计了基于NVIDIA Jetson Nano为硬件基础的视觉应用平台。该应用平台是以四核ARM A57 处理器和NVIDIA CUDA加速核心作为硬件基础运行的操作系统,在神经网络的部署和运行上使用了NVIDIA TensorRT优化器加速神经网络的推理,该优化器能更好地部署神经网络并且提高神经网络的运行速度,保证系统的实时性。整套系统包括硬件与和软件两个部分,涉及图像处理技术、计算机技术、信息技术、人工智能技术。本文主要是以Ubuntu 18.4作为操作系统,采用Python进行程序编写和调试,通过IMX—219摄像头完成数据采集、保存和传输,实现了实时检测功能并在实际环境中进行测试。
应用平台通过高性能深度学习推理优化器——TensorRT对神经网络模型进行解析、优化、映射等处理,最终统一转换为TensorRT模型。在完成模型优化转换后,运行在Jetson Nano的CUDA加速核心上。在完成神经网络的优化、部署工作后,系统通过摄像头或者内部存储获得图像信息,将其输入到TensorRT优化器中,并将结果反馈到系统界面。该系统的工作原理如图1所示。
图1 视觉检测系统的工作原理
深度学习分为训练(training)和推理(inference)。训练主要有前向传播和和后向传播两个部分,通过反馈通道的误差传递修正神经网络模型的权重。推理只有前向传播一个阶段,面向新数据集,针对新数据集进行预测,该方法可以提高推理速度、减少延迟。本文设计中的TensorRT的核心方法即为推理。两种方法对比如图2所示。
图2 训练与推理示意
1)导入模型并生成推理模型
将输入的神经网络模型进行层间融合、精度校准等优化,最终输出一个针对Jetson Nano平台和网络模型优化的TensorRT模型。该模型以序列化存在磁盘中或者内存中。步骤过程如图3所示。
图3 训练与推理示意
2)生成推理引擎并进行推理
创建生成推理引擎,并对输入的数据进行分析,输出分类向量或者检测结果,如图4所示。
图4 推理流程
应用系统主要是由摄像头、Jetson Nano模组、显示组件、WiFi组件、输入设备构成。摄像头主要获取实时视频流,是视觉应用平台工作的主要数据输入源;Jetson Nano模组包括核心板、英伟达核心载板,载板的功能是引出核心板的电路并为核心板提供稳定电源以及数据传输,其中核心板是应用平台的处理核心;显示组件主要由HDMI标准接口的显示屏或OLED显示屏组成,可通过显示组件直观观察视觉识别效果等。WiFi组件为Jetson Nano提供WiFi接入,可远程调试以及接入物联网平台,形成物联网网络。输入设备主要是由鼠标、键盘组成,在离线情况下可直接对Jetson Nano进行操作。硬件平台组成如图5所示。
图5 硬件平台组成
1)摄像头工作原理
图6 小孔成像原理
2)外围设备
外围设备由显示屏、WiFi组件、输入设备等组成。外围设备的作用是围绕Jetson Nano的正常工作展开。显示屏可直观显示Jetson Nano的当前的工作状态以及摄像头的实时画面。在设计上采用了通用的HDMI接口,可接入市面上大部分显示设备,在部署上具有灵活性。WiFi组件的作用使得Jetson Nano具备接入无线网络能力。输入设备由键盘以及鼠标等外部输入设备组成,可直接在离线的情况下对系统进行操作。外围设备保证了Jetson Nano的正常开发以及运行调试工作。
应用平台的软件是整个视觉应用平台的核心部分。该平台的操作系统为Ubuntu18.4 LTS,支持C++,Python语言的编写,可根据开发者的喜好进行决定开发语言,最终目的是建立并运行可以实时运行的视觉检测系统。由于全世界的人工智能开发者的环境和性能都不一致,多种多样的框架以及软件的兼容导致的实时性降低、延迟高的问题对人工智能的部署造成一定困难[7]。本文设计中借助了英伟达推出的NVIDA JetPack SDK软件组件,该组件包括了常用的模型、算法环境以及TensorRT优化器,软件系统组成图7所示。
图7 软件系统组成
通过对系统硬件的设计、组装和现场调试。应用平台组装图如图8所示。
图8 系统的实物
成功登入操作系统后,依次安装Cmake、下载Jetson-inference源码、安装libpython3-dev和NumPy依赖库,最后在项目的里新建build文件夹后进行项目编译。
在所有的软件准备完成后,通过命令行或者显示屏查看项目文件是否编译完成,检查完毕后,按照步骤验证应用平台是否能够正常工作:1)在bin文件路径下打开命令行。2)对项目中自带的图片进行测试,检查是否能完成对存储图片的识别。3)在完成图片的识别后,通过命令行启动对实时视频流的识别。4)检查应用平台在实时视频流识别的中的帧率是否满足要求。5)加入开机启动脚本,使得系统一开机即可进入工作模式。
能够正常实时对图片中的人、物进行识别,并且标定识别结果的相似度。部分结果如图9所示。
图9 部分测试结果
通过多次反复的实际测试,试验数据如表1所示。
表1 测试统计数据
本文为解决人工智能应用部署时体积大、软件兼容差、实时性差、延迟高的问题,设计并实现了视觉应用平台。结合TensorRT优化器对多个神经网络进行优化以及加速,加快了神经网络在实际环境中的落地。系统具有实时性好、扩展性强、自动化程度高的优点。
1)完成了系统的总体设计。根据技术要求和以往的设计经验,完成了包括硬件系统以及软件系统的设计,其中软件支持C++,Python两种语言进行开发,主要完成视觉应用程序的编写。
2)提出了一种快速部署方案。将训练完成的神经网络模型通过TensorRT优化加速后部署到实际环境中,加快了人工智能应用的落地。
3)系统调试与验证。通过反复进行实际环境试验,通过对程序运行进行监控,确保系统的实时性。