2、边缘设备选型与开发环境搭建

好,咱们进入第二章。说实话,选边缘设备这事儿,我当年踩过不少坑。记得第一次做嵌入式AI项目,图便宜买了块性能一般的板子,结果模型跑起来卡成PPT,最后只能换平台重来。所以这一章,我带你好好捋一捋主流设备怎么选,环境怎么搭。

2.1 主流边缘设备横向对比

目前市面上做边缘AI,最常用的就是这三家:NVIDIA Jetson系列、瑞芯微RK3588、还有树莓派。咱们一个一个说。

参数 Jetson Nano (4GB) RK3588 树莓派4B (4GB)
AI算力 472 GFLOPS (FP16) 6 TOPS (INT8) 无专用NPU
CPU 4核Cortex-A57 4核A76 + 4核A55 4核Cortex-A72
GPU 128核Maxwell Mali-G610 MP4 VideoCore VI
内存 4GB LPDDR4 8/16GB LPDDR4X 4/8GB LPDDR4
价格 约800元 约1200元 约400元
功耗 5W-10W 8W-15W 3W-7W

我的建议:如果做人脸识别+姿态估计,首选Jetson Nano或RK3588。树莓派跑轻量模型还行,但要做实时姿态估计,说实话有点吃力。我在项目中用树莓派跑过OpenPose的轻量版,帧率只有个位数,后来果断换了Jetson。

2.2 各设备优缺点深度分析

2.2.1 Jetson Nano

NVIDIA的生态是真的好。CUDA、TensorRT、DeepStream,一套下来很顺手。我习惯用JetPack SDK刷系统,里面包含了L4T内核、CUDA、cuDNN、TensorRT,一步到位。

  • 优点:GPU算力强,生态完善,社区活跃
  • 缺点:内存只有4GB,跑大模型容易OOM;散热是个问题,不加风扇分分钟降频

注意:Jetson Nano的Micro-USB供电口只有5V/2A,如果你同时接摄像头和WiFi模块,很容易供电不足。我曾经因为这个原因,系统频繁重启,排查了两天才发现是电源问题。建议直接用DC 5V/4A圆头供电。

2.2.2 RK3588

瑞芯微这颗芯片,国产里算很能打的了。6TOPS的NPU,跑INT8量化模型效率很高。我去年在一个安防项目里用了RK3588,人脸检测+关键点定位,能做到30fps。

  • 优点:算力够用,接口丰富(PCIe、SATA、USB3.0),支持多路摄像头
  • 缺点:NPU开发工具链不如CUDA成熟,有些算子需要自己适配

小技巧:RK3588的NPU支持RKNN模型格式。你可以先把模型转成ONNX,再用瑞芯微的RKNN-Toolkit转成.rknn。我习惯在PC上先验证精度,再部署到板子上。

2.2.3 树莓派4B

树莓派嘛,入门神器。但说实话,做AI推理它真的不太行。没有GPU加速,全靠CPU硬扛。跑个MobileNet-SSD人脸检测,也就10fps左右。

  • 优点:便宜,资料多,GPIO丰富适合做外设控制
  • 缺点:没有AI加速单元,算力瓶颈明显

2.3 系统烧录与基础环境配置

设备选好了,接下来就是搭环境。我以Jetson Nano为例,带你走一遍完整流程。RK3588和树莓派的步骤类似,我会在关键地方标注差异。

2.3.1 系统烧录

Jetson Nano:

  1. 下载JetPack SDK(我习惯用4.6.1版本,稳定)
  2. 准备一张32GB以上的TF卡(建议用SanDisk Extreme Pro,读写快)
  3. 用Etcher或balenaEtcher把镜像写入TF卡
  4. 插卡、接显示器、上电,第一次启动会自动扩展分区
# 烧录完成后,检查系统版本
cat /etc/nv_tegra_release
# 输出示例:R32 (release), REVISION: 7.1

RK3588:一般用瑞芯微提供的SDK,或者直接买官方固件。我用的Firefly RK3588,他们提供了完整的Ubuntu 20.04镜像,烧录工具是RKDevTool。

# RK3588上检查NPU驱动
sudo dmesg | grep rknpu
# 如果看到 rknpu: RKNPU driver version 0.8.2,说明驱动正常

树莓派:用Raspberry Pi Imager,选Raspberry Pi OS(64位),一键烧录。

2.3.2 基础环境配置

系统起来之后,第一件事就是配环境。我习惯按这个顺序来:

  1. 换源:国内用户一定要换清华或中科大的源,不然下载慢到怀疑人生
  2. 安装基础工具:vim、git、cmake、build-essential
  3. 配置Python环境:建议用Miniconda,别用系统自带的Python,容易搞乱
  4. 安装AI框架:Jetson装PyTorch for Jetson,RK3588装RKNN-Toolkit,树莓派装TensorFlow Lite
# Jetson Nano上安装PyTorch(以1.10.0为例)
wget https://developer.download.nvidia.com/compute/redist/jp/v46/pytorch/torch-1.10.0-cp36-cp36m-linux_aarch64.whl
pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl

# 验证安装
python3 -c "import torch; print(torch.__version__)"
# 输出:1.10.0

避坑指南:我曾经在Jetson Nano上直接pip install torch,结果装了个x86版本的,跑起来全是非法指令错误。记住,Jetson是aarch64架构,一定要下载对应的wheel包。

2.3.3 摄像头与显示测试

环境搭好了,先测试一下摄像头能不能用。我一般用CSI摄像头,延迟低,适合实时处理。

# Jetson Nano上测试CSI摄像头
gst-launch-1.0 nvarguscamerasrc ! nvoverlaysink

# 如果看到摄像头画面,说明驱动正常
# 按Ctrl+C退出

对于USB摄像头,用OpenCV测试:

import cv2
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow('test', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
cap.release()
cv2.destroyAllWindows()

小提示:如果USB摄像头打不开,先检查权限:sudo chmod 666 /dev/video0。我遇到过好几次权限问题,折腾半天才发现是/dev/video0没给读写权限。

2.4 本章小结

嗯,这一章内容不少。我们对比了Jetson Nano、RK3588、树莓派三款主流设备,分析了各自的优缺点。然后以Jetson Nano为例,走了一遍系统烧录和环境配置的流程。

说实话,选设备没有绝对的好坏,关键看你的项目需求。如果追求生态和算力,选Jetson;如果看重性价比和接口丰富度,RK3588很香;如果只是做原型验证,树莓派也能凑合。

下一章,我们就要开始真正的人脸检测了。我会带你从零搭建一个人脸检测管线,用上TensorRT加速。到时候你会发现,环境搭好了,后面的事情就顺了。

最后提醒:开发环境搭建这一步,千万别着急。我见过太多人急着跑模型,结果环境没配好,后面各种报错。花半天时间把环境搞扎实,后面能省三天时间。