作者:SFXiang
首发:AI算法修炼营本文是我在浏览CVPR2020文章中发现的一篇有趣的有关玻璃检测的文章,平常很少有人关注玻璃检测有关的任务,可以说是开辟一个新的方向,具有巨大的应用价值,准确识别并分割出场景中的玻璃,不仅能够消除由于玻璃的透明性所导致的对于场景的错误理解,还能够帮助其他的计算机视觉任务(例如深度估计、目标检测和图像反射去除等)提升鲁棒性,因此本论文的方法可以广泛应用于机器人感知与导航、无人机跟踪等,为其智能决策提供有力的保障,接下来不如就一起来看看这篇文章是怎么做的吧。
论文地址:http://openaccess.thecvf.com/...\_CVPR\_2020/papers/Mei\_Dont\_Hit\_Me\_Glass\_Detection\_in\_Real-World\_Scenes\_CVPR\_2020\_paper.pdf
项目地址:
https://mhaiyang.github.io/CV...\_GDNet/index
玻璃在我们的日常生活中非常普遍。但是,现在的计算机视觉任务通常会忽略它。检测玻璃的存在并不容易,关键的挑战是在玻璃后面可能会出现任意物体/场景,并且玻璃区域内的内容通常类似于玻璃后面的内容。在本文中,提出了一个从单个RGB图像检测玻璃的重要问题。为了解决这个问题,构建了一个大规模的玻璃检测数据集(GDD),并设计了一个名为GDNet的玻璃检测网络,该网络探索了大量的上下文线索,以利用一个新颖的大视野上下文特征集成(LCFI)模块进行玻璃检测。大量的实验表明,与针对玻璃检测进行微调的最新方法相比,该方法在GDD测试仪上可获得更好的玻璃检测结果。
简介
玻璃物体可能会对图1中所示的现有视觉系统(例如,深度预测和实例分割)产生重大影响,并会进一步影响许多应用(例如机器人导航和无人机跟踪)中的智能决策,即,机器人/无人机可能撞到玻璃上。因此,视觉系统必须能够从输入图像中检测出玻璃并将其分割。
对于一些小的玻璃制物体,例如杯子和酒杯,由于它们具有相对固定的图案,因此可以通过现有方法很好地进行检测。然而,从如图1(a)所示的图像中自动检测玻璃是一项极富挑战性的任务。在玻璃后面会出现任意物体/场景,并且在玻璃区域中显示的内容通常类似于玻璃后面的内容。这使得玻璃与其他通过最先进的分割方法得到很好解决的常见物体根本不同。同时,直接应用现有的显着物体检测方法来检测玻璃是不合适的,因为并非所有玻璃区域都是显着的。
图1.现有视觉任务中的玻璃问题。在深度预测中,现有方法错误地预测了场景在玻璃后面的深度,而不是到玻璃的深度((b)的第1步)。例如,分割方法Mask RCNN 仅分割的实例在玻璃后面,而实际上算法并不知道他们在玻璃后面((b)的第二行)。此外,如果我们将现有的单幅图像反射消除(SIRR)方法直接应用于仅部分被玻璃覆盖的图像,则非玻璃区域可能会损坏((b)的第3行)。GDNet可以检测到玻璃(c),然后纠正这些故障情况(d)。
为了解决玻璃检测问题,一个简单的解决方案是应用反射/边界检测器(reflection/boundary detector )。然而,如果玻璃在某些复杂的场景中(例如图1(a)中的第二幅图像)仅具有弱/部分反射或模糊的边界,则可能会失败。人类通常会结合不同的上下文信息来推断是否存在玻璃。这些上下文不仅包括低级提示信息(例如,玻璃内部和外部之间的色差,反射导致的模糊/亮点/重影),还包括高级上下文信息(例如,不同对象之间的关系),于是,可以利用丰富的上下文信息进行玻璃检测。
本文从两个方面解决了玻璃检测问题。首先,构建了一个大规模的玻璃检测数据集(GDD),该数据集包含3,916张带有玻璃和相应玻璃掩模的高质量图像,涵盖了各种日常生活场景。其次,提出了一个玻璃检测网络(GDNet),其中嵌入了多个大范围上下文特征集成(LCFI)模块,以从一个大的感受野中采集大量的低层和高层上下文,以进行准确检测不同场景中的不同大小的玻璃杯。
用于玻璃检测的新数据集-GDD
数据集构建
使用一些最新的相机和智能手机捕获玻璃图像,并用专业的标注工具标记像素级玻璃mask。所构建的玻璃检测数据集GDD涵盖了各种日常生活场景(例如,浴室,办公室,街道和购物中心) ,其中从室内场景拍摄了2827张图像,而从室外场景拍摄了1089张图像。图2显示了GDD中的一些示例玻璃和玻璃mask图像。对于数据集拆分,随机选择2,980张图像进行训练,其余936张图像用于测试。
数据集分析
为验证GDD的多样性及其挑战性,将其统计数据显示如下:
•玻璃类型。如图所示如图3(a)所示,GDD中有各种类型的普通玻璃(例如,橱窗,玻璃墙,玻璃门,玻璃护栏以及玻璃窗和橱柜)。还包括其他相对较小的玻璃物体,例如玻璃灯泡和玻璃钟。此类玻璃物体在GDD中只占很小比例的原因是,在这项工作中,我们旨在检测相对较大的透明玻璃,这可能对场景理解起到关键作用。小玻璃物体主要是为了增加多样性。
•玻璃位置。我们的GDD中玻璃位于图像的不同位置,如图3(b)所示。我们进一步计算了概率图,该概率图表明每个像素在玻璃区域中的分布可能性显示了GDD中玻璃的位置分布。总体空间分布倾向于居中,因为玻璃通常较大且覆盖中心。此外,训练/测试分割的玻璃空间分布与整个数据集的玻璃空间分布一致。
•玻璃区域。将玻璃区域的大小定义为图像中像素的比例。在图3(c)中,我们可以看到GDD中的玻璃在尺寸上变化很大,并且大多数都在[0.2,0.8]范围内。落在(0,0.2]范围内的玻璃表示较小的玻璃物体或玻璃角。此类小玻璃区域容易被各种背景物体/场景弄乱。落在(0.8,1.0)范围内的玻璃通常位于相机附近。在这种情况下,图像的内容由玻璃后面的复杂场景控制。极端情况,即玻璃面积等于0或1,不包括在GDD中。与镜面分割数据集MSD中的镜面相比(图3(d)),GDD中的玻璃通常面积较大,这意味着在玻璃内部会出现更多的物体/场景,这使GDD更具挑战性。
本文方法
图4.GDNet的结构流程。首先,使用经过预训练的ResNeXt101作为多级特征提取器(MFE),以获得不同级别的特征。其次,将四个LCFI模块嵌入到MFE的最后四层中,以学习不同级别的大范围上下文特征。第三,最后三个LCFI模块的输出通过注意模块进行连接和融合,以生成高级的大范围上下文特征。然后从这些高级别大视野上下文特征中学习注意力图,并用于指导低级别上下文特征(即第一个LCFI模块的输出),以将注意力更多地集中在玻璃区域上。最后,通过级联和注意力操作将高级和注意低级大字段上下文特征相结合,以生成最终的玻璃图。
一、整体架构
图4给出了玻璃检测网络(GDNet)的结构。它使用LCFI模块(图5)来学习大范围上下文特征。给定单个RGB图像,首先将其输入到多级特征提取器(MFE)中以收获不同级别的特征,然后将其进一步馈送到四个LCFI模块中以学习大感受野上下文特征。最后三个LCFI模块的输出融合在一起,以生成高级别的大视野上下文特征,这些特征将用于指导第一个LCFI模块提取的低级别的上下文特征,从而将更多的注意力集中在玻璃区域上。最后,融合了高级别大感受野上下文特征和细粒度的低级上下文特征,以产生最终的玻璃检测结果。
二、大范围上下文特征融合——LCFI模块
图5展示了LCFI模块的结构。LCFI模块能够有效地提取和融合多尺度的大视野上下文特征,以检测不同大小的玻璃。
图5.LCFI模块的结构。输入特征通过四个并行LCFI块传递,所有LCFI块的输出融合在一起以生成多尺度的大视野上下文要素。在每个LCFI块(红色虚线框)中,将输入特征送入具有相反卷积顺序的两个并行的空间可分离卷积,以获得具有不同特征的大视场上下文特征。然后,将当前LCFI块的输出馈送到下一个LCFI块,以在较大的视野中进行进一步处理。
1、LCFI block。LCFI能够从大感受野中高效提取大量上下文信息,以进行上下文推断和定位玻璃。获取较大上下文信息的常见做法是使用具有大卷积核的卷积或空洞卷积。但是,大卷积核将导致繁重的计算,而大的空洞率将导致稀疏采样。non-local 网络可以提供长距离依赖性,但也需要大量计算。在这里,本文提出使用空间可分卷积来实现从大感受野中有效提取丰富上下文的目标:
其中,F表示输入特征,convv和convh分别表示卷积核大小为k×1的垂直卷积和卷积核大小为1×k的水平卷积。א表示批处理归一化化(BN)和ReLU运算。Fc表示提取的大视野上下文特征。
由于玻璃区域内的内容通常很复杂,因此需要使用具有不同特征的上下文特征来消除歧义。因此,使用另一个具有可逆卷积顺序的空间可分离卷积,即א(convv(convh(F))),以提取互补的大感受野上下文特征。此外,采用带有空洞卷积的空间可分离卷积,以确保可以在更大的领域中探索更多的上下文。最后,将从两个平行路径提取的大视野上下文特征通过一个3×3卷积,然后是BN和ReLU进行融合。
2、LCFI module。图像中捕获的玻璃尺寸可能有所不同(图3(a))。给定卷积核大小和空洞率,LCFI块从固定大小的大字段中提取上下文特征。一方面,如果该感受野的大小不足以覆盖整个玻璃区域,则可能会发生检测不完全的情况。另一方面,如果对于较小的玻璃区域,该感受野太大,则会引入过多的噪声并导致误报。
为了解决这个问题,基于LCFI块提出了一个LCFI模块来从不同规模的大领域中获取上下文特征。具体来说,将输入特征输入到四个并行LCFI块中,并使用注意力模块融合其输出。为了进一步探索更多的上下文功能,在相邻LCFI块之间添加了信息流,即,将当前LCFI块的输出馈送到下一个LCFI块。实际上,对于四个LCFI块中的空间上可分离的卷积,卷积核核大小分别设置为3、5、7、9,空洞率分别设置为1、2、3、4。
二、损失函数
在训练过程中,采用三种类型的损失函数,即二进制交叉熵(BCE)损失,边缘损失和IoU损失来优化网络。
具体来说,对于高级的大感受野上下文特征,将BCE损失和IoU损失相结合,即Lh = lbce + liou,以迫使网络探索用于完整玻璃检测的高级线索。
对于细节信息丰富的低层上下文特征,希望它们提供低层线索来预测具有清晰边界的玻璃贴图。因此,将BCE损失和边缘损失结合起来,即Ll = lbce + ledge。边缘损失将帮助网络找到属于玻璃的边界。
对于最终输出,需要在玻璃边界清晰的情况下进行完整检测。因此,将BCE损失,IoU损失和边缘损失结合在一起,即Lf = lbce + liou + ledge。
实验与结果
数据集:GDD
评价指标:采用了五个指标来定量评估玻璃检测性能。前两个指标是IoU和像素精度(PA),还从显着物体检测中采用F度量和平均绝对误差(MAE)度量。最后一个指标是平衡错误率(BER),它是阴影检测领域中的标准指标,与前三个指标不同,对于MAE和BER,其值越低,检测结果越好。
实验配置:为了进行训练,将输入图像调整为416×416的分辨率,并通过水平随机翻转对其进行增强。网络在单个NVIDIA GTX 1080Ti上训练大约需要22个小时。为了进行测试,将图像调整为416×416的分辨率以进行推理,没有后处理环节。
1、对比实验
2、定性评估
3、消融实验
表2.“base”表示网络已删除所有LCFI模块。“one scale”和“two scale”表示LCFI模块中有一个LCFI模块和两个LCFI模块。“local”表示将LCFI中的空间可分离卷积替换为局部卷积,并保持参数大致相同。“sparse”采用空洞卷积来实现与空间可分离卷积相似的感受野。“一个路径”表示在每个LCFI块中只有一个空间可分离的卷积路径。LCFI模块包含四个LCFI模块,每个模块包含两个并行路径。
更多实验细节,可以参考原文。
推荐阅读
更多机器学习、深度学习、计算机视觉、自动驾驶、机器人等领域最新最前沿的科技请关注微信号AI算法修炼营。