摘 要:【目的】为了满足视障人士多方面的实际出行需求,设计了一款基于机器视觉的导盲杖。【方法】该系统整体为模块化设计,采用了STM32F407VET6单片机和边缘智能计算K210芯片为核心。其机器视觉功能是利用神经网络和YOLOv2算法训练建立起模型,并对摄像头拍摄到的实时图像进行检测而实现的。系统自身具备陀螺仪姿态角度测量功能,通过判断系统旋转角度是否达到设定阈值,以此来判断使用者是否有摔倒迹象;系统还具有GPS定位功能,在突发情况下系统会通过串口发送AT指令控制GSM模块向紧急联络人发送位置信息。【结果】该系统各个功能经模拟测试,其机器视觉功能检测的正确率达到99%以上;姿态角度测量误差维持在1°以内;GPS和GSM功能可以定位并发送短信息。【结论】该系统的功能可满足视障人士基本的实际出行需要。此外,图像检测模型的建立,可为今后训练模型以检测更多物体,完善机器视觉功能,应对更多实际出行的情况。
关键词:图像识别;卷积神经网络;智能导盲杖;模块化设计
中图分类号:TP212 " "文献标志码:A " " "文章编号:1003-5168(2024)12-0024-06
DOI:10.19968/j.cnki.hnkj.1003-5168.2024.12.005
Design of Guide Rod Based on Machine Vision
GAO Yong CHEN Kaiwen ZHANG Cheng HUANG Miao
(College of Communication and Information Engineering, Chongqing College of Mobile Communication, Chongqing 401520, China)
Abstract: [Purposes] In order to meet the practical travel needs of blind people in various aspects, a machine vision based guide stick has been designed. [Methods] The overall design of this system is modular, with the core using STM32F407VET6 microcontroller and edge intelligent computing K210 chip; its machine vision function is achieved by using neural networks and YOLOv2 algorithm to train and establish models, and detecting real-time images captured by cameras. The system itself has a gyroscope attitude angle measurement function, which determines whether the system rotation angle has reached the set threshold to determine whether the user has any signs of falling; the system also has GPS positioning function, and in case of emergencies, the system will send AT commands through the serial port to control the GSM module to send location information to the emergency contact person. [Findings] All functions of this system have been simulated and tested, and the accuracy of machine vision function detection can reach over 99%; the attitude angle measurement error is maintained within 1°; GPS and GSM functions can locate and send short messages.[Conclusions] The above functions can meet the basic practical travel needs of blind people. In addition, with the establishment of image detection models, future models can be trained to detect more objects, thereby improving machine vision functions and responding to more actual travel situations.
Keywords: Image recognition; Convolutional neural network; Intelligent guide rod; Modular design
0 引言
据统计,中国是全世界视障人士最多的国家[1]。由于视力的原因,视障人士的行动受到了限制,于是导盲杖便成为视障人士使用最为普遍的一种辅助工具。随着我国城镇化进度加快,城市道路环境日趋复杂,传统导盲杖已经远远不能满足视障人士的出行需求。而部分学者设计出的智能导盲杖、智能手杖[2-3],主要利用超声波测距和振动来提醒视障人士,功能较为单一。因此,本研究设计了一款基于机器视觉的多功能智能导盲杖。功能设计包括以下部分。
①红绿灯和盲道的检测与语音提示。此功能的实现需依靠机器视觉处理。首先,摄像头会对外界信息进行采集并转换成数字信号输入处理器,此过程可以被称为“视”。其次,便是“觉”的过程,通过软件算法对传入的数字信息进行处理和分析。其中软件算法设计是在卷积神经网络的基础上,运用YOLOv2算法实现对图像进行目标分类和定位,再通过迭代训练便可以得到针对红绿灯和盲道进行检测的模型。再次,将训练好的模型存入K210芯片的内存中,就可以载入模型对传入芯片的图像信息进行处理。最后,通过不断执行“视”和“觉”两个过程,就可以实时地识别出红绿灯状态和盲道路线。配合语音提示,指引视障人士行动。
②检测障碍物。此功能选择使用超声波模块检测,当超声波测量值小于预设定的安全距离值时,警报响起同时手杖开启震动,提醒视障人士避让。
③呼救定位。当按键按下时,系统会向预设号码发送紧急求救信息并发送实时定位。同时,手杖报警信号灯闪烁,从而引起路过行人的注意。
④摔倒报警。主要使用陀螺仪检测,可以实时进行导盲杖的姿态检测,同时配合其他感知模块实时判断使用者是否摔倒。如发生摔倒情况时,第一时间向紧急联系人发送摔倒信息及位置信息。
1 硬件设计
导盲杖硬件由STM32F407VET6单片机、K210芯片、摄像头模块、陀螺仪模块、超声波模块、GPS模块、语音模块、GSM模块、舵机模块等组成。硬件设计如图1所示。
各模块型号如下。
①K210芯片:是一款具有图像处理功能、可以训练神经网络模型的可编程MCU。K210 SOC 内部还搭载了 KPU,可以在低功耗的情况下实现卷积神经网络计算,实时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。K210还搭载了FPIOA、UART、SPI、TIMER等外设,可以与STM32等其他MCU进行通信并协调运行工作。
②HC-SR04超声波测距模块:用来测量导盲杖和障碍物之间的距离。该模块测量精准度为3 mm,不通过接触就可以测量前方2~400 cm的距离。超声模块使用STM32板载的5V电压进行供电,Trig端口和Echo端口接STM32芯片的普通GPIO端口。
③Sg90型舵机:通过STM32给出不同的PWM波来控制其转动角度。目的是辅助摄像头调节拍摄角度,以此来更好地采集到高质量的图像信息,增加图像处理的成功率和准确性。
④JQ8900-16P语音模块:用来驱动扬声器对紧急情况进行报警。将模块与MCU共地,使用STM32的一个串口与其进行通信,应对不同紧急情况的状态,STM32通过指令操控语音模块发出报警命令。
⑤陀螺仪MPU6050:内部集成了三轴MEMS陀螺仪、三轴MEMS加速度计及一个可扩展的数字运动处理器(Digital Motion Processor,DMP)。可以先通过IIC通信协议与STM32进行数据传输,输出在直角坐标系下的x,y,z轴的旋转角速度和加速度数据;再通过STM32对数据进行算法处理,就可以判断出视障人士是否摔倒以及摔倒方向。
⑥ATGM332D GPS模块:与STM32通过串口通信接口连接,可实现将视障人士的位置信息传输给STM32 [4]。
⑦SIM800L GSM模块:可实现语音、数据和传真信息的传输。通过串口通信协议与STM32进行通信,并通过串口发送AT指令控制其工作。
2 软件设计
2.1 系统流程
STM32主控的软件代码程序使用Keil uVision5软件开发,C语言进行程序编写。STM32程序流程如图2所示。代码由主程序和多个功能模块的子程序组成,其中包括超声波模块、陀螺仪检测模块、舵机模块、语音播报模块、GSM定位模块、GPS通信模块、K210图像检测功能。
K210图像检测功能的使用MaixPy IDE开发,Python语言进行程序编写。其主要工作为实时采集视频图像信息,并将特征图像信息传至训练好的模型中,得到图像识别结果,然后将识别结果信息通过串口通信传给STM32,让STM32做出相应的操作。K210程序流程如图3所示。
2.2 关键功能原理及算法
2.2.1 图像检测实现原理。检测图像中的红绿灯和盲道可以看作是一个对图像中的特征目标进行分类并计算出位置信息的任务。目前,机器视觉的实现技术主要为卷积神经网络技术,其借鉴了人类大脑处理从视网膜上传来的电信号这一过程。即大脑处理电信号的视觉皮层是一个分层结构,不同层次的神经元对由不同的图像信息转化来的电信号有各自的敏感性,每一层处理完信号后会向下一层传导信号,最终图像的细节、位置、形状、颜色等信息会在视觉皮层的IT皮层上整合。
卷积神经网络就是对大脑处理图像信息机制的模仿。一个卷积神经网络由数据输入层、卷积计算层、ReLU激励层、池化层、全连接层构成。其中卷积计算层一般有多层的卷积层,这对应着视觉皮层的分层结构;每一层又有多个可以滑动的卷积核,这些卷积核可看作是视觉皮层中每一层的神经元;每一个卷积核通过以一定步长的滑动的方式,来遍历和运算处理整个图像中特定的特征信息。由于数据输入层传入的图像可能是RGB格式,共有三个通道,所以卷积核也被允许有三个通道。ReLU激励层的作用把卷积层输出结果做非线性映射。池化层夹在连续的卷积层中间,作用是压缩数据和参数的量,减小过拟合。两层之间所有卷积核均由权重连接。在全连接层之前的主要任务是提取图像特征,而全连接层通常在卷积神经网络尾部,主要的作用就是实现特征分类,当把找到的特征组合到一起后,就能确定出检测目标。
以上过程是神经网络向前传播的过程,而反向传播可以优化连接卷积核的权重。优化过程见式(1)。
[θi+1=θi-α∇J(θi)] " " " "(1)
式中:[θi+1]为优化的权重;[θi]为初始权重;[α] 为学习率;[∇J(θi)] 为损失函数的梯度。
显然,如果只是运用简单的卷积神经网络可以完成目标分类的任务,但不能满足本研究设计的检测要求,即满足检测目标并定位。因此,在此基础上还得使用YOLOv2算法,其核心思想就是将输入图片分割成互不重合的小网格,再通过卷积来提取特征,以此来代替卷积核滑动。具体来说,YOLOv2会将输入图像分割为13[×]13的网格,每个单元网格负责检测中心点落在该单元网格内的目标并预测出边界框。此外每个单元网格处还都预设了5个先验框(anchor box),为了找到最大限度匹配样本的边框尺寸,于是采用了k-means聚类算法见式(2)。
[d(box,centroid)=1-IoU(box,centroid)] (2)
式中:[d(box,centroid)]为聚类时被选作中心的边框与其他边框的距离;[IoU](intersection over union)为交并比,也就是两边界框相交部分面积与相并部分面积之比,这里指被选作中心的边框与其他边框的交并比。
在确定了先验框之后,根据预测公式可计算出预测框的位置见式(3)。
[bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth] "(3)
式中:[bx、by、bω、bh] 为预测框的中心x坐标、y坐标、宽、高;[pw,ph]为先验框的宽和高 ;[cx、cy]为当前网格左上角到图像左上角的距离;[σ] 为sigmoid函数,在其作用下,能使边界框的中心位置约束在特定网格内,不让预测边框的中心出现在任何位置,同时使网络更容易学习、更稳定;[tx、ty、tw、th、to]为训练过程中模型需要学习的参数。
YOLOv2舍去了全连接层,弃用以往补全图像尺寸的做法,选择在训练过程中,经过几次迭代后,让其自动改变网格尺寸并继续训练,使网络对不同分辨率的图像也能有较好的预测。
YOLOv2模型的损失函数就是将各位置信息的均方误差按照一定权重累加在一起,共分为三部分。第一部分需要计算背景的置信度误差,即计算预测框和所有的标注框(ground truth)之间的[IoU]值。如果[IoU]值小于阈值(YOLOv2设定为0.6),则认为预测框标记的为背景,才会计入误差。第二部分需要计算先验框和预测框的坐标误差。第三部分需要计算与标注框匹配的预测框的坐标损失总和、置信度损失总和、分类损失总和。根据损失函数,再经过不断迭代和优化权重,最后就能训练出较好的预测模型。
在建立好YOLOv2模型后,并且准备好了红绿灯数据集和盲道数据集(每张图片都已标注好实际框标签),便可以训练出检测红绿灯和盲道的模型。将训练好的模型存入SD卡,以便K210载入模型。
2.2.2 陀螺仪监测实现原理。导盲杖具备的摔倒监控功能[5]采用高性能陀螺仪模块来完成。陀螺仪MPU6050加速度传感器会接受外界传递的物理性输入,通过感测器转换为电子信号,再最终转换为可用信息。主要感应方式是先对微小物理量的变化进行测量,再通过电压信号来表示这些变化量。该模块能同时检测三轴加速度、三轴陀螺仪(三轴角速度)的运动数据及温度数据。通过利用 MPU6050 芯片内部的 DMP 模块,对传感器数据进行滤波、融合处理之后,就可以得到一组四元数Q。四元数Q由实数加上三个虚数单位i、j和k组成,相互之间的关系见式(4)。
[Q=q0+q1i+q2j+q3k] " " " (4)
式中:[q0]、[q1]、[q2]、[q3]是实数。
对于i、j和k本身的几何意义可以理解为一种旋转。其中,i旋转代表Z轴与Y轴相交平面中Z正半轴向Y正半轴的旋转;j旋转代表X轴与Z轴相交平面中X正半轴向Z正半轴的旋转;k旋转代表Y轴与X轴相交平面中Y正半轴向X正半轴的旋转。四元数虽然便于表示旋转,但其形式不太直观。因此,要将旋转转换成绕X轴旋转角度[φ] (roll)、绕Y轴旋转角度[θ] (pitch)、绕Z轴旋转角度[ψ] (yaw)的表示形式,以方便观察姿态。该转换过程见式(5)。
[θφψ=arcsin2(q0·q2-q1·q3)arctan[2(q0·q1+q2·q3)1-2(q12+q22)]arctan[2(q0·q3+q1·q2)1-2(q22+q32)]] " " " (5)
四元数的数据更新应先分别计算出当前四元数姿态下与加速度计的重力分量,两者作叉积后得出误差;然后对误差作比例(P)和积分(I)运算后,加到陀螺仪角速度上;最终由角速度计算新的四元数。
2.2.3 发送含位置信息短信实现原理。GPS模块通过串口通信协议,与STM32进行数据传输。GPS模块会实时获取当前使用者所处的位置的经度和纬度,并通过串口将数据包传送到STM32的DMA缓冲区。
GSM模块通过串口通信协议与STM32进行通信,可以通过串口发送AT 指令来控制GSM模块的工作。当发生紧急情况时,使用者可通过按键来触发STM32启用GSM模块发送短信,其内容是STM32接收到的GPS模块传送过来的有效位置信息数据。
3 测试方案
由于智能导盲杖是模块化设计,所以各功能可以单独测试,且不会影响整体功能流程。现有如下关键测试和结果。
3.1 图像检测模型验证及结果
利用在网络上随机收集到的大量图像数据集,对YOLOv2模型进行训练和验证。因为模型的正确率是通过多次的迭代训练来进行优化的,所以模型训练平台给出的“损失和精度迭代次数曲线图”是判断模型是否训练成功的关键依据。在曲线图中,“正方形曲线”代表损失函数算出的损失值(loss),其取值在左侧纵坐标上,此曲线呈下降趋势就说明模型可以收敛; “三角形曲线”代表着模型在验证数据集上的检测正确率(val_acc),其取值在右侧纵坐标上,此曲线是反应模型检测正确率的关键指标,其值越接近1,说明模型检测目标越准确;“圆形曲线”代表着模型在训练数据集上的平均精度(acc),其取值在右侧纵坐标上,此曲线上升说明模型在训练集上收敛,但不代表模型的实际检测效果好。当指标val_acc达到0.9且稳定时,则认为模型训练成功,否则增加迭代次数并重新训练。本设计的红绿灯检测模型和盲道检测模型的训练结果分别如图4和图5所示。
由图4和图5可知,本研究设计的红绿灯检测模型和盲道检测模型随着迭代次数的增加,最终val_acc指标都能达到1且保持稳定。用训练好的模型去检测随机给定的图像,当输出图像中出现绿
色预测框时,为系统识别到的目标对象,且预测框几乎和实际目标框重合。红绿灯检测模型和盲道检测模型的输出图像分别如图6和图7所示。
导盲杖根据系统识别到的红绿灯状态或盲道路线走向,由语音模块指引视障人士的行走状态。
3.2 陀螺仪姿态检测验证
陀螺仪测量出数据后会传给STM32处理,所以该功能的测试方法是通过STM32的串口通信,将处理完的数据传入PC机上的串口调试助手,再人为分析数据的正确性。启用陀螺仪后,人为地以任意角度旋转导盲杖,在PC机上显示的数据如图8所示。由于一开始没有人为旋转导盲杖,所以看到绕X轴旋转(roll)、绕Y轴旋转(yaw)、绕Z轴旋转(pitch)时值的变化维持在0.5°,较为稳定;当人为旋转导盲杖后,可以看到roll、yaw、pitch的值发生了较大的变化,当将导盲杖以某个角度固定下来,通过量角器测量,发现符合串口上的数据,且误差在2°以内,说明陀螺仪能测量出导盲杖的姿态角度。
4 结语
基于机器视觉的智能导盲杖的出现给视障人士的生活带来极大的便利,能够让视障人士像正常人一样行走。系统经模拟测试,其红绿灯和盲道检测功能的正确率能到达且稳定99%以上,姿态角度测量误差维持在1°以内,GPS和GSM能正常工作且满足要求。综上所述,该智能导盲杖创新性地实现了红绿灯和盲道检测,功能更加齐全,具有很高的实用价值。由于图像检测模型已经建立,并且有了模型训练的经验,今后可训练模型检测更多物体,以此完善机器视觉功能,应对更多的实际出行情况。
参考文献:
[1]宋玉娥,刘业辉,张小燕,等. 基于STM32的智能导盲杖的设计[J]. 电子器件, 2020, 43(5): 1180-1184.
[2]郭昭烽, 谢玲, 庄一帆. 一种智能导盲杖系统的设计[J]. 电脑与电信, 2022(3):1-4.
[3]王浩, 胡浩, 王冉, 等. easy go——易行(智能导盲杖)[J]. 科学技术创新, 2021(5):76-77.
[4]赵晓军, 陈晓燕, 李家兴, 等. 基于RFID/GPS的导盲杖设计与研究[J]. 电视技术, 2019, 43(1):111-114.
[5]张赢, 张政, 许梦余等. 基于视障人士出行设计防摔倒监报功能智能导盲杖[J]. 现代信息科技, 2022, 6(7):166-168.