改进的SSD算法用于盲人户外出行多尺度障碍检测 [PDF全文]
刘德儿1, 唐武1, 陈增辉1, 赵尘2
(1. 江西理工大学土木与测绘工程学院,江西 赣州 341000; 2. 福建经纬测绘信息有限公司,福州 350000)

文章针对盲人户外出行的障碍物探测问题,利用深度学习的方法建立了障碍物数据集和检测模型。虽然传统的SSD方法在VOC数据集和COCO数据集上有着良好的泛化性能,但是对障碍物的检测效果并不好。因此对SSD的先验框比例参数和网络结构进行改进,将anchor比例设置成更加符合本数据集的尺度,并且通过增加Conv3_3特征层达到识别不同尺寸障碍物的要求。通过与现有检测算法和数据集进行实验对比,得出改进的SSD算法对建立的数据集中的特殊尺度的障碍物检测要优于其他算法。

Improved SSD in multi-scale obstacle detection for blind people traveling outdoors
LIU De’er1, TANG Wu1, CHEN Zenghui1, ZHAO Chen2
(1. School of Civil and Surveying & Mapping Engineering, Jiangxi University of Science and Technology, Ganzhou 341000, Jiangxi, China; 2. Fujian JingWei Surveying and Mapping Information Co., Ltd., Fuzhou 350000, Fujian, China)

Aiming at the obstacle detection problem of blind people traveling outdoors, this paper establishes an obstacle dataset and detection model using a deep learning-based method. Although the traditional SSD method has an excellent generalization performance on the VOC dataset and COCO dataset, it does not work well for obstacle detection in the dataset established in this paper. Therefore, the prior bounding box and network structure of the SSD are improved, the anchor ratio is set to be more in line with the scale of this dataset, and the Conv3_3 feature layer is added to meet the requirements of identifying obstacles of different sizes. Through experimental comparison with existing detection algorithms and datasets, it is concluded that the improved SSD is superior to other detectors in detecting special-scale obstacles in the established dataset.

引言

 

  随着计算机技术的发展,机器视觉、计算机视觉的出现给计算机领域带来了再次蓬勃发展的机会。计算机视觉已经成为热点研究领域,其内容主要包括图像分类[1]、目标检测与跟踪[2-4]、实例分割[5]等,而目标检测与识别是其中最主要的研究热点之一[6]。2014年之后,基于深度学习的方法为目标检测带来了更多机遇和挑战[7]。由于视力障碍,盲人无法正常使用生物视觉感知出行路径周围的环境信息,这使得他们在户外出行时受到羁绊,而利用现代科学技术来弥补盲人出行时对空间感知的不足,可以改善他们的户外活动能力[8],有助于增加对残疾人的社会关怀和提升城市的生活品质[9]。目前,协助盲人进行障碍探测的方法主要包括将雷达和超声波等传感器结合进行物体探测或利用机器视觉技术辅助进行检测,如基于超声波和语音播报技术相结合的智能导盲系统[10],该系统能够通过超声波对设备前方的物体进行探测并采用语音提示的方式告知盲人物体的远近。还有研究者将传感器设计在夹克内从而检测到障碍物并安全地导航至目的地[11]。Ying等提出了一种基于深度学习的感知导航框架DLSNF(Deep-Learning-based Sensory Navigation Framework),取得了较好的实验效果[12]。Serr?觔o等首次将GIS和计算机视觉结合进行室内引导及对门、楼梯等物体的检测,在正常照明条件下可以达到良好的识别效果[13]。Afif等利用RetinaNet网络作为检测的基础网络设计了一个室内物体检测和识别系统[14],该系统可以准确定位和分类输入图像中存在的室内物体,能够识别包括门、窗、灯等室内常见的物体,但是仅仅局限于室内的环境。在室外障碍物识别方面,Ou等利用Google和TensorFlow的API针对室外人行横道和立柱进行识别,并通过语音来引导盲人前进,取得了良好的效果[15]。除了上述研究之外,还有一些辅助性的研究,例如对盲道的检测识别[16]、利用虚拟导航对盲人出行路径规划[17]以及利用多传感器设计的各种穿戴设备等[18-22]。由于出行环境多变,盲人所遇见的物体具有多样化特点,并且室外的环境相对室内要复杂很多,现有方法仍存在检测效果不直观或精度较低等问题[23]。庆幸的是当前目标检测的发展弥补了一些传统方法的不足且被广泛应用[24-27],例如:Fast RCNN[28-29]、YOLO(You Only Look Once,只需要看一次)[27,30-32],以及SSD(Single Shot MultiBox Detector,单发多盒检测器)[33-35]系列等,并且有很多学者在此基础上对算法进行改进以适应不同场景的目标检测[36-40]。本文针对盲人户外出行的真实场景,提出了改进的SSD目标检测方法,构建了户外盲人出行障碍物检测模型SSMD(Single Shot Multi-scale Detector,单发多尺度检测器)。通过不同角度和背景环境,获取了类别丰富的障碍物目标图像,并建立了障碍物样本数据集,使用SSMD网络训练数据集建立基本的检测模型,使其能够有效、准确地检测和识别盲人出行遇到的障碍物,实验结果表明SSMD模型在障碍物检测方面取得了比传统SSD模型更好的检测效果。

 

1 相关工作1.1 SSD目标检测器

  CNN网络的特点是前面的特征图尺寸比较大,通过卷积和池化操作特征图会逐步变小[41],而SSD的结构正是抓住了这一特点,较小的特征图和较大的特征图都用来做检测并输出[33],是一种直接对目标进行预测输出边界框的端到端算法。SSD以VGG16(Visual Geometry Group 16)为骨干网络,其特征图结构如图1所示,类似于金字塔结构,能够综合多层不同大小的特征图进行检测。SSD采用了不同尺度的先验框/默认框(Prior boxes, Default boxes),每一个需要检测的特征图的每一个像素点都会生成约4~6个先验框,而不同大小的特征图生成先验框的大小也不尽相同,其尺度的设定遵循式(1)[42]

    

其中,Sk表示先验框大小相对于图片的比例;m为用作目标检测的特征图的个数; Smin和Smax则表示设定比例的最小值与最大值,分别为0.2和0.9。对于长宽比,文中默认为{1,2,3,1/2,1/3},根据实际情况进行调整。

  SSD对多尺度目标检测效果较好,在检测精度上超过了Faster RCNN,因此比较适用于做盲人出行的障碍目标检测。

1.2 改进SSD模型

盲人在出行时会受到各种尺度大小的障碍物的影响,特别是尺度较小的目标[43],原始的SSD检测器设置了各种比例的先验框,因此对多尺度目标的检测效果比较好。但是由于用来检测特征的特征层经过卷积和池化输出的特征图相比较于原始的输入图像缩小了好几倍,这使得需要检测的目标特征的像素信息丢失严重,在训练模型时对模型的各种参数的影响较大不利于训练,从而导致对输入图像中尺度较小的目标检测效果并不明显,且对特殊尺度的障碍目标检测效果不好。为了使SSD能够识别出尺寸不同的障碍物,对SSD的特征层结构进行调整使其能够检测出常见的不同尺寸的障碍物,建立盲人出行障碍物检测模型SSMD。

图1 SSD特征结构

图1 SSD特征结构

文章在充分考虑到盲人出行时可能遇到常见的障碍物情况下对检测的实时性和准确性提出要求,将SSD检测器网络结构中不同尺寸的特征层的图像特征进行选择性输出,增加了Conv3_3层作为特征输出层并将Conv7替换成Conv6。通过结合各层特征进行检测,由高层到低层依次提取目标特征,最后综合各层检测结果识别出各种尺寸的障碍。SSMD的网络结构如图2所示,卷积层Conv3_3、Conv4_3用于检测距离摄像头较远的尺寸较小的障碍物;Conv6、Conv8_2、Conv9_2用于检测图片中较近的障碍物;特征层尺寸较小的Conv10_2和Conv11_2经过多层卷积与池化后用于检测输入图像中尺寸相对较大的障碍物,最终综合多层卷积的特征层来进行识别从而达到检测各种尺寸障碍物的目的。SSD检测器在每一层的特征图上都设置了多种固定比例的先验框用于与真实框的匹配,通过修改其宽高比以检测拥有特殊尺寸目标。由于像电线杆之类的目标宽高比比较小,与其他类别障碍目标的尺寸有较大差距,因此在本文中分别取长宽比为{1,2,3,1/4,1/6}以适应在训练障碍数据集时先验框与真实框的匹配度,从而减小了图片或视频中目标的边框回归损失,并且在训练的过程中由于调整了先验框尺度的预设比例,因此预先生成的框与真实标注框之间的匹配度会随之升高,这也会加速训练时总损失的收敛速度。

图2 SSMD检测过程

图2 SSMD检测过程

  其次,SSD检测器根据输入图片尺寸的不同有两个版本,分别是SSD300和SSD512。原始的SSD300通过引出block4、block7、block8、block9、block10和block11共6层作为特征检测层用于最后的检测。SSD512由于其输入图像尺寸较大,因此通过引出block4、block7、block8、block9、block10、block11和block12作为其特征检测层。正是由于对输入图像的分辨率进行了扩大,为了更好地处理图像,SSD512的卷积层达到了12层,并且SSD512版本的参数可以继承SSD300版本的参数。根据这一特点,本文在训练障碍数据集的过程中首先用SSD300版本训练,期间通过调整训练参数待损失值基本收敛到平稳值时转而利用SSD512版本进行训练直至损失收敛到平稳值。SSMD的训练方式与此相同,首先使用增加Conv3_3层、替换了Conv7层并修改了先验框参数的SSMD300版本训练,然后在此基础上使用SSMD512继承训练。在同等条件下通过继承训练的方式对平均识别精度有较大提升。同时,在训练过程中采用小批量处理方法,减小训练时输入图片的批次大小并且根据损失情况间隔一定训练步数更新训练超参数。实验结果表明,采用上述方法步骤训练障碍数据集,能够有效降低训练损失,提升了检测精度。

 

2 数据集的建立

  模型是否取得良好的检测效果不仅仅与数据量有很大的关系,还与数据集的样本、小尺度目标的标注和背景的复杂度等息息相关,这些因素在训练的过程中也会大幅度影响最后的检测结果。训练的样本数太少了会造成损失震荡及过拟合等问题,而类别、背景单一则会造成模型的泛化能力不强。当前开放的数据集如COCO[44]、PascalVOC[45]、KITTI[46]等的基本类别都是针对生活中常见的物体进行标注,应用的都是正常人的生活场景,如COCO中包含一些动物、运动装备及一些食物和水果等。这些数据集中标注的类别并不是特别适用于盲人出行的障碍物检测。但是COCO中其他的一些类别比如汽车、消防栓等是户外出行中常见的物体可以用来作为一种障碍物。因此,如果需要对障碍物进行识别,就要确定好常见的障碍物类别并从多处采集相关图片建立一个障碍数据集。

2.1 类别确定及图片采集

有学者提出了一种盲人户外障碍检测数据集BLIND[47],该数据集中包含七类目标:自行车、公交车、汽车、摩托车、人、卡车等。BLIND总共包含了1194张图像,根据BLIND中包含的障碍物类别,再结合实际调查总结出了在盲人出行道路上较为常见的物体类别。主要类别包含行人(person)、汽车(car)、自行车(bicycle)、反光锥(reflective cone)及路障(spherical roadblock)等较为常见的12类物体,如图3所示。数据集包含的样本数量、背景的多样性及标注等信息在训练SSMD的过程中也会影响模型的学习能力。所以,如果希望模型得到很好的检测效果和良好的泛化能力,必须使样本库多样化,包括图片的数量、分辨率、目标数量等要素。

图3 障碍数据集的类别

图3 障碍数据集的类别

现有的COCO数据集包含了自行车、汽车、公交车等80类,根据设定的障碍数据集基本类别,从COCO数据中选取了部分人、自行车、卡车等6个类别的图片大约2000张用来建立障碍数据集。从PASCAL VOC数据集包含的20个类别中选取了摩托车、狗等6个类别的图片约1000张作为建立障碍数据集的基础样本;其次,还从清华大学与腾讯联合发布的TT100K[48]数据集中选取了部分包含有障碍的图片约100张用于数据集的建立;然后,将挑选出来的图片逐一筛选,过滤掉分辨率太低的一些图片;最后,通过实地行走盲人出行的道路,身临其境地从盲人的角度感受出行时遇到的各种障碍物,并且用手持便携设备采集了若干多光照、多角度、多背景状态下的各种障碍目标图片用于数据集的建立。在总共12个类别中,有7个类别来自现有的公开数据集,其余的5个类别是由研究团队拍摄的视频、图像建立的。从互联网收集的图像均为无版权图像,由设备采集的图像均对车牌、人脸等信息做马赛克处理。具体的类别及其他信息,如表1所列。

表1 各类别统计信息

表1 各类别统计信息

2.2 图片标注

本文以SSD检测器为基础,因此建立的数据集需遵循SSD训练数据的格式。SSD训练的标准数据集是VOC2007,VOC数据集格式是采用的xml文件对图像中标注的各个物体的名称、相对位置坐标等进行记录。因此,需要将障碍数据集的格式整理成VOC2007数据的标准格式,并且使用开源标注工具Labelimg[49]对从COCO、PASCAL VOC和TT100K中挑选出来的未标注的障碍目标进行第二次标注,如反光锥、警示柱等不包含在上述三种数据集类别的障碍物;然后,根据设定的12个类别逐一过滤筛选的图片并进行补充标注,归一化来自不同数据集的标签信息,如图4所示;其次,对拍摄的用于数据集的照片和视频等也进行标注处理。

图4 在来自COCO数据集的图片上添加对障碍物的标注

图4 在来自COCO数据集的图片上添加对障碍物的标注

  来自各个数据集的图片分辨率并不统一,在SSMD训练数据集时模型会自动对输入的训练图片进行镜像和缩放等几何变换操作,这也增强了模型的鲁棒性。输入的图片中也包含了各种复杂背景下目标的标注信息,符合本文研究需求的数据集的复杂性。针对实际采集的各种复杂背景的图片数据同样使用Labelimg工具对图片进行手工标注与筛选。标注的信息对后期训练与识别的效果非常重要,特别是对小目标物体的标注。最后将所有的标注信息输出为xml文件用于模型的训练,其中包含了size、object bndbox等要素。并且将xml文件转化为模型能够识别的、TensorFlow通用的tfrecord文件。

2.3 数据分类

SSD在训练VOC2007数据时将21个类别(包含背景)划分为了五大类型:Background,Vehicle,Animal,Person和Indoor,对数据的类别进行划分可有效提升其分类的精度。同样,在训练SSMD模型时,将障碍数据集的12个类别也划分成了不同的五大类,有效还原了SSD模型训练数据的真实性,其类别分类结构如图5所示。

图5 障碍数据集的类别结构

图5 障碍数据集的类别结构

  截至目前障碍数据集已经包含了超过6000张图片用于模型训练,虽然样本的数量不如现有的公开数据集,但这足以训练模型达到良好的识别效果。建立的数据集中存在许多与VOC和COCO中标注尺寸差异较大的目标,并且数据集中各类别之间的差异性较大,这也会给训练的算法带来一定的挑战性。

3 实验分析

  实验环境:Windows10系统下使用NVIDIA GTX 1650(4 GB)显卡进行物理加速计算,内存为16 GB,使用TensorFlow-gpu 1.14.0及1.9.0,CUDA10.0搭配CuDNN进行加速计算并训练和评估模型。

3.1 评价指标

  在目标检测中对模型的评估指标通常有精确度(Precision)、召回率(Recall)和均值平均度(mAP)等。在二分类问题中,召回率和精确度是较为常用且直观的评估参数。在多目标检测中,由于需要预测图像中目标的位置和所属类别,如果在图像中能检测到物体而不能定位物体在图像中的位置,则达不到预期的检测效果。而本文中模型实现的是多个类别目标的检测,因此召回率和精确度等指标并不适用于此,所以本文采用均值平均精度对两种模型进行评估和对比。真实标注框与预测框之间交集与并集的比例IoU是计算mAP时的重要参数。在训练数据时,设置IoU>0.5的为正样本,其余均为负样本。用计算模型得到的每一个检测框的IoU值与真实值进行比较即可得到每个类别正确的检测数,由此可以得出一个类别c的模型精度,如式(2):

  

  则一个类别的平均精度(AP)如式(3):

  

  如果有多个类别,则可通过一个简单的指标来确定一个模型的表现即mAP,如式(4):

  其次,文章研究盲人出行的障碍物检测,对检测速度要求较高,至少需要达到实时检测目标的要求。所以引入对视频的检测速度指标评价相关模型,即每秒钟检测图片的数量。

3.2 与SSD对比

训练的数据集包括建立的障碍数据集和VOC2007标准数据集。通过两种模型训练数据集发现SSMD网络在训练时损失收敛的情况相比较原始的SSD收敛速度较快且收敛度较好,如图6所示。在训练过程中首先用SSD训练障碍数据集,初始学习率设置为0.001,结束学习率设置为0.0001。先使用300*300的网络训练,根据损失情况动态调整batch_size等超参数,待loss值降低至20左右切换至512*512网络训练。512*512网络继承300*300模型的权重参数继续训练,最终损失收敛于5以内模型基本上达到了最佳。SSMD的训练过程与上述步骤基本一致,由于原始SSD在anchor_ratio上设置的比例与障碍数据集中标注目标的比例差距较大,造成了预测框与真实框匹配度不高,因此用原始的SSD训练时损失相对较大。而在SSMD中修改anchor_ratio参数,增加Conv3_3特征层作为检测层并且根据式(1)设置相应的anchor_step能够在训练中使生成框与真实框匹配程度提升。与此同时在训练的过程中动态调整学习率和batch_size等参数也对损失的收敛起到了一定的控制作用。

图6 损失收敛情况对比

图6 损失收敛情况对比

为了对算法的调整情况形成一个良好的对比,继续用两种算法训练VOC2007标准数据集。通过对两种不同的数据集进行评估得出如图7图8所示的结果。由图7可以看出在训练障碍数据集时,SSD的mAP上较为平稳,而SSMD的mAP则呈现出波动的状态,忽高忽低。虽然在一开始SSMD的mAP值只有0.245,但是在训练达到90,000时SSD的mAP为0.461,而SSMD的mAP为0.511,相较于SSD提升了5%。这是由于SSMD针对先验框的尺寸进行了优化,提升了其中部分类别的AP值。通过对训练模型的评估实验表明SSMD对障碍的综合识别效果要优于SSD。而在训练VOC2007数据集时,两种模型的差异并不明显,这是由于在anchor_ratio的设置上并未与VOC2007数据集的标注框相适应,因此SSMD的表现与SSD相差无几。而增加的Conv3_3层又使得某些类别的AP有较小提升,因此SSMD训练的模型评估mAP值比SSD略高1.1%。并且VOC2007的类别比本文的障碍数据集多,在各类别的AP值均有差距,所以mAP相比较于障碍数据集略有下降。而从图8可以看出,通过修改anchor_ratio, SSMD在特殊尺寸目标检测的AP上有了提升,如pole、warning column目标等。SSD训练结果中warning column的AP仅有3.62%的精度,而SSMD的检测精度却达到了4.11%。同样的,在其他常规尺寸目标上,AP也均有提升。因此在mAP上SSMD的评估结果也比SSD要高,这是由于修改后的anchor_ratio相比较于原始的SSD更加适用于建立的障碍数据集中的目标尺寸。在检测速度上,受限于本机硬件配置,两种模型的检测速度都只有10.1 fps,但是在配置有足够硬件的终端上或者将模型轻量化部署到手机等移动设备上检测速度能够达到实时检测的要求。

图7 两种模型训练障碍数据集和VOC数据集的mAP曲线

图7 两种模型训练障碍数据集和VOC数据集的mAP曲线

图8 SSD及SSMD训练障碍数据的各类别AP值

图8 SSD及SSMD训练障碍数据的各类别AP值

3.3 与现有算法对比

  为了与SSMD形成对比,本文选取了Faster RCNN和YOLOv3两种目标检测器训练障碍数据集。并对训练的模型进行评估得到各类别的AP、mAP和检测速度等指标,如表2图9所示。实验表明,在不利用COCO的原始权重文件参数训练的情况下从头开始训练,设定阈值大于0.5即为匹配成功,评估出YOLOv3的mAP仅仅只有0.26。YOLOv3的mAP比SSMD低并且在实际检测中的效果差很多,但是检测速度却比SSMD快。当对采用Faster RCNN训练障碍数据的模型进行评估时mAP达到了0.35,但是由于Faster RCNN结构不同,其花了部分时间在候选区域的提取上,所以在检测速度上赶不上SSMD。

在最后本文针对真实场景下的障碍物识别做了一些检测实验以验证模型识别障碍物的实际效果。利用计算机搭载MYNT EYE D(https://xiaomishuma.tmall.com/?spm=a220o.1000855.1997427721.d4918089.65034a19mvqwT8) 摄像头到盲道及人行道上对障碍物进行识别。从中选择了部分照片进行对比,如图 10所示。通过对比发现,SSMD在多尺寸目标检测和多类别目标检测中的效果要比其他算法好,能够识别出位于采集摄像头较远的障碍物并进行定位。当场景里有多种目标时,SSMD也能够发挥其优势,识别出其中包含的各种类别的障碍。这是因为引出了特征尺寸较大的Conv3_3层用作检测层,并且将中间的Conv7替换成了Conv6,虽然这两层的特征图尺寸相同,但是由于Conv6层卷积核数量远高于Conv7,因此在对物体检测的过程中Conv6层发挥的作用大于Conv7层。而修改anchor_ratio能够使模型生成的各种比例的先验框准确匹配各类别标注的真实框,从而达到良好的训练和识别效果。而从初始权重训练的YOLOv3模型虽然在速度上超过了SSMD,但是其实际的识别效果要远低于SSMD。图 10(c)显示的是YOLOv3算法在设定threshold大于0.5的检测结果,而SSMD则是设定threshold大于0.9的检测结果。threshold是边框定位精度的调整参数,由此可见当提高threshold时,YOLOv3的检测效果和边框定位精度并不如SSMD。Faster RCNN训练的模型在实际检测中的效果相比较于其他算法也没有达到很好的效果,存在漏检和重复检测的情况。

图9  4种算法训练的模型评估结果

图9 4种算法训练的模型评估结果

表2 SSMD与现有算法训练障碍数据集对比

表2 SSMD与现有算法训练障碍数据集对比

  其次,为了体现多背景环境下算法的检测能力,挑选了部分傍晚拍摄的光线不充足情况下的图片进行识别,其中仅包含了一种本文设定的目标障碍物。然后将图片输入到训练过障碍数据集的四种模型得到识别效果,如图 10所示。由图 10可以看出以SSD为基础的两个模型在傍晚暗光环境下也能较为准确识别和定位图中的3个障碍物。而YOLOv3和Faster RCNN训练的障碍数据集模型则对该背景条件下的物体识别效果并不好,存在漏检和错检的情况,并且边框置信度也比两个以SSD为基础的模型检测的要低得多。SSD和SSMD训练的模型能在此环境下识别出障碍,这给盲人在复杂环境状态下的出行带来了更大的便利。由此表明,以SSD为基础的两个模型具有良好的泛化能力,能够在多种背景多种角度和多种光照条件下识别并定位摄像头可视范围内约2~8 m的障碍。而SSMD模型相较于SSD有着更高一点的置信度和边框定位精度,能够胜任在正常行走条件下对一些常见障碍物识别的要求。

图 10 4种检测算法试验结果对比

图 10 4种检测算法试验结果对比

4 结 论

  通过修改SSD的参数和在结构上引出大尺寸特征层做检测建立了障碍物识别框架SSMD。利用计算机视觉技术为盲人出行的障碍物检测做出了一些贡献,也为以后利用机器视觉或智能机器人解决盲人出行问题提供了一个方向。在本文中,通过采集真实场景的障碍物图片等方式建立了障碍数据集。在训练检测模型时,通过一系列方法对训练中的模型进行优化提升了模型的泛化性和鲁棒能力。相比较于原始的SSD,修改了先验框生成的参数及增加特征层的SSMD算法能够更好地适应建立的障碍数据集,通过不断调参优化提升了模型检测障碍物的性能。在同等环境条件下相比较于其他现有的目标检测算法,SSMD在多目标检测和边框置信度上都有一些优势。而建立的盲人出行障碍数据集也为模型提供了一个良好的训练样本,为模型的泛化能力提供了保证,使模型能够识别出不同背景条件下的大部分障碍物从而为盲人的出行提供了较为充足的周围场景信息。尽管这些工作取得了一些成果,但是对障碍物的检测方式还有待进一步加强,下一步的研究主要从对目标的三维位置探测和模型的检测性能上着手,针对特定的地形场景如楼梯、台阶等进行识别与判断,继续扩充强化现有数据集,增加常见障碍的类别,为盲人的出行提供力所能及的技术支持。

  

参考文献