从Raspberry Pi诞生的第一天起,人们就热衷于用它来做各种各样的人工智能项目。随着硬件一代代升级,原生支持的应用场景越来越多,但总有一些负载需要借助外部翻跟斗——比如今年六月推出的Raspberry Pi AI套件,每秒能执行13万亿次操作。不过它只兼容Raspberry Pi 5,还得额外配一个摄像头模块来捕获视觉数据。所以,Raspberry Pi摄像头产品线今天迎来了新成员:Raspberry Pi AI摄像头。
这款AI摄像头以索尼IMX500图像传感器为核心,集成了AI翻跟斗。它能在低功耗、低延迟下运行各种流行的神经网络模型,把Raspberry Pi的主处理器解放出来干别的活儿。
Raspberry Pi AI摄像头的关键特性包括:
- 1200万像素索尼IMX500智能视觉传感器
- 传感器模式:4056×3040分辨率下10fps;2028×1520分辨率下30fps
- 1.55微米×1.55微米像素单元
- 78度视场角,可手动调焦
- 集成RP2040用于神经网络和固件管理
AI摄像头通过标准的摄像头带状电缆,可以连接到所有Raspberry Pi型号,包括Raspberry Pi Zero。
借助索尼的AI工具链,用TensorFlow或PyTorch等框架训练的神经网络模型可以转换成在AI摄像头上高效运行的格式。当然,也可以专门设计新模型来发挥AI翻跟斗的特长。
内部构造
要利用这颗集成的AI翻跟斗,首先得把模型上传进去。在较老的Raspberry Pi设备上,这一步走I2C协议;而在Raspberry Pi 5上,可以用更快的定制双线协议。链路中摄像头一侧由板载RP2040微控制器管理,额外的16MB闪存会缓存最近用过的模型,很多情况下直接跳过上传步骤。
传感器开始流式传输后,IMX500就跟Raspberry Pi Camera Module 3上的传感器一样,作为标准Bayer图像传感器工作。集成的图像信号处理器(ISP)对传感器帧做基本的图像处理(主要是Bayer转RGB以及裁剪/缩放),然后直接把处理后的帧喂给AI翻跟斗。神经网络模型处理完帧后,其输出和Bayer帧一起通过CSI-2摄像头总线传回主机Raspberry Pi。
与Raspberry Pi libcamera集成
AI摄像头的一大亮点是它与Raspberry Pi相机软件栈的无缝集成。内部,libcamera用自己的ISP处理Bayer帧——就跟处理任何传感器一样。同时我们还解析神经网络结果,生成输出张量,并与处理过的Bayer帧同步。这两者都在libcamera的请求完成步骤中返回给应用程序。
Raspberry Pi相机框架——Picamera2和rpicam-apps,以及任何基于libcamera的应用程序——都能检索到与传感器帧同步的输出张量。下面是一个在rpicam-apps下运行对象检测神经网络模型(MobileNet SSD)的例子,在1080p视频上以30fps做推理。演示利用rpicam-apps的后处理框架,从输出张量生成物体边界框并绘制在图像上。整个实现不到300行代码。用Python和Picamera2写等效应用,代码行数更少。
再来看一个姿态估计神经网络模型(PoseNet)在1080p视频上以30fps推理的例子。虽然这些演示是用Raspberry Pi 4录制的,但在Raspberry Pi Zero上推理性能完全一样!
Raspberry Pi与索尼合作,在模型库里发布了一批为AI摄像头优化的流行视觉神经网络模型,以及使用Picamera2的视觉示例脚本。
我应该购买哪个产品?
到底该买Raspberry Pi AI套件还是Raspberry Pi AI摄像头?AI套件的理论性能更高,支持的模型范围更广,但只兼容Raspberry Pi 5。AI摄像头更小巧、总成本更低,而且兼容所有型号的Raspberry Pi。说实话,两种产品对常见模型的加速效果都很出色,而且都针对Raspberry Pi相机软件栈做了深度优化。
开始使用和进一步探索
可以查阅入门指南,里面有安装AI摄像头硬件、设置软件环境以及运行模型库中示例和神经网络模型的详细说明。模型库里还有更多现成的模型可直接使用。如果想在AI摄像头上跑自己训练的网络,索尼的AITRIOS开发者网站上提供IMX500转换器和封装文档,技术资源很全。
入门指南:https://www.raspberrypi.com/documentation/accessories/ai-camera.html
模型库:https://github.com/raspberrypi/imx500-models
