基于改进HOG特征的集装箱锁孔检测和定位方法
2020-02-06方连娣
李 岩,方连娣
(铜陵学院 数学与计算机学院,安徽 铜陵 244000)
0 引言
集装箱运输业快速发展,集装箱起重机装卸作业效率也要随之提高。但目前国内集装箱装卸基本还处于人工作业水平,集装箱起重机的吊具与集装箱对准连接操作对司机操作水平要求较高,但安全性较差、效率较低。吊具与集装箱之间的自动定位技术是提升整个装卸作业效率的关键,它包括对集装箱箱体的快速识别和定位以及吊具锁头与集装箱上锁孔快速准确的对准连接。
当前,随着计算机视觉技术的发展,基于机器视觉系统进行目标识别和定位已经成为主流。机器视觉系统也已经应用于改善起重机的操作和识别集装箱的特征。文献[1]提出把摄像机安装在集装箱吊具上,集装箱的锁孔与吊具的定位依靠计算机图形识别技术。Shapira、Yang和Peng等运用机器视觉系统改善了桥吊起重机的操作。德国西门子公司设计了一种集装箱起重机装卸方法,该方法是操作员通过电脑触摸屏预先设定具体参数值来自动定位目标集装箱。日本三菱重工的Kanji Obata等通过在吊具边缘安装摄像设备“Magic eyes”系统及对目标集装箱进行图像采集,由系统识别处理集装箱的图像数据、边缘信息进而自动定位目标集装箱。Kanji Obata研究了基于形态学特征和几何特征的集装箱视觉识别算法以及基于双目视觉的集装箱位置估计。[2]宓为建等[3]提出了一种计算机视觉系统,以协助达到堆垛机自动对准吊具与目标集装箱。通过分析集装箱顶部的红外线,所提出的系统能够计算吊具与集装箱之间的相对位置。
上述文献中,学者们分别针对不同的装卸工艺,基于机器视觉系统给出了不同终端设置和集装箱识别与定位方法。有的方法适用于龙门吊,有的适用底盘车,有的适用于堆垛机。本文不考虑装卸设备的不同,从对准目标锁孔出发,利用计算机视觉技术快速准确对锁孔进行检测和定位,从而实现吊具与锁孔的快速自动对准。在尺寸上集装箱远远大于锁孔,所以利用机器视觉系统快速检测和定位形状小的锁孔目标难度增加了很多,而且相关的研究很少。值得提出的是,上海海事大学宓为建等[3]提出了一种集装箱锁孔自动化定位识别方法,可辅助大型港口设备的自动化智能化。该方法首先利用颜色特征定位集装箱箱体位置和锁孔的初步位置,然后再对锁孔的初步位置进行边缘检测和霍夫变换识别定位出锁孔的精确位置。该方法存在如下不足:(1)用Hough圆检测锁孔的边缘效果不稳定;(2)集装箱箱体表面凹凸不平的条形会带来很强的噪声干扰,使得再用Candy边缘检测时误报率高;(3)对磨损的锁孔效果不好,识别率低等。
事实上,利用计算机视觉技术对集装箱锁孔进行检测和定位,主要是通过特征提取、分类器实现和目标检测三个步骤来实现的。如何进行特征提取,选定什么样的分类器是解决锁孔检测和定位的关键。特征提取领域[4](Histograms of Oriented Gradient,HOG)算法提取的特征被认可,其思想是轮廓外形数据由图像边缘特征的分布来表示。由于锁孔的特征信息主要是其锁孔的边缘轮廓信息,因此HOG算法适用于提取锁孔特征。但HOG算法只能计算出像素点不够全面的单一梯度方向信息,不能完全描述目标的方向特征。Li J等[5]利用方向可控滤波器提取建筑物不同方向的边界信息作为特征,得到一种建筑物识别方法。耿庆田等[6]提出改进HOG算法,识别车辆轮廓外形数据,效果显著。因此,本文中我们参考文献[6],将方向可控滤波器算法与HOG算法相结合,得到改进后的HOG算法,对锁孔样本进行特征提取。在分类器实现方面,AdaBoost级联分类器和SVM分类器[7]是两种主流的分类方法,前者泛化能力强、分类速度快,但误报率偏高;后者在解决小样本、非线性、高维模式时有一些特殊的优势,但大样本情形下分类速度慢、实时性差。针对上述问题,本文拟结合两种分类算法的优势,训练一种AdaBoost-SVM级联分类器来识别锁孔,利用有效的特征提取算法,选择合适的分类器识别和检测,就能得到一个较好的检测效果。为实现吊具与集装箱上锁孔快速高效的自动对准,本文提出一种基于机器视觉的集装箱锁孔检测和定位方法。该方法首先运用改进的HOG算法对采集的图像进行特征提取,然后根据提取到的特征量训练一种AdaBoost-SVM级联分类器,利用该分类器对锁孔进行实时检测和定位。仿真实验结果可证明该方法对锁孔识别的有效性。
1 锁孔检测方法
锁孔检测算法主要包括模型训练和目标检测两部分,重点是对模型的训练,然后利用搭建的算法模型对检测样本进行检测实验,测试算法的有效性。模型的训练主要包括以下步骤:首先收集图像并制作正负样本数据库,接着选择或构造合适的特征提取算法以便从制作好的数据集中对锁孔特征进行提取,选择适用于提取的特征量的分类器进行模型训练和优化,最后搭建成一个锁孔检测算法模型。
1.1 图像获取和数据集制作
本文图像的采集地点在镇江港国际集装箱码头,所有图像均在天气晴朗自然光照下采集。采集方式如下:在吊具的4个角各安装1个摄像头,在距离集装箱正上方不同固定高度(记为h)处,在吊具停止晃动后,令4个摄像头同时分别采集1副图像。对码头上150个不同的集装箱,分别在不同固定高度h处采集图像,共采集2 000 幅图像作为样本图像,组成原始图像库。采集的图像如图1所示,图1中的4幅图像分别是由4个摄像头所拍摄的,每个图像的分辨率为846*462。人工标记出样本图像中的锁孔区域并将所有锁孔区域缩放到面积最小锁孔的尺寸120*84(如图2所示),作为正样本(剔除一些遮挡严重锁孔样本)。同时标记2倍数量级的与正样本相同尺寸的非锁孔区域作为负样本。共获得正样本7 500个,负样本15 000个,组成正负样本库。
图1 采集的原图(h=1 m)
1.2 锁孔特征提取
在目标锁孔检测前,先要对目标锁孔识别模型进行训练。为了得到更精确的锁孔识别模型,对锁孔样本特征提取很重要。考虑到集装箱锁孔颜色各异,锁孔样本的颜色特征不具有任何代表性,我们不提取锁孔的颜色特征,而锁孔样本的主要特征就是接近椭圆的形状特征。因此,本文选择HOG算法对锁孔进行特征提取。HOG算法是近年来在目标识别研究中应用较为广泛的特征提取方法,它针对目标轮廓和边缘信息提取数据,但HOG特征提取其算法只能计算出像素点不够全面的单一梯度的方向信息,在描述目标方向特征上具有一定的缺陷。基于像素点的多方向信息和方向幅度,耿庆田等[6]提出了一种方向可控滤波器(Steerable Filters)的设计理念。
1.2.1 方向可控滤波器
它的一般形式为
(1)
其中:Fθ为θ方向的滤波器,Fi为第i个基函数,ki(θ)为θ方向滤波器的系数,n为基函数的个数。因为高斯函数各阶导数的优点,这里我们可利用高斯函数的二阶导数构造出可控滤波器如下
(2)
(3)
对应系数分别为
(4)
1.2.2 基于方向可控滤波器的改进HOG算法
考虑可控滤波器在锁孔水平和竖直方向边缘信息表达上的优势如参考文献[6],本文将方向可控滤波器算法与HOG算法相结合,得到改进HOG算法。步骤如下:
(1)将挑选的训练样本图像由彩色格式转化为灰度图像的格式。
Gx(x,y)=F0*I,Gy(x,y)=Fπ/2*I,式中I为灰度图像。
分别计算(x,y) 处像素点的边界方向和幅值
(5)
(6)
如果θ(x,y)<0,令θ(x,y)=θ(x,y)+π,使得θ(x,y)∈[0,π)。
(3)将图像划分成大小相同的细胞单元,将几个细胞单元组合成一个块(block)。先生成每个单元的梯度直方图,再将每个块内所含单元的梯度直方图串联起来得到整个块的梯度直方图,并对其L2归一化。
(4)将所有块的HOG特征组合为目标图像的HOG特征向量,其维度k为
(7)
其中:h、w是输入图像的高和宽,c、b是单元和块的大小,s是块移动的步长,p是一个单元内所含梯度方向的总数。
2 分类器的选择和训练
AdaBoost级联分类器和SVM分类器是两种主流的分类方法,而且都具有很好的泛化能力,又各有优势和缺陷。因此,笔者考虑强化两种分类算法的优势,弱化缺陷,训练一种AdaBoost-SVM级联分类器来识别锁孔。
2.1 AdaBoost级联算法
AdaBoost级联分类器由Viola和Jones[7]提出,其结构形式为:输入提出的特征向量x,经过多层AdaBoost分类器进行层层筛选,如同C语言里的条件变量进入循环判断语句,将分类器判定为不符合条件的负样本剔除,剩余样本进入下一级的AdaBoost分类器,直到最后一级分类器的筛选完成。
基于滑块窗口进行图像特征提取然后进行分类训练的算法中,滑块窗口生成的候选子区域中包含锁孔的正样本数量很少,不包含锁孔的负样本数量。对于这样正负样本数量分布不均衡、不对称的锁孔检测,选用基于级联结构的AdaBoost算法是非常适用的。这样相当比例的与锁孔外观相差很远的负样本在初始的较简单的级次中就能被移除,运算量较少,最后与锁孔相似度非常高的区域需要进入级次高的分类器进行分类。简化算法、提升检测效率是级联结构的显著优点。
2.2 支持向量机(SVM)算法
支持向量机(SVM)[8]是另一种常用的分类器。其算法原理是基于结构风险最小化原则,利用有限样本信息在模型的复杂性和学习能力之间的合理设置,使他们正确分开。SVM算法有如下优点:(1)SVM算法不需要经历从传统归纳到演绎的过程;(2)SVM算法中使用的决策函数只和少数支持向量有关,避免了“维数灾难”; (3)少数支持向量可以抓住关键样本,使得算法简单且有较好的鲁棒性。但同时样本数目N很大时,计算该矩阵将对机器内存消耗非常大,运算时间也会延长。
2.3 AdaBoost-SVM级联分类器
AdaBoost算法分类时,在前几级中使用少量弱分类器就可以快速移除大量相似度低的负样本,而随着负样本的逐步移除,剩下来的是特征相似度高的少量负样本和正样本,此时分类的实现需要更多个弱分类器的组合。个数的增多必然会导致分类的训练时间大大增加,而且易过度拟合,从而使得分类效率降低且不够稳定。由于标准AdaBoost算法存在以上不足,而SVM算法在解决非线性、小样本及高维模式识别方面有独特优势[8],我们利用SVM算法对标准的AdaBoost算法进行改进,可以得到一种AdaBoost-SVM级联分类算法。该算法的具体描述如图3所示。
图3 AdaBoost-SVM级联分类算法描述
AdaBoost-SVM级联分类算法构造的分类器包含内层循环和外层循环。[8]内层循环基于AdaBoost级联算法来训练分类器,分类器测评与弱分类器的个数成正比,判断分类的效果是否达到预定目标(就是将此时的最低分类准确率Di和总体误报率Fi与一开始设置的最低分类准确D和总体误极率Ft进行比较),如果达到预定目标,就完成此级分类训练测评;如果未达到预定目标,则加载弱分类器个数,直至完成内层循环。当弱分类器的个数已经达到上限nH,总体误报率Ft未达到预定目标,外层循环会利用SVM算法继续训练分类器,此时只需要训练AdaBoost分类器已经选择的那些特征。训练直至预定的总体误报率目标达到,算法结束。所以,改进AdaBoost级联算法后得到的AdaBoost-SVM级联分类算法,能够保证较高的分类准确率和较低的误报率,同时训练速度及检测速度也不受大的影响。
3 试验设计与结果分析
3.1 试验环境与参数设置
为定量分析本文算法优劣,分别对系统的运行时间、识别准确率和误报率来分析。我们定义这些概念如下:
(1)总体分类准确率
(8)
(2)锁孔分类准确率
(9)
(3)误报率
(10)
其中:P为测试样本中锁孔(正样本)数,N为其中的非锁孔(负样本)数,TP是正样本中检测后为锁孔的数目,TN和FN分别表示负样本中检测后为非锁孔的数目和锁孔的数目。
3.2 试验结果分析
本文在自建正负样本库中分别随机选取4 000个正样本和8 000个负样本作为训练样本库,剩下的3 500个正样本和7 000个负样本组成测试样本库。每次随机从测试样本库中分别选取300张正样本和600张负样本进行测试,共进行10次实验。原始图像库中的任一张作为检测样本进行目标检测实验,并将本文方法与其他几种目标检测方法的检测结果进行比较。试验结果如表1和图4所示。
最后的实验表明,运用本文方法进行的10次实验中,每次的识别准确率在不断变化,大多在92%上下波动,计算得出10次的平均准确率为92.5%。对原始图像的多次检测试验,取得了很好的检测效果,一些遮挡严重的锁孔被漏检,个别与锁孔形状非常相似的背景被误报。
表1 不同方法锁孔识别效果比较(P=300,N=600)
(a)准确检测
(b)漏检
(c) 误报
由表1可知,本文算法得到的总体识别准确率和锁孔识别准确率比经典HOG+SVM、经典HOG+AdaBoost 级联分类器以及文献[3]的Candy提取+Hough变换检测都有显著提高。对比来看,经典HOG+SVM算法的漏检情况比较多,导致锁孔识别准确率不高,只有70%。经典HOG+AdaBoost 级联分类器算法则是低漏检、高误检率,很多非锁孔样本被误检为锁孔,误报率达到8.5%。几种方法中,本文方法得到的误报率最低,只有1.2%。锁孔识别准确率比经典HOG+SVM、经典HOG+ AdaBoost级联分类器及Candy+Hough变换检测法分别高出10%、5%、8%;总体识别准确率比其他三种方法也依次高出3.5%、6.5%、5%。该识别方法的检测时间为0.5 s,比原HOG+SVM算法检测时间减少0.5 s。实验结果表明,本文的HOG+AdaBoost-SVM级联算法的分类准确率显著提高,误报率明显降低,AdaBoost-SVM级联分类器也克服了SVM算法在处理大样本时耗时太长的问题。
4 结语
与传统的HOG算法相比,改进的HOG算法能更精准地取样锁孔图像样本。在仿真实验中,AdaBoost-SVM级联分类算法具有较高的识别率和识别速度,性能优于经典HOG+SVM分类算法、经典HOG+AdaBoost级联分类算法等。由此,本文得出结论:改进的HOG算法和AdaBoost-SVM级联分类算法有利于集装箱锁孔快速高效地对准连接。当然,本文的算法还有提高空间,更完备的数据集、更精细的参数设置都能继续提高算法的检测能力。