第四章 Jetson Nano 深度解析:硬件规格、功耗、典型应用场景
好,咱们今天聊聊 Jetson Nano。这块板子,可以说是英伟达在入门级嵌入式视觉领域的「敲门砖」。我最早接触它是在 2019 年,当时刚拿到手,第一反应是——这玩意儿真小,比我想象中轻多了。但你别看它个头不大,跑起轻量级视觉任务来,还真不含糊。
4.1 硬件规格:麻雀虽小,五脏俱全
先看核心参数。Jetson Nano 用的是 Maxwell 架构的 GPU,128 个 CUDA 核心。CPU 是四核 Cortex-A57,主频 1.43GHz。内存是 4GB LPDDR4,带宽 25.6GB/s。嗯,这个配置放在今天看确实不算高,但在它刚发布那会儿,同价位几乎找不到对手。
| 参数项 | Jetson Nano (4GB) | Jetson Nano (2GB) |
|---|---|---|
| GPU | 128 核 Maxwell | 128 核 Maxwell |
| CPU | 四核 Cortex-A57 @ 1.43GHz | 四核 Cortex-A57 @ 1.43GHz |
| 内存 | 4GB LPDDR4 | 2GB LPDDR4 |
| 存储 | MicroSD 卡 / 16GB eMMC | MicroSD 卡 |
| 视频编码 | 4K@30fps (H.264/H.265) | 4K@30fps (H.264/H.265) |
| 视频解码 | 4K@60fps (H.264/H.265) | 4K@60fps (H.264/H.265) |
| 网络 | 千兆以太网 | 千兆以太网 |
| USB | 4x USB 3.0, 1x USB 2.0 | 4x USB 3.0, 1x USB 2.0 |
| 摄像头接口 | 2x MIPI CSI-2 | 2x MIPI CSI-2 |
| 功耗 | 5W / 10W 可切换 | 5W / 10W 可切换 |
我个人习惯把 Jetson Nano 分成两个版本来看。4GB 版是主力,2GB 版更像是个「精简版」。2GB 版砍掉了一半内存,也去掉了 eMMC 和 DP 接口。说实话,2GB 跑现代视觉模型有点吃力,我建议你直接上 4GB 版。差价不大,但体验差很多。
4.2 功耗:5W 和 10W 模式怎么选?
功耗这块,Jetson Nano 提供了两种模式:5W 和 10W。你可以在命令行里切换:
# 切换到 5W 模式
sudo nvpmodel -m 1
# 切换到 10W 模式
sudo nvpmodel -m 0
# 查看当前模式
sudo nvpmodel -q
为什么会有两种模式?说白了就是「性能」和「续航」的取舍。5W 模式下,CPU 和 GPU 频率都会降低,适合电池供电的场景。10W 模式则火力全开,适合插着电源跑。
实际功耗测试下来,10W 模式下整板功耗大约在 8-12W 之间,5W 模式则在 4-6W 之间。注意,这是整板功耗,包括 CPU、GPU、内存和 IO。如果你外接 USB 摄像头或者硬盘,功耗还会往上走。
4.3 典型应用场景:入门级 AI 摄像头
Jetson Nano 最适合做什么?我个人觉得是「入门级 AI 摄像头」。什么叫入门级?就是不需要跑 YOLOv8 这种大模型,用 MobileNet、SqueezeNet 这类轻量级网络就能搞定的任务。
举个例子,做一个简单的「口罩检测」摄像头:
import cv2
import numpy as np
import jetson.inference
import jetson.utils
# 加载预训练模型
net = jetson.inference.detectNet("ssd-mobilenet-v2", threshold=0.5)
# 打开摄像头
camera = jetson.utils.gstCamera(640, 480, "/dev/video0")
while True:
# 捕获图像
img, width, height = camera.Capture()
# 执行检测
detections = net.Detect(img, width, height)
# 显示结果
for det in detections:
if det.ClassID == 1: # 假设类别1是口罩
print(f"检测到口罩,置信度: {det.Confidence:.2f}")
# 渲染并显示
display.RenderOnce(img, width, height)
这段代码跑在 Jetson Nano 上,帧率能到 30fps 左右。你想想看,一个巴掌大的板子,接个 USB 摄像头,就能实时检测口罩,这在几年前是想都不敢想的。
4.4 典型应用场景:简单分类任务
除了目标检测,Jetson Nano 在图像分类任务上也表现不错。比如做一个「水果分拣」的 demo:
import jetson.inference
import jetson.utils
# 加载分类模型
net = jetson.inference.imageNet("googlenet")
# 加载图片
img = jetson.utils.loadImage("apple.jpg")
# 执行分类
class_idx, confidence = net.Classify(img)
# 获取类别名称
class_desc = net.GetClassDesc(class_idx)
print(f"识别结果: {class_desc}, 置信度: {confidence:.2f}")
GoogLeNet 在 Jetson Nano 上跑一张图大概需要 20-30ms,也就是每秒能处理 30-50 张图片。对于简单的分类任务来说,完全够用。
不过要注意,Jetson Nano 的算力有限。如果你要跑 ResNet-152 这种大模型,帧率会掉到个位数。我的建议是:
- 分类任务: 用 MobileNetV2 或 SqueezeNet,帧率 50+
- 检测任务: 用 SSD-MobileNetV2,帧率 30+
- 分割任务: 用 FCN-ResNet18,帧率 15+
4.5 总结:Jetson Nano 适合谁?
说了这么多,最后总结一下。Jetson Nano 适合以下场景:
- 入门学习: 想学嵌入式 AI,预算有限,Nano 是最好的起点
- 原型验证: 快速搭建视觉方案,验证算法可行性
- 轻量级部署: 对算力要求不高的产品,比如智能门锁、简易巡检
不适合的场景:
- 高帧率视频分析: 60fps 以上的实时检测,Nano 扛不住
- 大模型推理: YOLOv8-L、ResNet-152 这类模型,建议上 Xavier 或 Orin
- 多路视频处理: 同时处理 4 路以上 1080p 视频,内存会爆
嗯,Jetson Nano 就聊到这儿。下一章咱们看看 Jetson TX2,那个性能更强,但功耗也更高。到时候我会讲讲我在无人机项目里用 TX2 踩过的坑,敬请期待。