论文阅读:Adaptive NMS: Refining Pedestrian Detection in a Crowd

2019年04月11日 23:08:02 Kivee123 阅读数 836
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

Adaptive-NMS(CVPR 2019)

文章
  又是一篇在NMS上面做文章的paper。。读完之后感觉,哇!自己再想的深一点也能想出来呀,可是想出来和做出好效果真是两码事。。尤其是没有人告诉你这个idea的价值只能靠自己判断的时候。扯远了。。。还是说一说这篇文章吧。
  NMS是目前基于深度学习的目标检测模型的重要的后处理步骤,针对目标检测来讲,NMS具体操作就是将所有检测结果(设为集合A)中score最大的结果取出来加入到最后的检测结果集合(设为集合B),然后将A中其它检测结果i中与该结果进行比较,如果如该结果的相似度(往往使用IoU)超过一个阈值就将i从A中去掉。重复上述操作,直到A为空空集,伪代码如下(greedy-NMS就是普通的NMS):

  然而普通NMS的问题在于,如果两个ground truth本身就有overlap的话,这个时候就不好办了,如果overlap较小,没有问题,但如果overlap较大呢?比crowd这种场景,这时候要想能检测出两个gt,只能设置较大的阈值来保证较小score的结果不被抑制。可矛盾在于,在crowd这种情况下,人群有时候密集有时候稀疏,高的阈值又会导致对于稀疏的情况下产生过多的False Positive(即被错认为positive的结果)。为了尝试解决这个问题呢,ICCV 2017一篇soft-NMS横空出世(靠一行代码就发了ICCV,牛逼。。。。)。soft-NMS的思想是,NMS所谓的“抑制”可以看做将检测结果的分数置0了,从而就不要该结果了,那么可不可以不置0,而是减小score呢,不过是IoU越大,score减小的越多。

为什么可以这样弄呢?其实细想一下,虽然会存在gt之间存在overlap的情况,但我们的目的是抑制那些overlap更大的(比如有三个结果ABC,分数分别为0.9,0.8,0.7,其中AC是正确结果,A和B的overlap大于A和C的,这样经过一轮NMS后BC的分数可能就变了0.6,0.5,从而将B抑制了)最后实验证明。。。这个想法还真有效!
  这篇论文呢,针对crowd中的行人检测这一特殊的应用场景,对soft-NMS又进行了优化,使得在人群密集的地方,NMS阈值较大,而人群稀疏的地方NMS阈值较小。但是问题在于怎么判断人群是否密集,又怎么根据密集程度定NMS阈值呢?对于第一个问题。。。当然是用CNN啦!于是文章就定义了第i个物体处的密度如下:

因此在训练CNN时,每次还需要求出密度作为监督信号,训练网络能够拟合这个密度函数,即输入一张图片,能输出每个位置的物体密度,但这个参数怕是作者调了不短的时间,模型如下:

有了密度之后,soft-NMS就改进成了

  emmmm,文章的方法就是这样,感觉也是很自然的发现一个问题然后想办法去解决,不过个人以为这个模型恐怕真不好调参。

论文阅读:Adaptive NMS: Refining Pedestrian Detection in a Crowd的更多相关文章

  1. 论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

    相关链接 论文地址:https://arxiv.org/abs/1901.08043 论文代码:https://github.com/xingyizhou/ExtremeNet 概述 ExtremeN ...

  2. 论文阅读: End-to-end Learning of Action Detection from Frame Glimpses in Videos

      End-to-End Learning of Action Detection from Frame Glimpses in Videos  CVPR 2016  Motivation:    本 ...

  3. 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?

    Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016   Liliang Zhang & Kaiming He 原文链接 ...

  4. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

  5. 论文笔记之:Pedestrian Detection aided by Deep Learning Semantic Tasks

    Pedestrian Detection aided by Deep Learning Semantic Tasks CVPR 2015 本文考虑将语义任务(即:行人属性和场景属性)和行人检测相结合, ...

  6. 论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline

    论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline  如上图所示,本文旨在解决一个问题:给定一张图像, ...

  7. 论文笔记:Ten years of pedestrian detection, what have we learned?

    最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方 ...

  8. 【计算机视觉】论文笔记:Ten years of pedestrian detection, what have we learned?

    最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方 ...

  9. 论文笔记之:Learning Cross-Modal Deep Representations for Robust Pedestrian Detection

    Learning Cross-Modal Deep Representations for Robust Pedestrian Detection 2017-04-11  19:40:22  Moti ...

随机推荐

  1. elasticsearch java动态设置mapping并指定分词器

    //创建索引 client.admin().indices().prepareCreate("twitter").execute().actionGet(); //配置mappin ...

  2. javascript中稀疏数组和密集数组

    密集数组 数组是一片连续的存储空间,有着固定的长度.加入数组其实位置是address,长度为n,那么占用的存储空间是address[0],address[1],address[2].......add ...

  3. Java core dump

    目录 生成Java core dump core dump分析 生成Java core dump 可以按照下面这个文章的指引来通过jni调用触发Java core dump Generating a ...

  4. 如何永久激活(破解) IntelliJ IDEA 2018.2.2

    原 如何永久激活(破解) IntelliJ IDEA 2018.2.2 版权声明:本文为博主原创文章,转载不需要博主同意,只需贴上原文链接即可. https://blog.csdn.net/zhige ...

  5. 分组背包---P1757 通天之分组背包

    P1757 通天之分组背包 题解 分组背包板子题 k组物品,每组之间相互矛盾,也就是一组里面只能选一个或者不选 分组背包其实和01背包差不多,就是多加一维枚举组数 f[k][j] 前k组中,体积不超过 ...

  6. HTM概述

    Html: Hyper Text Markup Language 超文本标记语言 超文本: 超出纯文本的范畴 标记语言: 标记其实就是标签 标签的格式: <标签名称>

  7. 微信自定义分享 IOS端分享失败

    1.在IOS微信浏览器中自定义分享link 链接中的中文需要encodeURIComponent() 编码(安卓会自动编码) 2.另外在IOS微信浏览器中自定义分享 imgUrl  不能大于34KB ...

  8. yum -y与 yum有什么区别

    在linux中,经常使用yum来进行软件的安装,更新与卸载,那我们会发现,在使用yum的时候,通常有下面两种指令模式: ①yum install  xxx ②yum -y install  xx 那这 ...

  9. c++ throw异常(学习)

    #include <iostream>#include <stdio.h> using namespace std; void my_copy(const char* src_ ...

  10. (翻译) Poor misunderstood 'var'

    It seems most programmers coming to JavaScript from C, C++, Java, and the like equate the var statem ...