将fastreid权重文件轻量化,并将其嵌入deepsort模型中,踩坑集锦

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的块数。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值