当前位置:网站首页>(亲测有效)paddledetection在Jetson上的编译指南
(亲测有效)paddledetection在Jetson上的编译指南
2022-04-22 06:04:00 【脆皮茄条】
本文档是在NVIDIA Jetson Xavier NX (Jetpack的版本为4.4.1)上部署PaddleDetection的c++推理教程。
Jetpack 4.4.1的环境配置为:
CUDA 10.2
cuDNN 8.8.0
1. 获取部署代码
笔者下载的是2.3版本。
下载链接如下:https://github.com/PaddlePaddle/PaddleDetection.git
2. 下载paddle_inference预测库,下载链接如下:https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html

解压后的文件夹内容如下;
paddle_inference
├── paddle # paddle核心库和头文件
├── third_party # 第三方依赖库和头文件
└── version.txt # 版本和编译信息
3. 进入PaddleDetection-release-2.3\deploy\cpp\scripts文件中
编译cmake的命令在scripts/build.sh中,通过vim修改主要参数,修改后的例子如下:
# 是否使用GPU(即是否使用 CUDA)
WITH_GPU=ON
# 是否使用MKL or openblas,TX2需要设置为OFF
WITH_MKL=ON
# 是否集成 TensorRT(仅WITH_GPU=ON 有效)
WITH_TENSORRT=ON
# paddle 预测库lib名称,由于不同平台不同版本预测库lib名称不同,请查看所下载的预测库中`paddle_inference/lib/`文件夹下`lib`的名称
PADDLE_LIB_NAME=libpaddle_inference
# TensorRT 的include路径
TENSORRT_INC_DIR=/usr/include/aarch64-linux-gnu
# TensorRT 的lib路径
TENSORRT_LIB_DIR=/usr/lib/aarch64-linux-gnu
# Paddle 预测库路径(上一步下载的paddle_inference解压后的路径)
PADDLE_DIR=/path/to/paddle_inference
# CUDA 的 lib 路径
CUDA_LIB=/usr/local/cuda-10.2/lib64
# CUDNN 的 lib 路径
CUDNN_LIB=/usr/lib/aarch64-linux-gnu/
# 是否开启关键点模型预测功能
WITH_KEYPOINT=ON
# 是否开启跟踪模型预测功能
WITH_MOT=OFF
MACHINE_TYPE=`uname -m`
echo "MACHINE_TYPE: "${
MACHINE_TYPE}
if [ "$MACHINE_TYPE" = "x86_64" ]
then
echo "set OPENCV_DIR for x86_64"
# linux系统通过以下命令下载预编译的opencv
mkdir -p $(pwd)/deps && cd $(pwd)/deps
wget -c https://paddledet.bj.bcebos.com/data/opencv-3.4.16_gcc8.2_ffmpeg.tar.gz
tar -xvf opencv-3.4.16_gcc8.2_ffmpeg.tar.gz && cd ..
# set OPENCV_DIR
OPENCV_DIR=$(pwd)/deps/opencv-3.4.16_gcc8.2_ffmpeg
elif [ "$MACHINE_TYPE" = "aarch64" ]
then
echo "set OPENCV_DIR for aarch64"
# TX2平台通过以下命令下载预编译的opencv
mkdir -p $(pwd)/deps && cd $(pwd)/deps
wget -c https://bj.bcebos.com/v1/paddledet/data/TX2_JetPack4.3_opencv_3.4.6_gcc7.5.0.tar.gz
tar -xvf TX2_JetPack4.3_opencv_3.4.6_gcc7.5.0.tar.gz && cd ..
# set OPENCV_DIR
OPENCV_DIR=$(pwd)/deps/TX2_JetPack4.3_opencv_3.4.6_gcc7.5.0/
else
echo "Please set OPENCV_DIR manually"
fi
echo "OPENCV_DIR: "$OPENCV_DIR
# 以下无需改动
rm -rf build
mkdir -p build
cd build
cmake .. \
-DWITH_GPU=${
WITH_GPU} \
-DWITH_MKL=${
WITH_MKL} \
-DWITH_TENSORRT=${
WITH_TENSORRT} \
-DTENSORRT_LIB_DIR=${
TENSORRT_LIB_DIR} \
-DTENSORRT_INC_DIR=${
TENSORRT_INC_DIR} \
-DPADDLE_DIR=${
PADDLE_DIR} \
-DWITH_STATIC_LIB=${
WITH_STATIC_LIB} \
-DCUDA_LIB=${
CUDA_LIB} \
-DCUDNN_LIB=${
CUDNN_LIB} \
-DOPENCV_DIR=${
OPENCV_DIR} \
-DPADDLE_LIB_NAME=${
PADDLE_LIB_NAME} \
-DWITH_KEYPOINT=${
WITH_KEYPOINT} \
-DWITH_MOT=${
WITH_MOT}
make
echo "make finished!"
修改脚本设置好主要参数后,执行build脚本:
sh ./scripts/build.sh
执行完build脚本后,会在deploy/cpp文件中生成build文件夹,编译后的文件在build文件中。
4. 预测和可视化
编译成功后,预测程序为build/main,其主要命令参数说明如下:
参数说明:
--model_dir 导出的检测预测模型所在路径
--model_dir_keypoint Option
--image_file 要预测的图片文件路径
--image_dir 要预测的图片文件夹路径
--video_file 要预测的视频文件路径
--camera_id Option
--device 运行时的设备,可选择CPU/GPU/XPU,默认为CPU
--gpu_id 指定进行推理的GPU device id(默认值为0)
--run_mode 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)
--batch_size 检测模型预测时的batch size,在指定image_dir时有效
--batch_size_keypoint 关键点模型预测时的batch size,默认为8
--run_benchmark 是否重复预测来进行benchmark测速 |
--output_dir 输出图片所在的文件夹, 默认为output |
--use_mkldnn CPU预测中是否开启MKLDNN加速
--cpu_threads 设置cpu线程数,默认为1
--use_dark 关键点模型输出预测是否使用DarkPose后处理,默认为true
例子如下:
./main --model_dir=/path/to/yolov3_darknet --image_file=/path/to/test.jpg --device=GPU
版权声明
本文为[脆皮茄条]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43917589/article/details/122714940
边栏推荐
- Mobile end touch bottom loading animation (UNI)
- Generate order write off QR code and scan the code to complete write off
- 编译代码时缺少头文件No such file or directory #include “XXXXXX.h“
- Daily question - find the maximum monotonic increasing number less than the target number
- 肠-肝轴:宿主-微生物群相互作用影响肝癌发生
- spark案例——wordcount
- 抗生素对微生物组和人体健康的影响
- Difference between canvas and SVG
- 解决:AttributeError: module ‘yaml‘ has no attribute ‘CSafeLoader‘
- 饮食-肠道微生物群对心血管疾病的相互作用
猜你喜欢
随机推荐
2021-09-03 爬虫模板(只支持静态页面)
如何调节肠道菌群?常见天然物质、益生菌、益生元的介绍
Numpy的广播机制(附实例)
神经网络激活函数的作用、类型、设计原则
移动端触底加载动画 (uni)
【AI视野·今日Sound 声学论文速览 第三期】Wed, 20 Apr 2022
Comparative analysis of slope and aspect between ArcMap tin and grid DEM
Mobile end touch bottom loading animation (UNI)
《深度学习》花书学习第一周
How is the diversity of flora formed, the relationship with health, and how to improve it?
数据密集型应用系统设计专题
【AI视野·今日Sound 声学论文速览 第一期】Thu, 14 Apr 2022
win10没有本地组策略怎么办?
解决seq2seq+attention机器翻译中的技术小难题
《深度学习》花书学习第二周
glide 4.0 之前 glide 设置圆形图片 设置图片圆角 (可一起设置4个角 也可以单独的设置 其中某几个的角 )
让MATLAB2018b支持VS2019的mex配置
什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
Nature Medicine 揭示冠状动脉疾病的个体危险因素
win10完美安装cuda11.x + pytorch 1.9 (血流成河贴┭┮﹏┭┮)让你的torch.cuda.is_available()变成True!









