查看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
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
TensorRT-yolov5-v5.0版本链接
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