第四章 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 模式则火力全开,适合插着电源跑。

我的经验: 如果你做的是固定位置的 AI 摄像头,直接开 10W 模式。如果是移动机器人或者无人机,用 5W 模式更稳妥。我曾经在一个巡检机器人项目里试过 10W 模式,电池续航直接砍半,后来老老实实切回 5W。

实际功耗测试下来,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 摄像头,就能实时检测口罩,这在几年前是想都不敢想的。

避坑指南: 我曾经在项目里直接用 OpenCV 的 DNN 模块跑模型,结果帧率只有 10fps。后来换成 jetson.inference 库,直接飙到 30fps。原因很简单——英伟达的库用了 TensorRT 加速,而 OpenCV 没有。所以,能用官方库就别自己折腾。

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+
注意: Jetson Nano 的散热是个大问题。10W 模式下,原装散热片只能勉强压住。如果你长时间跑模型,建议加装一个主动散热风扇。我有个项目就是没注意散热,结果跑了一下午,板子直接过热降频,帧率从 30fps 掉到 10fps。

4.5 总结:Jetson Nano 适合谁?

说了这么多,最后总结一下。Jetson Nano 适合以下场景:

  • 入门学习: 想学嵌入式 AI,预算有限,Nano 是最好的起点
  • 原型验证: 快速搭建视觉方案,验证算法可行性
  • 轻量级部署: 对算力要求不高的产品,比如智能门锁、简易巡检

不适合的场景:

  • 高帧率视频分析: 60fps 以上的实时检测,Nano 扛不住
  • 大模型推理: YOLOv8-L、ResNet-152 这类模型,建议上 Xavier 或 Orin
  • 多路视频处理: 同时处理 4 路以上 1080p 视频,内存会爆

嗯,Jetson Nano 就聊到这儿。下一章咱们看看 Jetson TX2,那个性能更强,但功耗也更高。到时候我会讲讲我在无人机项目里用 TX2 踩过的坑,敬请期待。