作者:SFXiang
首发:AI算法修炼营
本文是一篇关于影子实例分割的文章,将影子和物体实例一起分割并进行配对,说白了就是寻找阴影及与其关联的对象(找到是谁投射的阴影)。文章整体的结构创新也不是很多,在匹配环节可以学习下思想,其他看看就好,也开源了。
论文地址: https://arxiv.org/pdf/1911.07034.pdf
代码地址(基于Detectron2实现):
https://github.com/stevewongv/InstanceShadowDetection
物体实例的阴影检测是一个全新的问题,主要是要找到与对象实例配对的阴影实例。为此,本文首先准备一个名为SOBA(Shadow-OBject Association)的新数据集,在1,000张照片中包含3,623对阴影和对象实例,每个都带有单独标记的mask。其次,设计了LISA(Light-guided Instance Shadow-object Associa-tion)模型,这是一个端到端框架,用于自动预测阴影、对象实例,阴影和实例对象之间的关联、光照方向。然后,将预测的阴影和对象实例配对,并将它们与预测的关联关系进行匹配,以生成最终结果。在评估中,还制定了一个新的度量标准,称为阴影对象平均精度(shadow-object average precision),以衡量结果的性能。此外,进行了各种实验,并证明了我们的方法在光方向估计和照片编辑中的适用性。
简介
“When you light a candle, you also cast a shadow,”—UrsulaK. Le Guin written in A Wizard of Earthsea.
当某些物体挡住光线时,就会形成阴影,由于光线的遮挡,阴影是场景中光线不足的区域,但是阴影具有遮挡物体的形状,因为它们是这些物体在物理世界上的投影。在本文的工作中,主要对一个新问题感兴趣,即寻找阴影及与其关联的对象(找到是谁投射的阴影)。
之前的大多数有关阴影的工作都是阴影检测和阴影去除方面的,而本文主要是考虑找到与阴影相匹配的实例(instance shadow detection)。这样一来,不仅能够在照片编辑的时候,完全移除物体及其相关的阴影,还能够找到照片中光源的方向。
新数据集:SOBA (Shadow OBject Association)
从ADE20K ,SBU ,ISTD 和Microsoft COCO 数据集,以及从Internet上使用关键字搜索获得了带有阴影的动物、人、汽车、运动会、动物园、街道等场景的1,000张图像。然后,对图像进行粗略标记,以生成阴影实例mask(shadow instance masks)和阴影对象关联mask(shadow-object association masks),并使用Apple Pencil对其进行优化。参见图1(c)和(e)。接下来,通过从shadow-object association masks中减去每个shadow instance masks来获得object instance masks (参见图1(d))。
总体而言,数据集图像中有3,623对阴影-对象实例,将图像随机分为训练集(840个图像,2,999对)和测试集(160个图像,624对)。
图3显示了SOBA数据集的一些统计属性,大多数阴影和物体在整个图像中占据相对较小的区域,这说明了检测它们的挑战性。
本文方法
1、 Overall Network Architecture of LISA
与阴影检测相比,实例阴影检测的挑战在于必须预测阴影实例,而不仅仅是输入图像中所有阴影的单个mask。同样,必须在输入图像中找到对象实例,并将它们与阴影实例配对。为了应对这些挑战,设计了一种名为LISA(Light-guided InstanceShadow-object Association)的端到端框架。总体而言,如图5所示,LISA将单个图像作为输入并进行预测,有四项输出:(i) a box of each shadow/object instance,(ii) a mask of each shadow/object instance,(iii) a box of each shadow-object association (pair), (iv) the light direction for each shadow-object association.
光的方向通常与shadow-object association一致。
图5显示了LISA的体系结构,该体系结构首先使用卷积神经网络(ConvNet)从输入图像中提取语义特征。这里,使用特征金字塔网络FPN作为主干的卷积神经网络。然后,设计了两个分支的体系结构:顶部分支预测每个阴影/对象实例的box和mask,底部分支预测每个shadow-object association的框以及相关的光的方向。
具体来说,顶部分支从instance区域提议网络(RPN)开始,以查找 region proposals,这些proposals是包含阴影/对象实例的高概率区域。然后,采用RoIAlign 提取每个 region proposal的特征,并通过将预测结果与训练数据中的标签值之间的损失最小化,利用box和mask head来预测阴影和对象实例的box和mask。这些操作与Mask R-CNN类似。
另一方面,底部分支采用association RPN为shadow-object association生成region proposals,然后同样使用RoIAlign提取每个建议的特征,并采用box head产生shadow-object association的边界框。在获得关联之后,可以通过组合从顶部分支预测的阴影和对象的mask来高效地获得shadow-object association的mask。整个过程中,通过最小化预测的shadow-object association和ground truth关联的框之间的损失来学习box head中的参数。
此外,还设计了一个与底部分支的box head平行的light direction head,来预测一个角度,该角度代表每个关联对中从阴影到对象的光的朝向。
shadow-object association分支和light direction分支共享公共特征提取网络和关联RPN。通过联合优化每个区域提议中的光方向和shadow-object association的预测,可以提高实例阴影检测的整体性能。
2、配对 Shadow and Object Instances
LISA的原始预测包括阴影、对象、shadow-object association以及每个关联所预测的光的朝向。但是,预测的阴影和对象实例并未配对,而预测的shadow-object association并未作为阴影和对象分离。同样,其中一些预测可能不正确,并且它们可能彼此矛盾。因此,必须分析这些预测,将预测的阴影和对象实例配对,并将它们与预测的shadow-object association进行匹配,以便可以找到并输出最终配对的阴影和对象实例。
图6说明了该配对过程,首先通过以下步骤找到候选的shadow-object association(如图6(b)):(i)计算每对阴影和对象实例的边界框之间的最短距离,(ii)将一对视为候选关联,如果计算出的距离小于阈值,则根据经验将其设置为关联阴影实例的高度。之后,通过合并关联的阴影和对象实例的边界框来构造第i个候选对的边界框Bi(见图6(c))。给定(xsmin,ysmin)和(xsmax,ysmax)作为阴影实例边界框的左下角和右上角值,并且(xomin,yomin)和(xomax,yomax)分别作为对象实例边界框的左下角和右上角值,则合并后的Bi为
最后,如图6(d)所示,计算合并框与LISA中独立预测的shadow-object association框之间的交并比(IoU),然后选择IoU最高的那些作为最终shadow-object association。然后,对于这些关联中的每一个,都可以获取关联的阴影实例和对象实例,并将它们配对为最终输出,如图6(e)。
3、训练技巧
损失函数
包括instance box loss、instance mask loss、association box loss、light direction loss、the losses of instance RPN 、 association RPN。其中与boxes, masks, RPNs相关的loss都与Mask RCNN一致,而light direction loss选用smoothL1loss:
训练参数
Facebook Detectron2实现、ResNeXt-101-FPN作为baseline、两片 GeForce GTX1080 Ti GPU训练,在图像上随机应用水平翻转以进行数据增强。
实验与结果
数据集:Shadow-Object Average Precision(SOAP)
评价指标:AP、IoU
消融实验
(i)baseline1,仅采用LISA的顶部分支来预测阴影和对象实例的边界框和mask,然后根据阴影之间的距离将它们合并以形成shadow-object association和对象实例;(ii)baseline2,该baseline在预测阴影与对象的关联时消除了LISA中的light direction head,但仍采用该过程来配对和匹配阴影与对象实例。
表1和表2报告了最终检测到的shadow-object association中的边界框和mask的定量比较结果。比较结果中的不同行,可以看到baseline2明显优于baseline1,这表明可以通过独立预测shadow-object association,然后将阴影和像素配对,在深层端到端框架中获得更好的shadow-object association。对象实例并将其与预测的shadow-object association进行匹配。此外,通过进一步预测灯光方向并将其作为指导以共同优化框架,LISA可以在所有评估指标上实现最佳性能。
图7显示了baseline1,baseline2和整个流程的可视化比较结果。第一列显示输入图像,而第二,第三和第四列显示两个baseline和LISA生成的结果。通过比较baseline1和baseline2,可以看到,独立检测shadow-object association有助于发现更多的阴影对象对,如图7中的第三行和第四行所示。此外,在以光的方向为指导之后,提高了在各种挑战性情况下的性能。
可视化实验
更多实验细节,可以参考原文。
应用场景
光方向估计:首先,实例阴影检测有助于估计单个2D图像中的光方向,然后将每个shadow-object association对中的阴影和对象实例的边界框的中心连接为估计的光方向。图9显示了一些示例结果,其中,对于每张照片估计光的方向,并根据估计的光方向在地面上渲染一个带有模拟阴影的虚拟红色柱子。从结果中,可以看到带有红色柱子的虚拟阴影看起来与其他对象投射的真实阴影一致,从而证明了我们检测结果的适用性。
Photo editing照片编辑: 不仅可以在照片中删除对象实例,还删除它们相关的阴影。
作为检测阴影对象实例的首次尝试,可以探索许多可能的方法来提高检测性能。除了方法论之外,本文 没有考虑与不同对象关联的阴影实例之间的重叠。 另外,没有考虑在其他一些对象实例上形成的阴影。 实例阴影检测存在很多未解决的问题和未开发的情况。将来,计划 首先通过同时利用为阴影检测和实例分割准备的当前数据集中的多个训练数据,来首先提高实例阴影检测的性能。 通过探索半监督或弱监督的方法来学习检测实例阴影,可以结合各种数据的优势和知识来更好地执行实例阴影检测。
推荐阅读
- CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor
- CVPR2020 | 即插即用!将双边超分辨率用于语义分割网络,提升图像分辨率的有效策略
- DeepMark++: 详细解读基于CenterNet的服装检测
- 轻量化 | 如何让笨重的深度学习模型在移动设备上跑起来?看它!
更多机器学习、深度学习、计算机视觉、自动驾驶、机器人等领域最新最前沿的科技请关注微信号AI算法修炼营。