
Jetson Orin NANO实战用虚拟环境为YOLOv5打造无冲突开发环境当你第三次因为PyTorch和TensorFlow版本冲突导致系统崩溃时或许该考虑给YOLOv5项目一个独立的房间了。Jetson Orin NANO作为边缘计算利器其ARM架构和有限的存储空间让环境管理变得尤为棘手。本文将手把手带你用虚拟环境构建一个纯净的YOLOv5工作区涵盖从环境隔离到实时检测的全流程。1. 为什么Jetson需要虚拟环境在Jetson Orin NANO这样的资源受限设备上同时运行多个AI项目就像在狭小的厨房里让多位厨师共用一个灶台。当不同项目需要不同版本的PyTorch、TensorRT或OpenCV时系统级安装很快就会变成依赖关系的地狱。以下是典型的问题场景torch与torchvision版本锁死官方提供的PyTorch wheel包通常与特定CUDA版本绑定Python系统环境污染pip install --user安装的包可能影响所有项目磁盘空间争夺战Jetson的eMMC存储经不起重复安装大型库虚拟环境通过创建隔离的Python运行时完美解决这些问题。我们推荐使用venv而非conda因为# conda在ARM架构上的性能开销较大 # 且官方源对Jetson支持有限 python3 -m venv yolov5_env --system-site-packages提示添加--system-site-packages参数可复用已安装的系统库节省宝贵空间2. 构建专属YOLOv5环境2.1 基础环境搭建首先激活新创建的虚拟环境source yolov5_env/bin/activate接着安装Jetson专属的PyTorch——这是整个流程中最关键的一步。NVIDIA为Orin NANO提供了预编译的PyTorch wheel我们需要精确匹配JetPack版本JetPack版本PyTorch版本下载地址5.1.22.1.0NVIDIA开发者论坛5.1.12.0.0同上安装命令示例pip3 install torch-2.1.0-cp310-cp310-linux_aarch64.whl2.2 依赖精细化管理YOLOv5的requirements.txt通常包含大量通用依赖但在Jetson上需要特别处理# 修改后的requirements-jetson.txt numpy1.23.5 # ARM兼容版本 opencv-python-headless4.5.4.60 # 不带GUI支持 pycocotools https://github.com/ppwwyyxx/cocoapi/archive/master.zip # ARM适配使用pip-compile生成精确依赖锁pip install pip-tools pip-compile requirements-jetson.in requirements.txt3. 摄像头集成实战CSI和USB摄像头在虚拟环境中需要特殊配置才能正常工作。以下是两种摄像头的处理方案3.1 CSI摄像头(GStreamer方案)import cv2 def get_csi_camera(width1280, height720): return cv2.VideoCapture( nvarguscamerasrc ! video/x-raw(memory:NVMM), fwidth(int){width}, height(int){height}, format(string)NV12, framerate(fraction)30/1 ! nvvidconv ! video/x-raw, format(string)BGRx ! videoconvert ! video/x-raw, format(string)BGR ! appsink, cv2.CAP_GSTREAMER)3.2 USB摄像头(V4L2方案)def get_usb_camera(device_index0): cap cv2.VideoCapture(device_index) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) return cap注意在虚拟环境中使用摄像头需要确保用户组权限sudo usermod -a -G video $USER4. 环境迁移与性能优化4.1 环境快照技术使用pip freeze会包含系统路径我们需要过滤出仅虚拟环境内的包pip list --formatfreeze | grep -v ^\-e | cut -d -f 1 requirements.txt对于需要完整迁移的场景可以打包整个环境目录tar czf yolov5_env.tar.gz yolov5_env # 在新设备上解压后执行 python3 -m venv --copies yolov5_env4.2 TensorRT加速技巧在虚拟环境中集成TensorRT需要设置库路径import os os.environ[LD_LIBRARY_PATH] /usr/local/cuda/lib64: os.environ.get(LD_LIBRARY_PATH, )YOLOv5模型转换示例python export.py --weights yolov5s.pt --include engine --device 0 --half实际部署中发现在Orin NANO上启用FP16精度可使推理速度提升35%而模型精度仅下降不到1%。