2020-01-07 11:44

导语:即使最先进的目标检测器也会存在一些常见故障!

雷锋网(公众号:雷锋网)注:本文作者刘平平,未经允许禁止转载。

现在常用的对象检测器存在一些显而易见而又极易被忽视的问题,正如同对“屋里的大象”视而不见。分析和优化这些问题对于图像识别技术的进步显得尤为重要。

现今,图像识别技术在自动驾驶、医学影像以及大热的机器视觉等领域发挥着不可或缺的作用,而稳定的系统对于图像识别的优劣起着关键作用。但即使是最先进的对象检测器也存在一些常见的故障:当将一个图像中的对象移植到另一个图像中,将导致对象检测器识别产生偏差甚至无法识别。

究竟是什么原因导致识别故障?是否有方法优化解决这个问题?约克大学的Amir Rosenfeld、John K. Tsotsos和多伦多大学Richard Zemel等人发表的《The Elephant in the Room》详细研究并回答了这些问题。

发现问题

研究人员提取一幅图片中的“大象”作为目标移植到另一幅图片中,发现几个明显的问题(如图1):

图 1

1、监测不稳定:目标可能不能被检测到且被检测到的概率大大降低;

2、报告的对象身份不一致:根据位置,该目标可能被检测为多种不同的类别;

3、目标会引起非局部影响:与目标不重叠的对象可以切换身份、边界框或完全消失。

为进一步验证上述问题是否存在,研究人员又随机选取大量图片进一步实验。

不出所料:当将一个图像中的对象移植到另一个图像中,将导致对象检测器的识别产生偏差甚至无法识别。且在现行最精准的检测器faster_rcnn_nas_coco 上运用几种不同的模型均不同程度出现这种问题。

上述实验均为随机选取的图片,因此所选取的对象是两个从未在一张图片中出现的特定组合。但是,网络成功处理此类图片及组合很困难。为排除此问题对实验造成的干扰,研究人员从一个图像中复制一个对象,并将其复制到同一图像中的另一个位置。

图 2

结果表明,当移动目标时,部分遮蔽以及上下文都对识别产生一定的影响(图2)。例如,在 b 栏奶牛的脚在靠近电视时变成了遥控器。在 d 栏当植物的一部分被遮挡而人的手在附近时,植物的底部被识别为手提包或杯子。

原因分析

为何对象检测器会出现这个问题?研究人员进一步进行实验试图探索此问题。

研究人员选取一张图片,图片中的一只仅露出局部身体的猫被错误地识别为斑马。研究人员分别做了以下实验:

1、丢弃检测边界框之外的所有像素:不能固定对象的分类,猫仍被识别为斑马,这表明ROI (region-of-interest)内的特征可能会引起混淆;

2、丢弃ROI内的所有非猫像素,猫被识别为猫,分类固定;

3、在边界框外的范围内再次添加随机噪声:猫再次被识别为斑马,检测不正确。

这个实验表明ROI外的特征会影响最终的检测结果。

研究人员通过匹配探测器在原始图像和修改后的图像中生成的一组边界框来计算场景的识别发生了多少次变化。计算公式如下:

通过识别计算29张不同图片,他们统计了已移植对象导致对任何原始对象的检测被修改的位置的平均位置百分比,结果如下表。阈值τ是最小重叠,以将两个相同类别的边界框计算为匹配项。

Affected-class-Agnostic: 边界框之间的类别不可知匹配的结果;

Affected-Occluded-20: 结果仅计算每个原始对象最多20%的区域被目标对象覆盖的情况;

Affected-No-Occ: 目标对象不会遮挡任何物体的结果。

几点推论

通过上述实验,研究人员针对对象检测器存在常见故障发生的原因有以下几个推论:

1、部分遮盖:部分遮盖仍是对象检测器发展的一大挑战。但已有科学家提出数据驱动、局部证据定义目标等方法解决因目标遮盖而设别偏差的问题。

2、超出分布的示例:研究人员将目标移植到另一张图片中会使得目标边框产生突变边缘,边缘修改后的图像在训练集的图像分布下发生的可能性很小。且这些轻微的扰动如边缘突变也会造成网络输出发生巨大变化,从而导致识别偏差。

3、信号保存:空间池因其效率和不变形使得它对空间变形问题很有效,但是目前研究表明空间池分层阻碍了网络的位移不变。

4、上下文推理:现有的对象检测器不具备上下文推理能力,而网络推理会对对象类别及其相对空间布局之间的相互作用进行编码,这些上下文推理往往会造成识别偏差,如图2。

5、非极大值抑制:由于存在非极大值抑制,移植对象过程中使得其他对象遮盖状态发生变化,使得距被移植对象较远的对象识别也出现问题。

6、功能干扰:现行对象检测器使用从卷积层获得的特征,以生成最终的物体类别和矩形边界框预测。这使得边界框以内的非对象部分也成为识别对象的一部分,虽然在对象特征不明显时能根据非对象部分上下文推测对象类别,但是同时也会干扰对象正确识别。

在所有原因中,功能干扰是最为根本的原因,而由部分遮挡或上下文推理引起的影响是这个问题的具体体现。

即使这个问题现在很难解决,科学家Tsotsos仍然提出了解决模型:一旦完成了对视觉层次的第一遍处理,主导信号便向下传播通过层次结构,执行空间和特征衰减,以便信号的下一层将包含有关感兴趣对象的信息,即较少与周围特征纠缠在一起。这个模有望减轻识别偏差问题,而在将来是否会确实会发作用,我们拭目以待。

最先进的目标检测器竟对大象“视而不见”相关推荐

  1. Interactron | 体现自适应的目标检测器

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文解读一下 体现自适应的目标检测器 Interactron.   多年来,人们提出了各种各样的方法来解决目标检测 ...

  2. ScratchDet:随机初始化训练SSD目标检测器(论文笔记)

    论文名称:ScratchDet: Training Single-Shot Object Detectors from Scratch(京东AI研究院) 地址:https://arxiv.org/ab ...

  3. 「房间里的大象」:让目标检测器一脸懵逼

    「房间里的大象」:让目标检测器一脸懵逼 引自:http://www.sohu.com/a/250526437_642762 作者:Amir Rosenfeld.Richard Zemel.John K ...

  4. 实用目标检测器 | 性能超YoloV5,推理耗时不变(附github源码)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 计算机视觉研究院专栏 作者:Edison_G 对PP-YOLO的一次升级,从PP-YOLO出发,通过增 ...

  5. 美团上交开源PromptDet:无需标注,开放世界的目标检测器

    文 | 冯承健 源 | 极市平台 本文提出了一个开放世界的目标检测器PromptDet,它能够在没有任何手动标注的情况下检测新类别(如下图绿色检测框),其中提出区域prompt学习方法和针对网络图像的 ...

  6. SSD:单目多目标检测器

    摘要 我们提出了一种基于单一深度神经网络的图像目标检测方法.我们的方法名为SSD,将边界框的输出空间离散为一组默认的框,在每个特征映射位置上都有不同的纵横比和尺度.在预测时,网络为每个默认框中的每个对 ...

  7. 【自动驾驶-3D目标检测】3DSSD:基于点的3D单级目标检测器

    3DSSD:基于点的3D单级目标检测器2020^{2020}2020 摘要 目前,基于体素的3D单级检测器已经有很多种,而基于点的单级方法仍处于探索阶段.在本文中,我们首先提出了一种轻量级且有效的基于 ...

  8. 深度学习阅读导航 | 15 YOLOv4:最佳速度与精确度的目标检测器

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

  9. CVPR 2021 | LiDAR R-CNN:一种高效且通用的 3D 目标检测器

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:LiDAR R-CNN: An Efficient and Universal 3D Objec ...

最新文章

  1. 2018-4-17论文《一种基于了领导策略的狼群搜索算法》
  2. python批量识别图片中文字_利用Python批量进行图片文字识别
  3. 复制内存时检测到可能的io争用条件_这篇高并发服务模型大科普,内部分享时被老大表扬了...
  4. php如何获得文件数量,PHP:获取目录中文件数量的最有效方法
  5. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
  6. 《Cortex-M0权威指南》之体系结构---系统模型
  7. leetcode(90)子集 2
  8. 多版本并发控制MVCC和乐观锁OCC 是什么 区别
  9. Flask在Windows环境下的部署
  10. 修改hosts文件,解决端口占用方法
  11. g4600黑苹果efi_Hackintosh黑苹果长期维护机型EFI列表及安装教程整理
  12. 软件测试培训班 软件测试0基础到项目实战
  13. wo-27s管理员账户和密码_获取电信天翼网关超级密码,修改路由模式为桥接模式...
  14. conda install 安装慢,或者直接卡死,这么解决
  15. 《都在用的商务精英礼仪》读书笔记
  16. 小程序 - 接入支付宝预授权支付 笔记
  17. 《挑战程序设计竞赛》 读后感(转载)
  18. 中国移动刘光毅:从5G的发展经验看6G
  19. 计算二叉树的深度和叶子结点数
  20. ios-马甲包混淆方法

热门文章

  1. 使用np.load()加载数据 报错 Object arrays cannot be loaded when allow_pickle=False
  2. anaconda切换python版本及对应环境,太方便
  3. 线程的挂起是错误的概念实际是线程的阻塞,挂起只针对进程,将进程挂起会将进程从内存空间交换到磁盘空间的过程
  4. 深度学习面试25问题
  5. jasonrpcbridge
  6. ECLIPSE启动不了,报错org.eclipse.swt.SWTException: Invalid thread access
  7. 为了鉴别世界名画,我死磕CNN后终于搭建了自己的模型
  8. 一本冷门书:以色列闪盘之父的创业故事
  9. python怎么变成动图_python简单的图片切换形成动画效果程序
  10. Free Lunch for Few-Shot Learning: Distribution Calibration(ICLR 2021)