tensorRT实现yolov5+Deepsort目标跟踪加速

一、参考资料

yolov5_deepsort_tensorrt

二、实验环境

2.1 系统环境

Environment
Operating System + Version: Ubuntu + 16.04
TensorRT Version: 7.1.3.4
GPU Type: GeForce GTX1650,4GB
Nvidia Driver Version: 470.63.01
CUDA Version: 10.2.300
CUDNN Version: 7.6.5
Python Version (if applicable): 3.6.14
Anaconda Version:4.10.3
virtualenv:20.13.0
gcc:7.5.0
g++:7.5.0

2.2 requirements-gpu.txt

absl-py==1.0.0
appdirs==1.4.4
cached-property==1.5.2
cachetools==4.2.4
certifi==2021.10.8
charset-normalizer==2.0.10
cycler==0.11.0
Cython==0.29.26
dataclasses==0.8
decorator==5.1.1
distlib==0.3.4
easydict==1.9
filelock==3.4.1
flake8==4.0.1
future==0.18.2
gdown==3.10.1
google-auth==2.3.3
google-auth-oauthlib==0.4.6
graphsurgeon @ file:///home/yichao/360Downloads/TensorRT-7.1.3.4/graphsurgeon/graphsurgeon-0.4.5-py2.py3-none-any.whl
grpcio==1.43.0
h5py==3.1.0
idna==3.3
imageio==2.13.5
importlib-metadata==4.2.0
importlib-resources==5.4.0
isort==4.3.21
kiwisolver==1.3.1
Mako==1.1.6
Markdown==3.3.5
MarkupSafe==2.0.1
matplotlib==3.3.4
mccabe==0.6.1
numpy==1.19.5
oauthlib==3.1.1
opencv-python==4.5.5.62
pandas==1.1.5
Pillow==8.4.0
platformdirs==2.4.0
protobuf==3.19.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.8.0
pycuda==2020.1
pyflakes==2.4.0
pyparsing==3.0.6
PySocks==1.7.1
python-dateutil==2.8.2
pytools==2021.2.9
pytz==2021.3
PyYAML==6.0
requests==2.27.1
requests-oauthlib==1.3.0
rsa==4.8
scipy==1.5.4
seaborn==0.11.2
six==1.16.0
tb-nightly==2.8.0a20220117
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorrt @ file:///home/yichao/360Downloads/TensorRT-7.1.3.4/python/tensorrt-7.1.3.4-cp36-none-linux_x86_64.whl
torch @ file:///home/yichao/%E4%B8%8B%E8%BD%BD/torch-1.9.0%2Bcu102-cp36-cp36m-linux_x86_64.whl
torchvision @ file:///home/yichao/%E4%B8%8B%E8%BD%BD/torchvision-0.10.0%2Bcu102-cp36-cp36m-linux_x86_64.whl
tqdm==4.62.3
typing_extensions==4.0.1
uff @ file:///home/yichao/360Downloads/TensorRT-7.1.3.4/uff/uff-0.6.9-py2.py3-none-any.whl
urllib3==1.26.8
virtualenv==20.13.0
Werkzeug==2.0.2
yacs==0.1.8
yapf==0.32.0
zipp==3.6.0

三、关键步骤

3.1 下载github源代码

git clone https://github.com/cong/yolov5_deepsort_tensorrt.git

3.2 (可选)创建virtualenv虚拟环境

cd yolov5_deepsort_tensorrt

virtualenv --system-site-packages -p /usr/bin/python venv

source ./venv/bin/activate

3.3 安装依赖包

pip install -r requirements.txt

3.4 运行

python demo_trt.py

3.5 资源占用情况

3.5.1 CPU资源

tensorRT实现yolov5+Deepsort目标跟踪加速_第1张图片

3.5.2 GPU显存占用情况

Thu Jan 20 10:18:19 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.63.01    Driver Version: 470.63.01    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| 27%   37C    P0    25W /  75W |   2962MiB /  3903MiB |     40%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1481      G   /usr/lib/xorg/Xorg                216MiB |
|    0   N/A  N/A     17481      C   python                           2742MiB |
+-----------------------------------------------------------------------------+

四、FP32_FP16_INT8对比

FPS 显存 CPU 内存 精度
FP32 9 2950MB 100% 4.6GB ~
FP16 10 2742MB 100% 4GB ~
INT8 30 2525MB 100% 4GB 损失较大

五、用C++部署

5.1 关键步骤

  1. 将所有的C++程序打包成 .so 文件;
  2. 用python调用C++程序;

5.2 yolov5_deepsort_tensorrt_cpp

5.2.1 项目链接

5.2.2 项目结构

.
├── deepsort
│   └── deepsort.engine  # deepsort引擎
├── demo.py  # python调用的入口
├── LICENSE.txt
├── README.md
├── venv  # virtualenv虚拟环境
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── yolo_deepsort.cpython-37m-x86_64-linux-gnu.so  # C++打包成so文件
└── yolov5
    └── engine.trt  # yolov5引擎

5.2.3 demo.py

# -*- coding: utf-8 -*-
#!/usr/bin/python3
"""
Created on 2021/5/24 13:46
@Author: Wang Cong
@Email : iwangcong@outlook.com
@Version : 0.1
@File : demo_trt.py
"""
import yolo_deepsort
import cv2
import time

if __name__ == '__main__':

    yolo_engine = './yolov5/yolov5s.engine'
    sort_engine = './deepsort/deepsort.engine'
    capture = cv2.VideoCapture(0)
    yolo_deepsort_test = yolo_deepsort.Yolov5DeepSort(yolo_engine, sort_engine)

    fps = 0.0
    while True:
        ret, img = capture.read()
        if img is None:
            print('No image input!')
            break

        t1 = time.time()
        frame = yolo_deepsort_test.detect_track_frame(img)
        t2 = time.time() - t1
        print(t2*1000)
        cv2.imshow('frame', frame)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            break

    capture.release()
    cv2.destroyAllWindows()

你可能感兴趣的:(深度学习,目标跟踪,tensorRT,yolov5,DeepSort)