Jetson AGX Xavier是一款由NVIDIA推出的一款强大的嵌入式AI开发平台,适合边缘计算和目标检测任务。如果你手上有一台 Jetson AGX Xavier Developer Kit,就可以使用它进行明火烟雾目标检测实验。以此为例,为了使你能够从零开始设置设备并完成实验,下面是具体的操作步骤:
第1步:熟悉 Jetson AGX Xavier Developer Kit
Jetson AGX Xavier是一款嵌入式系统模块(System-on-Module, SoM),专为自主机器和边缘AI应用设计。它是NVIDIA Jetson TX2的升级版,性能比TX2高出20倍,而能源效率则高出10倍。它支持NVIDIA JetPack和DeepStream SDK以及CUDA®,cuDNN和TensorRT软件库,并提供一系列可立即上手的工具。使用Jetson AGX Xavier可以打造出 AI 助力的自主机器,其运行功率低至 10W,却能实现高达32 TOPS的峰值计算能力和 750 Gbps 的高速 I/O 性能。作为行业领先AI计算平台的一部分,Jetson AGX Xavier得益于NVIDIA整套丰富的 AI工具和工作流程,可帮助开发者快速训练和部署神经网络。
配备硬件:
- GPU:512核Volta GPU,支持Tensor Cores,提供高达32 TOPS(万亿次运算/秒)的AI性能。
- CPU:8核64位ARMv8.2处理器,8MB L2+4MB L3 Cache。
- 内存:32GB 256-bit LPDDR4x (eMMC5.1),带宽137 GB/s。
- 功耗:可配置为10W、15W或30W。
- 应用场景:适合机器人、智能城市、工业检测等任务。
其它参见:https://ask.qcloudimg.com/http-save/yehe-1539448/8jt3lqtm5j.jpeg
第2步:开发前准备工作
使用这款设备前需要先完成硬件和软件的初始化配置。
硬件准备
硬件和配件需求:
- Jetson AGX Xavier Developer Kit(包含充电器,原装type-c转usb数据线)。
- microSD卡(建议32GB或更大容量,用于存储系统镜像)。
- 电源适配器(Jetson AGX Xavier附带的电源,通常为19V 4.74A)。
- 显示器(支持HDMI接口,用于初次设置)。
- USB键盘和鼠标(用于交互)。
- HDMI线(连接显示器)。
- USB-C转USB-A线(用于连接主机和Jetson进行系统烧录)。
- 一台主机电脑(运行Ubuntu或Windows,用于烧录系统镜像)。
- 网络连接(以太网线或Wi-Fi,用于下载软件和数据集)。
- 连接外设:
- 将 Jetson AGX Xavier 连接到显示器(通过HDMI)、键盘、鼠标和电源适配器。
- 确保电源适配器是开发套件提供的,因为设备在高负载下功耗较大。
- 另外还需要一台运行Ubuntu的主机(比如您的笔记本电脑)来协助安装软件。
软件安装
软件需求:
- NVIDIA SDK Manager:用于烧录Jetson的系统镜像和安装JetPack SDK。
- JetPack SDK:包含Jetson的Linux操作系统(L4T,基于 Ubuntu)、CUDA、cuDNN、TensorRT等工具。推荐使用==JetPack 4.6.1==(最后一个支持Jetson AGX Xavier的版本)。
- YOLOv5:目标检测模型。
- 数据集:用于训练明火烟雾检测的数据集(可以从Roboflow获取公开数据集)。
- 安装SDKManager
在你自己的主机电脑上,访问 NVIDIA 开发者网站,进行注册或登陆。下载并安装SDK Manager,下载地址:https://developer.nvidia.com/nvidia-sdk-manager,下载.deb后缀的安装包。
# 在Ubuntu系统上安装SDKManager
# 以下示例<version = 1.81>、<build = 10392>
sudo apt install sdkmanager_1.8.1-10392_amd64.deb
# 启动运行SDKManager:
sdkmanager
务必关注兼容性
- 连接Jetson:
- 用USB数据线将Jetson AGX Xavier连接到主机。开发套件的连接如下图,原装type-c转usb数据线需要连接到led灯旁边的接口。
连接检测:
- 需要确保Jetson和主机通过USB-C数据线保持连接。
- 主机命令行输入lsusb检测,有NVidia Crop表示连接成功(不成功检查线是否有问题以及usb接口是否正常),Target Hardware也连接成功。若是refresh不显示开发板信息,没有关系,后面刷机会重新识别。Host Machine默认勾选。
- 进入恢复模式:
- 关闭Jetson电源,按住“恢复”(Recovery)按钮,然后接通电源,松开按钮,使其进入恢复模式。
- 需要登陆Nvidia账号,让sdk manager作为客户端软件连到NVIDIA的云服务器上去,为后面的下载安装软件做准备。
- STEP01中选择最新版本的JetPack(选择==JetPack 4.6.1==作为目标硬件),勾选“Jetson OS”和“Jetson SDK Components”。
- STEP02中安装内容保持默认,点接受,我下载完就安装了,没有选择后面的以后安装,这样可以查看下载细节,检查是否全部下载成功。也可以勾选,下载完后第二天再次启动sdkmanager。CONTINUE后输入电脑密码。
- STEP03中选择手动安装(Manual Steup)进行JETSON AGX XAVIER的系统镜像烧录,自动安装会出现错误。
手动安装步骤译文:
- 选择手动安装
- 确保设备(JETSON AGX XAVIER)已连接电源适配器,但处于关机状态;
- 将主机与设备使用type-c转usb数据线进行连接;
- 按住AGX中间的按键(Force Recovery)不松手;
- 按住AGX左边的电源(Power)不松手;
- 释放按钮,过一两秒,同时松手。
- 此时这个画面中设备会显示连接成功,输入JETSON AGX XAVIER系统的登陆账号和密码,记住这个,后面用得上。此时要提前保证显示屏、键盘、鼠标和设备连接成功,后续系统安装过程会显示,可能需要操作,我是没有操作,直接安装成功进入了设备的Ubuntu系统,这里SDK给我烧录的是Ubuntu20.04系统。
- (我已经flash成功,所以没有连接设备,图片只是提供参考)
一定要保证你电脑上面我图片红色位置是显示绿色连接后再进行Flash。
- STEP04中Flash成功后会弹出安装界面,保证主机和设备连接正常。此时设备显示屏进入Ubuntu系统,设备系统需要先更新,才能保证后续安装成功。
注意换源!!!
先换源,需要根据设备上的Ubuntu系统版本进行更换,清华,阿里,中科大的镜像源都可以。
以使用阿里云镜像源为例:
- 备份sources.list文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 打开sources.list文件
sudo gedit /etc/apt/sources.list
- 删除原内容,添加以下内容
# 阿里云 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse ## Pre-released source, not recommended. # deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
- 保存sources.list文件后需要更新apt-get
sudo apt-get update
其他镜像源链接:
- https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
- https://developer.aliyun.com/mirror/
- http://t.csdn.cn/CMvQs
-
点击“Download”开始下载系统镜像和组件。
- 按照提示完成JetPack的安装(刷写过程),SDK Manager将自动烧录系统镜像到Jetson的内部eMMC存储,并安装SDK Components(包括CUDA、cuDNN、TensorRT等)。
- 下载完成后,镜像会保存在指定目录(默认是 ~/nvidia/nvidia_sdk)。
-
启动并初始化:
- 刷写完成后,在主机电脑的SDK Manager中,输入Jetson的用户名和密码。
- SDK Manager将继续安装剩余的SDK Components到Jetson上。
- 启动Jetson,按照屏幕提示完成Ubuntu的初始设置(如选择语言、设置用户名和密码)。
第3步: 明火烟雾检测实验
Step 1:安装YOLOv5环境
- 访问Jetson终端:
- 打开Jetson的终端(可以通过显示器直接操作,或通过SSH远程访问):
ssh 用户名@Jetson的IP地址
- 例如:
ssh jetson@192.168.1.100
- 更新系统并安装必要工具:
sudo apt update
sudo apt install -y python3-pip
pip3 install --upgrade pip
- 克隆YOLOv5仓库:
git clone https://github.com/ultralytics/yolov5.git cd yolov5
- 安装YOLOv5依赖:
- 编辑 requirements.txt 文件,注释掉不兼容的版本(Jetson的PyTorch版本需要匹配JetPack 提供的版本,通常是torch>=1.7.0和torchvision>=0.8.1)。
- 运行:
pip3 install -r requirements.txt
- 如果遇到依赖问题,可以手动安装PyTorch和torchvision(JetPack 4.6.1预装了PyTorch 1.8.0和torchvision 0.9.0)。
Step 2:准备明火烟雾数据集
为了检测明火和烟雾,我们需要一个标注好的数据集。推荐使用现成的公开数据集,以节省时间。
- 获取数据集:
- 推荐使用 Roboflow平台的公开数据集,例如搜索“Fire and Smoke Detection”(火与烟检测)数据集。
- 选择一个包含“火”和“烟”两种类别的标注数据集,并以YOLOv5 PyTorch格式 下载(这种格式与后续模型兼容)。
- 下载数据集(选择YOLOv5格式),会包含train和val文件夹,以及data.yaml文件。
- 检查数据集:
- 确保数据集包含明火和烟雾的图像,并已标注好目标位置。
- 将数据集传输到Jetson:
- 使用SCP命令从主机电脑传输到Jetson:
scp -r /path/to/dataset 用户名@Jetson的IP地址:/home/用户名/
- 例如:
scp -r ~/Downloads/wildfire-smoke-dataset jetson@192.168.1.100:/home/jetson/
- 调整数据集路径:
- 假设数据集位于/home/jetson/wildfire-smoke-dataset,编辑data.yaml文件:
train: /home/jetson/wildfire-smoke-dataset/images/train
val: /home/jetson/wildfire-smoke-dataset/images/val
nc: 2
names: ['fire', 'smoke']
- 如果数据集只包含烟雾(smoke),将nc设为 1,names设为 [‘smoke’]。
Step 3:训练YOLOv5模型
由于训练深度学习模型需要大量计算资源,建议使用Kaggle或者Google Colab(提供免费GPU)来完成训练,而不是直接在Jetson上训练(虽然Jetson也支持训练,但速度较慢)。
如果直接在Jetson上训练:
- 运行训练:
- 在yolov5目录下,运行以下命令:
python3 train.py --img 640 --batch 16 --epochs 50 --data /home/jetson/wildfire-smoke-dataset/data.yaml --weights yolov5s.pt --cache --device 0
- 参数说明:
- --img 640:输入图像大小。
- --batch 16:批大小(根据Jetson内存调整,16GB内存建议16)。
- --epochs 50:训练轮数。
- --data:数据集配置文件路径。
- --weights yolov5s.pt:预训练权重(yolov5s是小型模型,适合Jetson)。
- --device 0:使用GPU。
- 训练结果:
- 训练完成后,模型权重会保存在 /home/jetson/yolov5/runs/train/exp/weights/best.pt。
[!example]+ 使用Google Colab训练
- 打开 YOLOv5 Colab 训练笔记本。
- 将从Roboflow下载的数据集上传到Colab。
- 按照笔记本中的说明运行代码,训练YOLOv5模型(默认会使用YOLOv5s或YOLOv5m模型,您可以根据需要调整)。
- 训练完成后,保存模型权重文件(如
best.pt
),并下载到本地。
Step 4:推理(检测明火烟雾)
- 准备测试数据:
- 将测试图片或视频放入Jetson,例如/home/jetson/test_images/。
- 运行推理:
python3 detect.py --weights /home/jetson/yolov5/runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source /home/jetson/test_images/
- 参数说明:
- --weights:训练好的模型权重。
- --img 640:推理图像大小。
- --conf 0.25:置信度阈值。
- --source:测试数据路径。
- 查看结果:
- 检测结果会保存在/home/jetson/yolov5/runs/detect/exp/,包含带边界框的图片。
Step 5:保存和下载结果
- 打包结果:
zip -r /home/jetson/runs.zip /home/jetson/yolov5/runs
- 传输到主机电脑:
- 从主机电脑运行:
scp jetson@192.168.1.100:/home/jetson/runs.zip ~/Downloads/
第4步:在Jetson上部署模型
训练好模型后,将其部署到Jetson AGX Xavier上,用于实时检测。
- 传输模型:
- 将训练好的模型权重文件(
best.pt
)通过SSH或U盘传输到Jetson。
- 将训练好的模型权重文件(
- 安装YOLOv5环境:
- 在Jetson上打开终端,克隆YOLOv5仓库并安装依赖:
git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt
- JetPack已包含CUDA和cuDNN,安装过程通常会顺利完成。
- 在Jetson上打开终端,克隆YOLOv5仓库并安装依赖:
- 优化模型(可选但推荐):
- 为提升推理速度,将PyTorch模型转换为TensorRT格式:
python export.py --weights best.pt --include engine --device 0
- 转换后会生成
best.engine
文件,适用于Jetson的GPU优化。
- 为提升推理速度,将PyTorch模型转换为TensorRT格式:
第5步:真实目标检测测试
- 实时检测:
- 连接一个USB网络摄像头到Jetson,使用USB摄像头捕捉实时视频。
- 运行
detect.py
脚本进行实时检测:python detect.py --weights best.engine --source 0 # “0”表示默认摄像头
- 屏幕上将显示摄像头视频流, Jetson会处理视频流并检测明火和烟雾,并标注出检测到的明火和烟雾。
- 如需调整检测效果,可修改
detect.py
中的参数(如置信度阈值--conf-thres
)。
- 可选评估:
- 使用数据集的验证集运行YOLOv5的验证脚本,计算检测精度(如mAP)。
- 在Jetson上运行
tegrastats
查看GPU使用率和功耗:sudo tegrastats
附录
注意事项和优化建议
- 功耗模式:
- 默认模式可能不是最高性能,切换到30W模式:
sudo nvpmodel -m 0 sudo jetson_clocks
- 适合计算密集型任务。
- 这会提升GPU和CPU性能。
- 默认模式可能不是最高性能,切换到30W模式:
- 性能优化:
- 若推理速度慢,可尝试:
- 模型量化:转为INT8精度。
- TensorRT加速:使用NVIDIA TensorRT优化模型。
- 批处理:增加批次大小(视内存而定)。
- 若推理速度慢,可尝试:
- 散热管理:
- 使用原装电源适配器,确保供电稳定。
- 开发套件自带风扇,但需保持通风良好,避免过热。
- 高负载下设备会发热,需通风良好。监控温度:
sudo jetson_stats
- 网络连接:
- 可通过以太网或Wi-Fi连接Jetson到网络,便于文件传输或远程操作(如SSH)。
- 确保稳定网络,建议使用以太网线。
- 软件更新:
- 定期更新系统和YOLOv5:
sudo apt update && sudo apt upgrade git pull origin master
- 定期更新系统和YOLOv5:
- 数据集扩展:
- 若检测效果不佳,增加明火烟雾图像并使用数据增强(如旋转、缩放)。
- 模型选择:
- YOLOv5s轻量,适合实验;需更高精度可试YOLOv5m或YOLOv5l。
- 摄像头选择:
- 如果有CSI接口摄像头,也可以使用,但USB摄像头更简单,适合初次实验。
故障排除
如遇到问题,可访问NVIDIA 开发者论坛或YOLOv5的GitHub Issues页面寻求帮助。
- CUDA错误:
- 检查 JetPack和PyTorch兼容性:
输出应为python3 -c "import torch; print(torch.cuda.is_available())"
True
。
- 检查 JetPack和PyTorch兼容性:
- 依赖安装失败:
- 若
pip install -r requirements.txt
失败,手动安装或查找Jetson专用wheel文件。
- 若
- SSH连接问题:
- 启用SSH:
sudo systemctl enable ssh sudo systemctl start ssh
- 检查端口22是否开放。
- 启用SSH:
- 摄像头无法识别:
- 检查USB设备(
lsusb
)或安装CSI摄像头驱动。
- 检查USB设备(
- 训练内存不足:
- 减小批次大小或关闭后台进程。
常用命令速查
- 查看GPU状态:
nvidia-smi
- 查看系统资源:
tegrastats
- 重启Jetson:
sudo reboot
- 关闭Jetson:
sudo shutdown -h now
- 更新YOLOv5:
git pull origin master
- 清理训练日志:
rm -rf runs/train/exp*
参考资料
- [Jetson AGX Xavier Developer Kit 用户指南](嵌入式系统开发者套件、模块和 SDK | NVIDIA Jetson
- YOLOv5 官方文档
- NVIDIA TensorRT 文档
- Roboflow 数据集