Jetson Orin Nano 新手避坑:从零部署YoloV5,我踩过的那些环境配置的‘雷’
Jetson Orin Nano 边缘AI部署实战YOLOv5环境配置全攻略与避坑指南1. 硬件准备与系统烧录Jetson Orin Nano作为NVIDIA新一代边缘计算设备其强大的AI算力与紧凑体积使其成为计算机视觉项目的理想选择。但在开始YOLOv5部署前正确的硬件准备至关重要。关键硬件检查清单确认设备型号为Jetson Orin Nano Developer Kit准备至少64GB高速microSD卡或NVMe SSD根据版本选择稳定的5V/4A电源适配器USB Type-C数据线用于强制恢复模式系统烧录环节最容易出现问题的三个关键点镜像下载验证务必从NVIDIA开发者网站下载与设备完全匹配的JetPack版本。常见错误包括使用了Jetson AGX Orin的镜像下载了不完整的压缩包建议验证SHA256校验值烧录环境配置推荐在Ubuntu 18.04/20.04主机上进行烧录避免使用Windows系统。必须安装的依赖sudo apt-get install qemu-user-static python3 python3-pip强制恢复模式操作正确进入恢复模式的步骤断开设备电源短接FC_REC和GND引脚位于40针GPIO接口的第2和第3引脚连接Type-C线到主机最后接通电源注意烧录过程中若出现USB device not recognized错误通常是由于VMware未正确配置USB直通。建议在物理机操作或检查虚拟机USB控制器设置。2. JetPack组件与CUDA环境配置成功烧录系统后首次启动需完成基础配置。这里隐藏着几个版本兼容性地雷JetPack 5.1.1默认组件版本组件版本号关键依赖项L4T35.3.1Linux内核5.10CUDA11.4.19cuDNN 8.6.0TensorRT8.5.2OpenCV 4.5.4cuDNN8.6.0.163Python 3.8环境配置中最易出错的三个环节CUDA路径设置修改~/.bashrc时常见的语法错误# 错误示例缺少$PATH连接符 export PATH/usr/local/cuda-11.4/bin # 正确写法 export PATH/usr/local/cuda-11.4/bin:$PATH显存分配调整Orin Nano的共享内存配置需要特别优化sudo nano /etc/systemd/nvzramconfig.sh将默认的mem$(((${totalmem}/2/${NRDEVICES})*1024))修改为mem$(((${totalmem}*3/${NRDEVICES})*1024))jtop监控工具安装推荐使用jetson-stats监控系统状态sudo pip3 install -U jetson-stats sudo systemctl restart jetson_stats.service验证安装sudo jtop3. PyTorch与torchvision精准安装Arm架构的PyTorch安装是最大的坑点之一。必须严格匹配的版本组合JetPack 5.1.1兼容矩阵组件官方推荐版本替代可用版本不兼容版本PyTorch1.14.01.13.0≥2.0.0torchvision0.15.10.14.1≥0.16.0分步安装指南安装编译依赖sudo apt-get install -y libopenblas-dev libjpeg-dev zlib1g-dev \ libpython3-dev libavcodec-dev libavformat-dev libswscale-dev下载预编译的PyTorch wheelwget https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl -O torch-1.14.0a044dac51c.nv23.02-cp38-cp38-linux_aarch64.whl pip3 install torch-1.14.0a044dac51c.nv23.02-cp38-cp38-linux_aarch64.whl源码编译torchvisiongit clone --branch v0.15.1 https://github.com/pytorch/vision.git cd vision export BUILD_VERSION0.15.1 python3 setup.py install --user验证安装成功的正确姿势import torch print(torch.__version__) # 应显示1.14.0 print(torch.cuda.is_available()) # 必须返回True4. OpenCV与GStreamer深度集成系统预装的OpenCV往往缺少GStreamer支持这是CSI摄像头无法工作的主要原因。推荐从源码编译关键编译参数cmake -D WITH_GSTREAMERON \ -D WITH_CUDAON \ -D CUDA_ARCH_BIN8.7 \ -D OPENCV_ENABLE_NONFREEON \ -D OPENCV_GENERATE_PKGCONFIGYES \ -D BUILD_EXAMPLESOFF \ -D BUILD_opencv_python3ON ..分阶段编译技巧# 第一阶段仅编译核心模块 make -j$(nproc) opencv_core opencv_imgproc opencv_videoio # 第二阶段编译剩余模块 make -j$(nproc) sudo make install验证GStreamer支持import cv2 print(cv2.getBuildInformation()) # 检查GStreamer是否为YESCSI摄像头测试命令gst-launch-1.0 nvarguscamerasrc ! video/x-raw(memory:NVMM),width1280,height720 ! nvvidconv flip-method0 ! video/x-raw,width640,height480 ! nvvidconv ! nvegltransform ! nveglglessink -e5. YOLOv5部署与性能优化官方YOLOv5仓库的部署相对简单但需要特别注意模型选择建议模型类型参数量Orin Nano推理速度(FPS)适用场景YOLOv5n1.9M85-110实时检测YOLOv5s7.2M45-60平衡精度与速度YOLOv5m21.2M20-30高精度要求部署步骤git clone https://github.com/ultralytics/yolov5 cd yolov5 pip3 install -r requirements.txtTensorRT加速技巧导出ONNX模型python3 export.py --weights yolov5n.pt --include onnx使用trtexec转换/usr/src/tensorrt/bin/trtexec --onnxyolov5n.onnx \ --saveEngineyolov5n.engine \ --fp16 --workspace2048推理测试python3 detect.py --weights yolov5n.engine --img 640 --source 06. DeepStream集成实战对于需要多路视频流处理的场景DeepStream是最佳选择。与YOLOv5集成的关键步骤安装DeepStream 6.2sudo tar -xvf deepstream_sdk_v6.2.0_jetson.tbz2 -C / cd /opt/nvidia/deepstream/deepstream-6.2 sudo ./install.sh配置YOLOv5插件git clone https://github.com/marcoslucianops/DeepStream-Yolo.git cd DeepStream-Yolo CUDA_VER11.4 make -C nvdsinfer_custom_impl_Yolo修改配置文件[primary-gie] custom-network-configyolov5n.cfg model-fileyolov5n.wts engine-fileyolov5n.engine启动多路视频分析deepstream-app -c deepstream_app_config.txt性能优化参数[streammux] batch-size4 # 根据显存调整 width1280 height7207. 真实项目中的经验分享在实际工业检测项目中我们总结出以下实用技巧CSI摄像头配置秘籍修改/opt/nvidia/deepstream/deepstream-6.2/samples/configs/deepstream-app/source1_csi_dec_infer_resnet_int8.txt[source0] camera-width1920 # 根据传感器最大分辨率设置 camera-height1080 camera-fps-n30 # 实际可达帧率内存泄漏排查定期检查内存使用watch -n 1 free -h温度控制策略配置风扇控制策略sudo jetson_clocks --fan电源管理技巧优化功耗配置sudo nvpmodel -m 0 # 最大性能模式 sudo jetson_clocks对于需要长期运行的场景建议添加看门狗定时器import subprocess def reset_watchdog(): subprocess.run([echo, 1, , /dev/watchdog])
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2630618.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!