基于Object Detection API的物流单元货架目标检测

2020-10-09 02:55龙健宁龚德文
自动化与仪表 2020年9期
关键词:货架卷积物流

龙健宁,刘 斌,龚德文

(1.华南理工大学 聚合物成型加工工程教育部重点实验室 广东省高分子先进制造技术及装备重点实验室聚合物新型成型装备国家工程研究中心,广州510641;2.广东昌恒智能科技有限公司,东莞523841)

目标检测是以图像识别技术为基础,对图像中的目标对象进行分类和识别,并在目标对象周围绘制预测框进行定位。目前,应用深度学习方法的目标检测技术已经被广泛地应用到无人驾驶、图片搜索、人脸识别、光学字符识别等方面[1]。传统的图像检测一般采用“人工设计特征+分类器”的模式,通过人工设计提取局部特征再借助于向量机等分类器进行图像的分类和识别。人工设计特征容易受到光照变化、位置变化以及角度变化等因素的影响[2],而深度学习的方法能够自动提取图像特征,克服了传统图像检测的这一缺点,鲁棒性和泛化能力更强,应用也更为广泛。

Tensorflow 是谷歌公司发布的基于数据流图的开源的深度学习框架,具有高度的灵活性、通用性、扩展性以及良好的移植性,能够适应实际生产环境,被广泛地应用到图像识别、自然语言识别和语音识别等深度学习领域[3]。Object Detection API 是Tensorflow 框架下的目标检测库,集成了SSD、Faster R-CNN 以及Mask R-CNN 等主流的目标检测算法,易于构建、训练和部署目标检测模型。深度学习方法在复杂环境下进行目标检测效果卓越。

物流仓储环境条件复杂多变,物流周转箱是物流环境下货物流通的主要载体之一。本文基于Object Detection API,利用相机拍照分别对单元货架上摆放的物流周转箱进行目标检测,以期为无人叉车或机械臂对物流单元货架上的物流周转箱进行智能搬运提供依据。单元货架目标检测示意图如图1所示。

图1 物流单元货架目标检测示意图Fig.1 Diagram of object detection of logistics unit shelf

1 目标检测算法

目标检测算法主要分为两大类[4]。一类是基于分类的目标检测框架(two stage),另一类是基于回归的目标检测框架(one stage)。基于分类的目标检测算法首先生成可能包含被检测目标的候选区域,再对候选区域进行进一步地分类和位置精修,以获得最终检测结果,主要算法包括R-CNN、Fast RCNN、Faster R-CNN、Mask R-CNN 及其改进算法等。基于回归的目标检测算法则不需要生成候选区域,直接在原图上生成最终结果,因此速度更快,但是精度有所下降,主要算法包括YOLO、SSD 及其改进算法等。本文选用Object Detection API 中集成的Fast R-CNN 模型和SSD-MobileNet 模型进行单元货架的目标检测任务。

1.1 Faster R-CNN 模型

Faster R-CNN[5]是由Girshick R 等人在2016年提出的基于分类的目标检测模型。Faster R-CNN 模型结构如图2所示。

图2 Faster R-CNN 模型结构Fig.2 Model structure of Faster R-CNN

Faster R-CNN,首先利用卷积神经网络自动提取输入图像的特征信息,并传递给RPN(region proposal network)生成多个不同大小和比例的候选区域;接着,ROI Pooling 利用RPN 生成的候选区域和卷积神经网络提取到的共享特征图(feature map),得到固定大小的候选区域特征图;最后,利用softmax 对候选区域进行具体类别的分类,利用边框回归获得物体的精确位置,输出检测分类信息和位置信息。

1.2 SSD-MobileNet 模型

SSD[6]是由Wei Liu 等人在2016年提出的基于回归的目标检测算法。SSD 以VGG16 卷积神经网络为主体,将两个全连接层改成卷积层,再增加4 组卷积、8 个卷积层构造网络结构,同时,借鉴了YOLO的回归思想和Faster R-CNN 的Anchor 机制,各卷层将图像分成若干相同大小的网格(feature map cell),对每个网格设定一系列默认大小长宽比的包围盒(default boxes),最后分别预测default boxes 的偏移以及类别得分,通过非极大值抑制方法得到检测结果,输出类别和位置。

而SSD-MobileNet 模型,则是利用轻量化的MobileNet[7]神经网络结构替换传统SSD 模型当中的VGG16 卷积神经网络结构,在MobileNet 网络的最后卷积层conv13 后面再增加8 个卷积层,分别为conv14_1,conv14_2,conv15_1,conv15_2,conv16_1,conv17_1,conv17_2,从中抽取conv11,conv13,conv14_2,conv15_2,conv16_2 以 及conv17_2 等6层进行检测。输入图像归一化为300×300,conv11,conv13,conv14_2,conv15_2,conv16_2 以及conv17_2的特征尺寸分别为19×19,10×10,5×5,3×3,2×2 以及1×1。SSD-MobileNet 综合了SSD 和MobileNet 两者的优点,在保证精度的同时,具有计算量小、节约资源、响应迅速等特点。SSD-MobileNet 模型结构如图3所示。

图3 SSD-MobileNet 模型结构Fig.3 Model structure of SSD-Mobilenet

2 实验准备及目标检测过程

2.1 图像采集及增强

单元货架上物流周转箱的摆放形式如图4所示。由此可知,物流周转箱的侧面是检测的目标对象。

图4 物流周转箱摆放方式Fig.4 Style of placing the logistics turnover box

在真实的物流仓储环境下采集了36 张图像。为了扩充数据,对原图像作顺时针旋转10°和逆时针旋转10°处理,并对原图像以及旋转图像进行椒盐噪点处理和高斯模糊处理;另外,考虑到光线变化的情况,还对原图像进行了亮度增加和亮度减少的处理。最终一幅原图像能够得到10 幅扩充图像,如图5所示。数据集总共有36×11=396 张图像。

图5 图像增强效果Fig.5 Effect of image enhancement

2.2 图像标注及转换

基于Faster R-CNN 和SSD-MobileNet 的目标检测,都属于监督学习,利用labelImg 标注工具获得图像中目标对象的类别和像素位置坐标,保存成xml格式文件。

将获得的数据集xml 文件划分为训练集、验证集和测试集,比例分别为75%,15%和10%;然后将训练集、验证集和测试集转换成csv 格式文件,再通过Object Detection API 下的generate_tfrecord.py将csv 格式文件转换成Tensorflow 能够调用的tfrecord格式文件。

2.3 模型训练

在Object Detection API 下训练模型十分方便,以训练SSD-Mobilenet 模型为例。为了加快训练的速度,实验中采用了预训练模型ssd_mobilenet_v1_coco_11_06_2017,修改配置文件,将初始学习率设置为0.004,衰减步数和衰减系数分别设置为100 和0.95,训练步数设置为10000 步。实验采用GPU 训练的方式来加快训练速度,利用Object Detection API下的train.py 开始训练,经过约3 h 的训练,得到训练模型。训练结束后,利用export_inference_graph.py可以将训练得到了包含模型结构和参数的临时文件转化为可独立运行的pb 格式文件,方便模型的移植与集成。

2.4 结果对比分析

训练结束后,利用Tensorboard 可以方便地得到模型的损失率变化情况。Faster R-CNN 模型和SSD-Mobilenet 模型的loss 曲线分别如图6 和图7所示。

由图6 和图7 可知,loss 随着迭代次数的增加而下降,经过10000 次迭代,Faster R-CNN 模型的loss 逐渐稳定在0.1 左右,SSD-MobileNet 模型的loss 逐渐稳定在1.5,而Faster R-CNN 模型的收敛速度比SSD-MobileNet 模型快。

图6 Faster R-CNN 模型loss 曲线Fig.6 Loss curve of Faster R-CNN

图7 SSD-MobileNet 模型loss 曲线Fig.7 Loss curve of SSSD-Mobilenet

利用Object Detection API 下的eval.py 可以对训练结果进行验证,获得检测准确率;另外,对同一张图像进行目标检测,可以获得Faster R-CNN 模型和SSD-MobileNet 模型的检测时间。二者的检测准确率和检测时间对比如表1所示。

表1 检测准确率和检测时间对比Tab.1 Comparison of detection accuracy and detection time

由表1 可知,对于采集的物流周转箱数据集,Faster R-CNN 模型的检测准确率可以达到100%,而SSD-MobileNet 模型的检测准确率也达到了98.5%。而在检测时间方面,二者相差巨大,通过对比可知,相比于Faster R-CNN 模型,SSD-Mobilenet 模型更能满足物流环境下单元货架目标检测的实时性需求。

3 基于QT 的物流单元货架检测界面设计

SSD-MobileNet 模型能够检测出物流周转箱在单元货架上的位置,并画出包围盒,通过包围盒的像素高度可以得到物流周转箱的层数。所用的单元货架分为4 层,每一层分为左右位置,最上面一层的左右位置分别最多能放置一个物流周转箱,其余三层的每个位置最多能叠放3 个物流周转箱。将整个货架划分为8 个区域,分别编号01,02,1,2,3,4,5,6,如图8所示。

图8 单元货架划分区域Fig.8 Division of logistics unit shelf

当相机拍照时,相机与单元货架的位置相对固定,这样就可以根据检测到的包围盒的中心点的像素坐标,判断包围盒所在的单元货架区域,继而得到物流周转箱在单元货架上的位置。

QT 是跨平台的C++图形用户界面开发框架,利用训练转换得到的SSD-MobileNet 模型的pb 文件并结合OpenCV 库,在QT 平台上设计了物流单元货架检测界面,如图9所示。

物流单元货架检测界面由相机状态显示模块、原图及检测结果显示模块、设置模块以及货架状态显示模块组成,各模块的功能如下:

(1)相机状态显示模块,主要用于显示相机连接状态以及获取相机名称;

(2)原图及检测结果显示模块,用于显示采集到的图像以及检测后的图像;

图9 物流单元货架目标检测界面Fig.9 Interface of object detection of logistics unit shelf

(3)设置模块,主要包括“打开相机”按钮、“关闭相机”按钮、“图像采集”按钮和“货架检测”按钮以及“保存图片”选项;

(4)货架状态显示模块,能够直观地反映检测结果,显示单元货架上每一层每个位置的物流周转箱的层数。

4 结语

本文将深度学习的方法应用到物流环境下的单元货架目标检测,基于Tensorflow 框架下的Object Detection API,通过采集实地图像进行模型训练,综合对比了Faster R-CNN 模型和SSD-MobileNet 模型的检测准确率和检测时间,实验发现二者的检测准确率均能满足要求,而SSD-MobileNet 的检测时间仅为166.94 ms,因此,选择了兼顾准确性与实时性的SSD-MobileNet 模型来检测单元货架上的物流周转箱的摆放位置与叠放层数,并在QT 平台上设计开发了基于SSD-MobileNet 算法的物流单元货架目标检测界面。该检测界面能够方便直观地查看物流单元货架的状态。

猜你喜欢
货架卷积物流
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种摆放脚扣可以灵活安装的货架应用前景分析
卷积神经网络的分析与设计
本刊重点关注的物流展会
从滤波器理解卷积
“智”造更长物流生态链
无人货架,真的凉了?
邵国胜:实现从“书架”到“货架”的跨越
企业该怎么选择物流
基于傅里叶域卷积表示的目标跟踪算法