结合深度学习与Hough变换的等长原木材积检测系统
2021-02-02林耀海赵洪璐杨泽灿林梦婷
林耀海,赵洪璐,杨泽灿,林梦婷
(1. 福建农林大学计算机与信息学院,福州 350002; 2. 智慧农林福建省高等学校重点实验室(福建农林大学),福州 350002)
原木材积检测是木材贸易、加工和流通中的重要环节,材积检测的效率和准确率直接关系着原木行业的经济效益;因此,我国木材加工、流通、管理等多部门一直渴望得到一套有效的原木材积检测系统。依据我国国家标准GB/T 4814—2013《原木材积表》,原木的材积计算由木材端面径级和木材长度两个参数决定。原木贸易、流通行业中,同一批次木材的长度相对固定,较容易获得,相比之下,原木端面大小不一,难以快速获得其径级。如果采用人工检测端面径级,存在主观随意性大、劳动强度高和效率低的问题。
国内诸多学者提出了多种基于计算机视觉技术的原木材积检测算法[1-5],采用计算机视觉技术进行检测,不仅检尺效率高、成本低,而且避免了主观随意性。学者们提出的端面检测算法,如应用Hough变换圆检测[3,6]、圆弧检测[2]、K-means聚类[3,5]、FCM聚类等算法,其主要利用的是原木端面为类圆的几何特征,原木边缘、纹理等特征进行识别。这些算法在原木端面较为完整干净的情况下能够准确实现原木材积检测。但是,在原木背景环境复杂、色彩变化差异较大、边缘模糊,或者原木端面存在明显年轮、污渍的情况下,少有算法可以准确识别定位原木,这就要求设计鲁棒性更强的原木材积检测系统。
本课题结合深度学习和Hough变换,搭建等长原木材积检测系统,不仅能实现在复杂环境下的原木材积快速检测,而且提供了友好的图形化用户界面,方便原木材积检测人员的使用。
1 等长原木材积检测系统总体设计
本课题提出的木材材积检测系统可分为硬件系统与软件系统两大部分,其中主要硬件系统如图1所示。实验采用英特尔公司的NUC6i7KYK微型计算机作为个人电脑部分,搭载Intel四核八线程i7处理器,操作系统为ubuntu16.04。摄像机采用USB接口免驱动摄像头,工作电压为5 V,视角为75°,分辨率为1 920×1 080,图像输出格式为MJPG。
软件系统主要分为前端用户界面和后端材积检测算法两大部分。前端用户界面使用基于PyQt5核心库开发的图形化系统用户界面设计并实现,为原木材积检测人员提供一个友好的用户界面,方便非计算机专业人员的使用。后端材积检测算法结合了深度学习和Hough变换圆检测技术。
a. 个人电脑; b. USB摄像头; c. 原木。图1 等长原木材积检测系统Fig. 1 An equal length log volume inspection system
2 等长原木材积检测系统核心算法设计
2.1 YOLOv3-tiny目标检测算法
YOLO (you only look once)系列卷积神经网络[7-10]自从2016年被提出后在工业界得到广泛应用,并获得一致好评。与当前其他目标检测神经网络相比,如Fast R-CNN[11]、Faster R-CNN[12]、SPP-Net[13],YOLO系列卷积神经网络采用整张图像作为网络的输入,其网络结构能更好地学习到图像中的上下文信息。同时,网络模型的泛化性能、网络训练和检测效率等都得到了提高。该网络属于典型的one-stage结构的目标检测网络,即端到端的训练方式,有着训练、检测速度快等优点。
YOLOv1[7]网络把输入的图像分割为S×S网格。每一个网格负责检测物体中心位于当前网格的待检测目标,并预测B个候选框(bounding boxes),然后计算其预测物体的置信度(confidence scores),以便表达YOLO检测系统中该物体在该位置的可信度。
YOLOv2[9]网络在YOLOv1的基础上改进,并提出检测与分类联合训练,可以检测9 000多类物体,故也被称为YOLO9000。YOLOv2在保持检测速度的前提下加入BN[14](batch normalization)加速网络的收敛,同时提出了Anchor Boxes来提升模型的召回率。YOLOv3算法[10]在YOLOv1和YOLOv2基础上改进,引入了残差模型Darknet-53和FPN架构。YOLOv3通过提取最后3层特征图,在每个特征图上分别做独立预测,实现了多尺度特征检测,较大地提升了性能。YOLOv3-tiny在YOLOv3的基础上去掉了一些特征层,保留2个独立预测分支,即两个尺度的输出,这使得检测速度得到进一步提高。YOLOv3-tiny卷积神经网络两个尺度的输出分别为13×13和26×26,多尺度的输出有效地避免YOLOv3-tiny中出现对小目标物体难以检测的问题。在YOLOv3-tiny网络中,网络输入图片大小为416×416,其中共有13层卷积层和6层池化层,网络具体结构如图2所示。在YOLOv3-tiny网络中,26×26尺度输出中融合了Conv_5卷积层和Conv_11层上采样的信息,采样后的结果采用Concat操作,其不仅保存原有网络层的数值信息,还保留了空间位置信息。
YOLOv3-tiny网络的输出模型可以抽象表示为一个S×S×B×(5+C)的张量。由于等长原木径级检测系统中待检测目标只有一个类别,即原木,故其C=1,采用的候选框个数为3,即B=3,网络最后输出张量深度为18。等长原木材积检测系统使用的卷积神经网络中,在Conv_10和Conv_13两个卷积层采用的卷积核个数为18,这保证了网络最后的输出结构深度为18。
图2 YOLOv3-tiny原木检测网络结构示意图Fig. 2 YOLOv3-tiny detection of log network structure diagram
2.2 基于Hough变换的目标中心精确检测算法设计
YOLOv3-tiny卷积神经网络训练后能对原木端面图像中的原木进行目标检测,但是原木端面的径级识别准确度较低。考虑到YOLOv3-tiny卷积神经网络进行目标检测后,可获得原木端面所在图像中的大体位置,本课题提出采用Hough变换圆检测[15]进行接下来的原木端面径级识别。
Hough变换圆检测方法采用图像空间与参数空间中的对偶关系来检测圆。对于一个半径为r、圆心为(a,b)的圆,在图像空间中圆上的点表示为(x0,y0),其对应的参数空间为三维(a,b,r)。图像空间上的一点(x0,y0)对应着参数空间中的一个锥面,图像空间的一个圆对应着一簇锥面相交的一个点。由于Hough变换圆检测的参数空间为三维,当待检测图像中干扰边缘多,或存在多个检测圆时,其检测效果十分不理想。而本课题中的原木端面圆检测可以利用YOLOv3-tiny卷积神经网络对原木端面进行目标检测后的输出位置信息(x,y,w,h),从而能有效避免上述问题。
YOLOv3-tiny对原木端面进行目标检测后的输出结果为原木端面在图像中的位置信息(x,y,w,h),其中(x,y)代表原木端面外包矩形框左上角坐标,(w,h)代表原木端面外包矩形的宽度和高度。YOLOv3-tiny模型目标检测后,根据原木端面的位置信息,截取该区域图像,提取边缘并去除中心的噪声点,最后运行Hough变换圆检测。由于YOLOv3-tiny模型截取的区域仅存在一根原木,所以Hough参数空间中仅需选取1个峰值点,对应到图像空间,即为检测原木端面中心和径级。
3 系统核心算法实验与分析
3.1 实验数据集制作
本系统搭建过程中训练YOLOv3-tiny卷积神经网络的图片包括:完好端面、霉变端面、伐痕端面、轮廓形状不规则端面等各类复杂端面原木,共计336张原始图片。其中82张拍摄于福建省永安市某林场,另一部分来自互联网。采用276张图片作为训练集,余下的60张为测试集。每张图片中的原木从3~100棵不等。数据集采用Pascal VOC2007标准格式,制作工具为LabelImage,带标注(空心小圆点)的原木端面图像,如图3所示。识别结果为原木,标志为log。表1列出了完好端面、霉变端面、伐痕端面、轮廓形状不规则端面的原木图片数量(注:霉变、划痕和轮廓形状不规则端面可能同时存在一张图片中)。
为了提高模型的鲁棒性和泛化能力,在训练模型前,本实验对训练集中每一张图像进行了扩充数据集处理。其中包括:1)图片旋转;2)调整曝光度、色调、饱和度;3)添加高斯噪声。
图3 数据集样本标注Fig. 3 Labelled images in dataset
表1 各类原木端面图像Table 1 Log face images 张
3.2 YOLOv3-tiny卷积神经网络实验分析
在训练阶段,首先把数据集中图像全部转为416×416,以方便网络进行输入训练。本课题实验中网络训练以32张图像为一个批次进行小批量训练,每次更新权重时采用BN进行正则化处理,动量值设置为0.9,网络初始训练学习率为0.001,权值衰减值为0.000 5。模型训练与测试硬件平台同为英伟达公司的嵌入式开发深度学习平台Jeston TX2,操作系统为ubuntu16.04,共计为YOLOv3-tiny模型进行了13万次迭代。
为了获取合适的候选框,使得YOLOv3-tiny网络的预测框能更加贴合实际标记框,采用K-means聚类计算出合适的候选框大小,其中K-means使用的为欧式空间距离。得到的6个锚定框为(12×12)、(25×25)、(46×48)、(78×82)、(170×172)、(332×320),在网络的26×26的输出上使用前3个锚定框,13×13的输出上使用后3个锚定框。
在对YOLOv3-tiny模型进行13万次迭代后,模型对原木端面具有良好的检测效果如图4所示。针对原木所在背景复杂,端面存在裂变、霉变,以及端面不整洁等复杂情况都有很好的检测效果。值得一提的是,由于在模型训练过程中,采用数据集增强方式,模型能适应光线强弱变化大的应用场景。
a)原木端面整洁;b)背景复杂;c、d)端面不整洁且存在裂变。图4 YOLOv3-tiny在复杂情况下识别结果Fig. 4 YOLOv3-tiny results in complex situations
3.3 原木端面径级检测算法实验分析
原木端面径级检测主要流程如图5所示。首先对原木端面图像采用Canny算子进行边缘提取。根据YOLOv3-tiny卷积神经网络预测的位置信息(x,y,w,h),考虑到YOLOv3-tiny输出的预测框可能没有包括原木端面的完整轮廓,故对YOLOv3-tiny的输出区域进行拓展,其拓展大小为5个像素点,如图5步骤①所示;再根据YOLOv3-tiny输出的位置信息计算待检测目标(原木)的中心位置,以该中心位置为圆心,半径为R的圆区域去除噪声边缘点,如图5步骤②所示;最后使用Hough变换圆检测对原木端面的圆心和径级进行计算。其中,边缘去除处理部分的半径R计算如公式1所示;在本系统的框架中,R值的设置主要会影响Hough参数空间峰值的计算速度。
(1)
原木端面检测结果见图6。如图6所示,对比直接采用Hough变换圆检测算法和“一种渐进式圆心定位的原木端面轮廓识别方法”[16],本课题算法对端面检测具有更加显著的实验结果。
① 区域截取;② 中心区域边缘去除;③ Hough变换圆检测。图5 原木端面检测步骤示意图Fig. 5 Log face inspection procedure
图6 原木端面检测结果Fig. 6 Comparision of log face detection results
各类原木端面特征的实验图像上的实验结果统计对比见表2。由表2可见,本课题提出的算法对比直接采用Hough变换圆检测算法和渐进式圆心定位法在提升真检率、降低误检率方面优势十分明显。Hough变换圆检测在端面图像复杂、待检测类圆目标较多时,性能迅速下降;渐进式圆心定位法在端面色彩变化大、端面情况脏乱时,性能迅速下降。本课题提出的算法在上述各类情况下,性能稳定,显示了较好的鲁棒性。
表2展现了本课题算法的真检率和误检率相较其他两种方法具有明显的优势。Hough变换圆检测算法的真检率为25.86%,误检率为1.20%,渐进式圆心定位[16]算法的真检率为64.45%,误检率为21.08%,而本课题算法的真检率为98.79%,误检率为0.602%,相较于其他两种方法,本课题算法在提升真检率的同时降低了误检率。
表2 各类原木端面检测结果统计对比Table 2 Numerical comparision of log face detection results
4 系统软件设计与实现
考虑等长原木材积检测系统的使用人员一般为非计算机专业人员,本课题提出采用基于PyQt5核心库开发出友好的系统用户界面,方便工作人员使用,同时提供动态参数调整(算法已经设置了默认值),使得检测人员在有需要的情况下可以进行一定的调整,以提高等长原木材积检测的准确率。
等长原木材积检测系统主界面如图7所示。图7中,左上角区域为用户控制区域,右上角为通过USB摄像头获取的原图信息,左下角为采用YOLOv3-tiny卷积神经网络进行目标检测后的结果图,右下角为本系统检测的结果。在图7右下角图中,本课题提出的材积检测系统较为醒目地圈出了原木的圆形轮廓,并将原木直径直观地显示在圆形中间。
图7 等长原木材积检测系统主界面Fig. 7 The main interface for an equal length log volume inspection system
图8 系统使用基本流程Fig. 8 Basic process used by the system
本系统用户使用基本流程如图8所示。首先用户开启等长原木材积检测系统并导入待检测图片;再次点击RUN YOLO按钮,使用YOLOv3-tiny对图片进行目标检测,其检测结果能实时显示给用户;最后使用默认参数或用户自定义参数进行端面径级检测,并根据用户输入的原木长度和校准端面径级信息进行材积计算。其中,端面径级校准如图9所示。系统提示用户手工测量图片中红色原木端面径级,通过用户输入,校准材积检测结果。
图9 校准端面径级Fig. 9 Calibrated the log face diameter
本课题提出的检测系统中原木径级会直接显示在最后检测结果图中,同时系统检测过程的步骤图片(如:边缘图、中心区域去除边缘图、YOLOv3-tiny目标检测结果图等)和检测结果信息都会保存于系统文件中,方便用户后续查看。倘若用户调整Canny算子参数,信息后重新检测的边缘会以弹窗形式展现,提高系统与用户的交互性。
5 结 论
本课题提出的等长原木材积检测系统结合了深度学习和Hough变换圆检测两种算法的优势,在面对背景复杂、端面裂纹、端面有污渍霉变等情况下,对于成捆堆放的原木仍能展现出很好的检测效果,其真检率达到了98.79%,这说明了本系统对复杂原木端面图像有很好的鲁棒性。除了引入的深度学习算法保证了系统的鲁棒性外,系统的Hough算法模块则保证了直径大小的准确性。
在系统软件方面,为了兼容深度学习算法和用户界面设计,采用PyQt5核心库作为系统前端开发,从而使得本系统既能很好地连接后台核心算法,又可以给用户提供一个简洁友好的使用界面。多种木材的原木端面图像的材积检测结果表明,本系统具有很好的推广应用价值。