Tracking系列_fairmot(多目标跟踪算法)_源码_第一步(demo和训练):
源码:
https://github.com/ifzhang/FairMOT
论文(A类期刊:IJCV2021,含金量杠杠滴):
https://arxiv.org/abs/2004.01888
代码解读(使用说明书):
一、环境搭建
1、需要conda:
什么?没conda,请👈安装,这一步完成,已经完成30%了,接下来就是傻瓜式操作了。
很快、简单啊,我求你安装一个吧,栓Q。
2、conda安装python和其它环境包:
先把源码下载下来,之后开始搭建环境
源码的作者建议: python=3.8 and pytorch >= 1.7.0
conda create -n FairMOT python=3.8 #-n 代表环境名字
conda activate FairMOT #激活这个叫FairMOT的环境
conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.2 -c pytorch #这里安装torch等工具包
cd ${FAIRMOT_ROOT} #进入你git下的源码
pip install cython
pip install -r requirements.txt #安装其它依赖库
二、运行起来,5分钟快速出效果(用lol的话来说,选择完英雄,接下来就是英雄的QWER技能学习)
1、整体的代码查看
请直接操作src文件里的代码
2、src里的代码查看
简单说说:
opts.py——操作输入的参数的(就是你英雄配置什么装备,不能乱搞,不然就是盖伦出蓝水晶。)
demo.py——简单运行个网络看看效果
track.py——追踪功能的代码(这个就是英雄的QWER说明)
train.py——训练网络的入口
3、实现
👉快速出演示效果
主要3个地方(demo.py+opts.py+模型)
- 第1、下载一个训练过的模型,
https://drive.google.com/file/d/1iqRQjsG9BawIl8SlFomMg5iwkb6nqSpi/view?usp=sharing
- 第2、设置opts.py
--load_model 设置上一步下载好的模型权重位置
在opts.py的19行
–gpus写-1是用cpu,写0代表第一个gpu
–input-video要测试视频的位置
–output-root测试完视频的输出位置
接下来在命令行中写入这些参数,并执行demo.py这个文件
例子:
python demo.py mot --load_model …/models/fairmot_dla34.pth --conf_thres 0.4 --input-video ./video 001.mp4 --output-root ./result
例子解读:
代表我用…/models/fairmot_dla34.pth这个位置的模型,
阈值0.4(这个不懂的先不管),
测试./video 001.mp4这个视频,
并把视频效果输出到./result这个文件夹。
效果演示:
👉我要训练
主要3个地方(train.py+opts.py+数据集)
- 第1、装备数据集(标签格式和train、val图片位置怎么放)
编写数据集的路径文件(这里我用crowdhuman举例,创建编写crowdhuman.json)
json都在src/lib/cfg下面(作者都配了很多,复制改一下就可以了)
查看json格式,设置画红框的地方
这时有人就会问,这.train和.val怎么来的?请往下看
.train和.val文件就是训练和验证集图片的位置信息,这样搞:
查看该文件
这程序就是将crowdhuman数据集格式转换成.train和.val的fairmot训练格式
crowdhuman下载地址:https://www.crowdhuman.org/记得下载后文件目录格式如下
crowdhuman
|——————images
| └——————train
| └——————val
└——————labels_with_ids
| └——————train(empty)
| └——————val(empty)
└------annotation_train.odgt
└------annotation_val.odgt
设置好红框里crowdhuman路径参数,然后执行gen_labels_crowd_det.py代码,就会生成train.val
- 第2、训练开始(选择网络,设置opt.py)
设置opt.py
–data_cfg填写上面的.json文件位置
比如上面就填写src/lib/cfg/crowdhuman.json
–arch默认是dla_34这个网络,比较大,我训练用的是yolo5s,填yolo
接下来在命令行中写入这些参数,并执行train.py这个文件
例子:
python train.py mot --exp_id all_yolov5s --data_cfg src/lib/cfg/crowdhuman.json
–batch_size 8 --arch yolo
例子解读:
代表我用yolov5s这个检测网络训练这个mot模型,数据集用的是crowdhuman。
训练演示:
还有很多学习率、模型保存位置等参数、超参数,后面有机会再说。。。
最后:
有兴趣的同学朋友相互讨论技术