1. 引言
视觉语言模型(VLM)正迅速成为将摄像头和视频内容的自然语言理解能力带到边缘端的实用方案。与简单的目标检测或分类不同,VLM 能够理解视频内容并以自然语言回答问题,从而在注重隐私、低延迟和离线运行需求的检测、安防监控、零售和工业环境中实现各种应用。
研华 AOM-2521 是一款采用 NXP i.MX 95 应用处理器的 OSM Size-L 计算机模块,为上述工作负载提供了紧凑、低功耗、功能安全的平台。配合 NXP Ara240 离散神经处理单元(DNPU),它可以在设备端完整运行 Qwen2.5-VL-7B 视频分析流水线。
本文将演示如何利用由 Ara240 DNPU 加速的、基于 Gradio 的用户界面,在 AOM-2521 上构建并部署一个边缘 AI 视频助手。您可以上传一段短视频片段,用自然语言提问,设备端的 VLM 即可作答,全程无需依赖云连接。
请跟随本文了解硬件、AI 加速和软件栈如何协同工作,实现在边缘端的交互式视频理解,以及如何将同样的架构复用到您自己的边缘 AI 应用中。
2. 操作流程概览
本流程遵循源码安装指南的两个部分:
1. 在 Yocto 构建主机(x86)上:构建包含 FFmpeg 和 ffmpeg-dev 的 BSP 镜像,然后将其烧写到 microSD 卡中(第 4 节)。
2. 在 AOM-2521 目标设备上:安装 rt-sdk-ara2.deb,将模型归档文件放置到 /root/ 目录,安装 qwen2.5-vl-7b-gradio.deb,可选安装 TorchCodec,然后运行 Gradio 应用(第 5–6 节)。
3. 前置条件
3.1 所需硬件
用于构建 BSP 的主机 PC(x86)
1. 运行 Ubuntu 20.04 / 22.04 的 x86-64 PC 或工作站
2. CPU:建议 8 核以上(Yocto 构建对 I/O 和 CPU 负载要求高)
3. 内存:建议 32 GB
4. 存储:至少 100 GB 可用空间(完整的 i.MX 镜像构建体积较大);强烈建议使用 SSD
5. 网络:需可访问互联网,用于获取 Yocto 层和源码
用于运行时的 AOM-2521 目标设备
1. AOM-2521 —— NXP i.MX 95,OSM Size-L 计算机模块(最多 6× Arm Cortex-A55 @ 2.0 GHz)
2. AOM-2521 配套的研华评估载板
3. NXP Ara240 DNPU AI 加速卡
4. 容量 ≥ 64 GB 的 microSD 卡(模型权重有数 GB)
5. USB-C 调试/控制台线缆
6. 以太网连接(安装软件包和下载 TorchCodec 时需要)
7. 与设备在同一网络上的 x86 主机 PC(用于在浏览器中打开 Gradio 界面)
3.2 所需软件
NXP 软件演示包是基于 Yocto 5.2(内核 6.12.34)构建的。请将 BSP 版本与原始开发环境保持一致,否则演示可能因库依赖不匹配而无法运行。
| 组件 | 运行位置 | 用途 |
|---|---|---|
| Yocto BSP 镜像(imx-image-full) | 主机构建 → 目标设备 | 带 FFmpeg 的基础操作系统 |
| rt-sdk-ara2.deb | 目标设备 | Ara-2 NPU 运行时 + Python 虚拟环境(最先安装) |
| qwen2.5-vl-7b-gradio.deb | 目标设备 | Gradio 视频分析演示应用 |
| qwen2.5-vl-7b.tar.gz | 目标设备 | 编译后的模型权重(.dvm 文件) |
| FFmpeg / TorchCodec | 目标设备 | 视频预处理的主要加速组件 |
4. 构建带 FFmpeg 的 BSP(主机 PC)
本流程基于研华标准 BSP。下文所述的 FFmpeg 相关软件包是需要添加到 BSP 配置中的附加组件,必须在构建镜像之前完成配置。有关设置构建环境、获取 BSP 源码、配置目标平台、构建镜像以及烧写系统的完整说明,请参阅 AIM-Linux 开发者中心(https://docs.aim-linux.advantech.com/)。
FFmpeg 能显著降低视频裁剪和帧采样的延迟,而 ffmpeg-dev 是后续在目标设备上编译 TorchCodec 所必需的。请将两者都包含在镜像中。
4.1 在 local.conf 中添加软件包
在构建环境的 conf/local.conf 中添加以下内容:
IMAGE_INSTALL:append = " python3-pybind11"
IMAGE_INSTALL:append = " ffmpeg"
IMAGE_INSTALL:append = " ffmpeg-dev"
LICENSE_FLAGS_ACCEPTED:append = " commercial"
4.2 构建镜像
bitbake imx-image-full
4.3 烧写到 microSD 卡
将生成的镜像烧写到容量 ≥ 64 GB 的 microSD 卡中(此处使用 NXP 的 UUU 工具),并让 AOM-2521 从该卡启动。
图 1 —— 使用 UUU 工具将 imx-image-full 烧写到 SD 卡(“Success 1 Failure 0”)。
5. 在 AOM-2521 上安装演示(目标设备)
启动完成后,将演示文件夹(gradio_for_advantech)复制到根文件系统中。其中包含 deb 软件包、INSTALL/README/LICENSE 以及 SBOM。

图 2 —— 复制到目标设备的 gradio_for_advantech 文件夹内容。
请先连接以太网——软件包安装后的脚本和可选的 TorchCodec 安装步骤都需要网络访问。
5.1 安装 Ara-2 SDK(依赖项)
首先安装 rt-sdk-ara2.deb。它提供演示所依赖的 Ara-2 NPU 运行时和 Python 虚拟环境:
dpkg -i rt-sdk-ara2.deb
图 3 —— rt-sdk-ara2 解包并创建 Python 虚拟环境。
安装后脚本会下载 Python wheel 包、安装 Ara-2 运行时、配置交换分区,并启用 rt-sdk-ara2 服务。
图 4 —— rt-sdk-ara2 安装后脚本执行完成;脚本已安装到 /usr/bin/kinara/scripts,服务已启用。
使用以下命令确认运行时服务已启动:
systemctl status rt-sdk-ara2.service --no-pager -l
5.2 放置模型权重
将模型归档文件放到板卡的 /root/ 目录下。请勿解压——演示的安装后步骤会自动完成解压:
scp qwen2.5-vl-7b.tar.gz root@<board-ip>:/root/
图 5 —— qwen2.5-vl-7b.tar.gz 已存在于文件系统中。

图 6 —— 安装演示前确认归档文件位于 /root/ 目录。
5.3 安装 Gradio 演示软件包
安装演示软件包。此过程会解压数 GB 的模型权重,需要几分钟时间:
dpkg -i qwen2.5-vl-7b-gradio.deb
图 7 —— 演示软件包将模型解包到 /usr/share/llm,并在全系统注册 run_qwen2_5-gradio。
5.4 安装 TorchCodec(可选)
TorchCodec 使用 FFmpeg 加速视频解码和帧提取。此步骤为可选操作,但在需要更低视频预处理延迟时推荐安装。BSP 镜像必须已包含第 4 节所述的 ffmpeg 和 ffmpeg-dev,且板卡在安装期间必须能访问互联网。
确认 FFmpeg 运行时和开发头文件可用:
ffmpeg -version
test -f /usr/include/libavcodec/avcodec.h && echo "FFmpeg development headers found"
激活由 rt-sdk-ara2 创建、且 run_qwen2_5-gradio 使用的同一个 Python 虚拟环境。环境路径可能因 SDK 版本而异;请使用演示软件包附带的 INSTALL 文件中记录的环境激活路径。不要将 TorchCodec 安装到不同的系统 Python 环境中。
针对 BSP 中的 FFmpeg 库构建并安装 TorchCodec:
python -m pip install --no-cache-dir --no-binary=torchcodec torchcodec
验证从演示环境中可以导入 TorchCodec:
python -c "import torchcodec; print(torchcodec.__version__)"
如果 pip 报告不支持的 Python 或 PyTorch 版本,请安装与 SDK 所提供的 PyTorch 版本匹配的 TorchCodec 发行版;不要独立升级 SDK 自带的 PyTorch。选择版本时请参考官方 TorchCodec 兼容性表( GitHub - meta-pytorch/torchcodec: Media decoding and encoding for PyTorch: videos, images, and audio, on CPU and GPU. · GitHub )。
6. 运行视频分析助手
启动应用程序(脚本位于 /usr/bin/kinara/scripts/ 目录):
run_qwen2_5-gradio
图 8 —— 启动过程:配置验证器报告推理设备为 ARA2、端口 8081,且已检测到 Ara-2 芯片。
等待 LLM 和视觉模型均加载完成,服务器报告其 URL。
图 9 —— LLM 和视觉模型已加载;服务器运行于 http://0.0.0.0:8081。
在主机 PC 上打开浏览器,访问:
http://<board-ip>:8081/
图 10 —— Gradio 界面:左侧为上传面板,右侧为聊天机器人。
上传一段 8 秒的视频片段,等待预处理完成。
图 11 —— 视频预处理进行中。
图 12 —— 预处理完成(“视频预处理总耗时:19.3083 秒”)。
在聊天输入框中输入您的问题并提交。VLM 会返回答案及每次响应的统计信息(首令牌时间 TTFT、生成令牌数、令牌速率)。
图 13 —— 针对仓库视频片段的问答:模型统计人数并描述他们的穿着。
7. 运行结果

(演示视频占位)
8. 故障排查
8.1 Gradio 演示安装后无法启动
重新安装 SDK,移除不完整的演示软件包,然后重新安装演示:
# 重新安装 Ara-2 SDK
dpkg -i rt-sdk-ara2.deb
# 移除先前安装的软件包
sudo dpkg -P gui-qwen2.5-vl-7b
sudo dpkg -P qwen2.5-vl-7b-gradio
# 重新安装演示软件包
dpkg -i qwen2.5-vl-7b-gradio.deb
然后重启设备,再用 run_qwen2_5-gradio 重新启动。
8.2 AI 模型加载失败 / 首次启动非常缓慢
首次启动大约需要 10 分钟来加载模型——这是正常现象。如果耗时明显更长或加载失败,请检查 microSD 卡。在 AOM-2521 载板上,SD 接口目前限制为 50 MHz,因此速度慢的存储卡会显著增加加载时间甚至导致加载失败。请使用高速、高质量的存储卡。
8.3 推理过程中板卡重启(参考 MICRSE-4303)
如果在提交提示词时板卡重启,通常是电源供电不足所致。请使用正确的、额定功率充足的电源——功率不足的电源会在推理高负载下导致系统不稳定。
9. 版本说明
| 组件 | 版本 |
|---|---|
| BSP/Yocto | 5.2(内核 6.12.34) |
| Kinara SDK | r1.3 |
| ara-client | r1.1.2.0 |
| Debian软件包 | v1.3.0 |
10. 结论
通过将研华 AOM-2521(i.MX 95)与 NXP Ara240 DNPU 相结合,您可以在设备端完整运行 Qwen2.5-VL-7B 视频分析助手。构建工作在高性能的 x86 主机上完成(带 FFmpeg 的 Yocto BSP),紧凑的边缘模块则通过简洁的 Gradio 界面处理加速推理。启用 FFmpeg + TorchCodec 后,端到端延迟从分钟级降至数十秒,使其适用于需要隐私保护、低延迟和离线运行的真实边缘部署场景。
该架构的关键优势在于其异构 AI 计算模型。Ara240 离散 NPU 并不是取代 i.MX 95 SoC 中集成的 NPU,而是扩展了平台对大模型 VLM 及其他超出集成 NPU 实际性能或内存上限的重负载任务的推理能力。SoC 内置 NPU 仍可处理轻量级、对延迟敏感或并发的 AI 任务,如目标检测、分类和辅助视觉分析;而 Ara240 DNPU 则运行主要的 VLM 推理。将各工作负载分配给最合适的加速器,可在整个平台上分布 AI 处理,提升并发性和响应速度,并充分利用 SoC 和离散 AI 两种资源。工作负载的分配由应用决定,取决于模型和运行时的支持情况;单个模型不会自动在两个 NPU 之间拆分。










