作为一名在嵌入式AI领域摸爬滚打多年的开发者,我清楚地记得第一次接触Jetson Nano时的兴奋与困惑。这款仅有信用卡大小的开发板,却蕴含着惊人的AI计算能力。今天,我将分享一套经过实战检验的Jetson Nano深度学习环境搭建方案,重点介绍YOLOv5模型的部署过程。
Jetson Nano之所以成为边缘AI开发的首选平台,主要基于三大核心优势:
计算性能与功耗的完美平衡:搭载128核Maxwell架构GPU,提供472GFLOPS的浮点运算能力,而典型功耗仅5-10W。这种能效比使得它非常适合无人机、移动机器人等对功耗敏感的应用场景。
完整的软件生态支持:NVIDIA提供了JetPack SDK,包含CUDA、cuDNN、TensorRT等关键组件,为深度学习推理提供了完整的工具链支持。特别是TensorRT的优化能力,可以将模型推理速度提升2-3倍。
丰富的硬件接口:拥有40针GPIO接口、4个USB3.0接口、CSI摄像头接口等,便于连接各类传感器和外设。在我们的机器人视觉项目中,就是通过CSI接口连接奥比中光3D相机实现深度感知。
在开始刷机前,需要准备以下硬件和软件:
重要提示:避免使用劣质电源适配器,供电不足会导致系统不稳定甚至损坏硬件。我们团队曾因使用3A电源导致频繁死机,更换为4A电源后问题立即解决。
常见问题解决方案:
Jetson Nano预装了CUDA工具包,但需要正确配置环境变量才能使用:
bash复制# 编辑~/.bashrc文件
nano ~/.bashrc
# 添加以下内容
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# 使配置生效
source ~/.bashrc
验证安装:
bash复制nvcc --version
# 应显示类似以下信息
# nvcc: NVIDIA (R) Cuda compiler
# release 10.2, V10.2.300
由于默认源在国外,更新速度较慢,建议更换为国内镜像源:
bash复制sudo sed -i 's/ports.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y
bash复制sudo apt install -y \
python3-pip \
python3-dev \
cmake \
libopenblas-dev \
liblapack-dev \
libjpeg-dev \
zlib1g-dev
由于Jetson Nano是ARM架构,常规Anaconda不兼容,需要使用专为ARM优化的Archiconda:
bash复制wget https://github.com/Archiconda/build-tools/releases/download/0.2.3/Archiconda3-0.2.3-Linux-aarch64.sh
bash Archiconda3-0.2.3-Linux-aarch64.sh
source ~/.bashrc
bash复制conda create -n yolov5 python=3.8
conda activate yolov5
bash复制pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Jetson Nano需要安装特定版本的PyTorch:
bash复制wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp38-cp38-linux_aarch64.whl
pip install torch-1.8.0-cp38-cp38-linux_aarch64.whl
验证安装:
python复制import torch
print(torch.__version__) # 应输出1.8.0
print(torch.cuda.is_available()) # 应输出True
bash复制git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
安装TensorRT并转换模型:
bash复制sudo apt install tensorrt
python export.py --weights yolov5s.pt --include engine --device 0
bash复制# 安装依赖
sudo apt install libudev-dev libusb-1.0-0-dev
# 编译安装SDK
git clone https://github.com/orbbec/OrbbecSDK
cd OrbbecSDK
mkdir build && cd build
cmake ..
make -j4
sudo make install
python复制import pyorbbecsdk
config = pyorbbecsdk.Config()
pipeline = pyorbbecsdk.Pipeline(config)
pipeline.start()
frame = pipeline.wait_for_frames()
print("成功获取深度帧:", frame.get_depth_frame())
python复制model = torch.quantization.quantize_dynamic(
model, {torch.nn.Linear}, dtype=torch.qint8
)
bash复制sudo nvpmodel -m 0 # 最大性能模式
sudo jetson_clocks # 锁定最高频率
bash复制# 增加swap空间
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
CUDA内存不足:
TensorRT转换失败:
相机连接异常:
这套环境配置方案已经在我们团队的多个实际项目中得到验证,包括工业质检、服务机器人视觉导航等场景。特别是在2024RoboCup中国赛中,我们的机器人基于此配置实现了稳定的实时3D目标检测。