1. Jetson TX2开发者套件开箱与系统烧录
拿到Jetson TX2开发板的第一件事就是完成系统烧录。这里推荐使用NVIDIA官方提供的SDK Manager工具,它能帮你一站式完成系统镜像和开发环境的部署。我实测下来,这个工具确实能省去不少手动配置的麻烦,不过有几个坑需要特别注意。
首先,你需要准备一台运行Ubuntu 16.04或18.04的电脑(物理机或虚拟机都可以)。我在VMware上装了个Ubuntu 18.04,实测完全兼容。下载SDK Manager时,建议直接从NVIDIA开发者官网获取最新版本,避免使用第三方源可能带来的兼容性问题。
烧录系统时,记得用micro-USB线连接开发板和电脑。这里有个小技巧:建议使用原装线缆,我试过几根第三方线,有的会出现识别不稳定的情况。在SDK Manager界面,设备类型选择Jetson TX2,然后重点来了——不要勾选Host Machine选项,除非你打算同时在主机上安装开发环境。
系统烧录过程中,建议保持网络畅通,因为工具会自动下载需要的组件。第一次运行时可能会比较慢,我实测大概需要30-60分钟,具体取决于你的网速。完成后,开发板会自动重启进入Ubuntu系统,这时候你就可以设置用户名和密码了。
2. 系统迁移至SSD完整指南
Jetson TX2板载的eMMC存储只有32GB,跑几个AI模型就捉襟见肘了。我强烈建议将系统迁移到SSD,不仅能解决存储瓶颈,还能显著提升IO性能。这里分享下我亲测有效的迁移方案。
首先需要准备一个M.2接口的SSD(建议至少256GB)和对应的转接卡。将SSD安装到开发板的PCIe插槽后,进入系统打开磁盘工具进行格式化。这里要注意选择ext4文件系统,我试过其他格式会导致后续步骤失败。
迁移工具我推荐使用jetsonhacks开发的rootOnNVMe脚本,这个方案最稳定。操作步骤如下:
sudo apt update sudo apt upgrade git clone https://github.com/jetsonhacks/rootOnNVMe.git cd rootOnNVMe ./copy-rootfs-ssd.sh ./setup-service.sh这个脚本会自动将系统文件拷贝到SSD,并设置开机自动挂载。完成后还需要修改/boot/extlinux/extlinux.conf文件,把root参数从/dev/mmcblk0p1改为/dev/nvme0n1p1。具体修改位置如下:
LABEL primary MENU LABEL primary kernel LINUX /boot/Image INITRD /boot/initrd APPEND ${cbootargs} quiet root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4重启后,在终端输入df -h,如果看到根目录挂载在nvme0n1p1上,说明迁移成功了。我迁移后实测IO性能提升了3倍,模型加载速度明显加快。
3. JetPack SDK组件安装与验证
系统迁移完成后,需要安装JetPack SDK提供的关键组件。重新打开SDK Manager,这次要勾选Jetson SDK Components下的所有选项,特别是CUDA、cuDNN和TensorRT这些深度学习必备组件。
安装过程可能会比较久,我建议放在晚上进行。完成后,可以通过几个命令验证是否安装成功:
nvcc -V # 查看CUDA版本 jtop # 查看硬件状态和组件版本如果看到CUDA 10.2的输出(TX2最新支持的版本),说明安装正确。jtop是个非常实用的工具,可以实时监控CPU/GPU使用率、温度和内存情况,建议通过以下命令安装:
sudo apt install python3-pip sudo -H pip3 install jetson-stats4. Conda环境配置技巧
为了避免污染系统环境,我强烈建议使用Conda创建独立的Python环境。由于TX2是ARM架构,不能直接用Anaconda,需要安装专门适配的Miniforge:
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh chmod +x Miniforge3-Linux-aarch64.sh ./Miniforge3-Linux-aarch64.sh安装时注意看提示,当询问"Do you wish the installer to initialize Miniforge3"时选择yes。安装完成后,如果觉得终端启动变慢,可以禁止自动激活base环境:
conda config --set auto_activate_base false然后创建一个专用于YOLOv5的Python 3.6环境:
conda create -n py36 python=3.6 conda activate py365. PyTorch for Jetson TX2安装详解
在ARM架构上安装PyTorch需要特别注意版本兼容性。NVIDIA官方提供了预编译的whl文件,我们需要下载对应CUDA 10.2的版本:
sudo apt install libopenblas-base libopenmpi-dev libomp-dev wget https://nvidia.box.com/shared/static/wa34qwrwtk9njtyarwt5nvo6imenfy26.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl pip install torch-1.10.0-cp36-cp36m-linux_aarch64.whl安装完成后验证PyTorch是否能正确识别CUDA:
import torch print(torch.__version__) print('CUDA available:', torch.cuda.is_available())如果输出CUDA available: True,说明安装成功。接下来安装torchvision,这里需要从源码编译:
sudo apt install libavcodec-dev libavformat-dev libswscale-dev git clone -b v0.11.1 https://github.com/pytorch/vision torchvision cd torchvision export BUILD_VERSION=0.11.1 python3 setup.py install --user6. YOLOv5环境部署与测试
现在可以开始部署YOLOv5了。首先安装依赖项:
sudo apt install gfortran build-essential libatlas-base-dev conda install matplotlib seaborn pyyaml tqdm pip install opencv-python==4.5.5.64然后克隆YOLOv5仓库(建议使用v6.0版本):
git clone -b v6.0 https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt测试是否能够正常运行:
python detect.py --source data/images/bus.jpg --weights yolov5s.pt如果看到生成的runs/detect/exp目录下有检测结果图片,说明环境配置成功。我在TX2上实测yolov5s模型能达到10FPS左右的推理速度,对于边缘设备来说已经相当不错。
7. 性能优化技巧
为了让YOLOv5在TX2上跑得更流畅,这里分享几个实测有效的优化技巧:
- 启用TensorRT加速:将PyTorch模型转换为TensorRT引擎可以显著提升推理速度。可以使用NVIDIA提供的torch2trt工具:
git clone https://github.com/NVIDIA-AI-IOT/torch2trt cd torch2trt python setup.py install使用FP16精度:Jetson TX2支持FP16计算,能减少显存占用并提升速度。在YOLOv5的detect.py中添加
--half参数即可启用。调整电源模式:TX2有几种不同的电源模式,高性能模式下GPU频率更高:
sudo nvpmodel -m 0 # 最大性能模式 sudo jetson_clocks # 锁定最高频率- 优化OpenCV:默认安装的OpenCV可能没有启用硬件加速,可以重新编译开启CUDA和NVDEC支持。
经过这些优化后,我的YOLOv5s模型推理速度从10FPS提升到了15FPS,效果非常明显。当然,如果对精度要求不高,还可以考虑使用更小的模型如yolov5n,在TX2上能跑到20+FPS。