AI 机器怎么识别玻璃?

自动送货车撞上玻璃、扫地机器人撞碎玻璃伤行人……如今这些事件也即将成为过去式。大连理工大学等单位研发了一个玻璃检测神经网络,能够利用 AI 在真实环境下检测玻璃。

△ 图左为目标场景,图右黄色部分为玻璃检测

自动送货车撞上玻璃、扫地机器人撞碎玻璃伤行人……如今这些事件也即将成为过去式。

大连理工大学等单位研发了一个玻璃检测神经网络,能够利用AI在真实环境下检测玻璃。

从图中可见,神经网络能很好地将玻璃从实际场景中分割出来。

但事实上,玻璃检测绝非想象中那般简单,不仅因为它几乎是透明的,而且还具有反射性。

更何况,玻璃并没有固定的形状,无法根据外形判定某一区域是否存在玻璃。

既然如此,为什么人眼能这么准确地判定出玻璃的存在呢?

全新的神经网络 GDNet

研究发现,人眼不仅能通过玻璃内外部颜色的差异来判断玻璃的存在,还能根据反射产生的光斑或重影发现玻璃。

这给了研究者们很大的启发,并最终设计了名为大视场上下文特征融合( Large-field Contextual Feature Integration ,下简称 LCFI)的模块。

image.png

△ LCFI模块构造

LCFI 模块用来同时提取高级语义特征和颜色纹理等低级特征两种上下文特征,用于检测真实场景中玻璃的存在。

为了提取大量上下文信息,通常的做法是采用大卷积核或进行扩张卷积,但前者会导致大计算量,后者则会稀疏采样。

而且,这两种方法并非最优。

image.png

△ 实验对比效果

研究发现,采用非局部运算(non-local)可以同时解决这两个问题,便有了 LCFI 模块。

LCFI 模块采用空间可分离卷积,从水平和垂直两个维度分别对图像进行卷积。

由于图像中玻璃区域的信息非常复杂,且与非玻璃区域有一定的相似度,为了消除这种歧义,模块将再进行一遍卷积,不过这次是先从垂直、再从水平维度提取互补的上下文特征。

最后,将提取的特征进行融合。

而这个 LCFI 模块,是玻璃检测神经网络 GDNet 中最核心的部分。

image.png

△ GDNet 网络示意图

GDNet 网络整体工作原理如下:

  • 第一步,使用预训练的 ResNeXt101 网络用于多级特征提取,目的是获得各种级别的特征。
  • 第二步,在网络最后嵌入四层 LCFI 模块,目的是进行各级别大视场内上下文的特征学习。
  • 第三步,将其中三个 LCFI 模块的输出通过注意模块(Attention Module)进行连接和融合,目的是生成大视场内上下文的高级特征。
  • 第四步,从这些高级特征中学习 Attention Map,目的是引导大视场内上下文的低级特征(例如第一个 LCFI 模块的输出),以将更多注意力集中在玻璃区域。

最后,通过级联和注意力机制,合高级与低级特征,目的是生成最终的玻璃特征图。

GDNet 的创新之处在于,它设计的 LCFI 模块采用空间可分离卷积,更好地获取了图像中有关玻璃的特征。

虽然此前也有关于玻璃的目标检测研究,但基本集中在玻璃杯、器皿这样的小型玻璃物体上,检测方法也多从物体的形状入手。

这次研究通过玻璃本身的特征,设计了具普适性的玻璃检测网络,能有效防止自动驾驶车辆对玻璃幕墙或玻璃门进行误判,避免发生碰撞事故。

除此之外,对于机器学习中的深度预测、场景理解和去反射等技术任务,也有着重要的意义。

image.png

△ 从上到下分别是深度预测、场景理解和去反射

当然,真正要让 GDNet 在实际玻璃检测中发挥能力,离不开数据集的制作。

为了使 GDNet 在实际应用中能发挥出更好的效果,研究者们完成了世界上第一个大规模玻璃检测数据集 GDD。

首个大规模玻璃检测数据集 GDD

在玻璃检测数据集(Glass Detection Dataset, GDD)中,共有 3916 张带玻璃的图片,其中 2980 张被随机抽出,用于网络训练,剩余 936 张作为测试集。

这三千多张玻璃图片多来自浴室、办公室、超市等地方,其中玻璃幕墙占多,其次是玻璃展示橱窗、玻璃门、陈列柜、窗户和玻璃护栏。

经统计,玻璃通常占据整张图像 20%~80% 的大小,且整体分布倾向于图像中央,这是由玻璃使用特性所决定的。

image.png

△ GDD 数据集部分图像展示

上图为数据集中部分图像的展示,可以看见,图像对玻璃和非玻璃部分进行了分割,白色区域为玻璃所在区域。

从图例中就能看见,无论是玻璃上贴着的标签、刮蹭的污渍,还是玻璃上透射和反射的图像,都可能会在训练时对网络产生影响。

与此同时,数据集中也存在着只占图像 20% 不到的边角玻璃、或是几乎充斥整个图像的大玻璃块,目的在于增加图像的随机性,使得神经网络具有更好的检测效果。

检测效果

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java