CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT

目录

  • CVPR2020 平衡检测与跟踪的一步法多目标跟踪项目fairMOT
    • 一、背景
    • 二、关键性因素
    • 三、环境搭建
      • 1、系统环境和虚拟环境
      • 2、覆盖flat_hash_map.h
      • 3、安装DCNv2
      • 4、手动下载Cython-bbox 0.1.3并编译
      • 5、文件dla34-ba72cf86.pth手动放置
      • 6、下载ffmpeg
      • 7、下载权重文件
    • 四、运行demo
    • 五、遇到的问题

CVPR2020 平衡检测与跟踪的一步法多目标跟踪项目fairMOT

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

代码地址:https://github.com/ifzhang/FairMOT

这篇工作来自华中科技大学和微软亚洲研究院,从结果来看,这篇工作在主流的多目标跟踪数据集上几乎打败之前所有State-of-the-art算法,但标题却称该算法只是个baseline,而且是simple baseline,再次验证大佬们都是谦虚的。

一、背景

多目标跟踪 (MOT) 是计算机视觉领域中的重要任务,近年来,目标检测和 Re-ID 在各自的发展中都取得巨大进步,并提升了目标跟踪的性能。但是,现有方法无法以视频帧速率执行推断,因为两个网络无法共享特征。当前多目标跟踪最优的方法通常分为两大类:

两步法MOT——使用两个单独的模型,首先用检测模型定位图像中目标的边界框位置,然后用关联模型对每个边界框提取重识别 (Re-identification, Re-ID) 特征,并根据这些特征定义的特定度量将边界框与现有的一个跟踪结果联结起来。

单步法MOT——在进行目标检测的同时也进行ReID特征提取,核心思想是在单个网络中同时完成对象检测和身份嵌入(Re-ID功能),以通过共享大部分计算来减少推理时间。现有的方法比如Track-RCNN、JDE(Towards real-time multi-object tracking)直接在Mask R-CNN、YOLOv3的检测端并行加入ReID特征向量输出。
CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT_第1张图片

二、关键性因素

影响跟踪器准确性的关键性因素分析:
(1)锚点锚框引起的不平衡
所谓锚框[1],就是目标检测算法中,以锚点为中心,由算法预定义的多个不同长宽比的先验框,如下图所示。
CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT_第2张图片
其实,基于Anchor锚点的方法不适合Re-ID,Anchor锚点来自于检测任务,单步法跟踪就沿用了Anchor锚点技术,图像上多个锚点可能负责同一个目标id,就存在了不一致性;同样来自于检测任务的特征图缩小至1/8,虽有提高速度的作用,但是对于reID来说有些粗糙,导致目标中心无法与粗糙锚点位置提取的特征一致。

原因有三点:
第一,忽略了re-ID任务。re-ID强相关于候选框(proposals)[2],导致训练偏向于候选框(proposals),而忽略了re-ID任务。
第二,同一个锚框关联到了多个id。感兴趣区域校准操作会被其他目标和背景扰乱,结果不能准确区分目标对象,所以预测目标中心是明显更好的。
第三,多个锚框关联到同一个id。只要IoU足够大,相邻的锚框就可能关联到同一个id。
(2)特征导致的不平衡
目标检测需要深层和抽象的特去预测目标类型和位置,而re-ID聚焦于浅层表面的特征去区分同类的不同实例。
因此,采用多层特征聚合,此外Re-ID特征需要利用低级和高级特征来适应小型和大型目标,因为它提升了处理尺度变换的能力,从而降低了one-shot方法的id转换数量。
(3)特征的维数导致的不平衡
低维数的特征对于一步法的多目标跟踪更好,原因有三:
第一,由于两个任务之间的竞争,对跟踪准确性有消极影响,所以用低维数(种类数量+边框位置)来平衡两者;
第二,训练用的数据集是小的,所以用低维数re-ID可以避免过拟合,此外多目标MOT中的数据要比re-ID领域的少的多,所以减少特征维数更有利。
第三,低维re-ID特征可以加快推理速度。

三、环境搭建

1、系统环境和虚拟环境

win10 miniconda3
python 3.7 and pytorch >= 1.2.0
这是项目文档中命令:

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

如果下载比较慢可以先删除错默认的镜像源:

conda config --remove-key channels

再添加国内清华源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

这时搭建环境命令可以修改为:

conda create -n FairMOT
conda activate FairMOT
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0
cd ${FAIRMOT_ROOT}
pip install -r requirements.txt -i https://pypi.douban.com/simple

2、覆盖flat_hash_map.h

win10系统中 visual studio 如果为2015及以下版本就需要替换,如果是17或19版本,可以先不替换运行,运行编译出错再进行替换。
替换步骤:
1)进入C:\Users\yuanjing\miniconda3\envs\fairMOT\Lib\site-packages\torch\include\c10\util
2)对原文件 flat_hash_map.h 进行压缩备份
3)将新的 flat_hash_map.h 拷贝进(1)中路径进行替换
CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT_第3张图片

3、安装DCNv2

下载DCNv2
https://github.com/CharlesShang/DCNv2
Linux下可以用以下命令:

git clone https://github.com/CharlesShang/DCNv2
cd DCNv2
./make.sh

win10下,C:\Users\yuanjing\Desktop\Jim_list\0014_fairMOT\001_FairMOT\src\lib\models\networks\DCNv2
执行如下:

python setup.py build develop

4、手动下载Cython-bbox 0.1.3并编译

在安装requirements.txt时可能报错没有Cython-bbox匹配版本,解决办法是手动下载Cython-bbox 0.1.3,解压到项目文件主目录中,cd进Cython-bbox 0.1.3文件夹执行如下命令:

 python .\setup.py build develop

5、文件dla34-ba72cf86.pth手动放置

否则会在第一次运行时,自动下载,网速不佳的情况下,时间很长。
放入文件夹路径:C:\Users\yuanjing.cache\torch\checkpoints
CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT_第4张图片

6、下载ffmpeg

下载ffmpeg文件,把ffmpeg.exe放入src文件夹
https://www.ffmpeg.org/

7、下载权重文件

下载fairmot_dla34.pth,放入新建的文件夹models。
百度云盘:https://pan.baidu.com/s/1H1Zp8wrTKDk20_DSPAeEkg

四、运行demo

进入src文件夹,执行命令:

python demo.py mot --load_model ../models/fairmot_dla34.pth --input-video ../videos/MOT16-03.mp4 --output-root ../outputs --conf_thres 0.4

五、遇到的问题

问题:
File “XXXX/src/lib/models/networks/DCNv2_new/dcn_v2.py”, line 13, in
import _ext as _backend
ModuleNotFoundError: No module named ‘_ext’

解决:这是一个深度学习代码运行时报的错,错误原因是XXXX/src/lib/models/networks/DCNv2_new/目录下需要重新编译,要把该目录的build文件夹(如果存在的话)删除,然后在命令行运行python setup.py build develop
CVPR2020 平衡检测与跟踪的一阶段目标跟踪项目fairMOT_第5张图片

引用链接:
[1]: https://zhuanlan.zhihu.com/p/63024247 Anchor Box综述
[2]: https://cloud.tencent.com/developer/article/1435647 目标检测中anchor和proposal的区别

你可能感兴趣的:(pytorch,目标跟踪,python)