ICCV2021 |重新思考人群中的计数和定位:一个纯粹基于点的框架
论文:Rethinking Counting and Localization in Crowds:A Purely Point-Based Framework
代码:https://github.com/TencentYoutuResearch/CrowdCounting-P2PNet
获取:在公众号CV技术指南中回复关键字“0007”可下载此论文
欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
前言:
在人群中定位个体更符合后续高级人群分析任务的实际需求,而不是简单地计数。然而,现有的基于定位的方法依赖于作为学习目标的中间表示(即密度图或伪框)是违反直觉和容易出错的。
论文提出了一个纯粹基于点的框架,用于联合人群计数和个体定位。对于这个框架,论文提出了一个新的度量标准,称为密度归一化平均精度 (density Normalized Average Precision --nAP),而不是仅仅报告图像级别的绝对计数误差,以提供更全面和更精确的性能评估。
此外,论文在这个框架下设计了一个直观的解决方案,称为点对点网络(P2PNet)。P2PNet 丢弃了多余的步骤,直接预测一组point proposals来表示图像中的头部,与人类标注结果一致。通过彻底的分析,论文揭示了实现这种新颖想法的关键步骤是为这些proposals分配最佳学习目标。
P2PNet 不仅在流行的计数基准上显着超越了SOTA方法,而且还实现了有前途的定位精度。
出发点
在人群分析的所有相关具体任务中,人群计数是一个基本支柱,旨在估计人群中的个体数量。 然而,简单地给出一个数字显然远远不能支持后续更高层次的人群分析任务的实际需求,如人群跟踪、活动识别、异常检测、流量/行为预测等。
事实上,这个领域有一个明显的趋势,即除了简单的计数之外,更具有挑战性的细粒度估计(即个体的位置)。 具体来说,一些方法将人群计数视为头部检测问题,但在对小尺度头部进行劳动密集型注释上留下了更多的努力。 其他方法试图生成仅提供点注释的头部伪边界框,但这至少看起来很棘手或不准确。 同样试图直接定位个体,有几种方法在抑制或分裂过近的候选实例时陷入困境,由于头部尺度的极端变化,特别是对于高度拥挤的区域,它们容易出错。
在评估指标方面,一些有远见的工作鼓励采用补丁级别的指标进行细粒度评估,但它们仅提供了对定位的粗略衡量标准。 其他现有的定位感知指标要么忽略了人群中的显着密度变化,要么缺乏对重复预测的惩罚。
创新思路
为了解决上述问题,论文提出了一个纯粹基于点的框架,用于联合计数和定位人群中的个人。 该框架直接使用点标注作为学习目标,同时输出点来定位个体,受益于点表示的高精度定位特性和相对便宜的标注成本。
论文提出了一种称为密度归一化平均精度 (density Normalized Average Precision --nAP) 的新指标,为定位和计数错误提供综合评估指标。nAP 指标支持框和点表示作为输入(即预测或注释),没有上述缺陷。
作为这个新框架下的直观解决方案,论文开发了一种新方法来直接预测一组具有图像中头部坐标及其置信度的point proposals。具体来说,论文提出了一个点对点网络 (P2PNet) 来直接接收一组带标注的头部点用于训练,并在推理过程中预测点。
为了使这样的想法正确工作,论文深入研究了ground truth target分配过程,以揭示这种关联的关键。结论是,无论是多个proposals 与单个ground truth匹配的情况,还是相反的情况,都会使模型在训练期间混淆,导致高估或低估计数。
因此,论文建议通过匈牙利算法进行一对一匹配,将point proposals与其ground truth target相关联,未匹配的proposals 应归类为负样本。凭经验表明,这种匹配有利于改进 nAP 指标,作为论文在新框架下解决方案的关键组成部分。这种简单、直观和高效的设计产生了SOTA的计数性能和有前途的定位精度。
Methods
Purely Point-based Framework
这里简要说明这种新框架的思路。给定一个有N个个体的图像,用N个点来表示个体的头部中心点。网络输出两个东西,一个是预测头部的中心点P,一个是该中心点的置信度C。目标是使预测点与ground truth尽可能地接近,并有足够高的置信度。
与传统的计数方法相比,该框架提供的个体位置有助于那些基于运动的人群分析任务,如人群跟踪、活动识别、异常检测等 此外,该框架不依赖于劳动密集型标注、不准确的伪框或棘手的后处理,受益于原始点表示的高精度定位特性,特别是对于人群中高度拥挤的区域。
因此,这个新框架由于其相对于传统人群计数的优势和实用价值而值得更多关注。 然而,由于存在严重的遮挡、密度变化和标注错误,处理这样的任务是非常具有挑战性的 ,这在 [13] 中甚至被认为是理想的但不可行的。
Density Normalized Average Precision
一个预测点 pˆj 只有在它可以匹配到某个ground truth pi 时才被归类为 TP。 匹配过程由基于像素级欧几里德距离的准则 (ˆpj , pi) 指导。 然而,直接使用像素距离来测量亲和度忽略了人群之间大密度变化的副作用。 因此,为此匹配标准引入了密度归一化,以缓解密度变化问题。
简单说来就是引入最近邻K(取3)个点,将它们的距离归一化。
用公式表示如下:
预测与ground truth匹配方案
(a) 在为每个ground truth点选择最近的提议时,多个ground truth点可能与同一个提议匹配,这会导致计数低估。 (b) 在为每个提案选择最近的ground truth时,多个提案可能会与相同的地面实况点匹配,这会导致高估计数。 (c) 论文通过匈牙利算法进行一对一匹配没有以上两个缺陷,因此适合直接点预测。
P2PNet
P2PNet 的整体架构
建立在 VGG16 之上,它首先引入了一个上采样路径来获得细粒度的深度特征图。 然后它利用两个分支同时预测一组点提议及其置信度分数。pipeline中的关键步骤是确保point proposals和ground truth点之间的一对一匹配,这决定了这些proposals的学习目标。
loss function如下:
Conclusion
本文来源于公众号 CV技术指南 的论文分享系列。
欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。
其它文章
经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
ICCV2021 |重新思考人群中的计数和定位:一个纯粹基于点的框架的更多相关文章
- CVPR2021 | 重新思考BatchNorm中的Batch
前言 公众号在前面发过三篇分别对BatchNorm解读.分析和总结的文章(文章链接在文末),阅读过这三篇文章的读者对BatchNorm和归一化方法应该已经有了较深的认识和理解.在本文将介绍一篇关于 ...
- iOS中引用计数内存管理机制分析
在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序. 操作系统的内存管理分成堆和 ...
- SqlHelper——只因为在人群中多看了你一眼
对SQLHelper,还是有一点陌生的,但是大多数人都在使用,我就有一种想了解并使用的意愿,于是查了很多资料,发现一片不错的博客,放在下面,作为自己或读者使用的材料. 一.SqlHelper 出场 不 ...
- SqlHelper——仅仅由于在人群中多看了你一眼
一.SqlHelper 出场 不是由于大家都在用SqlHelper所以才用,是由于连接数据库关闭数据库查询数据库的多了也就加上了SqlHelper.当你的非常多需求都有一个同样的方法的时候我们没有必要 ...
- 从cocos2d-html5中提取出来的,用做前端开发的框架——cc.js
从cocos2d-html5中提取出来的,用做前端开发的框架——cc.js /************************************************************* ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- css中的大小、定位、轮廓相关属性
css中的大小.定位.轮廓相关属性 1.通过height.width属性控制组件大小 height:高度,可以设置任何有效的距离值: width:宽度,可以设置任何有效的属性值: max-height ...
- CSS中的浮动和定位
在了解CSS中的浮动和定位之前有必要先了解清楚标准流和脱离标准流的特性 标准流的默认特性 1.分行.块级元素,并且能够dispay转换. 2.块级元素(block):默认独占一行,不能并列显示,能够设 ...
- System.getProperty()引起的悲剧--您的主机中的软件中止了一个已建立的连接
我已无法形容此刻我的心情.. 本来是已经写好的netty5的demo程序,server和client之间创建tcp长连接的..然后随便传点数据的简单demo..然后今天试了一下tcp粘包的例子,用到了 ...
随机推荐
- Harbor镜像仓库
Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...
- 11、gitlab和Jenkins整合(2)
5.补充: (1)构建说明: 1)Jenkins会基于一些处理器任务后,构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现. 2)它们可能包括单元测试(JUnit).覆盖率(Cob ...
- 附加数据库出现 无法打开物理文件 操作系统错误 5:拒绝访问 SQL
刚刚从公司的电脑上考到自己刚刚装好系统的笔记本上面,出现了问题: 无法打开物理文件 操作系统错误 5:拒绝访问 . 网上找了下解决方法: 找到需要导入的 mdf和ldf 修改它的权限为完全控制,不 ...
- SpringBoot:SpringBoot项目的配置文件放在Jar包外加载
SpringBoot读取配置文件的优先级为: 第一.项目jar包同级下的config文件夹是优先级最高的,是在执行命令的目录下建config文件夹.(在jar包的同一目录下建config文件夹,执行命 ...
- yield生成器demo代码
<?phpfunction get_val1($n = 10000*100){ $arr = []; for($i = 0; $i <= $n;$i++){ $arr[] = $i; if ...
- mysql中比较字符串类型数字
操作的表: p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatures ...
- XXE学习(待更新)
XXE基础 XXE(XMl External Injection),即XML外部实体注入漏洞. XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体得加载,导致可以加载恶意外部文件,造成文件读取 ...
- c语言:逗号运算符
#include <stdio.h> main() { int a,s,d; s=2,d=3; a=12+(s+2,d+4); printf("%d\n",a); in ...
- python pip install matplotlib安装模块
python pip install matplotlib安装模块,可附带安装相关的模块 程序运行提示: from . import _imaging as coreImportError: DLL ...
- Python+Requests+Xpath(解析)爬取某站点简历图片(数据分析三)
1.环境安装 pip install lxml 2.解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用xpath函数结合xpath表达式进行标签定位和指定数据提 ...