多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法

论文链接:https://arxiv.org/pdf/1909.12605v1.pdf
代码链接:https://github.com/Zhongdao/Towards-Realtime-MOT
作者给的数据集链接:https://github.com/Zhongdao/Towards-Realtime-MOT/blob/master/DATASET_ZOO.md
我的环境 ubuntu18.04 python3.6 pytorch1.2 显卡为两张12GB显存的gtx1080ti

一、准备数据集
我下载的是作者给的CUHK-SYSU和MOT2017。(一定要下载作者给的数据集,因为里面包含了每张图片的label文件)
我在代码工程目录下新建了一个datasets文件夹,把上面下载的两个压缩文档直接解压到里面即可。(ubuntu解压MOT2017的时候出错,是因为压缩文件5.6G太大了吗?有知道的小伙伴请告诉我,我是切换到win10系统解压的)
以上就完成了数据集的准备。
二、修改 cfg/ccmcpe.json文件,按照图中进行修改,注意***逗号***的保留和去除。
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第1张图片

三、修改models.py和train.py文件
1.models.py的第13行 把batch_norm=SyncBN 改成 batch_norm=nn.BatchNorm2d
2.train.py的第159行 添加如下语句
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第2张图片
3.train.py的173行到178行注释掉。
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第3张图片

4.train.py配置可以按照如下修改,batchsize设为8,imgsize设为[1088,608]。设大参数的话会爆显存,设小参数的话显卡的利用率上不去。小伙伴们也可以根据自己的显卡状况修改这两个参数,一般batchsize为2的倍数,imgsize设为[1088,608]或者[864,480]或者[576,320]。
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第4张图片四、训练
先下载yolov3的预训练模型darknet53.conv.74,在工程目录新建weights文件夹,放进去
下载链接:https://pan.baidu.com/s/1D-uEE9eiW214npVjTXaf8Q
提取码:krzp

运行命令(我用0号显卡和1号显卡一起训练,按照上面的设置,我的两张显卡都可以跑满)

CUDA_VISIBLE_DEVICES=0,1 python train.py 

如果没错的话,会出现以下画面
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第5张图片

训练时可以随时观察显卡的利用情况,根据利用情况修改batchsize和imgsize的参数,新开一个命令窗口运行

nvidia-smi -l 1

五、测试
训练到30个epoch后停止,在weights文件夹里会生成最后一次训练生成的模型文件latest.pt
1.在工作目录新建一个models文件夹,把latest.pt复制进去
2.修改demo.py,我在工程目录放了一个MOT2016-11.mp4的视频
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第6张图片运行

python demo.py

你或许会得到如下报错,我觉得这是作者代码的bug
多目标跟踪算法(JDE)Towards Real-Time Multi-Object Tracking训练方法_第7张图片torch.Size不匹配,需要修改multitracker.py的第163行
self.model = Darknet(opt.cfg, nID=14455) 把nID改为nID=11932。
然后在运行demo.py就不会报错了。
最终会在results文件夹下生成跟踪结果。

有问题欢迎交流,我会及时回复的。

你可能感兴趣的:(多目标跟踪,目标跟踪,深度学习,pytorch,神经网络)