基于R-CNN的精准型智能送药小车开发系统*
2024-03-05褚鑫磊薄纯娟
赵 燕,施 展,冯 冲,刘 畅,褚鑫磊,薄纯娟
(大连民族大学信息与通信工程学院,辽宁 大连 116600)
0 引言
自2020年以来,全世界一直在与新冠病毒进行殊死较量。新冠病毒传染性强、传播途径多样,对人们的身体健康造成了严重影响。如若医院中的医护人员和住院患者感染,不仅会削弱医护力量,还会使更多患者承受更大的痛苦。为了降低医院中新冠病毒的传播风险,我们设计了一款精准型智能送药小车,为医院住院部护士站提供病房药物配送服务。
目前,智能送药小车的识别房间号码方法可以分为循迹和利用OpenMV采集环境图像两种[1]。循迹方法受到外界影响较大,灵活性不够。利用OpenMV进行识别可以提高灵活性且识别更加精准。在算法选择上,有多模板匹配法和目标检测算法[2]。多模板匹配算法简单且稳定,但缺乏旋转不变性。目标检测算法分为双阶段和单阶段两种框架,虽然单阶段具有更快的速度,但是双阶段所得的结果更加精准[3]。
本设计采用基于深度学习的双阶段目标检测算法,利用R-CNN(卷积神经网络)对数字模型进行训练。卷积神经网络可以将大量图片数据有效降维,从而保留了图片的特征,符合图片处理的原则[4],进而大大提高了识别精度。经过实际的训练和测试,最终的识别精度高达99.2%。
1 方案设计
1.1 设计目标
设计功能如下:
1) 实现房间号的精准识别。
2) 小车行驶速度可调。
3) 药品装载检测。
4) 状态回传。将送药完毕的数据传输到系统。
1.2 系统方案
小车基于STM32F407ZGT6核心板搭建,主要由数字识别模块、驱动模块、药物装卸检测模块、蓝牙模块组成。该设计利用OpenMV对病房前的房间号码进行精准识别。当小车药仓中的红外传感器检测到药物装载后,由DRV8701E驱动电机控制小车运动。到达病房后,小车完成药物的卸载,利用蓝牙通信技术将送药结果上传至系统,实现自动化的药物配送。系统框架如图1所示。
图1 系统框架
2 核心算法分析
图像识别模块采用基于深度学习的双阶段目标检测算法。对于一张房间号码的图片,R-CNN基于selectivesearch(选择性搜索)方法生成大约2000个候选区域,每个候选区域被调整成227×227的RGB图像并送入一个CNN模型中[5],使用AlexNet提取图像特征,最后得到一个4096维的特征向量。接着,这个特征向量被送入一个多类别SVM(支持向量机)分类器中,预测出候选区域中所含物体的每个类的概率值[6]。
由于图像中目标的尺寸、角度、遮挡等问题的影响,生成的候选区域可能并不完全准确,导致目标的定位不精准。所以训练了一个边界框回归模型来提升定位的精准性。边界框回归所要做的就是利用某种映射关系,使得候选目标框的映射目标框无限接近真实目标框。利用数学符号表示就是:给定一组候选目标框P=(Px,Py,Pw,Ph),G=(Gx,Gy,Gw,Gh)为真实框的位置和大小,寻找到一个映射f,使得f(Px,Py,Pw,Ph)≈(Gx,Gy,Gw,Gh)。边界框回归是利用平移变换和尺度变换来实现映射的。平移变换的计算公式如下:
Gx=Pwdx(P)+Px.
(1)
Gy=Phdy(P)+Py.
(2)
尺度变换的计算公式如下:
Gw=Pwexp(dx(P)).
(3)
Gh=Phexp(dx(P)).
(4)
(5)
其中:
tx=(Gx-Px)/Pw.
(6)
ty=(Gy-Py)/Ph.
(7)
tw=log(Gw/Pw).
(8)
th=log(Gh/Ph).
(9)
在做预测时,利用上述公式可以反求出预测框的修正位置[7],使得预测的G和实际的G相差最小,从而提升OpenMV图像识别的准确性,如图2所示。
图2 R-CNN目标检测步骤
3 硬件设计
3.1 驱动模块硬件设计
本设计采用DRV8701E门级驱动芯片驱动双向有刷直流电机,通过控制栅极的电平高低来控制电机正反转。为了避免电机断电时产生反向电动势,我们在MOS管的源极和漏极上并联一个寄生二极管,当MOSFET被关闭时,寄生二极管会打开,允许电流在电感中自由流动,从而释放能量。
3.2 药物装载检测模块硬件设计
本设计采用TCRT5000红外传感器进行判断。红外发射二极管不断发射红外线,当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,此时模块的输出端为高电平,指示二极管被点亮,反之二极管熄灭。
4 软件设计
本设计主流程图如图3所示。当小车检测到药物被装载后,OpenMV进行病房房间号识别,确定病房的位置,小车移动到病房完成药物卸载后,返回护士站,并将完成情况上传到系统。
图3 系统主程序流程图
4.1 图像识别模块子程序设计
本模块采用基于深度学习的目标检测算法,利用R-CNN对数字模型进行训练。软件流程图如图4所示。
图4 OpenMV图像识别子程序流程图
4.2 药物装载检测模块子程序设计
红外传感器被安装在药仓底部,用于检测药品是否已放入。软件流程图如图5所示。
图5 药物装载检测模块子程序流程图
5 识别测试及结果分析
图6展示了小车在实物测试中的表现。
图6 实物测试图
如表1所示,为了测试OpenMV在运动状态下的数字识别精度,我们对每个数字进行160次识别测试。计算每个数字的识别成功比例以及数字成功识别比例的平均值,以得到总体的识别精度。为:
表1 数字识别测试结果表
(99%+98%+100%+100%)/4=99.2%.
(10)
6 结论
本文设计的智能送药小车使用OpenMV分析确定房间号坐标,利用R-CNN对房间号进行识别。卷积神经网络采用原始图像作为输入,可以有效地从大量样本中学习到相应的特征,避免了复杂的特征提取过程,大大提高了识别精度。最终经160次实际测试后,测得出总精准度可达99.2%。小车可以准确完成为住院部病人送药的工作,降低了医护人员为住院部病人配送药品时近距离接触造成的病菌传播风险,同时也减轻了医护工作者的负担。