1.准备, 已经训练好的fast_reid配置文件和权重文件

pt权重文件解析 权重文件怎么生成_TensorRT


这是配置文件

pt权重文件解析 权重文件怎么生成_python_02


这是权重文件

此时的权重文件共有282.10MB

2.将配置文件转为onnx文件

pip install onnx

fast_reid代码(https://github.com/JDAI-CV/fast-reid/tree/master/tools/deploy) 照着步骤走,先下载fastreid代码,cd 到tools/deploy文件夹下,

pt权重文件解析 权重文件怎么生成_目标跟踪_03


pt权重文件解析 权重文件怎么生成_TensorRT_04


然后终端运行命令:

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

最好路径都设置成跟官网上一样的,如下面这张图

pt权重文件解析 权重文件怎么生成_目标跟踪_05


可能的报错:

pt权重文件解析 权重文件怎么生成_python_06


这是因为config.yaml文件中有DATALOADER.NAIVE_WAY这个关键字,而fast_reid目录下fastreid/config/default.py文件里面没有,将其添加到default.py文件夹下就行了,如图:

pt权重文件解析 权重文件怎么生成_fastreid_07


此类的错误就按照这样解决

若还有其他错误,则有可能是因为配置文件的版本太低,而下载的fast_reid文件版本太高,需要重新下载低版本的fast_reid文件,然后再运行。

这一步生成的文件:

pt权重文件解析 权重文件怎么生成_fastreid_08

3.配置tensorrt环境

依据ubuntu版本和cuda版本下载相应的tensorrt包,

我用的是:ubuntu 16.04/cuda10.2/tensorrt7.2.3

进入NVIDIA TensorRT官网,需要登录,然后选择相应的版本,我下载的是TAR文件

pt权重文件解析 权重文件怎么生成_python_09


添加环境变量:

vim ~/.bashrc

pt权重文件解析 权重文件怎么生成_python_10


然后保存退出

将下载的TensorRT文件解压,之后进入TensorRT7.2.3/python文件夹下:

pt权重文件解析 权重文件怎么生成_目标跟踪_11

有许多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环境下,

pt权重文件解析 权重文件怎么生成_python_12


安装成功

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问题

pt权重文件解析 权重文件怎么生成_fastreid_13


解决:将batch-size 大小改为1

2.getPluginCreater问题

pt权重文件解析 权重文件怎么生成_pt权重文件解析_14


解决:在trt_inference.py文件里添加下面一行

pt权重文件解析 权重文件怎么生成_python_15


这一步生成的文件

pt权重文件解析 权重文件怎么生成_pt权重文件解析_16


此时的权重文件已经降至137.13M,轻量化了一半还多。

5.将其嵌入到deepsort模型中

在deepsort.py同一目录下,上传fast_reid文件

pt权重文件解析 权重文件怎么生成_目标跟踪_17


a.导入包

pt权重文件解析 权重文件怎么生成_python_18


并在deepsort类中添加:

pt权重文件解析 权重文件怎么生成_TensorRT_19


在_get_features的修改如下:

pt权重文件解析 权重文件怎么生成_目标跟踪_20


可能遇到的问题:

pt权重文件解析 权重文件怎么生成_TensorRT_21


解决:

找到报错的行,在这之前加上

Torch.cuda.set_device(gpu_idx)

并且在最前面加上

pt权重文件解析 权重文件怎么生成_pt权重文件解析_22


opt.device与gpu_idx都指gpu的块数。