首页 理论教育 目标识别与分类的优化方法

目标识别与分类的优化方法

时间:2023-07-02 理论教育 版权反馈
【摘要】:本节将基于深度学习的目标检测算法YOLOv3应用到机器鼠与实验鼠交互的视觉反馈中,用来检测实验鼠及其头尾的位置和类别信息。目前,主流的基于深度学习的目标检测算法主要分为两种。

目标识别与分类的优化方法

为了实现机器鼠与实验鼠在复杂化和多样化的环境下进行高效行为交互实验,需要双目视觉系统能够对目标实验鼠进行实时检测,获取实验鼠及其头尾的位置,从而为机器鼠与实验鼠自主交互提供反馈信息。由于实验鼠是柔性体,其外形尺寸等都会随着实验鼠的运动发生改变,传统目标检测的方法无法准确而且快速地完成该任务,而基于深度学习的目标检测算法可以很好地解决这些问题。本节将基于深度学习的目标检测算法YOLOv3应用到机器鼠与实验鼠交互的视觉反馈中,用来检测实验鼠及其头尾的位置和类别信息。

一、目标检测算法研究进展及YOLOv3算法分析

目标检测作为计算机视觉领域中重要的一项任务,其主要作用是找出给定图像中感兴趣的物体的位置和尺寸大小并给出相应的类别。由于各类物体的外观、形状、尺寸等不尽相同,而且存在光照、形变、遮挡等干扰,目标检测一直以来都是计算机视觉领域中最具有挑战性的问题之一。目标检测算法主要有传统的目标检测和基于深度学习的目标检测。传统目标检测算法由于其使用各种尺寸的滑动窗口进行遍历以及手工选择特征等原因造成了耗时长、区域冗余、鲁棒性差等缺点,难以适用于目标存在遮挡或者多目标识别等情况。

由于深度学习,尤其是卷积神经网络(CNN)的迅速发展,自2014年开始基于深度学习的目标检测算法取得了巨大突破。目前,主流的基于深度学习的目标检测算法主要分为两种。

(1)两步式检测算法,即将目标检测问题分为两个阶段:首先得到候选区域;然后进行分类。主要代表算法为R-CNN、Fast R-CNN、Faster RCNN、Mask R-CNN等。

(2)一步式检测算法,即不需要使用候选区域,直接预测出物体的位置坐标和类别概率。主要代表算法有YOLOv1、YOLOv2、YOLOv3等。

两步式检测方面,R-CNN是由Ross B.Girshick于2014年提出的基于候选区域方法的目标检测算法[18],其均值平均精度(mAP)在PASCAL数据集上的检测结果有了巨大的提升。但是,由于R-CNN需要对提取的所有候选区域都要利用CNN提取特征向量,因此耗时巨大,而且训练步骤烦琐。Fast RCNN[19]在此基础上进行了改进,避免每个候选区域都使用CNN提取特征而消耗的大量时间。在此基础上,Faster R-CNN创新性地设计了RPN,直接使用卷积神经网络产生候选区域[20]。何凯明等人提出的Mask R-CNN在Faster R-CNN的基础上进一步研究得到像素级别的检测结果,该算法不仅有效地完成了目标检测,同时完成了高质量的语义分割[21]。Mask R-CNN可以同时完成分类、回归和分割3个任务,而且在COCO等数据集上展现出了非常好的检测效果,在单GPU上的运行速度约为5FPS,然而速度上还是达不到实时检测的需求。

为了满足实时进行目标检测的需求,一步式检测方法应运而生。Joseph Redmon等人于2016年在CVPR上发表了一篇关于目标检测的论文[22],首次提出了YOLO算法。该算法使用一个由24个卷积层和2个全连接层构成的CNN模型实现了端到端的目标检测。YOLO算法将目标检测问题转换为一个回归问题,大幅提升了检测速度,检测帧率可以达到45FPS。但是,其目标定位的准确度不高,在VOC2012数据集中的mAP值为57.9。为此,YOLO的作者对其进行了改进,于2017年提出了YOLOv2算法[23]。该算法采用了一个新的网络模型Darknet-19,在每个卷积层后都添加了BN层,提升了模型收敛速度并具有正则化的效果,同时借鉴了Faster R-CNN中的Anchor机制使得定位问题更为精确。此外,YOLOv2还使用多尺度训练测量使得模型能够适应不同大小的图片。YOLOv2在VOC2012数据集上与YOLO相比提高了15.5%,但是YOLOv2对小目标的检测依然存在问题。

YOLOv3[24]算法是目前在速度和精度上最均衡的目标检测网络之一,融合了多种优秀的神经网络方法,达到了快速、高精度和高泛化的水平。YOLOv3使用的网络模型为DarkNet-53,包含52个卷积层和1个全连接层,如图6-18(a)所示。其中,YOLOv3采用了ResNet v2残差结构(图6-18(b)),从而使得训练深层网络的难度大幅减小,因此网络可以构建得更深,精度有所提升。另外,YOLOv3采用了3个尺度的特征图,分别对应32倍降采样(适合检测大尺寸目标)、16倍降采样(适合检测中等尺寸目标)和8倍降采样(适合检测小尺寸目标),从而能够从多个尺度上进行预测。

在Anchor机制方面,YOLOv3使用的聚类方法与YOLOv2相同,依然是用K-Means的方法确定边界框的先验。以每个网格预测3个边界框,使用3个尺度的特征图进行预测为例,其输出的边界框数量多达10 647个,因此其对各种尺寸的物体都具有比较优秀的检测性能。

在类别预测方面,YOLOv3采用多标签分类预测,因此在图6-18(a)的网络结构上需要将原来用于单标签多分类的softmax层换成用于多标签多分类的逻辑回归层。逻辑回归层主要用到的是sigmoid函数,相应的计算公式为

sigmoid针对的是二分类问题,需要逻辑回归层对每个边界框的每个类别都做一次二分类,这样一个边界框可能属于多个类别,这种情况对于一些复杂场景下一个物体可能具有多个标签的问题可以更好地模拟数据。

图6-18 YOLOv3网络模型和残差结构

(a)DarkNet-53网络结构;(b)ResNet v2残差结构

二、基于YOLOv3的实验鼠检测

(一)样本采集及预处理

不同于传统目标检测算法,基于深度学习的目标检测算法需利用大数据量的样本进行学习,通过多次训练迭代以达到优化网络模型参数的目的。由于现有数据集缺乏实验鼠的标记数据,因此首先需要获得机器鼠与实验鼠交互过程中,其微型双目视觉系统采集到的实验鼠运动视频作为样本并进行标记。采集实验鼠样本的实验装置如图2-15所示,实验中控制机器鼠头部朝向实验鼠(SD,雄性,16 cm,350 g),共采集6 min有效的样本,共7 000余张的实验鼠图像作为目标检测的数据集。此外,本实验采用了数据增强的方法以丰富样本,从而增强目标检测算法的准确性和鲁棒性。由于实际情况中不存在实验鼠的背朝向下方,即图像上下翻转的情况,而图像水平翻转的情况是真实存在的。因此本实验选择的数据增强的策略为随机水平翻转、随机亮度和对比度调整等,数据增强策略的示例如图6-19所示。

图6-19 数据增强策略

(a)原始图像;(b)水平翻转;(c)亮度调整;(d)对比度调整

由于本实验采用的算法是基于监督学习式的深度学习算法,因此需要对每一个样本进行标注。我们设定标注的目标为实验鼠整体(鼻尖到尾巴根)、头部和尾巴3个类别;采用矩形框对目标进行标注,需要用矩形框标注出目标的位置并标记相应的类别。LabelImg是一款常用的图像标注工具,其安装简单使用方便,输出的标注结果为PASCAL VOC格式,因此本实验选择LabelImg对图像样本进行标注。首先需要修改源文件中的类别为rat、head和tail 3个类别,然后选择图像和标注结果的文件夹即可开始进行标注。由于双目视觉系统的视场角限制以及实验鼠动作的灵活性,在捕捉实验鼠的运动过程中,无法使实验鼠每时每刻都完整地出现在图像中。因此,对于实验鼠部分超出图像范围的情况,只标注露出的部分的位置和类别,忽略没有捕捉到的部分。另外,由于实验鼠身体柔软,能够做出许多复杂的动作,因此在实际情况中会存在身体遮挡住头部或者尾巴的情况,对于遮挡问题同样只对露出的部分进行标注。

此外,YOLOv3选取的是在COCO数据集上使用K-Means方法进行聚类的结果,最终选择了9种Anchors。为了更好地拟合本实验的样本数据,使用实验采集的实验鼠样本数据集的标注数据进行聚类分析,同样选择9种聚类中心,选用样本边界框与聚类中心边界框之间的交并比(IOU)作为距离指标,即

K-Means初始化聚类中心的方法是随机初始化,由于初始化的聚类中心的位置对最后的聚类结果和计算时间都有很大的影响。如果完全随机进行选择,则有可能导致算法收敛速度很慢,因此本章使用K-Means++算法对初始化聚类中心进行优化。最后,利用实验采集的数据集的标注数据,通过KMeans++算法进行聚类分析得到的9种Anchors尺寸(单位为像素)分别为(44×54)、(69×94)、(108×37)、(110×126)、(123×263)、(151×65)、(181×120)、(215×182)、(292×301)。

(二)模型训练

为了对训练模型的效果进行评估,首先需要将数据集划分为训练集和测试集,本实验按照9∶1的比例进行划分,即6 300余张图像作为训练集,剩余700余张图像作为测试集;然后根据训练集使用上文优化后的YOLOv3算法进行网络模型的训练,具体步骤如下:(www.xing528.com)

(1)由于YOLOv3使用的标注文件格式与LabelImg标注后的VOC格式不同,因此需要对标注文件格式进行转换。VOC格式下标注框的坐标为按照图像真实宽高的像素坐标,而YOLOv3格式则为0-1的相对坐标,因此使用下式进行转换:

式中,yolo_x和yolo_y为YOLOv3格式下标注框中心位置的相对坐标;yolo_w和yolo_h为YOLOv3格式下标注框的相对宽度和高度;W和H为原始图像的宽度和高度;x1、y1和x2、y2分别为VOC格式下标注框的左上角和右下角坐标。

(2)将所有训练集的图像的文件路径放入到训练列表文件中,程序会根据该文件列表读取训练样本及相应的标注文件。

(3)修改类别文件中的物体类别为rat、head、tail 3类,修改目标类别数目为3。

(4)修改网络结构相关配置。将batch设置为64,subdivisions设置为8,那么每轮同时训练8张图像。初始学习率设置为0.001,每幅4 000代衰减为之前的0.1,一共迭代12 000次,Anchors按照之前得到的结果进行修改。

(5)为了防止训练过程中突然中断导致数据丢失,本实验设置每迭代1 000次对权值文件进行保存,可以作为断点备份继续进行训练。

(6)由于本实验使用的训练集样本量较少,而模型需要的参数数量巨大,直接训练难度较大。因此,采用迁移学习方法,使用在大数据集上经过训练的模型作为初始权重,在此基础上进行训练会得到较快的收敛速度与较好的检测效果。选用在ImageNet上的预训练模型darknet53.conv.74,调用GPU开始模型的训练。

(7)训练结束后,将训练过程中的损失函数曲线画出,如图6-20所示,可以看出网络模型已经完全收敛。

图6-20 训练中的损失函数曲线

三、实验结果与分析

为了评估基于YOLOv3的实验鼠目标检测算法性能,本实验划分的测试集对模型性能进行评估与分析,使用到的评估指标有查全率(Recall)、查准率(Precision)和均值平均精确度(mAP)等,计算公式如下:

式中,TP为真正例,表示实际存在目标且被检出来的实例数量;FP为假正例,表示实际不存在目标但却被检出有目标的实例数;FN为假负例,表示实际存在目标但却没有检测出来的实例数量;QR为目标检测的类别的总数。

因此,由式(6-26)可以看出,查全率表示图像中被正确检出的目标数占所有目标数的比例,查准率表示被正确检出的目标数占所有识别出的目标数的比例。一般来说,查全率越高,查准率则越低,可以通过查准率-查全率曲线(P-R曲线)来表示它们之间的关系。然而,不管单独使用这两者中的哪个指标都不能准确衡量模型的性能,故引入平均精确度(AP)的概念,即P-R曲线下的面积,而mAP表示的是所有类别的平均精度求和除以所有类别的均值。

本实验将测试集输入到训练好的模型中,进行位置回归与类别预测,这里认为模型预测的边界框与标签边界框的IOU≥0.6时,检测结果正确,否则检测结果错误,以下实验结果均是在此条件下进行的。首先,利用mAP指标评估本实验场景下的YOLOv3算法与优化后的算法性能,同时对比两种算法的运行平均帧率,对比结果如表6-5所示,可以看出在本实验场景下,优化后算法的mAP增加了4%,说明检测准确度有了一定的提升。检测速度方面,优化后算法的平均帧率为50.7FPS,与优化前的算法速度相当,表现出很高的实时性。另外,为了选取合适的置信水平阈值进行检测,本实验计算了不同置信水平阈值下的查全率和查准率,计算结果如表6-6所示。由表可以看出,随着置信水平阈值的增加,查准率逐渐升高,而查全率逐渐降低,因此需要选择一个均衡点,使得查全率和查准率都具有比较好的表现。本实验选择0.4作为模型的置信水平阈值,在此置信水平阈值下,查全率为93.3%,查准率为91.7%,表现出很好的检测性能。基于YOLOv3的实验鼠检测算法能够在机器鼠与实验鼠的交互场景下准确识别出实验鼠及其头尾的位置,部分目标检测结果如图6-21所示。

表6-5 YOLOv3算法优化前后性能对比

表6-6 不同置信阈值下的查全率和查准率

图6-21 基于单目的目标检测结果(见彩插)

通过上述模型机器鼠可以在与实验鼠交互过程中获得实验鼠及其头尾在双目图像中的位置,进而可以结合第3章的双目立体视觉算法计算出相应区域内的视差,从而得到实验鼠及其头尾与机器鼠之间的深度信息。实验截取机器鼠与实验鼠相向运动的4 s时间内的双目图像进行深度值计算,由于上述模型的检测类别为rat、head、tail 3类,因此实验可以分别计算出这3类的深度信息。双目目标检测结果及对应的视差图如图6-22所示。其中,图6-22(a)所示为左相机的目标检测结果,图6-22(b)所示为右相机的目标检测结果,图6-22(c)所示为根据左、右相机的目标计算出的视差图。

图6-22 基于双目的目标检测结果及视差图

(a)左目相机画面;(b)右目相机画面;(c)三维重建效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈