Efficient 3D CNNs 适配嵌入式设备的视频分析算法分享
为什么要在嵌入式设备部署视频检测模型?
当我们谈论视觉AI时,很多人首先想到的是服务器端的高精度模型,但现实场景中,大量的视频分析需求其实发生在边缘端:智能摄像头异常行为预警、车载系统的路况预判……这些场景对低延迟(避免决策滞后)、低功耗(依赖电池供电)、小体积(嵌入硬件设备)有着硬性要求。 如果将视频帧传输到云端处理,不仅会产生网络延迟,还可能因带宽限制导致数据丢失;而嵌入式设备本地处理能完美规避这些问题。因此,将视频检测模型 瘦身并部署到边缘端,成为工业落地的核心需求。
我们的频道将会持续更新 AI Camera 的相关内容,更多详细信息与代码请见于我们的Hackday频道与Github仓库。
Hackday栏目:https://hackaday.io/project/202943-peek-under-the-hood-how-to-build-an-ai-camera
Github仓库:https://github.com/Seeed-Studio/OSHW-reCamera-Series
https://github.com/okankop/Efficient-3DCNNs?tab=readme-ov-file
视觉检测的YOLO不够用吗?
YOLO系列(You Only Look Once)作为2D目标检测的标杆模型,以高效的实时性著称,但它本质上是单帧图像检测器。在处理视频时,YOLO只能逐帧分析,无法捕捉帧与帧之间的时空关联信息:比如一个“挥手”动作,单帧可能被误判为“静止抬手”,而连续多帧的运动轨迹才能明确动作意图。 此外,视频任务(如动作识别、行为预测)往往需要理解“动态过程”,而非孤立的静态目标。例如,在智能家居场景中,识别“倒水”动作需要分析手与杯子的连续交互,这是YOLO等2D模型难以胜任的,因为它们缺乏对时间维度的建模能力。
视频检测模型的基础知识:从2D到3D的跨越
视频本质上是“时间+空间”的四维数据(宽度×高度×时间×通道)。早期的视频分析常采用“2D CNN+时序模型”的混合方案(如I3D),即先用2D卷积提取单帧空间特征,再用LSTM等模型捕捉时序关系。但这种方案对时空关联的建模不够紧密。
3D卷积神经网络(3D CNN) 则直接在三维空间(宽×高×时间)上进行卷积操作,通过滑动三维卷积核同时提取空间特征(如物体形状)和时间特征(如运动轨迹)。例如,一个3×3×3的卷积核,既会覆盖单帧内3×3的空间区域,也会跨越3个连续帧的时间维度,从而天然适配视频的动态特性。
为什么今天要介绍Efficient 3DCNNs?
3D CNN虽能有效建模视频时空特征,但传统模型(如C3D、I3D)参数量巨大、计算成本高(动辄数十亿FLOPs),难以部署到算力有限的嵌入式设备(如ARM架构芯片)。 而Köpüklü等人提出的Efficient 3DCNNs,正是为解决这一痛点而生:
- 极致轻量化设计:通过3D深度可分离卷积、通道混洗等技术,将模型参数量和计算量降低1-2个数量级(如3D ShuffleNetV2的FLOPs仅为ResNet-18的1/10),同时保持高精度;
- 硬件友好性:支持通过“宽度乘数(Width Multiplier)”动态调整模型复杂度(如0.5x、1.0x),适配不同算力的嵌入式设备;
- 即插即用的工程化能力:开源项目提供完整的预训练模型(支持Kinetics、UCF101等数据集)、训练/微调脚本,以及FLOPs计算工具,大幅降低边缘部署门槛。 对于需要在嵌入式设备上实现实时视频分析(如动作识别、手势控制)的场景,Efficient 3DCNNs堪称“精度与效率的平衡典范”。
- 多模型对比验证:
论文实现了 8 种 3D CNNs(包括轻量化模型与 ResNet-18/50、ResNeXt-101 等主流模型),并在 UCF101、Kinetics 等数据集上进行统一基准测试。结果显示,轻量化模型(如 3D ShuffleNetV2)在精度与效率的平衡上表现最优,例如在 Jester 数据集(手势识别)上,其 FLOPs 仅为 ResNet-18 的 1/10,准确率却达到 92.3%。
测试分析
先上图:
首先,我们需要了解一下测试的平台性能,这将日后选型与调整提供基准。
1.****** Titan XP:高性能桌面 GPU 代表
NVIDIA 曾经的旗舰桌面 GPU,拥有强大的浮点运算能力与显存带宽 。其 CUDA 核心数量充足,内存带宽高达 336GB/s,单精度浮点性能(FP32)可达 11.3 TFLOPs,能够高效处理高复杂度的 3D 卷积计算,为模型提供充足算力支撑,适合作为 “性能上限” 参考平台,验证模型在理想硬件条件下的极限表现。
2.Jetson TX2:嵌入式 AI 计算先锋
Jetson TX2 则是面向嵌入式与边缘计算的平台,主打低功耗与轻量化部署。它集成 NVIDIA Pascal 架构的 GPU(256 CUDA 核心),搭配双核 Denver 2 CPU 与四核 ARM A57 CPU ,整体功耗控制在 7.5 - 15W 。虽然算力(FP32 约 1.33 TFLOPs )远低于 Titan XP,但契合实际场景中 “端侧部署” 需求,用于检验模型在资源受限环境下的实用性。
我们希望视频分析算法能真正落地到我们的智能摄像头上,计算效率实时性与精度是两大我们要考虑的问题。
1. 计算效率与实时性
智能摄像头通常希望能够达到至少 15fps(帧每秒)的检测速度,这样才能保证检测的实时性,不会出现明显的延迟。
- Titan XP 平台:从表格数据来看,Titan XP 虽然计算速度非常快,像 3D - ShuffleNetV1 0.5x 在该平台上每秒处理视频片段数(cps)能达到 398 ,即使是相对较重的 3D - SqueezeNet 也能达到 682 cps 。但是 Titan XP 是桌面级的高性能 GPU,体积大、功耗高,并不适合直接部署在智能摄像头中,所以虽然它能支撑模型实现超高的计算效率,但从实际应用角度,在智能摄像头场景下参考意义不大。
- Jetson TX2 平台:Jetson TX2 是嵌入式计算平台,更接近智能摄像头的硬件条件。部分轻量化模型在该平台上能够满足实时性要求,比如 3D - ShuffleNetV1 0.5x 的 cps 为 69 ,3D - ShuffleNetV2 0.25x 的 cps 为 82 ,3D - MobileNetV1 0.5x 的 cps 为 57 等,这些模型每秒处理视频片段的速度都高于 15fps ,能够实现实时检测;然而,也有一些模型计算效率较低,如 3D - MobileNetV2 0.7x 在 Jetson TX2 上的 cps 仅为 13 ,无法满足实时性需求。
2. 模型精度
智能摄像头用于实时检测时,需要有较高的精度,否则可能会出现较多的误检和漏检,降低检测的可靠性。
- 在 Kinetics - 600 数据集上,一些轻量化模型如 3D - ShuffleNetV2 2.0x 精度达到了 55.17% ,虽然和一些重型模型(如 ResNeXt - 101 的 68.30% )相比有差距,但考虑到计算资源的限制,这个精度已经能够满足部分对精度要求不是极高的智能摄像头应用场景,比如一些简单的行为分类检测。
- 在 Jester 数据集上,3D - ShuffleNetV2 系列模型的精度普遍较高,如 3D - ShuffleNetV2 2.0x 达到 93.71% ,3D - MobileNetV2 系列也能达到 86% - 93% 左右的精度,在手势识别等场景下,这样的精度可以较为准确地识别出不同的手势动作,为智能交互等应用提供可靠的支持。
- 在 UCF - 101 数据集上,模型精度也能满足一定的实际需求,例如 3D - ShuffleNetV2 2.0x 精度为 83.32% ,对于人体动作识别等应用来说,能够较为有效地识别出各种动作。
回到RV1126B平台,它的NPU算力可达3Tops@INT8,它的实时性和功耗也许会比Jetson TX2更快,但精度也会有一定程度地下降,3D CNNs是计算复杂度较高的模型,根据测试结果来看,Jetson在Jester和UCF-101两个较简单动作数据集大都达到了76%以上的准确率,即使在RV1126B平台运行量化后模型存在一定的损失,但我认为通过针对性训练微调,Efficient 3D算法依旧可以完成视频分析任务。
但最大的困难在于平台适配性,RV1126B的NPU只支持rknn格式的模型文件,目前官方没有提供把Efficient 3D 的模型文件转成rknn格式的工具,这意味着需要开发者去设计算子,做平台适配,这也是我们reCamera未来可能会去做的工作。
总的来说,RV1126B从算力和性能上来讲可以支持Efficient 3D视频分析算法,但平台适配性上还需要做更多的工作。