当前位置: 首页 > news >正文

密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021

一个不知名大学生,江湖人称菜狗
original author: Jacky Li

Email : 3435673055@qq.com

 Time of completion:2023.4.8
Last edited: 2023.4.8

目录

摘要

主要内容

结果

这篇文章是CVPR 2021 的最新论文,文章的标题:

文章的主要内容是提出了一种行人跟踪的替代算法,尝试跟踪行人中最清晰可见的部位(头部)来代替跟踪人体,因为人体存在严重的遮挡现象。同时贡献了一个新的数据集  Crowd of Heads Dataset (CroHD) ,并且提出了一个新的评价跟踪器的指标  IDEucl 。

在活动识别、异常检测、机器人导航、视觉监控、安全规划等领域有着广泛的应用。

摘要

在拥挤的视频序列中跟踪人是视觉场景理解的重要组成部分。不断增加的人群密度挑战了人类的可见度,限制了现有行人跟踪器对更高人群密度的可扩展性。为此,我们提出用人头群数据集(Crowd of Heads Dataset,CroHD)恢复人头跟踪,该数据集由9个11463帧的序列组成,包含2276838个人头和5230个在不同场景中注释的轨迹。在评价方面,我们提出了一个新的指标IDEucl来衡量一个算法在图像坐标空间中保持最长距离唯一身份的有效性,从而建立了行人拥挤运动与跟踪算法性能之间的对应关系。此外,我们还提出了一种新的头部检测器HeadHunter,它是为拥挤场景中的小头部检测而设计的。我们扩展了一个粒子滤波和基于颜色直方图的头部跟踪再识别模块的HeadHunter。为了建立一个强大的基线,我们将我们的跟踪器与CroHD上现有的最先进的行人跟踪器进行了比较,并展示了其优越性,特别是在保持身份的跟踪指标方面。我们相信,我们的研究成果将有助于在密集人群中进行行人追踪,因为我们有一个轻便的头部探测器和一个能有效保存身份的跟踪器。

主要内容

在这项工作中,提出了一种在密集人群中进行跟踪的替代方法,通过视频最明显的部位来跟踪行人,即头部。不断增加的人群密度,对人的能见度来说是个挑战。

将现有的行人跟踪器的可拓展性,由于了更高人群密度中的遮挡问题,大大降低了目标检测器的性能。(存在的问题

为了应对这些挑战,同时在拥挤的人群环境中有效跟踪人,作者重新思考了多目标跟踪任务,通过清晰可见的部位来跟踪人类(解决方案

为此,我们提出了一个新的数据集。crow hd crowd of heads 数据集,是由标签的行人头部组成,用于跟踪分布在五个场景中在不同照明环境下的全高清分辨率密集人群(解决方案

而现有的跟踪是跟踪算法的有说服力的性能指标,他们没有量化跟踪器能够在图像坐标空间中保留身份的真实情况的比例存在的问题。为了弥补这一差距,我们提出 IDEucl 一个度量标准(解决方案该度量基于它在图像坐标空间中保持一致身份的效率,为了直观地理解我们的指标,请考虑上面显示的示例,图中两个跟踪器 a 和 b 计算相同ground truth 轨迹的不同身份。

跟踪器 a 在前 150 帧中提交了三个身份切换,而另一方面,跟踪器 b 在前 150 帧保持一致的身份,但在后 150 帧中提交了三个身份切换。然而,现有的指标报告了,两个跟踪器的分数相同,因此无法区分。它们作为我们提议的 ide ucl 措施 ,显示了基于图像坐标空间y轴上中行进距离的跟踪器,它能够区分两个跟踪器并报告跟踪器 a 的分数为 0.3,跟踪器 b 的分数为 0.67(验证猜想)。

作为补充,我们在crow hd 上开发了一个头部检测器baseline,称为HeadHunter,它更适合在拥挤的人群中进行头部检测。HeadHunter是一个端到端的 two-stage 具有三个功能特点的检测器(解决方案。首先它使用特征金字塔网络在多个尺度上提取特征,使用 resnet 50 作为backbone。图像中外貌和头部是同质的,并且经常在拥挤的场景中像无关紧要对象(通常是背景),因此我们增加了一个每个单独的 fpns 之上的context-sensitive prediction module,因为检测行人头部是检测许多小尺寸的问题,相邻放置的目标,我们在特征上使用转置卷积,跨越所有金字塔层级以提升每个特征图的空间分辨率。最后,我们使用带区域提议网络(rpn)的faster rcnn 头,rpn 生成目标提议(object proposals),而回归和分类头每个分别提供位置偏移和置信度分数,通过三个主要组件的简单组装,我们的头部检测器实现了scut head 数据集的state-of-the-art 结果。

本文采用粒子滤波框架和基于颜色直方图的HeadHunter Re-ID 模块对猎头进行扩展,HeadHunter的工作原理可以概括为四个主要步骤

  • 从 HeadHunter 中提取特征

  • 从之前的视频帧中回归和预测部位的位置

  • Re-ID:基于颜色直方图的匹配

  • 初始化新的检测

首先从前一帧初始化的headhunter轨迹中提取给定帧的特征,然后基于运动模型进行回归,并在新的帧中,根据它们的重要度权重估计它们的位置,然后使用基于颜色直方图的re-identification来最小化身份切换,最后对于没有粒子匹配的建议,在当前帧中初始化新的检测

结果

  • 在CroHD和MOTChallenge之间对比相同的序列

  • ours 是在CroHD上评估,而others 实在MOTChallenge上评估

  • s-MOTA , s-IDF1, s-MT:由于各自检测器的MODA导致各自的得分尺度不一致

  • 我们的方法大大优于其他方法

我们讨论了我们工作中最有趣的结果头部跟踪器和全身跟踪器之间的比较,我们在CroHD和MOTChallenge数据集之间对比相同的序列,相同的序列确保跟踪器在场景中相同行人的全身和头部边界框上进行评估为了进行比较,我们评估了 HeadHunter t在CroHD数据集 ground truth 上的表现,同时评估了mott challenge数据集ground truth 上公布的最新方法,因为我们使用了与其他方法不同的目标探测器。性能指标之间的直接比较是不公平的,因此对于每个序列,我们测量了跟踪得分相对于他们的目标探测器得分,以获得我们的方法大大优于其他方法,表明跟踪头部检测更适合于跟踪环境中涉及行人密度高。

相关文章:

密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021

一个不知名大学生,江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion:2023.4.8 Last edited: 2023.4.8 目录 摘要 主要内容 结果 这篇文章是CVPR 2021 的最新论文,文章的标题: 文章的主要内…...

Matlab与ROS(1/2)---服务端和客户端数据通信(五)

0. 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识。而ROS主要支持的通信机制还有服务这一类。服务通过允许请求以及响应的通信方式,来给整个系统完成更紧密的耦合。服务客户端向服务服务器发送请求消息并等待响应。服务器将使用请求中的数据构造响应…...

数字化转型的避坑指南:细说数字化转型十二大坑

随着信息技术的快速发展,数字化转型已经成为许多企业发展的必经之路。然而,数字化转型过程中也存在许多坑,如果不谨慎处理,就可能导致企业陷入困境。本文将细说数字化转型的十二大坑,并提供相应的避坑指南。 1、不了解…...

pt05Encapsulationinherit

Encapsulation &inherit 封装继承 封装 向类外提供必要的功能,隐藏实现的细节, 代码可读性更高优势:简化编程,使用者不必了解具体的实现细节,只需要调用对外提供的功能。私有成员:作用:无需向类外提供…...

面向对象编程(基础)9:封装性(encapsulation)

目录 9.1 为什么需要封装? 而“高内聚,低耦合”的体现之一: 9.2 何为封装性? 9.3 Java如何实现数据封装 9.4 封装性的体现 9.4.1 成员变量/属性私有化 实现步骤: 成员变量封装的好处: 9.4.2 私有化…...

fate-serving-server增加取数逻辑并源码编译

1.什么是fate-serving-server? FATE-Serving 是一个高性能、工业化的联邦学习模型服务系统,专为生产环境而设计,主要用于在线推理。 2.fate-serving-server源码编译 下载fate-serving-serving项目(GitHub - FederatedAI/FATE-Serving: A scalable, h…...

循环队列、双端队列 C和C++

队列 目录 概念 实现方式 顺序队列 循环队列 队列的数组实现 用循环链表实现队列 STL 之 queue 实现队列 STL 之 dequeue 实现双端队列 概念 队列是一种特殊的线性表,它只允许在表的前端(称为队头,front)进行删除操作…...

正则表达式(语法+例子)

文章目录一、介绍二、语法1、匹配字符2、表示数量的字符3、边界字符4、其他字符5、转义字符三、例子1、邮箱2、用逗号分隔的数字集合1,23、允许一位小数4、20yy-mm-dd日期格式5、手机号6、匹配html、xml标签一、介绍 正则表达式(Regular Expression)&am…...

Properties和IO流集合的方法

方法名说明void load(InputStream inStream)从输入字节流读取属性列表(键和元素)void load(Reader reader)从输入字符流读取属性列表(键和元素对)void store(OutputStream out,String comments)将此属性列表(键和元素对…...

python 生成器、迭代器、动态新增属性及方法

目录 一、生成器 1、生成器定义 2、生成器存在的意义 3、创建生成器方式一(生成器表达式) 4. 创建生成器方式二(生成器函数) 1. 生成器函数 2. 生成器函数的工作原理 5. 总结 1. 什么是生成器 2. 生成器特点 二、迭代器…...

Java处理JSON

Java处理json有很多种方法,在这里总结一下。 1 Jackson Spring MVC 默认采用Jackson解析Json,出于最小依赖的考虑,也许Json解析第一选择就应该是Jackson。 1.1 引入的包 Jackson核心模块由三部分组成:jackson-core、jackson-a…...

58-Map和Set练习-LeetCode692前k个高频单词

题目 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。 示例 1: 输入: words ["i", "love", …...

线程生命周期及五种状态

文章目录一、线程生命周期及五种状态1、New(初始化状态)2、Runnable(就绪状态)3、Running(运行状态)4、Blocked(阻塞状态)5、Terminated(终止状态)二、线程基本方法1、线程等待(wait)2、线程睡眠(sleep)3、…...

OBCP第八章 OB运维、监控与异常处理-灾难恢复

灾难恢复是指当数据库中的数据在被有意或无意破坏后复原数据库所需要执行的活动 回收站:回收站在原理上说就是一个数据字典表,放置用户删除的数据库对象信息。用户删除的东西被放入回收站后,其实仍然占据着物理空间,除非您手动进…...

亚马逊云科技Serverless Data:数字经济下的创新动能

Serverless时代已经到来!企业的技术架构,总是伴随着不断增长的数据与日趋复杂的业务持续演进。如何通过构建更易用的技术架构来聚焦在业务本身,而不必在底层基础设施的管理上投入过多的精力,是数据驱动型企业需要思考的重要议题。…...

【Ruby学习笔记】15.Ruby 异常

Ruby 异常 异常和执行总是被联系在一起。如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的。 如果异常发生,则程序停止。异常用于处理各种类型的错误,这些错误可能在程序执行期间发生&…...

聊聊MySQL主从延迟

文章目录 MySQL 的高可用是如何实现的呢?二、什么是主备延迟?三、主备延迟常见原因1、备库机器配置差2、备库干私活3、大事务四、主库不可用,主备切换有哪些策略?1、可靠优先2、可用优先实验一实验二3、结论MySQL 的高可用是如何实现的呢? 高可用性(high availability,缩…...

【C++从0到1】19、C++中多条件的if语句

C从0到1全系列教程 1、多条件的if语句 语法: if (表达式一) { // 表达式一为真时执行的语句。 } else if (表达式二) {// 表达式二为真时执行的语句。 } else if (表达式三) {// 表达式三为真时执行的语句。 } …… else if (表达式n) {// 表达式n为真时执行的语句。…...

【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux(centos7)安装防火墙firewalld及开放端口相关命令

安装firewalld 防火墙命令: yum install firewalld 安装完成,查看防火墙状态为 not running,即未运行,输入命令开启: 添加开放端口: 防火墙相关命令: 查看防火墙状态 systemctl status firewa…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 一、 做生信为什么推荐使用服务器&#xff1f; 大家好&#xff0c;我是小杜。在做生信分析的同学&#xff0c;或是将接触学习生信分析的同学&#xff0c;<font style"color:rgb(53, 1…...

信息系统分析与设计复习

2024试卷 单选题&#xff08;20&#xff09; 1、在一个聊天系统(类似ChatGPT)中&#xff0c;属于控制类的是&#xff08;&#xff09;。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 ​解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...