查看Jetson nx 的JetPack 版本和 CUDA、cuDNN、OPENCV、TensorRT版本
sudo apt-get update
sudo apt-get install python3-pip python3-dev -y
sudo -H pip3 install jetson-stats
sudo jtop

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
#清华源 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
sudo apt-get update
Deepstream SDK 版本配置需要根据自己 Jetson 设备安装的 JetPack 版本来对应安装,我的 Jetson NX 安装的 JetPack 版本为 4.5 ,所以我安装的 Deepstrean SDK 为5.0,下图为 Deepstream SDK 版本和 JetPack 版本的对应关系。
sudo apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev
sudo tar -xvf deepstream_sdk_5.0_jetson.tbz2 -C /
cd /opt/nvidia/deepstream/deepstream-5.0
sudo ./install.sh
sudo ldconfig
git clone https://github.com/edenhill/librdkafka.git
cd librdkafka
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
make
sudo make install
将生成的库复制到Deepstream目录下:
sudo mkdir -p /opt/nvidia/deepstream/deepstream-5.0/lib
sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-5.0/lib
注明:JetPack 4.5 为较低 Jetson 系统版本,需要把SDK Manager安装在Ubuntu16.04或Ubuntu18.04系统上

sudo apt install ./sdkmanager_1.9.0-10816_amd64.deb
sdkmanager
SDK Manager 官方使用说明 NVIDIA SDK MANAGER

deepstream-app --version-all

进入目录/opt/ nvidia /deepstream/deepstream-5.0/samples
进行功能验证
sudo deepstream-app -c <path_to_config_file>
sudo apt-get install build-essential make cmake cmake-curses-gui -y
sudo apt-get install git g++ pkg-config curl -y
sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module -y
sudo apt-get install libhdf5-serial-dev hdf5-tools -y
sudo apt-get install nano locate screen -y
sudo apt-get install libfreetype6-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev openssl -y
sudo apt-get install libssl-dev libcurl4-openssl-dev -y
sudo apt-get install cython3 -y
sudo apt-get install gfortran -y
sudo apt-get install libjpeg-dev -y
sudo apt-get install libopenmpi2 -y
sudo apt-get install libopenblas-dev -y
sudo apt-get install libjpeg-dev zlib1g-dev -y
sudo apt-get install build-essential -y
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev -y
sudo apt-get install libxvidcore-dev libx264-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
sudo apt-get install ffmpeg -y

pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl

注:若安装时出现 IIIegal instruction 错误,可在 ~/.bashrc 添加 export OPENBLAS_CORETYPE = ARMV8
输入指令
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
sudo python3 setup.py install
python3
import torch
torch.__version__
import torchvision
torchvision.__version__
quit()

mkdir ~/.pip
sudo gedit ~/.pip/pip.conf
改为清华源,将下面内容输入到 pip.conf里面,然后保存退出
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=https://pypi.tuna.tsinghua.edu.cn
由于不同版本的Yolov5网络架构不同,所以 Yolov5 和 tensorrtx 也有对应版本,我下载 Yolov5-5.0 的版本 Yolov5-5.0链接
python3 -m pip install --upgrade pip
pip3 install wheel
unzip yolov5-5.0.zip
cd yolov5-5.0
pip3 install -r requirements.txt //安装 yolov5-5.0所需要的支持包,这个方法可能会失败
//若安装支持包失败,可以在直接进行推理执行命令
python3 detect.py
//报故缺什么安装什么即可,例如 pip3 install matplotlib==3.2.2 ,具体安装版本可参考yolov5-5.0目录下requirements.txt

因为weights目录下的 download_weights.sh 脚本和上一步 python3 detect.py 推理 下载的都是最新版的 pt 文件,这里需要是 5.0 版本的 pt 文件,下载链接 yolov5/releases/tag/v5.0链接 , 下拉到最底部,下载 pt 文件
将下载的 yolov5s.pt 复制 yolov5-5.0 文件夹下,在 yolov5-5.0/model/common.py 源码里添加 SPPF 的类,将下面的源码复制 common.py 里
import warnings
class SPPF(nn.Module):
# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13))
super().__init__()
c_ = c1 // 2 # hidden channels
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c_ * 4, c2, 1, 1)
self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
def forward(self, x):
x = self.cv1(x)
with warnings.catch_warnings():
warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning
y1 = self.m(x)
y2 = self.m(y1)
return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
cd yolov5-5.0
python3 detect.py --source data/images/bus.jpg --weights ./yolov5s.pt

window主机进行 RTSP 推流视频文件,Jetson nx 进行拉流图像解析
cd yolov5-5.0
python3 detect.py --source 'rtsp://192.168.1.123:8554/video' --weights ./yolov5s.pt

修改 utils/datasets.py 源码,将以下内容屏蔽掉
cd yolov5-5.0
python3 detect.py --source 0 --weights ./yolov5s.pt

unzip tensorrtx-yolov5-v5.0.zip
cp tensorrtx-yolov5-v5.0/yolov5/gen_wts.py ../../yolov5-5.0 //将TensorRT目录下的gen_wts.py复制到yolov5目录下
cd ../../yolov5-5.0
python3 gen_wts.py -w yolov5s.pt -o yolov5s.wts //生成wts文件,-w 为你的*.pt文件,-o 为转换生成的文件名称

cd ../tensorrtx-yolov5-v5.0/yolov5
mkdir build && cd build
cp ../../../yolov5-5.0/yolov5s.wts ./ //将yolov5目录下生成的wts文件复制到TensorRT的build目录下
cmake .. //编译
make -j8 //生成yolov5执行文件
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s //生成engine文件,生成的wts文件用的是yolov5s.pt,所以结尾我用的s
sudo ./yolov5 -d yolov5s.engine ../samples //测试一下,测试结果就在build目录下

下载链接 Yolov5-in-Deepstream-5.0,或者命令下载
git clone https://github.com/DanaHan/Yolov5-in-Deepstream-5.0.git
更改 Makefile, 我直接 make 编译 libnvdsinfer_custom_impl_Yolo.so库文件时一直失败,后来发现目录Yolov5-in-Deepstream-5.0/Deepstream 5.0/nvdsinfer_custom_impl_Yolo/下的 yolo.cpp 和 yoloPlugins.cpp 其实用不到,可以直接屏蔽到,就可以编译成功

cd Yolov5-in-Deepstream-5.0/Deepstream 5.0/nvdsinfer_custom_impl_Yolo
make
将 TensorRT 加速推理步骤生成的 .engine 和 libmyplugins.so 和 Jetson 设备 安装的 Deepstream 源码类别里YOLO目录下的标签集 labels.txt 复制到 Yolov5-in-Deepstream-5.0/Deepstream 5.0/ 目录下
配置 config_infer_primary_yolov5.txt 文件,确保引擎文件和库文件名称和路径正确

可通过修改 deepstream_app_config_yoloV5.txt 来配置图像源,是否打开 Tracker ,是否调用 GPU 加速

cd Yolov5-in-Deepstream-5.0/Deepstream 5.0/
LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt


cd Yolov5-in-Deepstream-5.0/Deepstream 5.0/
LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt


cd Yolov5-in-Deepstream-5.0/Deepstream 5.0/
LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删