田 敏,张印辉,何自芬,王 森
昆明理工大学 机电工程学院,昆明 650504
工业生产中的工业机器人通过利用目标检测技术,自动地识别出待处理的零部件的所属类别和具体位置,并对其做出如抓取、焊接、切割等相应的处理。这种通过自动检测目标的自动化生产方式相比于传统生产方式既提高了生产效率,又节约了劳动力。
目标检测技术是模式识别和数字图像处理领域中的一项重要的研究课题。这一研究课题在近十多年的进展非常迅速,每年都有不少优秀的目标检测算法被提出,并且检测效果和速度都在不断优化。Viola等人提出的基于AdaBoost算法[1]框架,使用Haar-like小波特征[2-3]分类,然后采用滑动窗口搜索策略实现准确有效地定位。它是第一种能实时处理并给出很好检测率的物体类别检测算法,主要应用于人脸检测。Dalal等人提出使用图像局部梯度方向直方图[4](Histogram of Gradient,HOG)作为特征,利用支持向量机(Support Vector Machine,SVM)作为分类器进行行人检测,HOG特征能够很好地反映目标物体的方向信息,自从该特征出现之后,目标检测技术获得了更快速的发展,各种改进的HOG特征[5-6]也呼之欲出。
基于对检测精度和速度的要求,Henriques等人于2013年提出区域块循环分解算法(Block-Circulant Decomposition)[7],该算法在INRIA和ETH行人检测数据集上的检测效果相比于传统的检测算法有着明显的改善。本文将此算法应用在工业场景齿轮目标检测上,并针对工业场景中光照变化明显、部分目标图像获取不清晰的数据特性和HOG特征对方向梯度敏感的特点,将原始图像变换到模糊域进行梯度增强处理后再提取HOG特征,使得该特征具有更好的可分性质;按照块循环分解算法的步骤,将提取到的特征样本经过傅里叶变换,在频域中对HOG特征中的每个相应位置的block训练一个独立的支持向量回归(Support Vector Regression,SVR)分类器,然后反变换成空间域的一个整体的组合型SVR分类器,由于该分类器是着眼于单个局部block的组合分类器,对整体差异的辨识力弱于局部差异辨识力,基于这一点的考虑,再利用提取到的特征训练一个整体的SVM分类器模型,与组合型SVR分类器模型对目标进行联合检测,检测方法借鉴Felzenszwalb等人提出的图像金字塔匹配方法[8-9]进行最终的检测。实验证明,本文算法的检测精度与原始的区域块循环分解算法相比有着明显的改善。
传统的视觉检测过程包括特征提取、训练分类器、位置匹配三个部分。即利用某种特定的方式抽象出训练集中每幅图像的特征表达形式得到特征样本,将样本结合某种模式识别算法训练出一个能区分正负样本的分类器,根据分类器与测试图像中各个位置的特征匹配程度确定图像中待检测目标的位置。
本文根据以上目标检测过程,设计一种针对工业场景下的视觉检测算法,算法流程如图1所示。
2.1.1 改进后的HOG特征
HOG特征是在计算机视觉和图像处理领域中常用的特征描述子。传统的HOG特征通过计算图像的局部像素值梯度方向统计值来描述目标的边缘,但对光照变化和小量偏移不敏感。本文用的是Felzenszwalb等人改进的HOG特征,改进后的HOG特征对小量偏移具有很好的鲁棒性。
原始的HOG特征把样本图像划分成若干个cellsize×cellsize像素的单元(cell),分别利用中心差来计算每个像素点(x,y)的梯度幅值M(x,y)和梯度方向,计算公式如下:
式中Mx和My分别为像素点(x,y)处的水平梯度和垂直梯度,计算公式如下:
式中,N(x,y)为像素点(x,y)的像素值。
因为本文所有的图像数据格式为RGB彩色图像,所以选择每个像素点位置的三个颜色通道梯度幅值最大值作为输出。利用vlfeat函数库[11]实现改进HOG特征的提取,把[0,2π)的梯度方向平均划分为2×k个区间(bin)(其中 k=1,2,…),对每个单元内所有梯度值利用2×k个区间(bin)进行直方图统计,得到一个2×k维的特征向量,每相邻四个单元为一个区域块(block),一个区域块内四个特征向量进行双线性插值[12]计算,得到该区域块的2×k维的特征向量输出;另外把[0,π]的梯度方向平均划分为k个区间(bin),统计无梯度幅值的直方图,同样的方式得到k维的特征向量输出;最终对每个区域块中四个单元求得L2范数的倒数作为每个单元的归一化因子,输出四个归一化因子作为该区域块的4维特征向量。最终得到的一个区域块的HOG特征向量维度为(4+3×k)维。
图1 联合模型匹配的视觉检测
用以上区域块(block)特征向量计算法则对样本图像进行遍历,遍历步长为cellsize。从左上角先向下再向右遍历至右下角,并且每个区域块中,至少有一半在样本图像内。所以对于一张尺寸为w×h×3的RGB图像,横向区域块数量hogw和纵向区域块数量hogh分别为:
最终得到该样本图像的HOG特征矩阵维度为hogw×hogh×(4+3×k)维。
2.1.2 模糊域图像增强
因为HOG特征描述子对梯度信息非常敏感,在某些样本图像信息并不明显的情况下,会降低样本图像HOG特征的可分性质。所以在提取HOG特征之前,先利用Par-King算法[13]对样本图像进行增强处理,使样本图像梯度信息更加明显。
普通的集合论中,元素与集合之间仅有属于和不属于两种关系,是确定的概念。但涉及到复杂的数学模型时,为了解决事物从属关系的不确定性,L.A.Zadeh于1965年提出模糊集的概念。普通集合论中元素和集合的从属值只有0和1两个值,分别表示不属于和属于,而模糊集理论讲从属值范围扩展到[0,1]整个实数区间[14]。
本文利用的Par-King算法将图像从空间域变换到模糊域对图像进行增强。按照模糊子集理论的概念,一副灰度级为L的灰度图像X可以看做一个模糊点阵列,假设X为M×N维灰度图像,它的模糊点阵列为:
式中,xmn为图像X中坐标为(m,n)所对应的像素点的像素值,μmn为此像素点对应的模糊特征值。所有的模糊特征值所组成的平面为模糊特征平面。
Par-King算法的模糊域变换函数(也称从属度函数)为:
式中,xmax为图像X中像素值的最大值,Fd为分母模糊化参数,Fe为指数模糊化参数,对于像素值范围为0到255的图像,通常选用Fd和Fe参数值分别为128和1。将图像X变换至模糊域之后,再对{μmn}进行增强处理,增强函数为:
图像增强结束后,再利用公式xmn=G-1(μmn)进行反变换回空间域,G-1为函数G的反函数。
本文训练出两个模型对目标进行联合检测。其中一个是常用的SVM分类器模型,另一个是在频域特征空间上训练的组合型SVR分类器模型。经典的支持向量机(SVM)是通过一组带有正负标签的训练样本,寻找到一个最优超平面对样本进行划分。由于能将一组可分的训练样本进行划分的超平面可能会有很多,SVM寻找到的最优超平面是指与正负样本之间的间隔最大的那个超平面,此超平面对未知数据的分类效果是最好的,亦即泛化能力最强[15-17]。
对于二维平面上的两类线性可分样本,划分超平面为一条直线,假设此直线的线性方程为w1x1+w2x2+b=0,其中x=(x1,x2)为坐标变量,w=(w1,w2)为法向量,其中各元素为各变量相应的系数,b为直线与原点的距离,所以该线性方程也可写成wTx+b=0。同理,在N维空间上的一组样本K={(x1,y1),(x2,y2),…,(xn,yn)},yi∈{-1,+1}(i=1,2,…,n),能找到若干超平面对样本K进行划分,该超平面在n维空间中的方程式为wTx+b=0,其中 x=(x1,x2,…,xn)为坐标变量,w=(w1,w2,…,wn)为法向量,b为超平面与原点的距离。
对于支持向量回归[11-13],它是希望从训练样本K中学习到一个形如 f(x)=wTx+b的回归模型,使得模型输出f(x)尽可能拟合期望输出y,w和b是待学习的模型参数。传统的回归模型一般直接基于 f(x)和y的差别计算损失,仅当 f(x)=y时,损失为0。而SVR能容忍f(x)与y之间的少量偏差,当偏差在允许值ε之内,不计算损失;当偏差大于允许值ε的情况才计算损失。引入两个松弛变量ξi和,优化函数为:
式中C为规范化常数,本文实验训练分类器采用的是区域块循环分解算法的公开代码,如C与ε等参数选值基本沿用原代码的选值。
借鉴DPM算法[4-5]所用的特征金字塔匹配方法对齿轮目标进行检测,由于待检测目标的尺寸大小是可变的,目标的各个角度图像也是不一样的,所以通过重复的平滑和下采样得到一个标准的图像金字塔,也就是由一张图像生成一系列大小不一的图像。利用学习到的模型w1和w2分别对金字塔的各层图像的特征进行点积运算,得到两个模型在不同尺度和不同位置上的得分输出,通过对每个根位置定义一个整体的得分,最终两个模型都会挑选出最优目标位置和得分,对比两个模型所检测出的两个目标位置得分,选择得分高的目标位置作为最终的位置输出。
针对工业场景机械零件视觉检测的应用,以齿轮目标为例,采集一定量的图像数据并制作成标准集,利用该标准集测试本文方法的有效性。
本文采集数据所利用的设备有六自由度机械手和双目立体视觉系统,相机,和若干齿轮零件。以工业场景中传送带及其周围为主要背景,对齿轮正样本和背景负样本进行图像采集,一共采集正样本320张图像,负样本688张图像,保存为JPG格式,正样本标注图像中目标所在boundingbox坐标位置,作为目标的groundtrues标签,制作成数据集,其中训练集正样本160张,训练集负样本344张,测试集正样本160张,测试集负样本344张。采集的部分数据如图2所示。
图2 (a) 部分正样本图像示例(绿色方框为boundingbox标注)
图2 (b) 部分负样本图像示例
由于Par-King算法处理的是单通道灰度图像,本文图像数据为RGB三通道图像,所以本文利用Par-King算法对一帧图像中的三个通道各自进行独立增强,再合并回三通道的RGB图像,得到最终的增强图像。图3为部分图像与其增强后的图像。定性对比可知增强后的图像相对于原图像的边缘轮廓更为清晰。
图3 (a) 部分原图像
图3 (b)(a)中图像对应的增强图像
利用图像被增强前后的单位像素平均梯度幅值差来定量分析图像经过Par-King算法增强处理后的梯度幅值变化,假设尺寸为M×N×3的RGB图像I在像素点(x,y)处的梯度幅值为的增强图像为I′,则图像I的梯度幅值L1和图像I′的梯度幅值L2的计算公式如下:
则增强前后的梯度幅值差L=L2-L1,当L>0时,说明经过增强处理后的图像相比于原图像的平均梯度幅值有所增加。通过上式求得图2中四幅示例图像在增强前后的平均梯度幅值如表1,表2所示,为四幅图像经过增强后的梯度幅值增强百分比,如表3所示。
表1 部分原图像平均梯度幅值L 1
表2 表1中图像增强后的梯度幅值L 2
表3 四幅图像平均梯度幅值增强百分比P%
由表3可知,利用Par-King算法增强图像能有效地提高图像的梯度幅值,使得图像的梯度信息更加明显。
将原始正样本中包含目标的一小部分区域的31维HOG特征作为特征正样本,由于不同block被提取特征之后相互的空间位置关系不变,所以对一个原始负样本提取HOG特征之后,按照特征正样本的尺寸标准,从左上到右下,分别向纵向和横向以一定的步长分割出若干个不同的HOG特征,作为若干个特征负样本,这样有效地扩充了负样本的数量,弥补了负样本数量可能不足的缺陷。
对于训练SVM模型,提取的每个特征样本的尺寸为19×18×31,特征正样本316个,特征负样本3 480个。将每个特征样本拉成一个1×10 602维特征向量,利用尺寸为4 992×10 602维的特征矩阵训练出本文的SVM分类器,然后将分类器尺寸变回19×18×31,作为最终的SVM模型w1。
对于训练SVR模型,提取的每个特征样本的尺寸为21×20×31,特征正样本316个,特征负样本4 676个。借鉴块循环分解算法的思想,将提取到的特征进行傅里叶变换,在频域上对所有特征样本的每个block独立训练出一个超平面模型,然后按照原有的空间位置组合成一个整体超平面模型,再进行反傅里叶变换,得到最终的SVR模型w2。利用vlfeat函数库对两个分类器模型分别进行可视化如图4所示。
图4 (a) w 1模型可视化
图4 (b) w 2模型可视化
根据以上目标检测的流程,利用Par-King算法增强图像的梯度信息,再提取31维的HOG特征,利用训练集特征样本分别训练出整体的SVM模型w1和频域SVR分块组合模型w2,联合两个模型利用图像金字塔匹配算法对测试集目标进行检测定位,最终达到检测目的。
针对工业场景中机械零件视觉检测的应用,利用自制的齿轮单类目标检测数据集测试本文方法的效果。图5显示的是w1和w2的部分检测定性结果示例,蓝色方框为w1模型的检测结果,绿色方框为w2模型的检测结果,由图可知,两个模型独立的检测效果已经不错了,但是对比两个检测结果可以看出,w1模型时常将光照阴暗的部分纳入目标内,说明w2模型对光照影响的鲁棒性比w1模型强,但是在光照影响相对较小的地方,w2模型检测出更多多余的背景,此时w1模型比w2模型检测得更为精细。
图5 部分检测结果
联合这两个模型进行目标检测,选取二者的最优位置作为最终的检测输出,可以达到两个模型取长补短的目的。在配置为酷睿i7处理器、12 GB内存的笔记本电脑上进行实验,用精度和召回率指标来对比本文算法,原来的SVM,circulant算法,未加Par-King算法的circulant+SVM联合算法,和加了Par-King算法的SVM,circulant算法的检测效果,各运行时间与精度如表4所示,做出精度-召回率曲线图如图6所示。
表4 六种检测算法性能对比表
图6 精度-召回率曲线
虽然经过改进后的本文方法在计算速度上不占优势,但平均检测精度可达到96.8%,相对于circulant行人检测算法在本文应用的93%平均检测精度有所提高。由表2的性能对比可知,Par-King算法和模型联合检测都能有效地提高平均检测精度,而在时间上的开销会有所增大。本文算法程序的编写是在circulant行人检测作者所提供的公开程序的基础上进行改进,论文创新之处的算法程序均由作者本人自行编写,本文实验数据全部由作者自己采集并生成。
将circulant行人检测算法成功应用于工业场景中机械零件的视觉检测,并根据本文特定应用的特点,利用Par-King算法增强图像的梯度信息,使得HOG特征具有更好的可分性;再训练出SVM整体模型和circluant算法的局部组合SVR模型,利用图像金字塔匹配方法对测试图像进行联合检测,实验表明在平均检测精度上有着明显的改善。目前,该算法只针对检测精度的提高,后期将改进算法,优化检测时间,使其在工业检测中具有更好的实时性。