行人检测与重识别!SOTA算法

A Simple Baseline for Multi-Object Tracking,

Yifu Zhang, Chunyu Wang, Xinggang Wang, Wenjun Zeng, Wenyu Liu,

论文地址:https://arxiv.org/pdf/2004.01888.pdf

GitHub 地址:https://github.com/ifzhang/FairMOT

Installation

克隆这个repo,调用克隆的目录${FAIRMOT_ROOT} 。

安装依赖项。

使用python3.7和pytorch >= 1.2.0。

在骨干网中使用DCNv2,更多细节可以在repo中找到。             

运行演示代码,还需要安装ffmpeg。

conda create -n
FairMOT

conda activate
FairMOT

conda install
pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch

cd ${FAIRMOT_ROOT}

pip install -r
requirements.txt

cd src/lib/models/networks/DCNv2_new sh make.sh

Data
preparation

使用类似JDE的训练数据。请参阅DATA ZOO,下载并准备所有的训练资料,包括加Caltech
Pedestrian, CityPersons, CUHK-SYSU, PRW, ETHZ, MOT17 and MOT16.数据。可从MOT challenge官方网页下载。下载后,应按以下结构准备数据:

MOT15

|——————images

|       
└——————train

|       
└——————test

└——————labels_with_ids

└——————train(empty)

MOT20

|——————images

|       
└——————train

|       
└——————test

└——————labels_with_ids

└——————train(empty)

Then,
you can change the seq_root and label_root in src/gen_labels_15.py and
src/gen_labels_20.py and run:

cd src

python
gen_labels_15.py

python gen_labels_20.py

to
generate the labels of 2DMOT15 and MOT20. The seqinfo.ini files of 2DMOT15 can
be downloaded here [Google],
[Baidu],code:8o0w.

如何将目标检测和重识别融合进一个框架,帮助解决多目标跟踪任务?作者找出了这一方向的痛点所在,同时提出了一个简单而有效的新方法。该方法以 30 fps 运行时在公开数据集上的性能超越了之前的 SOTA 结果。

近年来,目标检测和重识别均取得长足进步,而它们正是多目标跟踪的核心组件。但是,没有太多研究人员试图用一个框架完成这两项任务,进而提升推断速度。然而最初朝着这个方向努力的研究者得到的结果却是性能下降,因为重识别任务无法得到恰当地学习。

该方法以 30 fps 运行时在公开数据集上的性能超越了之前的 SOTA 结果。

FairMOT 在 MOT 挑战赛测试集上的效果。

此外,该研究还公开了代码和预训练模型。

多目标跟踪的难点

多目标跟踪 (MOT) 是计算机视觉领域中的重要任务,当前最优的方法通常使用两个单独的模型:首先用检测模型定位图像中目标的边界框位置,然后用关联模型对每个边界框提取重识别 (Re-identification, Re-ID) 特征,并根据这些特征定义的特定度量将边界框与现有的一个跟踪结果联结起来。

近年来,目标检测和 Re-ID 均取得巨大进步,并提升了目标跟踪的性能。但是,现有方法无法以视频帧速率执行推断,因为两个网络无法共享特征。

随着多任务学习的成熟,结合目标检测和 Re-ID 的
one-shot 方法逐渐吸引越来越多的注意力。由于这两个模型共享大部分特征,因此它们有可能显著缩短推断时间。

但是,one-shot 方法的准确率相比两阶段方法有显著下降,尤其是 ID 转换(identity switch)量大增的情况下。也就是说,把这两个任务合二为一并不简单,需要谨慎看待。

哪些因素对目标跟踪结果影响最大?

华中科技大和微软亚研的这项研究没有借助训练 trick 提升跟踪准确率,而是试图分析「二合一」失败的原因,并提出了一种简单而有效的基线方法。

根据研究,以下三个因素对跟踪结果的影响最大:

锚点与 Re-ID 不匹配

现有的 one-shot 跟踪器 [35,33] 均以锚点为基础,因为它们由目标检测器发展而来。但是,锚点却不适合学习 Re-ID 特征。原因如下:首先,对应于不同图像块的多个锚点可能负责估计同一个目标的
id,这导致严重的歧义(参见图 1)。此外,需要将特征图的大小缩小 1/8,以平衡准确率和速度。对于检测任务而言这是可以接受的,但对于 Re-ID 来说就有些粗糙了,因为目标中心可能无法与在粗糙锚点位置提取的特征一致。

该研究对此提出的解决方案是:将 MOT 问题看作在高分辨率特征图上的像素级关键点(目标中心)估计和 id 分类问题。

图 1:(a) 尽管黄色和红色锚点的图像块不同,但它们估计的是同一个 ID(穿蓝色上衣的人)。此外,基于锚点的方法通常在粗糙网格上运行,因此在此类锚点(红色或黄色五角星)处提取的特征大概率无法与目标中心一致。(b) anchor-free 方法的歧义要少一些。

多层特征聚合

这对于 MOT 问题尤其重要,因为 Re-ID 特征需要利用低级和高级特征来适应小型和大型目标。研究者通过实验发现,这对降低 one-shot 方法的 id 转换数量有所帮助,因为它提升了处理尺度变换的能力。

Re-ID 特征的维度

之前的 Re-ID 方法通常学习高维特征,在其基准上达到了不错的结果。但是,该研究发现较低维度的特征对于 MOT 任务效果更好,因为该任务的训练图像比 Re-ID 少(由于 Re-ID 数据集仅提供剪裁后的人像,因此 MOT 任务不使用此类数据集)。

学习低维特征有助于降低过拟合的风险,并提升目标跟踪的稳健性。

方法

下图 2 展示了该研究提出的方法。

首先,采用 anchor-free 目标检测方法,估计高分辨率特征图上的目标中心。去掉锚点这一操作可以缓解歧义问题,使用高分辨率特征图可以帮助 Re-ID 特征与目标中心更好地对齐。

然后,添加并行分支来估计像素级 Re-ID 特征,这类特征用于预测目标的 id。具体而言,学习既能减少计算时间又能提升特征匹配稳健性的低维 Re-ID 特征。

在这一步中,研究者用深层聚合算子(Deep Layer Aggregation,DLA)[41] 来武装主干网络
ResNet-34 [13],从而融合来自多个层的特征,处理不同尺度的目标。

图 2:该研究提出的 one-shot MOT 跟踪器图示。首先将输入图像馈入编码器-解码器网络,以提取高分辨率特征图(步幅=4);然后添加两个简单的并行 head,分别预测边界框和 Re-ID 特征;最后提取预测目标中心处的特征进行边界框时序联结。

实验

研究者在 MOT 挑战赛基准上借助评估服务器评估了本文提出的方法。与其他在线跟踪器相比,本文提出的方法在 2DMOT15、MOT16、MOT17
及 MOT20 数据集上均名列第一。此外,在 2DMOT15、MOT16 和 MOT17 数据集上,该方法的性能还优于离线跟踪器(MOT20 是个新数据集,之前研究没有相关结果)。虽然结果比较惊艳,但该方法非常简单,且运行速率为 30 FPS。

控制变量研究

1. 基于锚点(anchor-based)和无锚点(anchor-free)

表 1:在 MOT15 数据集上,基于锚点和无锚点方法在验证视频上的评估结果。

2. 多层特征聚合

表 2:不同主干网络在 2DMOT15 数据集上的评估结果。

表 3:主干网络对不同尺度目标的影响。

Re-ID 特征维度

表 4:不同 Re-ID 特征维度在
2DMOT15 数据集上的评估结果

与当前最佳模型的比较

研究者将本文提出的方法与当前最佳方法进行了对比,包括 one-shot 方法和 two-step 方法。

表 5:在两个数据集上与当前最佳 one-shot 跟踪器的对比结果。

表 6:与「private
detector」设定下的 SOTA 结果进行对比。

行人检测与重识别!SOTA算法的更多相关文章

  1. 【论文解读】行人检测:What Can Help Pedestrian Detection?(CVPR'17)

    前言 本篇文章出自CVPR2017,四名作者为Tsinghua University,Peking University, 外加两名来自Megvii(旷视科技)的大佬. 文章中对能够帮助行人检测的ex ...

  2. CVPR2020行人重识别算法论文解读

    CVPR2020行人重识别算法论文解读 Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer 具有特定共享特征变换 ...

  3. 行人重识别(ReID) ——数据集描述 Market-1501

    数据集简介 Market-1501 数据集在清华大学校园中采集,夏天拍摄,在 2015 年构建并公开.它包括由6个摄像头(其中5个高清摄像头和1个低清摄像头)拍摄到的 1501 个行人.32668 个 ...

  4. 行人重识别(ReID) ——概述

    什么是Re-ID? 行人重识别(Person re-identification,简称Re-ID)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术.广泛被认为是一个图像 ...

  5. 行人重识别(ReID) ——技术实现及应用场景

    导读 跨镜追踪(Person Re-Identification,简称 ReID)技术是现在计算机视觉研究的热门方向,主要解决跨摄像头跨场景下行人的识别与检索.该技术能够根据行人的穿着.体态.发型等信 ...

  6. 行人重识别(ReID) ——基于深度学习的行人重识别研究综述

    转自:https://zhuanlan.zhihu.com/p/31921944 前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视 ...

  7. Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结

    Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结 1.1. 原理,主要使用像素模糊后的差别会变小1 1.2. 具体流程1 1.3. 提升性能 可以使用采样法即可..1 ...

  8. Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理

    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理 1.1. 图像边缘一般都是通过对图像进行梯度运算来实现的1 1.2. Remark: 1 1.3.  1.失焦检测. 衡量画面模糊的主要方 ...

  9. 行人重识别(ReID) ——数据集描述 CUHK03

    数据集简介 CUHK03是第一个足以进行深度学习的大规模行人重识别数据集,该数据集的图像采集于香港中文大学(CUHK)校园.数据以"cuhk-03.mat"的 MAT 文件格式存储 ...

随机推荐

  1. HIT手 | 机械电气构造简述和微分运动学及静力学的简单推导

      机械结构电气构造简述 HIT手有四个手指,每个手指4个关节,其中第一和第二个关节正交,第三和第四个关节机械耦合,故只有3个自由度,另外大拇指多了一个相对手掌运动的自由度,故一只手掌总共有13各个自 ...

  2. 【转】在CentOS 8 / RHEL 8上配置主/从BIND DNS服务器

    转自: https://zh.codepre.com/centos-2700.html 前言 本指南描述了在CentOS 8 / RHEL 8 Linux上配置BIND DNS服务器所需的步骤.在Ce ...

  3. 从苏宁电器到卡巴斯基第26篇:难忘的三年硕士时光 IV

    录课,录课,还是录课 开题结束以后,已经是三月的下旬,当时我在考虑要不要回家,毕竟学校这里也没什么事了,我待在学校还得付出一定的花销.后来我考虑到在家的话,只有晚上才能够录课,而在学校的话,整个白天都 ...

  4. POJ1466 最大点权独立集

    题意:       给你n个人,再给你每个人都喜欢哪些人,让你找到一个最大的集合数,要求这个集合里面任意两个人都不喜欢彼此. 思路:       直接就是在问最大点权独立集元素个数,没啥解释的一遍二分 ...

  5. hdu1245 两个权值的最短路

    题意:       求s到t的最短路,如果路径相同求那么要求另一个权值尽可能的小. 思路:       水题,就是spfa的比较那个地方多了一个可以更新的机会,当(s_x[xin] > s_x[ ...

  6. android CVE

    本文收集网上android cve的一些分析供后续学习: Android uncovers master-key:android1.6-4.0 由于ZIP格式允许存在两个或以上完全相同的路径,而安卓系 ...

  7. Windows下包管理工具Bower的安装和使用

    目录 安装Bower Bower的使用 安装Bower Windows下安装Bower之前,先安装好 nodejs 和 msysgit 环境 然后我们就可以使用npm包管理工具下载并全局安装bower ...

  8. .NET Core-全局性能诊断工具

    前言: 现在.NET Core 上线后,不可避免的会出现各种问题,如内存泄漏.CPU占用高.接口处理耗时较长等问题.这个时候就需要快速准确的定位问题,并解决. 这时候就可以使用.NET Core 为开 ...

  9. 逆向工程初步160个crackme-------7

    这两天有点发烧,被这个疫情搞得人心惶惶的.我们这里是小镇平常过年的时候人来人往的,今年就显得格外的冷清.这是老天帮让在家学习啊,破解完这个crackme明天就去接着看我的加密解密,算了算没几天就开学了 ...

  10. 【BUAA软工】Beta阶段测试报告

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:Beta阶段测试报告 测试报告 发现的bug Beta阶段的bug [已解决]CPP项目无法进行调试 [已解决] 注册界面注册后不能够自 ...