韩贵金,胡仲阳,石海宾
(1.西安邮电大学 自动化学院,陕西 西安,710121;2.中国建筑第二工程局有限公司 华北公司,北京 100071)
随着电子商务的快速发展,快递物流服务量也随之增长,当遇到“双十一”“618”等购物节快递量爆增时,现有的快递物流系统将受到巨大考验。目前,快递分拣主要分为自动分拣与人工分拣两种方式。自动分拣方式主要是利用基于无线射频识别技术红外线条形码检测方式[1]获取快递信息,可实现多个快递电子标签的高速检测,但需将电子标签张贴于每件快递上的设备,成本过高难以普及,主要应用于地区级大型快递分拣中心[2]。然而,在规模较小的区县一级分拣中心,基本上还都采取人工分拣方式,效率低下。因此,亟需研究针对区县一级分拣中心的小型快递自动分拣系统。
快递面单上主要包含条形码、快递三段码、快递公司Logo及用户个人信息等。扫描一维条码进行分拣时,由于条码易受到污渍干扰,需要通过快递公司数据库查询快递信息,受到了快递公司的制约。部分面单中的二维码虽可容纳更多信息,但其出现的频率较低,不适用于自动检测。快递三段码由三段字体较大的黑体数字构成,各段代表不同含义,包含了许多快递信息。根据三段码编码规则可直接读出快递信息,不需要在快递查询网站获取快递信息,识别速率高。但是,检测三段码时易受到面单中其他数字信息干扰,导致直接检测三段码准确性不足。而快递公司Logo尺寸不大,受遮挡、材质反光与面单变形影响较小,且面单上Logo特征明显,与三段码有固定的相对位置关系,由Logo位置确定三段码信息分阶段检测识别,可为快递三段码的检测提供有效帮助。因此,将Logo检测作为快递面单上识别和传达信息的视觉图形,应用前景广阔。如利用基于尺度不变特征变换(Scale Invariant Feature Transform,SIFT)算法进行特征匹配,可检索带有特定Logo的图像[3]。利用Halcon视觉识别技术[4]可提取快递面单三段码信息,但由于该技术成本过高难以推广。文献[5]使用了弱监督显性特征的Logo检测算法。
伴随着卷积神经网络在目标检测技术中的发展,其已广泛应用于各类应用场景。如基于Faster R-CNN的吸烟快速检测算法对小目标的检测,取得了较好的检测效果[6]。You Only Look Once(YOLO)算法[7]将目标边框定位转化为回归问题处理,对待检测的目标进行结果预测。利用特征金字塔生成多尺度候选区,融合多层特征图增强Logo特征的表达能力[8]。将YOLOv3算法用于小目标检测,提升了检测精度[9],而YOLOv4算法更是提升了小目标检测的速度和精度[10]。因此,针对区县一级分拣中心采用的人工分拣方式存在的效率低下问题,拟提出一种基于YOLOv4与位置先验的快递面单三段码检测算法。首先,利用HSV颜色分割算法提取快递面单区域,然后,利用YOLOv4算法对预处理后的快递面单图像进行Logo检测,最后,根据Logo与三段码的位置先验关系,通过三段码定位算法进行三段码检测,从而实现快递分拣。
将工业照相机采集的快递面单红绿蓝(Red Green Blue,RGB)图像转换到HSV颜色空间[11],转换公式为
在HSV颜色空间中,快递面单在色调(Hue,H)、饱和度(Saturation,S)和明度(Value,V)区域上分布在一个比较稳定的范围内,即0≤H≤180,0≤S≤30,90≤V≤255。利用HSV颜色分割、腐蚀膨胀和面单区域甄别算法对面单区域进行提取,如图1所示。将满足HSV空间上面单范围的区域置成白色,其他区域置成黑色,如图1(b)所示。通过计算面单目标在图像区域内位置坐标与区域像素点所占比例值,排除对非快递面单目标的误检,计算最大面积连通区域像素点所占整个采集图像像素点比例值,若超过设定阈值,则表示可能有面单存在,如图1(d)所示。根据检测的面单区域结果,在原图中截取面单图像。为避免白色快递包装造成面单信息可能遗漏,将截取图像放大1.5倍。
图1 快递面单区域提取
选取快递Logo模板,多角度旋转获取多种模板,基于模板匹配算法[12]将多个模板与Logo检测模型获取的快递Logo图像进行匹配并评分,筛选评分最高的模板,获取Logo旋转角度。根据旋转角和快递面单中Logo与三段码相对位置关系,得到三段码位置坐标,完成三段码检测。基于位置先验的三段码检测过程如图2所示。
图2 基于位置先验的三段码检测过程
考虑到快递三段码检测的精度与速度要求,结合YOLOv4算法进行Logo目标检测。YOLOv4以CSPDarknet53作为主干网络,由空间金字塔池化(Spatial Pyramid Pooling,SPP)附加模块结构和PANet结构共同构成Neck的特征金字塔部分,使用Yolo Head结构根据获得的特征进行预测[13]。利用YOLOv4算法训练快递面单Logo检测模型的训练步骤如下。
步骤1数据集使用VOC2007[14]格式进行标注。用预训练网络模型结构参数K0初始化YOLOv4网络中的各个参数。
本次耕地质量定级技术路线可概括为:在全面收集影响金安区耕地质量的因素因子资料的基础上,应用地理信息系统建立金安区耕地质量定级信息系统,然后运用多因素多因子综合评价方法评定出金安区耕地质量级别,最后根据投入—产出效益、土地确权资料等多种资料相互验证、相互补充,最终确定耕地质量级别。
步骤2将预处理后的快递面单图像输入网络,YOLOv4中使用了CSPDarknet53作为基准网络,提取一些快递Logo通用的特征表示。
步骤3利用SPP模块融合不同Logo尺度大小的特征图,采用自顶向下的特征金字塔网络(Feature Pyramid Networks,FPN)于自底向上的路径聚合网络(Path Aggregation Network,PAN)提升网络的特征提取能力。
步骤4提取中间层、中下层和底层等3个特征层进行目标检测。将3个特征层的预测结果解码,得到Logo预测框的位置。
快件在分拣过程中是任意角度的,根据不同快递公司分别选取快递Logo图像作为匹配的模板,将Logo模板以0°起始5°为间隔旋转一周,选择模板匹配度量方法,对比匹配结果,选取与检测快递面单Logo信息最匹配的Logo模板,从而获得面单旋转角度。根据Logo检测框信息获取检测快递Logo的中心点坐标,求得检测框宽与选取Logo模板宽比例作为比例尺。
快递面单规格以含有两个快递Logo与仅有单个快递Logo为主。针对两类面单规格,分别建立两个Logo规格与三段码相对位置数学模型和单个Logo规格与三段码相对位置数学模型。
模型1两个Logo规格与三段码相对位置数学模型。由快递面单中两个Logo规格定位三段码中心坐标,将Logo模板匹配获得的旋转角转换为弧度,以像素点坐标系为坐标轴,由两个Logo中心点A与B和三段码中心点C构成三角形,如图3(b)所示。
图3 两个Logo规格与三段码相对位置数学模型
结合Logo中心点坐标与三角形三边长度a、b与c,计算Logo检测框中心点A处夹角
AB边在y轴上的方位角可表示为
式中:ΔX=x1-x0;ΔY=y1-y0;sgn()为求符号函数。若ΔX<0时其值为-1,ΔX>0时其值为1,ΔX=0时其值为0。
AC边在y轴上的方位角可表示为
αAC=αAB±θ
根据不同旋转角度确定加减θ。
由Logo中心点计算三段码中心点坐标公式为
(1)
模型2单个Logo规格与三段码相对位置数学模型。由快递面单中单个Logo规格定位三段码中心坐标,利用Logo中心点A与条形码检测算法获取条码检测框的中心点B,与待检测的三段码中心坐标点C构成三角形,如图4(b)所示。根据面单先验计算该三角形三边长度,根据式(1)计算三段码中心点坐标。
图4 单个Logo规格与三段码相对位置数学模型
通过上述两个模型获取三段码中心点坐标,根据面单中三段码检测框的长宽,得到旋转前的三段码检测框坐标矩阵,结合旋转角度,得到三段码检测信息。
在计算机为CPU Intel Core i5-4210U,主频为1.7 GHz,内存为16 GB,显卡为Nvidia GTX1080,4块GPU环境下加速训练,快递面单Logo检测训练在Keras和Tensorflow下实现。测试环境为Windows 10系统,处理器为Intel(R)Core(TM) i5-8265CPU @1.60 GHz,内存容量为8 GB。
实验数据集为快递驿站现场采集的圆通速递、韵达速递、中通快递和百世快递分拣中心等4家快递公司的快递面单图像和小型快递分拣中心分拣作业过程中采集的图像。数据集共包含7 010个样本,其中,训练集有6 309张,测试集有701张,包含了角度旋转、快递面单规格和噪声等多种变化。快递面单样本数量如表1所示。
表1 样本数量
考虑到各个快递公司快递面单Logo图案不尽相同,整个模型训练过程按不同快递公司分别进行。每个快递公司训练主干特征提取网络特征通用,冻结训练功能可加快训练速度,也可在训练初期防止权值被破坏,故训练分为起始前25世代与冻结训练后25世代。当损失值逐代减少,模型收敛时,分别保存各个公司训练模型。以圆通速递快递公司为例,基于YOLOv4的快递Logo检测模型在数据集上训练的损失曲线如图5所示。由图5可知,网络的检测效果得到了提高,损失值逐代减少,在训练45世代之后模型训练损失值趋于稳定,模型收敛,检测模型训练完成。各个快递公司训练模型损失值均能够趋于稳定。
图5 圆通速递Logo检测模型训练损失曲线
在测试集上对模型进行测试分析,网络的正确率-召回率曲线如图6所示。由图6可以看出,当检测边界框的阈值设为0.75时,得到的均值平均精度为96.10%,检测速度为0.06 s~0.07 s,基于YOLOv4的快递Logo检测算法在准确性和速度均得到了不错的效果。
图6 Logo检测模型训练正确率-召回率曲线
结合测试集对Logo检测模型进行测试,部分结果如图7示。
图7 部分快递Logo目标检测结果
2.3.1 面单区域提取实验
为验证快递面单区域提取对Logo检测准确率的提升,以百世快递分拣中心采集的快递图像为主的训练集Ⅳ上,利用YOLOv4算法分别对原始采集图像与面单区域提取图像进行Logo检测模型训练与测试,检测结果如表2所示,检测效果分别如图8和图9所示。
表2 不同图像处理方法的Logo检测结果
图8 原始采集图像的检测效果
图9 面单区域提取的检测效果
由图8可以看出,快递Logo目标尺寸较小,不易在原图中检测出来,准确率较低。而表2中的检测结果和图9的检测效果可知,面单区域提取方法有效排除了大量背景的干扰,优化Logo特征提取,大幅提升了准确率,而检测时间由于增加了面单区域提取而小幅增加。
面单区域提取方法在测试集Ⅳ的正确率-召回率曲线如图10所示,将检测框的阈值设置为0.75时,快递Logo检测模型的准确率为96.55%。
图10 面单区域提取Logo检测算法P-R曲线
2.3.2 快递面单三段码检测实验
分别在试集Ⅰ、Ⅱ与Ⅲ上评估三段码检测算法性能,结果如表3所示。单个Logo和两个Logo面单规格的三段码检测效果如图11所示。
表3 三段码检测算法在测试集上的检测结果
图11 基于位置先验的三段码检测算法检测效果
由表3和图11可以看出,在快递测试集上,该算法可实现对三段码的准确检测,有效提升检测准确率,缩短检测时间,满足快递分拣实时三段码检测要求,基本解决了区县一级分拣中心采用的人工分拣方式存在的效率低下问题。但会存在少部分三段码漏检误检的情况,分析原因可能为模板匹配算法模板旋转角度不足或特殊面单规格导致三段码先验数据变化。
基于YOLOv4与位置先验的快递面单三段码检测算法先通过HSV颜色分割算法实现快递面单区域提取,再利用YOLOv4算法训练快递面单Logo检测模型,最后,根据获取的Logo信息与面单中Logo和三段码先验位置关系进行快递三段码检测。实验结果表明,该算法利用快递Logo检测辅助实现了三段码的检测,有效提高了三段码的检测精度。