多年来,基于候选区域网络(RPN)的现有模型在目标检测任务中得到了广泛认可,NMS 是该模型的基础,但这种模型也存在一定缺陷,如在复杂遮挡情况下召回率很低。为了解决这一问题,程泽华等研究者提出使用弱监督分割多模态注释,在没有 NMS 的情况下实现了高度稳健的目标检测性能。
作者利用注释质量较差的边界框在困难环境中实现稳健的目标检测性能,避免了与 anchor 框或 NMS 相关的所有超参数。他们提出的模型超越了之前基于 anchor 的一步和多步检测器,而且简单得多。该模型在准确性和召回率方面都达到了当前最佳水平。这项工作的一作,程泽华对该论文进行了解读。
论文:Segmentations is All You Need
论文链接:https://arxiv.org/pdf/1904.13300v3.pdf
RPN 系统的基本逻辑定位和分类已经在很多检测任务中已经取得了不错的成绩,然而这并不符合人认知事物的过程——人做检测,一步到位。也就是说,无论是 anchor 还是 NMS,都不应该存在于整个训练过程。论文中提到的新标注方法可以直接把检测(detection)标注转化成一个二值化的多模态标注,没有 NMS,也没有 Anchor。
边界框(Bounding Box)不应该存在
虽然 anchor 的存在减少了很多计算量,但是也带来了超参数增加、人为调参过拟合评测数据集、前后景目标类别不平衡等一系列令人头疼的问题。
让我们回到边界框的本质。所有的边界框其实都是一种无限制保证前景物体像素召回率的标注方式,它会尽可能贴着外轮廓,因此会导致背景像素大量进入框内。然而,真实世界的物体可以随意转动,不同的机位拍一个 3D 物体出现的结果可以大不相同,因此用框作为一个表征工具来把东西框起来,本身就不稳健。而且,框的标注本身也带有一定的随机性,毕竟要遵守标注规则把框标得非常好可能花的成本也会很高。
非极大值抑制(NMS)不应该存在
NMS 是一项很神奇的工作,目标检测领域用 NMS 作为选框策略已经有大概几十年了,因为没有一项工作能超越它。然而如上所述,既然边界框本身并不稳健,选出的框再优秀也无济于事。更何况选出的框也不会格外优秀,因为真实世界里不可能有一个具体的阈值来控制所有的场景,例如遮挡问题。现实世界中的遮挡问题十分复杂,挡了一部分和挡了一大半完全不是同一种情况。既然如此,用一个单一的阈值怎么可能解决问题?事实上,在之前的工作中,动态调整 NMS 的 SoftNMS、动态调整 IoU 的 Cascade RCNN 方案都取得了很不错的结果,但是前者依然回避了「复杂遮挡」的复杂性,后者参数量激增,速度慢到难以想象。
如上所言,边界框靠不住,NMS 也靠不住。
那么为什么不直接做分割?分割存在哪些问题?
分割(segmentation)的问题所在
Anchor Free 方法已经不新鲜了,相信这些问题早已经让一些一线工作的研究人员头疼很久了。那么为什么难?
分割糊成一团,很难用;
分割很贵;
YOLO 又快又简单,能满足客户要求。
第一个问题用 Instance Aware 可以解决,但为了完成 Instance Aware,计算量可能增加;第二个问题几乎无解;第三个问题主要还是 YOLO 太出名,darknet 写的是真的好,而后得过且过。
解决方案就是分割
熟悉 Kaggle 的人可能对「检测转分割」这个解决方案不是很陌生。检测问题用分割标签来做,性能就会提高很多。因为分割的表征能力真的很强——分割样本更少,得到的模型收敛更快,并且检测里的难题可以得到很好的解决。对于之前提到的第二个问题,论文给出了一个转化方法,即将检测的标签转化成一个二值化的多模态标注。
论文给出的分割结果如下:
也就是说,原图的框变成椭圆,而后分成了普通的分割形状、边界以及边界交集三个不同的标签。作者拿这些标签来训练,解决了不 Instance Aware 和复杂遮挡问题,而后只需要把一个二值化的输出做一个轮廓追踪(Contour Tracing),把分割的结果加个边(注意,这个标注是算法直接就能跑出来的,不是标的。)
模型推理过程
推理过程很有意思。分割的模型跑出来之后做一个简单的集合运算就能得到一个 Instance-Aware 的结果。而这个结果和其他十分复杂的模型设计相比,似乎更简单——二值集合运算能花多少时间?
论文中的方案兼顾了高平均查准率(AP)和高召回率(AR):
WSWA-Seg(论文中的方法)在 COCO 数据集上的 AP
WSWA-Seg(论文中的方法)在 COCO 数据集上的 AR
即使在 WIDERFACE 这种极端的数据集中,模型的表现也很不错:
WSWA-Seg(我们的方法)在 WIDERFACE 数据集上的 F1 值
前面一直在说检测标注的缺陷,那么分割标注就是完美的吗?其实不然。可以参考 CityScapes 等分割标注数据集,跟 Detection 比,它最大的问题就是,当发生严重遮挡时,一个实例可能对应两个甚至独立的连通域。
我们一直在思考一个自下而上的理念:明白五官,你才能更好地识别人脸。明白四肢,才能更好地识别人体。同理,万事万物都应该有「五官、四肢」这种概念。用已有的丰富经验,把检测化为关键点问题,再用自下而上的丰富经验解决它。而人体关键点、人脸关键点对遮挡不敏感说明,「将被遮挡的部分也计入 Ground Truth、计入 IoU」是非常重要的。GAN 拥有类似分割的结构,能「脑补」细节,那分割问题也应该有「脑补」空间遮挡的能力。
但是我们还要解决第三个问题,即是否对芯片友好、是否对通信友好。在任何一个历史时代,计算能力不足和通信能力不足是一直存在的两件事,我们不可能跨越地球科技发展的历史,凭空变出一整套超越时代的计算芯片、通信芯片来,这个是做任何事情的「边界条件」。不明白边界条件对于解决方案的重要性,相当于不明白项目预算对于项目的重要性一样,会让人盲目地好大喜功、事倍功半。
值得庆贺的是,不像 MobileNet、剪枝、空洞卷积、ROIAlign/ROIPooling、NMS 以上任何一点的是,低精度推断、带有跳过连接的 UNet with、Hourglass 以及类似 CurveGCN(https://arxiv.org/pdf/1903.06874.pdf,一作来自 UToronto,这篇的指标已经完全只看 IoU 了)的设计都能够在集成电路上高效运行,较少地依赖访存通信资源、存储器件峰值速度,而且最终得到的结果是方便在网络 API 上获得的。如果对我们的工作感兴趣,欢迎阅读我们的工作。