钟泽伟,李 祺,黄定航,曾颖瑄,周欢欢,邓 超,2
(1.武汉科技大学 汽车与交通工程学院,湖北 武汉 430065;2“.运输车辆检测、诊断与维修技术”交通行业重点实验室,山东 济南 250357)
随着物流行业的高速发展,物流活动正逐渐渗透进每个人的日常生活中,对于大学生而言,与物流活动的直接交互即寄件、取件行为。对于待取件人员而言,很容易出现取件过程拥挤、排队时间长等问题,进而降低取件点出件的效率,人流量预测有助于他们提前计划和安排时间,避开人流高峰期前往取件。如果在取件活动里基于数据挖掘,利用嵌入式设备识别人流量数据,就得到不同时段的人流量数据,在管理取件站点、提高取件效率等方面都有着不可忽略的意义。
Zhu,等在计算机视觉和模式检测大会上提出了用来体现图像局部方差信息的梯度方向直方图HOG,同时使用支持向量机器(Support Vector Machines,SVM)来对人流进行特征分类。Dollár,等将标准的boosting算法和局部通道特征结合起来做人流检测。Felzenszwalb,等提出了一种通过利用优先知识来设计用于多尺度形变对象检测的模型DPM,该模型的通用性相较于Zhu等人的所设计的模型有所提升。Benenson,等利用积分通道特征ICF来实现人流检测,并对能影响检测效果的多重因子进行了详尽的研究和讨论。Prioletti,等一开始使用基于Haar的级联分类器和基于HOG的滤波器等设备,在实际应用中通过生成可能存在人流的靶点区,从而进一步确认靶点区中是否存在人流。Zeng,等通过反向传播的原理制作出多阶段分类器,通过先分别保存再整体作为下一阶段的参考材料。Benenson,等提出了一种名为Katamari的方法,此方法运用决策森林,并且联合了其他许多方法进行人流预测。Nam,等提出一种将人流的两个特征,即颜色和梯度特征分别做去相关处理的理论,通过这种方法可以增强分类器的类型甄别能力。Liu,等通过线性核函数同样增加了其提取特征的应用能力。Baek,等级联了一个附带核支持向量器AKSVM作为特征分类器,并通过深度学习算法对AKSVM进行一定的升级优化。
本设计是对嵌入式设备处理与分析信息的应用。在嵌入式设备的Linux开发领域,将Linux系统科学的安装在硬件设备上是实现运用嵌入式设备来解决现实问题的基础。本设计研究在S5PV210处理器上应用基于Linux的程序来进行信息处理,提高公共区域取件的效率。
整个终端系统可以视为由四个部分组成:中央处理器单元、网络数据传输单元、信息采集单元和电源管理单元。中央处理器单元是整个系统的核心,负责处理来自数据传输单元的数据和统筹规划各个单元的工作;网络数据传输单元负责将终端系统的数据上传至服务器;信息采集单元负责采集需要的开始拍摄的信号和获取到的图像数据信息;电源管理单元负责整个系统不同部分供电的平稳。本系统的软件结构主要有嵌入式Linux操作系统、人或物识别应用程序和红外人流量计数应用程序。图1为该系统整体框架设计图。
图1 系统整体框架
本系统中央处理单元选择了Samsung公司的S5PV210处理器。S5PV210是一款32位处理器,具有低功耗的特点,它集成了ARM Cortex-A8核心,实现了ARM V7A架构,数据传输速度最高可达400Mps,该处理器运行稳定时主频可达1GHz、具有MMU功能、64位内部总线架构、4个USB接口、4路HS-MMC/SD/SDIO接口等。同时其内部集成MFC视频编码解码器,支持多格式编解码包含MPEG-4/H.264编码,且Cortex-A8处理器应用NEON信号处理扩展指令集提高了G.264和MP3等媒体编码效率。Android系统通过SD/TF卡烧写到手持式终端,UART口负责系统调试,USB HOST负责与PC端通信,复位电路负责系统的重启。
在本终端中的网络数据传输单元,4G无线通讯模块选用的是ZTE ME3760-V2 4G模块,ZTE ME3760-V2是基于MiniPCI-E接口的LTE模块,是中兴自主研发的芯片,经过了3C型号核准认证,支持LTE双模多频和SIM卡业务,支持IPv4、IPv6协议和高速USB2.0接口,支持短信、数据、电话功能支持最大150Mbps的理论上下行数据传输速率。WIFI模块采用Redpine Signals公司的RS-9110-N-11-02,该模块支持IEEE802.11b/g/e/i标准以及IEEE802.11n,工作频段2.4GHz,工作电压介于3.1V到3.6V之间,处理器采用SDIO接口与该WIFI模块进行通信。
信息采集单元采集图像数据是通过Basler acA1920-155uc工业相机完成,该摄像头配有Sony IMX174 CMOS感光芯片,每秒164帧图像,230万像素分辨率,SP5V210处理器通过IC总线访问与修改Basler acA1920-155u内部寄存器来控制摄像头功能。红外检测电路选用E18-D80NK红外模块,当检测到有人通过的时候,触发一个高电平,通过模块内部自带的放大电路放大接收的信号,并将其传输到单片机进行处理,从而触发图像收集的功能。红外模块使用UART口与处理器进行通信,最终完成数据的采集并显示到Android UI上。
首先使用以下命令来安装摄像头标定功能包:
然后将制作纸质标定靶备用,然后继续开始标定摄像头:
打开终端输入以下命令启动工业相机:
然后输入以下命令启动标定程序:
标定程序启动完毕后,将打印好的标定靶放在工业相机视野范围中。为了提高标定工作的严谨性和准确性,需要使标定靶放置在工业相机摄像图画中的所有区域,通过上下左右前后倾斜移动等操作,直到“CALIBRATE”按钮变色,表示标定程序的参数采集结束。参数计算结束后界面恢复,点击“SAVE”按钮保存标定参数。最后点击“CMMIT”按钮,提交数据并退出程序,然后从标定结果的压缩文件中解压出标定结果文件,复制并重命名就可以使用了。
本终端的电源管理单元选取了对锂电池具有充电功能的电源芯片,并配备了合理的LDO稳压芯片进行电压变换,且根据模块需求提高供电电流。在电源管理模块中,同一供电电压不同模块之间使用磁珠隔离,同时使用滤波电容来提高电源的稳定性。电源选型上,采用了两块TI公司生产的锂电池专用电源管理芯片BQ24032,BQ24032芯片充电安全性高、充电速度快且充电电流可调节,并能保证充电的同时系统工作的稳定性。
本系统的图像识别方法采用YOLO算法原理,YOLO算法的提出者没有考虑继续优化两阶段算法,而是创造性的提出“一步法”,实现了对待检测图像数据中所有目标对象的框架和类型预测,而且推理速率有了大幅度提升,完全可以满足实际生产生活中实时对象检测的需要。YOLO算法创造性地提出了将输入图片进行M*M的网格化,由图像中目标对象核心位置的网格边框来负责该对象的预测结果输出。它只需要扫描一遍,就可以将位置预测和种类分辨结合到一个CNN网络,从而获取到图片中所有对象的位置和种类信息。综上所述,YOLO预测算法进行目标检测的过程中,是具有相对较快的检测速率和检测精度的。而且该算法不仅可以很好地应用于人流等活体对象,还可以应用在如书画作品、桁架、储物筐等无生命物体。
YOLO算法通过损失函数成功做到了把这应用问题转化为数学问题,直接输入图像信息就能判断出每个网格单元附近是否有某个对象,然后预测出具体的边框位置。关于损失函数,需要了解三个:锚框、置信度和对象条件类型概率。在预测的结果中,每个网格对应边框的输出结果有三种:框架的核心点坐标(x,y)和框架的高和宽数据(h,w);一个是置信度;最后一个是一组取值[0,1]的条件概率。
在预先练习的过程中得到一个准确框架集之中,首先通过统计得出的一些频率较高的边框样式,即锚框。YOLO的解决办法是将形状用宽和高两个维度数字表示。YOLO采用k-means算法,通过聚类练习集中所有练习图像的准确框架,得到具有一定代表性的形状的宽高数据。在有了可以数学化的锚框后,如何在应用中加入锚框的先验经验呢,这一解决方法是让一个网格预测多个边框,然后每个边框负责输出不同的形状。以锚框为例,我们的一个网格会输出三个参数相同的边框,第一个边框负责输出形状与锚框一类似的框架,其他两个边框同理。然后求出网格中每个锚框与准确框架的IOU(交并比),交并比最高的锚框对应的边框就负责预测该对应的准确对象,以此提高预测结果的准确度。
如何使模型的边框与其负责预测的锚框对应。YOLO的解决方法是将预测的宽和高数据分别与锚框的宽和高数据对比,这样无论一开始边框输出的宽高尺寸如何,经过转化后都与锚框的宽和高相关。关系公式如下:
其中,和为锚框的高和宽,和为边框直接预测的高和宽,和为转换后预测的实际高和宽。
以上是相对值,转换成最终输出的绝对值,还需要一个转换公式:
其中,()是sigmoid函数,和分别为网格左上角相对于检测样本图像的位置数据。
对象条件类型概率其实是一个数组,数组的内容是一群概率,数组中有多少个数值表明图像数据中的检测对象类型数量。
在YOLO中,会把一张图像划分为M*M个网格,每个网格会对应固定数量的锚框,假设存在B个锚框,又因为每个边框内有四个位置参数,一个置信度,C个类别概率,可计算输出维数为:M*M*[B*5+C)]。
基于YOLO v3算法,采用darknet53预训练权重,在此基础上针对取件点如菜鸟驿站等取件环境下的图像训练集进行训练,得到权重文件。在训练过程中可分为3个步骤:
(1)根据损失(Loss)函数计算预测框的误差。YOLO的损失由四部分组成:预测的中心坐标损失、预测边界框的宽高损失、预测的类别损失、预测的置信度损失。预测的中心坐标损失公式为:
预测边框的宽高损失公式为:
损失类别损失公式为:
(2)由误差计算卷积核中每个权重的梯度。
(3)根据优化算法更新权重,生成权重文件。
系统工作流程图如图2所示。
图2 系统工作流程图
系统开机工作后,会首先运行引导加载程序,进行硬件设备的初始化并引导加载Linux内核,随后加载设备驱动程序(包括摄像头驱动、红外驱动、4G模块驱动、Nand F1ash驱动等)。当红外设备检测到人员到来,输出高电压信号时,通过$cheese指令打开视频采集设备文件,开始发送采集信号,读取视频缓存数据,可以根据需求进行数据的处理。
首先,将某取件点营业时间中的人流图片保存于darknet文件夹下的data文件中。然后在Ubuntu环境中,按下Ctrl+Alt+T组合快捷键打开终端,编译Makefile文件,转到darknet目录,在darknet调用cfg目录下YOLO v3程序,然后采用训练好的权重参数,识别需要预测的对象图像x.jpg,输入以下命令:
得到结果如图3所示。
图3 识别效果
随后发送采集停止信号,释放内存映射,关闭视频设备,Basler acA1920-155uc采集到的图像信息通过IC总线与SP5V210处理器通信,处理器通过内部集成的MFC多格式编码器将图像信息进行H.264编码压缩,视频图像再基于USB无线网卡构建的WLAN网络和实时传输协议RTP发送给视频监控PC客户端,由客户端进行解码和数据处理(人、物的识别统计),再将得到的数据显示到目标的Android UI上。
本设计主要采用工业相机和S5PV210处理器,在Ubuntu环境下利用基于深度学习YOLOv3算法,在特定的快递取件点场景下收集图像数据,将其制成训练集并生成权重文件,对取件点一天中人流量进行统计,并依据此结果指导取件行为,解决当下取件点高峰期人流拥挤、取件难、排队久的问题。实验结果表明在测试集的1 000个图像样本中可以获得92%以上的准确率,快速识别出快递取件点的具体人流量信息,证明了基于YOLOv3的人流统计方法的有效性。同时,根据得到的实验数据,对有快速取件需求的人提供了实用的取件引导方案。