代码:https://github.com/ifzhang/FairMOT
论文:https://arxiv.org/pdf/2004.01888.pdf
我使用版本的代码:https://download.csdn.net/download/qq_35975447/13089984
目录
0.环境
ubuntu16.04
cuda9.0
python3.6 #(python3.5 is imcompatible)
torch==1.1.0
torchvision==0.3.0
Cython #(install first)
yacs
opencv-python
cython-bbox
scipy
numba
progress
motmetrics
numba
matplotlib
lap
openpyxl
Pillow==6.2.2
tensorboardX
tensorboard==1.14
https://download.pytorch.org/whl/cu90/torch_stable.html
torch与torchvision在上面的链接中下载。
apt-get install -y libbz2-dev
apt update && apt install -y libsm6 libxext6
apt-get install -y libxrender1
pip --default-time=500 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch-1.1.0-cp36-cp36m-linux_x86_64.whl
pip --default-time=500 install -i https://pypi.tuna.tsinghua.edu.cn/simple torchvision-0.3.0-cp36-cp36m-manylinux1_x86_64.whl
pip --default-time=500 install -i https://pypi.tuna.tsinghua.edu.cn/simple Cython
pip --default-time=500 install -i https://pypi.tuna.tsinghua.edu.cn/simple llvmlite==0.31.0
pip --default-time=500 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
cd src/lib/models/networks/DCNv2_new
sh make.sh
安装ffmpeg:https://blog.csdn.net/lwgkzl/article/details/77836207
1.下载
下载FairMOT(ifzhang),与模型。(此处官方使用模型已经更新,建议下载最新版本与最新代码,再参考博客)
将下载的模型复制到指定的目录下。
https://download.csdn.net/download/qq_35975447/12529701
https://download.csdn.net/download/qq_35975447/12529718
2.demo.py
运行demo.py GPU>=1159MiB ,就够了。TITAN xp上测试1500帧大概花费时间221s,所以平均一帧花费147ms。
cd src
python demo.py mot --load_model ../models/all_dla34.pth --conf_thres 0.4
#指定GPU
CUDA_VISIBLE_DEVICES=1 python demo.py mot --load_model ../models/all_dla34.pth --conf_thres 0.4
这个过程中会下载一个模型(http://dl.yf.io/dla/models/imagenet/dla34-ba72cf86.pth),可能会下载超时。
自己下载的话,需要复制到对应的路径下。
cp dla34-ba72cf86.pth /root/.cache/torch/checkpoints/
运行成功后,终端显示:
结果都保存在result文件夹下。
需要安装ffmpeg才会生成result.mp4,Ubuntu安装ffmpeg,请参考https://blog.csdn.net/lwgkzl/article/details/77836207。安装后,再次运行终端会输出显示:
好吧,我发现这个方法,在行人之间有大面积重合时,ID也会切换即跟丢了(难点啊难点)。
注:如果想要测试自己的数据的话,通过修改/src/lib/opts.py中的下面路径(此处添加于2021/02/19):
3.训练单个数据集
参考https://blog.csdn.net/sinat_33486980/article/details/105611295,发现其数据格式是该代码数据格式,直接下载CUHK-SYSU,将名称改为.\FairMOT-master\src\data\cuhksysu.train中的名称一致。在FairMOT-master根目录下创建\data\MOT\JDE,然后将下载的CUHKSYSU整个文件夹复制到\data\MOT\JDE目录下,并修改\FairMOT-master\src\lib\cfg\data.json,由于json语法无注释,所以直接删掉除CUHKSYSU以外不用的数据集,并修改“root”绝对路径。如下:
data.json
{
"root":"/home/FairMOT-master/data/MOT/JDE",
"train":
{
"cuhksysu":"./data/cuhksysu.train"
},
"test_emb":
{
"mot15":"./data/mot15.val"
},
"test":
{
"mot15":"./data/mot15.val"
}
}
下载预训练模型与baseline模型:
修改\FairMOT-master\experiments\all_dla34.sh如下:
cd src
python train.py mot --exp_id all_dla34 --gpus 0,1 --batch_size 12 --load_model '../models/ctdet_coco_dla_2x.pth' --num_workers 0
cd ..
然后在FairMOT-master根目录下运行:
sh experiments/all_dla34.sh
训练开始:
查看终端输出发现,结果输出在以下目录中:
在对应目录下运行就可以可视化损失函数的情况了:
tensorboard --logdir ./ --port=ip端口
4.在mot16上测试各种指标
参考https://github.com/Zhongdao/Towards-Realtime-MOT/blob/master/DATASET_ZOO.md,下载mot16数据。
然后将MOT16数据集文件夹放到FairMOT-master/src/data/MOT16/目录下。运行下面命令:
CUDA_VISIBLE_DEVICES=1 python track.py mot --val_mot16 True --load_model ../models/all_dla34.pth --conf_thres 0.6 --save_all
如果想要保存video,需要修改track.py文件:
line 235:
save_videos=True)
如果修改以上,ffmpeg保存mp4出现问题的话,修改track.py line 132:
cmd_str = 'ffmpeg -f image2 -i {}/%05d.jpg -b 5000k -c:v mpeg4 {}'.format(output_dir, output_video_path)
保存视频时会有动态显示,最后保存好后,显示如下,如果不是这样建议自行找原因:
测试至少需要1.8-1.9G显存大小。