梁晓妮 楚朋志 肖雄子彦 冷春涛
(上海交通大学学生创新中心,上海 200240)
根据世界卫生组织统计,全世界约有 2.17亿人饱受视觉受损的困扰,其中约有3 600万人完全失明[1],失去视觉的他们在日常出行中面临诸多不便。传统的出行辅助方式主要包括盲杖和导盲犬等,然而盲杖的探测距离有限,导盲犬的价格昂贵,不能完全满足视障人士独立安全出行的需求[2]。随着近十几年来计算机视觉和深度学习技术的发展,智能设备逐渐从实验室走向大众生活,越来越多的学者和工程师尝试利用计算机视觉和可穿戴设备解决视障人士出行中遇到的问题。
本文提出一种基于计算机视觉的视障辅助系统设计方案,采用intel Realsense D455深度摄像头进行数据采集,应用YoloV5s预训练模型进行目标物体检测,检测出物体位置并根据深度摄像头提供的深度信息判断物体距离,实时语音播报前方障碍物的分布情况来辅助视障人群避障,合理规划行进路线。
本系统硬件主要包括视觉传感器模块、计算模块、语音输出模块等硬件单元。其中视觉传感器模块采用intel Realsense D455深度摄像头,该摄像头采用红外双目立体摄影,摄像头内集成了实感视觉处理器IMU,可以在摄像头移动的情况下加大深度感知能力,并实时捕捉物体的色彩、计算物体深度和运动轨迹。摄像头采用全局快门,有助于颜色和深度信息对齐,更准确地判断物体距离信息。摄像头采集的图像分辨率为1280×720@30 FPS,支持的距离检测范围为0.2 m~6 m。以上这些特点均有助于提升视障辅助系统精准性,帮助视障人群在不断变化的环境中轻松、安全地避障。
计算模块采用的是Intel的AlxBoard开发板,该开发板是一款IA架构的人工智能嵌入式开发板,板载一颗英特尔4核处理器,最高运行频率可达2.9 GHz,内置核显(iGPU),板载64 GB eMMC存储及LPDDR4×2 933 MHz(4 GB/6 GB/8GB),内置蓝牙和Wi-Fi模组,支持USB 3.0、HDMI视频输出、3.5 mm音频接口,1 000 Mbps以太网口。AlxBoard体积小巧功能强大,借助OpenVINO工具套件,CPU、iGPU都具备强劲的AI推理能力,可以实现实时目标检测功能。本实验系统采用AlxBoard搭载Ubuntu22.04系统,安装OpenVino 2023.1软件包。
本文的视障辅助系统软件主要是由Python语言基于OpenCV、OpenVino、pyttsx3、pyrealsense2库实现。整体软件方案流程图如下:
深度视觉传感模块采集的图像如图4所示,左图为RGB图像,右图为深度图像热力图,使用全局快门尽量保证二者的一致性。
有了传感器采集的原始数据,接下来将通过深度学习、神经网络的方法对环境中的物体进行检测,达到帮助视障人群避障的目的。
目标检测作为计算机视觉领域的核心问题,近十几年来,受到广大学者和研究人员的关注,产生了大量目标检测算法。主要分为两类算法,一类是两阶段检测器,以SPPNET、RCNN及其改进版本为代表算法;一类是一阶段检测器,一阶段检测器无须寻找建议框直接确定物体的类别概率和位置坐标值, 经过单次检测即可直接得到最终的检测结果, 具有模型小、速度快的特点,更适合在边缘计算场景中使用。YOLOv5作为一阶段检测器的代表算法,做了很多工程化的改进,既能满足实时性要求, 又能保持较高的检测精度,故本文所设计的视障辅助系统选择Yolov5目标检测算法进行环境中障碍物检测。YOLOv5 按照模型由大到小又可细分为 YOLOv5x、YOLOv5l、YOLOv5m、 YOLOv5s。由于 YOLOv5s 模型结构的深度和宽度最小使得其网络结构的计算量以及参数量最小,本系统选择YoloV5s作为目标检测模型。
YoloV5原生模型包含了80类别常见物体的分类与位置信息检测,能够涵盖视障人群生活中遇到的障碍物,故本文没有针对特别场景进行数据采集与模型迁移学习。后续可以针对特定的室内、室外场景进行图像类别的扩充与训练。
虽然YoloV5s经过了各种算法优化与模型优化,但模型大小还是有14 MB,7.2 M个参数,在AlxBoard上经过测试,推理速度仅有9 FPS~10 FPS,这会使用户感到卡顿,并且存在的推理延时会导致视障人群不能及时避障,造成人身伤害。所以本文采用基于OpenVino的异步推理方式进行YoloV5s模型推理优化,经过优化后的模型推理帧率可达30 FPS,满足实时目标检测的场景需求。
OpenVino工具包是英特尔公司开发的高性能计算机视觉和深度学习视觉应用工具包,具有模型优化器、推理引擎和开放模型库三大基础功能[4]。
该工具包提供的模型优化器(Model Optimizer)可以将通用深度学习框架(如:TensorFlow、Caffee、Pythorch、ONNX等)训练出来的模型优化成统一的中间模型(.xml和.bin文件),在优化的过程中,OpenVino底层架构会用到模型剪枝、量化、权值共享等技术手段,在确保推理精度的情况下,提升模型在英特尔硬件上的推理速度。OpenVino提供了基于intel计算单元的统一推理引擎接口(Inference Engine Interface),只需要基于原框架推理代码做非常小的修改,便可以在英特尔的多种硬件设备上运行推理,简单快速。
通过实验,在AlxBoard上安装OpenVino 2023.1版本工具包后,经过模型转换后进行推理的帧率可达18 FPS~19 FPS,推理速度显著提升,但尚未达到实时检测的目标。图中检测出两个目标物体:人和花瓶,即时推理速度为18.12 FPS。
为达到实时检测的目标,进一步采用OpenVino异步推理方法进行优化。异步推理方法是指当CPU发送第一帧推理请求给AI硬件之后,不用等待推理完成,CPU可以继续准备下一帧。当推理请求没有阻塞时,我们不断地准备帧进行输入,且并行实施推理操作。这样可以充分利用系统异构计算单元,带来吞吐量的巨大提升。
在AlxBoard上通过引入OpenVino 异步推理机制,合理使用create_infer_request()与start_async()、wait()等接口,可将推理帧率提升至30 FPS~35 FPS,达到实时处理视频流的效果,满足视障辅助系统实时处理需求。图中检测出三个目标物体:人、花瓶和杯子,即时推理结果达到33.21 FPS。
通过YoloV5s目标检测算法,在经过OpenVino提速之后,可以在RGB图像上实时定位出场景中的障碍物,包括障碍物种类以及在平面图像中的位置。由二维位置信息结合深度图的深度信息,可以计算出障碍物距摄像头的平均距离。具体计算流程如下通过这种随机采样、计算平均的方法可以在保证计算速度的同时兼顾整体距离的准确性。图11中检测出三个目标物体:人、杯子和花瓶,并且计算出人距摄像头的距离为0.82 m,杯子距摄像头的距离为0.58 m,花瓶距摄像头的距离为0.64 m,这与真实场景相差无几。图中蓝色点为随机选取randnum=24个中心点附近点计算出的平均距离作为最终距离测算。
图1 系统使用的视觉传感模块—intel D455深度摄像头
图2 系统使用的AI计算单元—AlxBoard
图3 整体方案流程图
图4 RealSense采集的彩色图与深度图像
图5 YoloV5s算法原理图[3]
图6 OpenVino工作原理图
图7 经过模型优化后的目标检测结果图
图8 异步推理与同步推理对比图
图9 采用异步推理后的目标检测结果图
图10 目标物体距离计算流程图
图11 目标物体距离检测效果图
为了更好地辅助视障人士对周围环境的感知,在目标检测与距离定位之后,本系统增加语音播报模块,通过声音将感知到的物体类别、方位和距离信息播报给视障人士,帮助他们及时避障。语音播报的流程图如图12所示,当YoloV5网络返回的目标物体有变化(物体种类或物体位置)时,便会触发语音播报,播报当前所检测障碍物的类别、方位和距离。其中方位信息根据中心点在图像中的位置确定:图像左侧1/3处判断为左前方,中间1/3处判断为前方,右侧1/3处判断为右前方。
图12 语音播报模块流程图
本文阐述了一种基于OpenVino与深度摄像头的实时视障辅助系统设计方案。该方案过程简单、易于实现,在AlxBoard边缘端经过OpenVino加速处理后可达到实时处理性能。后续为了更好地服务于视障人群,可以基于YoloV5s网络进行更多室内、室外场景的数据采集和迁移学习,提高网络识别的准确率。本文提出的相关方法不仅可以用于视障出行辅助领域,还可以在机器人、自动驾驶等领域发挥作用。