1.准备, 已经训练好的fast_reid配置文件和权重文件
这是配置文件
这是权重文件
此时的权重文件共有282.10MB
2.将配置文件转为onnx文件
pip install onnx
fast_reid代码(https://github.com/JDAI-CV/fast-reid/tree/master/tools/deploy) 照着步骤走,先下载fastreid代码,cd 到tools/deploy文件夹下,
然后终端运行命令:
python onnx_export.py --config-file root-path/bagtricks_R50/config.yml --name baseline_R50 --output outputs/onnx_model --opts MODEL.WEIGHTS root-path/logs/market1501/bagtricks_R50/model_final.pth
最好路径都设置成跟官网上一样的,如下面这张图
可能的报错:
这是因为config.yaml文件中有DATALOADER.NAIVE_WAY这个关键字,而fast_reid目录下fastreid/config/default.py文件里面没有,将其添加到default.py文件夹下就行了,如图:
此类的错误就按照这样解决
若还有其他错误,则有可能是因为配置文件的版本太低,而下载的fast_reid文件版本太高,需要重新下载低版本的fast_reid文件,然后再运行。
这一步生成的文件:
3.配置tensorrt环境
依据ubuntu版本和cuda版本下载相应的tensorrt包,
我用的是:ubuntu 16.04/cuda10.2/tensorrt7.2.3
进入NVIDIA TensorRT官网,需要登录,然后选择相应的版本,我下载的是TAR文件
添加环境变量:
vim ~/.bashrc
然后保存退出
将下载的TensorRT文件解压,之后进入TensorRT7.2.3/python文件夹下:
有许多tensorRT文件,然后查看自己的python版本,我的是python3.8
则运行命令:
sudo pip3 install tensorrt-7.2.2.3-cp38-none-linux_x86_64.whl
cd ../uff
sudo pip3 install uff-0.6.9-py2.py3-none-any.whl
然后进入python环境下,
安装成功
4. 将onnx文件转为Tensorrt文件
python3 trt_inference.py --model-path outputs/trt_model/baseline_R50.engine --input test_data/*.jpg --batch-size 1 --height 256 --width 128 --output trt_output
可能碰到的问题:
1.batch-size问题
解决:将batch-size 大小改为1
2.getPluginCreater问题
解决:在trt_inference.py文件里添加下面一行
这一步生成的文件
此时的权重文件已经降至137.13M,轻量化了一半还多。
5.将其嵌入到deepsort模型中
在deepsort.py同一目录下,上传fast_reid文件
a.导入包
并在deepsort类中添加:
在_get_features的修改如下:
可能遇到的问题:
解决:
找到报错的行,在这之前加上
Torch.cuda.set_device(gpu_idx)
并且在最前面加上
opt.device与gpu_idx都指gpu的块数。