Jetson Nano从零部署指南:系统安装、OpenCV编译与YOLO环境搭建

发布时间:2026/8/26 7:08:13
Jetson Nano从零部署指南:系统安装、OpenCV编译与YOLO环境搭建 1. 项目缘起为什么从Jetson Nano开始如果你对边缘计算、嵌入式AI或者机器人项目感兴趣那么Jetson Nano这个名字你一定不陌生。它就像是一个微型但功能齐全的AI大脑价格亲民功耗极低却能在本地实时处理图像识别、语音交互这些复杂的任务。我第一次接触它是为了一个智能巡检小车的项目需要在移动端实时跑一个轻量化的YOLO模型。当时市面上选择不少但综合考虑成本、社区支持和上手难度Jetson Nano成了我的首选。然而和所有嵌入式开发板一样拿到手的第一关往往不是写代码而是“点亮”它。系统安装和环境部署听起来像是按部就班的操作但实际过程中任何一个环节的疏忽都可能导致后续开发举步维艰。比如烧录镜像时选错了版本可能连基本的Python环境都装不上环境变量配置不对编译OpenCV能让你折腾一整天。网上的教程很多但要么过于简略跳过了关键细节要么版本老旧已经不适用。我把自己从零开始多次重装、踩坑、最终稳定运行的完整过程记录下来希望能帮你绕开那些“坑”快速搭建一个坚实可靠的开发起点。2. 核心准备硬件清单与镜像选择在按下电源键之前充分的准备工作能避免一半的麻烦。Jetson Nano的部署硬件是基础软件镜像则是灵魂。2.1 必不可少的硬件“全家福”Jetson Nano开发板本身只是一个核心要让它工作起来你需要准备好以下配件这就像给一台电脑主机配齐外设电源适配器这是重中之重。Jetson Nano对电源要求比较严格。官方推荐使用5V/4A20W的Micro-USB电源针对较早的版本或5V/5A25W的桶形电源针对带桶形电源接口的版本。我强烈建议使用官方推荐或品质有保障的电源。电源功率不足是导致系统不稳定、随机重启甚至无法启动的最常见原因。我曾用一个普通的手机充电器5V/2A尝试结果就是频繁死机排查了半天才发现是电源的锅。MicroSD卡这是Nano的“硬盘”。至少需要32GB容量强烈建议选择UHS-1速度等级及以上如Class 10 A1/A2的知名品牌高速卡。烧录和系统运行速度直接与此相关。一张低速卡会让系统体验变得极其糟糕。我用的是一张128GB的A2级卡为后续安装各种库和数据集留足空间。读卡器用于将镜像烧录到MicroSD卡中。显示器与HDMI线初次设置需要图形界面。任何支持HDMI输入的显示器或电视都可以。键盘和鼠标USB接口的即可。网络连接网线以太网是最稳定可靠的选择。虽然Nano也支持Wi-Fi但需要额外配置USB无线网卡在初始安装阶段一根网线能省去很多麻烦。可选但推荐的配件散热风扇与散热片Nano在运行AI推理时发热量不小。良好的散热能保证其持续稳定工作在最高性能状态。很多套件会附带一个小风扇务必装上。USB无线网卡如果项目需要移动性一个兼容性好的USB无线网卡是必需的。我使用的是常见的RTL8812BU芯片网卡在Linux下驱动支持较好。CSI摄像头如果你要做计算机视觉项目官方或兼容的树莓派CSI摄像头是直接接入的最佳选择。2.2 系统镜像下载选对版本事半功倍NVIDIA为Jetson Nano提供了专门的系统镜像基于Ubuntu 18.04或20.04并深度集成了CUDA、cuDNN、TensorRT等AI计算库。选择正确的镜像至关重要。访问官方下载页面前往NVIDIA Jetson Nano开发者网站找到“下载”或“SD卡镜像”部分。选择镜像版本你会看到类似JetPack 4.6、JetPack 5.0/5.1这样的版本。JetPack是NVIDIA为Jetson系列提供的全栈开发套件版本号它包含了操作系统、驱动、CUDA、AI库等所有组件。JetPack 4.x系列基于Ubuntu 18.04生态非常成熟稳定社区资源极其丰富。如果你是初学者或者项目依赖的某些库对较新系统支持不佳选择JetPack 4.6.1是一个稳妥的决定。JetPack 5.x系列基于Ubuntu 20.04内核和系统组件更新支持更新的硬件特性如某些Wi-Fi/蓝牙模块。但早期版本可能遇到一些第三方库的兼容性问题。随着发展现已非常稳定是新项目的推荐选择。如何抉择对于绝大多数AI应用和教程包括部署YOLOJetPack 4.6.1因其无与伦比的稳定性依然是目前最主流、最推荐的选择。本文后续操作也以JetPack 4.6.1为例。下载文件通常是一个扩展名为.img或.zip的压缩包。注意务必核对下载镜像的MD5或SHA256校验和确保文件在下载过程中没有损坏。文件损坏会导致烧录后系统无法启动。3. 系统烧录与首次启动有了镜像和硬件接下来就是“灌装”系统。3.1 使用Etcher进行镜像烧录在Windows、macOS或Linux上我都推荐使用Balena Etcher这款工具。它界面简洁操作傻瓜化自动完成校验和刷新几乎不会出错。插入MicroSD卡通过读卡器将你的MicroSD卡连接到电脑。打开Etcher运行Balena Etcher。选择镜像点击“Flash from file”选择你下载并解压后的.img镜像文件。选择目标驱动器Etcher通常会自动识别插入的SD卡。请务必再三确认你选择的是SD卡而不是电脑的硬盘选错目标会清空你的电脑硬盘数据。开始烧录点击“Flash”按钮。这个过程会持续10-20分钟取决于你的SD卡速度和电脑性能。烧录完成后Etcher会自动进行验证Verify确保数据写入正确。安全弹出验证成功后从电脑上安全弹出SD卡。3.2 上电启动与初始配置将烧录好的MicroSD卡插入Jetson Nano底部的卡槽连接好显示器、键盘、鼠标、网线最后插上电源。首次启动上电后你会看到NVIDIA的Logo然后进入系统初始化过程。第一次启动会稍慢一些因为它需要扩展文件系统以适应你的SD卡容量。系统设置向导跟随屏幕提示完成初始设置包括语言和时区选择中文或英文以及你所在的时区Asia/Shanghai。用户名和密码创建一个非root的用户账户并设置一个强密码。请牢记这个密码后续的sudo操作都需要它。计算机名给你的设备起个名字比如my-jetson-nano。磁盘设置通常使用默认的全盘选项即可。安装完成设置完成后系统会重启然后进入Ubuntu的图形桌面环境。关键检查点进入系统后第一时间做以下几件事打开终端按CtrlAltT打开终端。检查系统信息输入nvidia-smi命令。如果能看到JetPack版本、CUDA版本以及GPUJetson Nano的信息说明核心的NVIDIA驱动和CUDA已经正确安装。检查CUDA输入nvcc -V或cat /usr/local/cuda/version.txt查看CUDA版本。对于JetPack 4.6.1通常是CUDA 10.2。更新软件源为了获得更快的下载速度可以将软件源替换为国内镜像如清华、中科大源。但对于Jetson Nano需要谨慎操作因为其ARM架构aarch64的源与普通x86电脑不同。一个更安全的方法是只更新apt列表sudo apt update。4. 基础环境部署与加固系统跑起来了但这是一个“干净”的系统。为了后续开发我们需要搭建一个坚固的基础环境。4.1 系统更新与基础工具安装首先进行一次全面的系统更新并安装一些必不可少的开发工具。# 更新软件包列表 sudo apt update # 升级所有已安装的软件包这可能需要一些时间 sudo apt upgrade -y # 安装基础开发工具包 sudo apt install -y build-essential cmake git curl wget vim htop net-tools # 安装Python3开发环境系统可能已预装python3但需要pip和dev包 sudo apt install -y python3-dev python3-pip python3-venv实操心得sudo apt upgrade可能会更新内核。更新后建议重启一次以确保所有更新生效系统处于最稳定的状态。build-essential包含了gcc, g, make等编译工具是后续从源码编译任何库的前提。4.2 配置Python虚拟环境强烈建议为不同的AI项目创建独立的Python虚拟环境。这可以避免包版本冲突保持系统Python的洁净。# 安装虚拟环境管理工具如果pip3版本较旧可以先升级pip sudo pip3 install --upgrade pip sudo pip3 install virtualenv virtualenvwrapper # 将virtualenvwrapper配置添加到shell配置文件中通常是~/.bashrc echo -e \n# Virtualenv Wrapper ~/.bashrc echo export WORKON_HOME$HOME/.virtualenvs ~/.bashrc echo export VIRTUALENVWRAPPER_PYTHON/usr/bin/python3 ~/.bashrc echo source /usr/local/bin/virtualenvwrapper.sh ~/.bashrc # 使配置立即生效 source ~/.bashrc现在你可以轻松创建和管理虚拟环境了# 创建一个名为‘cv’的虚拟环境用于计算机视觉项目 mkvirtualenv cv -p python3 # 进入该环境 workon cv # 退出环境 deactivate # 列出所有环境 lsvirtualenv # 删除环境 rmvirtualenv cv注意每次打开新的终端窗口如果需要使用虚拟环境都需要先执行workon cv来激活。你可以把常用命令写在~/.bashrc里但激活环境这一步通常还是需要手动执行。4.3 安装并验证关键AI库OpenCVOpenCV是计算机视觉的基石。虽然JetPack预装了OpenCV但预装版本可能功能不全比如缺少GUI模块highgui因为嵌入式环境常以无头模式运行或者你想安装带有额外贡献模块如SIFT SURF的版本。从源码编译OpenCV是更可控的方式。为什么选择编译安装因为通过apt安装的python3-opencv包可能是一个精简版且无法保证与CUDA的兼容性达到最佳。编译安装可以自定义模块并确保与已安装的CUDA和cuDNN深度集成。以下是编译安装OpenCV 4.5.0一个与JetPack 4.6.1兼容的稳定版本的步骤安装依赖项这是一长串但必要的步骤。sudo apt install -y libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt install -y libxvidcore-dev libx264-dev sudo apt install -y libgtk-3-dev sudo apt install -y libatlas-base-dev gfortran sudo apt install -y libhdf5-dev libhdf5-serial-dev libhdf5-103 sudo apt install -y libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5下载OpenCV源码cd ~ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.5.0 opencv mv opencv_contrib-4.5.0 opencv_contrib配置CMake这是最关键的一步决定了编译出的OpenCV具备哪些功能。cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D OPENCV_EXTRA_MODULES_PATH~/opencv_contrib/modules \ -D ENABLE_NEONON \ -D ENABLE_VFPV3ON \ -D WITH_OPENMPON \ -D WITH_OPENCLOFF \ -D WITH_CUDAON \ -D CUDA_ARCH_BIN5.3 \ -D CUDA_ARCH_PTX \ -D WITH_CUDNNON \ -D WITH_CUBLASON \ -D OPENCV_DNN_CUDAON \ -D ENABLE_FAST_MATHON \ -D CUDA_FAST_MATHON \ -D WITH_LIBV4LON \ -D WITH_GSTREAMERON \ -D WITH_GTKON \ -D WITH_QTOFF \ -D BUILD_opencv_python3ON \ -D BUILD_TESTSOFF \ -D BUILD_PERF_TESTSOFF \ -D BUILD_EXAMPLESOFF \ -D PYTHON3_EXECUTABLE/usr/bin/python3 \ -D PYTHON3_INCLUDE_DIR/usr/include/python3.6 \ -D PYTHON3_LIBRARY/usr/lib/aarch64-linux-gnu/libpython3.6m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS/usr/lib/python3/dist-packages/numpy/core/include \ -D PYTHON3_PACKAGES_PATH/usr/local/lib/python3.6/dist-packages \ ..关键参数解释WITH_CUDAON,WITH_CUDNNON,WITH_CUBLASON: 启用CUDA、cuDNN和cuBLAS加速这是让OpenCV在Nano上飞起来的关键。CUDA_ARCH_BIN5.3: 指定Nano的GPU计算能力Compute Capability。Jetson Nano是5.3这个参数必须正确否则CUDA代码无法编译或运行。OPENCV_DNN_CUDAON: 启用OpenCV DNN模块的CUDA后端对于用OpenCV运行深度学习模型至关重要。ENABLE_NEONON: 启用ARM NEON指令集优化提升CPU性能。BUILD_opencv_python3ON: 编译Python3绑定。编译与安装编译过程非常漫长在Nano上可能需要2-4个小时。建议使用make的-j4参数4个线程来加速但要注意Nano的散热。# 使用4个线程编译根据系统负载调整。监控温度必要时加强散热。 make -j4 # 编译完成后安装 sudo make install sudo ldconfig # 更新动态链接库缓存验证安装# 进入Python3尝试导入cv2并查看版本 python3 -c import cv2; print(cv2.__version__) # 应该输出 4.5.0 # 检查CUDA是否启用 python3 -c import cv2; print(cv2.cuda.getCudaEnabledDeviceCount()) # 应该输出大于0的数字例如1踩坑记录编译过程中最可能遇到的问题是内存不足Swap耗尽。Jetson Nano的4GB内存对于编译OpenCV这种大型项目来说比较紧张。如果编译中途卡住或报错可以尝试以下方法增加交换空间Swap临时将交换文件增加到4GB或更多。sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 可以将其添加到/etc/fstab中使其永久生效减少编译线程使用make -j2甚至make单线程来编译虽然更慢但更稳定。确保散热良好避免因过热降频导致编译失败。5. 深度学习环境部署以PyTorch和YOLO为例基础环境就绪后我们就可以搭建具体的深度学习开发环境了。这里以部署PyTorch和Ultralytics YOLOv5为例这是当前非常流行的组合。5.1 安装PyTorch for JetsonPyTorch没有直接提供适用于JetPack 4.6 (CUDA 10.2) 的pip安装包。我们需要从NVIDIA官方提供的wheel文件进行安装。确定版本访问PyTorch for Jetson的官方页面找到与你的JetPackCUDA版本对应的稳定版。对于JetPack 4.6 (CUDA 10.2)一个经过验证可用的版本是torch-1.10.0配合torchvision-0.11.0。安装依赖sudo apt install -y libopenblas-base libopenmpi-dev libomp-dev下载并安装PyTorch# 下载wheel文件示例链接请以官网最新为准 wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl # 安装 pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl安装TorchvisionTorchvision需要从源码编译以确保与PyTorch版本和系统架构匹配。sudo apt install -y libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev # 安装较新版本的pillow避免兼容性问题 pip3 install --upgrade pillow # 下载对应版本的torchvision源码 git clone --branch v0.11.0 https://github.com/pytorch/vision torchvision cd torchvision # 编译安装 export BUILD_VERSION0.11.0 python3 setup.py install --user cd ..验证PyTorch安装python3 -c import torch; print(torch.__version__); print(torch.cuda.is_available())如果输出PyTorch版本和True恭喜你PyTorch已在Nano上成功启用CUDA。5.2 部署YOLOv5进行目标检测YOLOv5因其易用性和性能平衡而广受欢迎。我们直接在虚拟环境中安装并测试。激活虚拟环境并安装依赖workon cv # 进入之前创建的‘cv’环境 cd ~ git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txtrequirements.txt会安装一系列包包括matplotlib,numpy,opencv-python(这里我们用pip安装一个轻量版与系统编译的cv2不冲突),pillow,torch(已安装)等。下载预训练模型并测试# 下载一个轻量级模型例如yolov5s python3 detect.py --weights yolov5s.pt --source data/images --img 640 --conf 0.25首次运行会自动下载yolov5s.pt模型文件。命令会在data/images目录下的示例图片上运行检测并将结果保存在runs/detect/exp目录下。使用CSI摄像头进行实时检测 这才是嵌入式AI的乐趣所在。假设你已经连接了CSI摄像头。# 使用摄像头索引0通常是CSI摄像头 python3 detect.py --weights yolov5s.pt --source 0 --img 640如果一切正常你将看到一个实时检测窗口。按q键退出。性能调优心得在Jetson Nano上跑YOLOv5默认参数可能帧率较低。可以尝试以下优化减小推理尺寸--img 320可以显著提升速度但会略微降低精度。使用半精度FP16Jetson的GPU支持FP16能提升速度并减少显存占用。在YOLOv5的detect.py中可以尝试添加--half参数注意需要模型支持FP16且可能在某些版本上不稳定需测试。使用TensorRT加速这是终极优化方案。可以将PyTorch模型转换为TensorRT引擎获得数倍的性能提升。但这涉及模型转换和部署步骤更为复杂是进阶内容。6. 常见问题排查与系统优化即使按照步骤操作你也可能会遇到一些问题。这里汇总一些典型问题的排查思路。6.1 系统启动与显示问题问题现象可能原因排查与解决上电后无任何反应指示灯不亮电源问题检查电源适配器规格是否为5V/4A或5V/5A连接是否牢固。尝试更换电源。指示灯亮但显示器无信号1. HDMI线或显示器问题2. 镜像烧录失败3. 显卡模式设置1. 更换HDMI线和显示器测试。2. 重新使用Etcher烧录镜像确保验证通过。3. 对于某些版本可能需要通过跳线J48强制设置为HDMI输出模式参考官方文档。卡在开机Logo或命令行界面文件系统损坏SD卡问题可能是SD卡质量不佳或意外断电导致。尝试重新烧录镜像。使用品牌高速卡。6.2 软件安装与编译问题pip install速度慢或失败将pip源更换为国内镜像。mkdir ~/.pip echo -e [global]\nindex-url https://pypi.tuna.tsinghua.edu.cn/simple ~/.pip/pip.conf编译OpenCV或其它库时内存/交换空间不足如前所述增加交换文件大小并确保物理散热良好避免因过热降频导致编译过程异常缓慢或卡死。import cv2时提示Illegal instruction (core dumped)这通常是因为编译OpenCV时使用的CPU优化指令集如NEON与当前系统不匹配或者编译环境有问题。最可靠的解决方案是使用NVIDIA官方提供的已经为Jetson优化好的OpenCV wheel包。在安装完JetPack后可以尝试pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v461 ‘opencv-python4.5.3.56’。如果必须编译请确保在纯净的系统环境下严格按照指导进行。CUDA不可用 (torch.cuda.is_available()返回 False)检查CUDA驱动和工具包是否安装正确。运行nvcc -V和nvidia-smi。确保PyTorch的wheel文件是针对正确版本的JetPack下载的。有时需要重启系统。6.3 系统性能优化设置为了让Jetson Nano发挥最佳性能可以进行一些系统级设置。切换电源模式Jetson Nano有两种电源模式通过跳线J48设置或在软件中设置5W模式低功耗性能受限。10W模式全性能模式需要搭配散热风扇。 对于AI应用务必使用10W模式。可以通过命令检查并设置sudo nvpmodel -m 0 # 设置为MAX-N10W模式 sudo nvpmodel -q # 查询当前模式启用风扇控制如果安装了风扇安装jetson-stats工具包可以方便地监控和控制。sudo pip3 install jetson-stats # 安装后重启然后使用 jtop 命令查看状态和控制风扇 sudo systemctl restart jtop.service jtop在jtop界面中可以手动设置风扇速度或设置为自动控制。关闭图形界面以释放资源对于纯服务器/无头模式的应用可以关闭桌面环境节省内存和CPU。sudo systemctl set-default multi-user.target # 设置默认启动到命令行 sudo reboot # 重启生效 # 若要恢复图形界面 sudo systemctl set-default graphical.target sudo reboot从一块裸板到一个能跑YOLO实时检测的AI边缘设备这个过程本身就是一个极佳的学习路径。它强迫你去理解硬件限制、系统依赖、编译原理和性能权衡。我自己的经验是第一次部署成功固然欣喜但真正有价值的是部署过程中遇到的每一个错误和解决它的过程。把这些问题的解决方案记录下来它们就成了你知识库中最扎实的部分。关于后续的深入比如将PyTorch模型转换为TensorRT引擎以获得极致推理速度或者使用DeepStream SDK构建高效的视频分析流水线那又是另一个层次的挑战和乐趣了。但无论如何一个稳定、基础环境完备的Jetson Nano系统是你探索所有这些可能性的坚实基地。希望这篇详尽的记录能帮你把这个基地搭建得又快又稳。