改进的SSD 算法用于盲人户外出行多尺度障碍检测

2021-03-23 23:11刘德儿唐武陈增辉赵尘
江西理工大学学报 2021年1期
关键词:障碍物盲人类别

刘德儿 , 唐武 , 陈增辉 , 赵尘

(1. 江西理工大学土木与测绘工程学院,江西 赣州 341000; 2. 福建经纬测绘信息有限公司,福州 350000)

0 引 言

随着计算机技术的发展,机器视觉、计算机视觉的出现给计算机领域带来了再次蓬勃发展的机会。 计算机视觉已经成为热点研究领域,其内容主要包括图像分类[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 De tector,单发多盒检测器)[33-35]系列等,并且有很多学者在此基础上对算法进行改进以适应不同场景的目标检测[36-40]。本文针对盲人户外出行的真实场景,提出了改进的SSD 目标检测方法, 构建了户外盲人出行障碍物检测模型SSMD (Single Shot Multiscale 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 模型

图1 SSD 特征结构

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

文章在充分考虑到盲人出行时可能遇到常见的障碍物情况下对检测的实时性和准确性提出要求, 将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 检测过程

其次,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 障碍数据集的类别

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

表1 各类别统计信息

2.2 图片标注

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

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

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

2.3 数据分类

SSD 在训练VOC2007 数据时将 21 个类别(包含背景) 划分为了五大类型:Background,Vehicle,Animal,Person 和 Indoor, 对数据的类别进行划分可有效提升其分类的精度。 同样,在训练SSMD 模型时, 将障碍数据集的12 个类别也划分成了不同的五大类, 有效还原了SSD 模型训练数据的真实性,其类别分类结构如图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 损失收敛情况对比

为了对算法的调整情况形成一个良好的对比,继续用两种算法训练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 曲线

图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://xiao mishuma.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 种算法训练的模型评估结果

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

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

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

4 结 论

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

猜你喜欢
障碍物盲人类别
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
赶飞机
随声附和的盲人
自首的盲人
壮字喃字同形字的三种类别及简要分析
盲人节
盲人分衣服
服务类别
多类别复合资源的空间匹配