TensorRT person detection RFBNet300
首先声明,原始的pytorch程序是songwsx大佬的(https://github.com/songwsx/RFSong-7993.git)
SSD类的网络都是prior anchor和网络输出的anchor进行解码运算。为了便于运算对网络输出做了如下处理:
- pytorch网络输出是(7759,4)和(7759,2),为了便于运算,将其reshape成(1,7759x4+7759x2),所以网络的输出为(1,46554)
- 对网络输出的数据和prior anchor 一起做解码运算
- 图像数据输入网络,使用的是 cuda 的opencv读入gpu上,然后写个cuda程序做预处理送入网络,这么做的原因是在用cpu处理的时候速度有些慢
- 网络输出的数据到转换到真实的box都在cpu上运行,包括后面的nms
1.ubuntu 18.04
2.CUDA 10.2
3.TensorRT 6.0
4.CPU i5-8250
5. GPU MX250
6. opencv 3.4.6(CUDA)
1. 终端切换到程序根目录
2. cd cuda_lib && mkdir build && cd build && cmake .. && make
3. cd ../
4. mkdir build && cd build && cmake .. && make
- 注意更改main.cpp里的你要运行的视频地址
- 根据我的CMakeLists.txt 配置你的CMakeLists.txt
- cuda 的opencv 正确安装
1.测试时间: 1280 × 720视频 从模型输入到显示视频为15ms左右,此测试在MX250移动显卡上,显存消耗大概300M
将来想法是将其推理时间减小到10ms左右,主要是模型压缩,还有将解码部分全部由gpu上运行,并且加入deep_sort进行跟踪