林耀海, 杨泽灿, 张泽均
(福建农林大学计算机与信息学院/智慧农林福建省高等学校重点实验室(福建农林大学),福建 福州 350002)
原木轮廓识别是指对地面(车载)上成堆或吊机吊起成捆的原木进行拍摄获得图像,利用图像处理技术获得其中每根原木检尺的直径,并统计根数.当前,目标检测方法在智能交通、智能监控、军事目标跟踪等领域具有广泛的应用,然而,原木轮廓的多样性、拍照环境的复杂性,使得设计鲁棒的原木轮廓识别算法成为一个具有挑战性的研究课题.
早期采用原木轮廓识别方法处理的图像是灰度图像,通过计算阈值、图像二值化,获得原木端面区域[1-3];或者通过小波变换提取边缘信息[4,5]分离出原木端面区域.景林等[6,7]计算彩色图像中原木区域像素色彩的主成分特征.赵亚凤[8]计算颜色、纹理的直方图统计特征.张强[9]计算像素点的各个颜色空间分量下的直方图统计特征以确定合适的隶属度阈值,获得原木端面主要区域;陈广华等[10,11]通过成像时的距离确定原木端面区域;李小林等[12]通过将K均值算法与分水岭算法相结合计算出原木端面区域.上述方法在原木端面区域分离出来以后,完成对圆目标、类圆目标的识别,最终完成目标的检测任务.这个环节采用的主要方法有Hough变换[4,5]、曲线拟合[2,6,8]、最小外切矩形[8,11]、最小二乘法[3]和圆弧识别[13]等.
近年来,深度学习方法被广泛地应用于目标检测,如Fast R-CNN[14]、Faster R-CNN[15]、Mask R-CNN[16]等,这些方法需要先通过区域候选网络提取出候选目标的信息,再通过卷积神经网络实现目标的检测和识别;而YOLO[17]、YOLO V2[18]、YOLO V3[19]等算法,无需生成网络候选区域,算法直接产生目标的位置和类别信息.
YOLO系列卷积神经网络实现目标识别,识别过程中用到了待检测目标周围的图像信息(目标对象在图像上的每一个像素点).相比之下,上述原木轮廓识别方法利用单个像素点的灰度信息、单个像素点的彩色信息、目标的边缘近似于圆的先验假设,它们在原木轮廓识别这个问题上,还未充分利用原木端面图像本身的信息.
本文在利用深度学习实现目标检测后,结合“轮廓近似于圆”这个图形上的先验假设,旨在提高原木轮廓的识别效果.
YOLOV3卷积神经网络不论在训练阶段还是在目标检测阶段,都是一种使用起来方便灵活、适合于工程应用的快速检测算法.在应用上,即便对于如图1所示的各类复杂的原木轮廓,也能较好地识别.该网络训练时,采用端到端进行训练的方式,并且只有一个损失函数(loss function),十分简洁;在目标检测时,它将整张图像作为输入进行预测;该网络能够在图像中确定目标是否存在,并在图像中用边界框定位出目标的位置,并且该网络有很强的拓展性.
YOLO V3在原有YOLO的框架上,增加了残差网络,同时又设置了快捷链路(shortcut connections);YOLO V3提供了Darknet-53和tiny-darknet两种网络框架,前者精度高,速度相对较慢,后者精度稍微差点,但速度快.YOLO V3将输入图像缩放至 416×416,通过深度神经网络可以获得13×13、26×26、52×52多尺度图像特征,从而使得它既适合于大目标的检测,也可用于小目标的检测.YOLO V3的先验框个数为9,9个先验框分别是(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326).YOLO V3将9个先验框依序平均分成3组,分配给13×13、26×26、52×52三个尺度的特征图.以13×13为例,相当于将输入图416×416,分成13×13个单元格,每个单元格对应3个先验框;在计算获得图像中每个单元格的多尺度特征后,使用logistic回归对上述9个先验框内包围的内容进行了目标性评分(objectness score);目标性评分最高的先验框内容才会被算法预测,并将其预测结果输出.神经网络获得的多尺度图像特征的信息中,包含tx、ty、tw、th4个坐标相关参数.如果每个单元从图像的左上角偏移(cx,cy),并且先验框具有的宽度和高度分别为pw、ph,则预测对应于:
bx=σ(tx)+cx
(1)
by=σ(ty)+cy
(2)
bw=pwetw
(3)
bh=pheth
(4)
式中,bx、by表示预测的边界框左上角坐标,bw、bh分别表示预测的宽度和高度.
一方面由于YOLO V3中先验框是预先给定的,另一方面待检测的原木轮廓是不规则的,因此,在将YOLO V3应用于原木检测的过程中,识别结果的“预测框”的中心与真正的原木中心有一定的偏离,本文针对这个问题提出相应的改进方法.
Hough变换[20]圆检测方法的原理是,将图像空间中的点和Hough参数空间中的面对偶起来.图像空间变换到Hough空间以后,进行简单的累加计数,如果存在峰值点超过某个阈值,则该峰值点将对应图像空间中的圆.随机Hough变换(random hough transform, RHT)圆检测方法[20],延续了Hough变换圆检测方法中将图像空间的点对应到Hough参数空间的思路;然而,RHT利用了三点确定一个圆的原理,将图像空间的3个点对应Hough参数空间的一个点,使得算法需要维护的变换空间的数据大大减少,提高了算法的效率.
RHT圆检测的算法,较为简洁.随机选择边缘图像中3个点,计算其对应圆(3点确定一个圆)的圆心坐标和半径,将该圆心和半径在RHT空间中对应的累加器进行累加,不断重复上述操作,直到某个累加器达到阈值,即识别出一个圆.抗噪性能十分优越是RHT圆检测方法的另外一个优点,即使原木存在裂痕、污渍、伐痕等,也能准确地找到对应的圆心位置.RHT的不足之处是,当待检测的图像中待定的圆目标数量增多时,RHT圆检测方法的运算速度和准确率会下降.由于使用了Yolo V3检测算法,在本文的应用场景中,每个预测框只有一个待定圆.
针对YOLO V3给出的原木轮廓预测框中心偏离原木中心的问题,本文通过RHT来校正预测框中原木的中心位置.每个预测框中仅存在一个原木轮廓,RHT变换后求得最大值,该最大值表示的圆即为预测框中原木的轮廓.
在YOLO V3识别的预测框中,即便有较多的干扰边缘、像素,RHT也可以较为准确地确定圆的位置和大小.这个圆检测的准确性是基于YOLO V3给出的预测框和预测框中仅有一个圆这个假设;如果用RHT在边缘图上直接运算,不仅运算十分复杂,也无法甄别RHT获得的大量“待确定圆”是否是真实圆.
RHT圆检测方法中,Hough参数空间中累加器的阈值越高,得到准确圆心的概率越高,但费时.因此,本文引入“重叠度计算”模型来平衡这个关系.
RHT圆检测方法所获得的图像是原始原木图像通过边缘检测算子获得的边缘图,下面称为边缘图像(Edge).如果采用RHT圆检测方法获得的圆心O对应的圆与Edge中足够多的边缘点接近(或重叠),那么用圆O描述原木轮廓就更合适.可以用下列公式来描述圆O与Edge中边缘点的重叠程度:
(5)
式中,|O|表示图像中圆O上像素点的数量.δi表示为:
(6)
式中,Di是像素点i周围的m×m区域的像素,模运算表示统计其中像素点的个数.
通过引入深度学习方法识别图像中的原木端面;然后,利用RHT改进YOLO目标检测的结果.主要包含以下三部分.
首先,采用YOLO对原木端面图像进行原木目标检测,能够定位出图像中的各个位置的原木.
其次,利用原木轮廓一般近似于圆形这个图形特征,采用RHT圆检测方法对YOLO定位出来的区域进行圆心定位,能够获得更为准确的原木中心.
第三,利用原木轮廓一般近似于圆形这个图形特征,计算预测圆与原木轮廓重叠度,以便在原木图像质量较差情况下得到较为满意的圆心定位.
算法主要步骤表示如下.
第1步:收集原木端面图像,训练YOLO V3神经网络.
第2步:在输入的待检测的原木端面图像上,利用训练好的YOLO V3神经网络进行识别,获得识别结果,每一个被检测出来的原木由一个预测框(bx,by,bw,bh)表示.
第3步:在待检测的原木端面图像上,采用canny算子计算,获得Edge.
第4步:在Edge上,根据预测框(tx,ty,tw,th),得到相应子图.
第5步:在第4步的Edge子图上,采用改进的RHT圆检测方法,RHT的阈值T1=N(N为常量,是一个正整数,表示产生随机数的个数),获得预测圆心O.
第6步:在第4步的Edge子图上,采用重叠度计算方法,获得Value(O).
第7步:若Value(O)>t(t为常量,介于0到1之间),则跳到第9步;否则,跳到第8步.
第8步:若T1=2×N,则跳到第9步;否则,设T1=2×N,跳到第4步.
第9步:在第2步的目标检测结果中,对每一个预测框重复执行步骤4~8,直到所有预测框都被检测.
YOLO V3选用tiny-darknet框架,canny算子阈值设置为0.2;RHT随机数个数N=300;验证模型的Di为3×3方快,Value(O)阈值t=0.4.
YOLO V3的训练样本包含200多张原木端面图片,每张的原木数量为10~100个.
选择2张原木端面图片完成试验,与基于圆弧的原木轮廓的识别方法相比,本文方法更好;选择4张原木端面极度复杂的图片做试验,显示本文方法的鲁棒性.原木轮廓接近于圆形,原木轮廓方法的识别结果就是在存在原木的位置用红色圆圈标识出圆形轮廓.
原始图(图2A),经过训练好的YOLO V3神经网络进行目标检测后,将图中的每个原木标注为一个个的矩形框(图2B).原始图(图2A)经过canny算子处理,得到Edge(图2C).结合目标矩形框(图2B)和边缘图(图2C),可以得到目标对象的边缘点集合(图2D);以矩形框中心为圆心,以矩形框的短边为直径,可以作圆,如图2D所示.对目标对象的边缘点集作RHT,可以得到更为准确的圆心和半径(图2D).对图2B的每个矩形框做上述处理,便得到本文方法的识别结果(图2E).
本文算法的运行结果:图3中所识别的圆都较为准确地贴近原木真实的轮廓.林耀海等[13]提出的基于圆弧的原木轮廓识别方法,是一种兼具鲁棒性和准确性的原木轮廓识别方法.从图3可看出,本文方法的识别圆形更接近真实轮廓.
通过式5计算重叠度,以判断识别结果的准确度.对图3中15个完整的圆进行重叠度计算,求得平均值,文献[13]中平均值为0.55,本文平均值为0.68.对图3中10个完整的圆进行重叠度计算,求得平均值,文献[13]中平均值为0.40,本文平均值为0.50.RHT圆检测与式5相结合,得到的识别结果更优.
在本试验中,原始图像是4张原木端面情况较为恶劣的照片;如图2所示,每一幅图像都是经过输入原始图像,然后YOLO计算、边缘提取、RHT计算、阈值判断、重叠度计算,最后确定出圆的圆心和半径.由于中间计算过程与图2一致,所以没有展示.本文所用的4张原始图像,由于目前没有原木轮廓识别方法可以对其进行识别,所以没有列出相应的对比.
原木端面的霉变污渍、裂痕、伐痕、轮廓不规则,影响原木轮廓的识别效果.针对这些情况,试验结果分别如图4A(识别20个原木)、图4B(识别16个原木)、图4C(识别31个原木)、图4D(识别16个原木)所示,除了图4C的最下排左下角第2根原木,所有完整轮廓的原木都能被准确地检测出来,识别率达到98.8%.结果表明,在YOLO V3算法的基础上,本文方法对原木端面的霉变污渍、裂痕、伐痕、轮廓不规则具有良好的鲁棒性.
图4C的最下排左下角第2根原木没有被识别,原因不是对原木端面的霉变污渍、裂痕、伐痕、轮廓不规则不具鲁棒性,而是未被识别的原木直径较小,约为最大原木直径的1/4.在调用YOLO时,输入图像被缩放至 416×416;如果原木太小,在缩放后的图像中像素偏少,导致不能被正确识别.
本文通过YOLO V3对原木图像进行目标检测,从图像中检测出原木位置后,利用原木端面轮廓在图形上为近似圆形的特点,采用RHT圆检测方法,进一步精确定位原木中心和原木轮廓的大小.本研究中将原木端面的图像信息用于目标检测,将原木轮廓的图形先验信息用于目标大小的精确化计算.结果表明,普通原木图像(原木端面较为干净,原木轮廓较为完整)中识别率为100%,在复杂原木图像(原木端面存在污渍、裂痕和伐痕)中,识别率为98.8%.图像轮廓识别精确度边缘的平均重叠度提高了10个点,表明本文方法兼有鲁棒性和识别轮廓的准确性.
本文方法的稳定性好,不论是用普通相机拍照的林场原木端面图片,还是原木端面辨识度相对恶劣的图片,本文方法都能较好地识别.