基于 RK3588 / RK35XX 等 ARM 边缘计算设备的生产级 AI 视频智能分析系统,支持 20+ 种场景算法,即装即用。
Edge AI Video Analyzer 是一套运行在 ARM 边缘计算设备(如 RK3588、RK35XX 系列)上的 AI 视频智能分析系统。系统直接部署在摄像头或 NVR 所在的局域网边缘节点,通过 NPU 硬件加速实现毫秒级推理,无需将视频上传至云端,兼顾实时性、隐私安全和低成本。
系统由以下模块组成:
| 模块 | 说明 | 开源状态 |
|---|---|---|
| Analyzer | 视频分析引擎,拉流→解码→推理→告警 | 闭源(免费使用) |
| Admin | Web 管理后台,布控/算法/告警管理 | 闭源(免费使用) |
| Package | 系统安装包(一键部署) | 闭源(免费使用) |
| ATaskPlugin | 算法插件开发套件(SDK + 文档 + 示例) | ✅ 开源(MIT) |
覆盖安全生产、明厨亮灶、智慧工地、智慧交通等多个行业场景,内置 20+ 种成熟算法:
| 类别 | 算法 |
|---|---|
| 安全穿戴 | 安全帽识别、反光衣识别、厨师帽/厨师服/口罩/手套识别、安全带识别 |
| 行为检测 | 吸烟检测、打架检测、摔倒检测、攀爬识别 |
| 区域安全 | 区域入侵检测、临边防护、高空抛物 |
| 环境安全 | 烟火识别、裸土识别、垃圾检测、老鼠识别 |
| 交通车辆 | 车辆类型识别、渣土车车盖识别、车辆尾气识别、车轮冲洗检测 |
| 人员统计 | 人员计数、人头识别 |
- 支持 RTSP / RTMP / GB28181 等多种标准视频流协议接入
- RKMPP 硬解码 + RKRGA 图像转换,充分利用 Rockchip NPU 加速,大幅降低 CPU 占用
- 支持单流多算法并行分析,帧间隔可配置
- 支持 C++ 动态库(.so) 和 Python 脚本(.py) 两种插件形态
- 算法包通过 Web 后台上传 → 自动解压 → 写入数据库 → Analyzer 启动时自动加载,全程无需停机
- 共享库架构:多个算法共用同一个
libCommonPlugin.so,各包只需提供配置与模型文件,大幅减少冗余
- 布控管理:创建/编辑/启停布控任务,绑定视频流与算法组合
- 算法管理:上传算法包、查看版本信息、启用/禁用
- 告警中心:查看历史告警记录(图片/视频),支持筛选导出
- 支持一键执行全部布控、标准库/自定义库分离管理
- 支持图片和视频片段两种告警留存方式
- 可配置告警间隔时间、多边形/线段区域布控(仅指定区域触发告警)
- 告警滑动窗口去重(
interval_threshold_window),有效减少重复推送 - 告警结果支持 HTTP 回调推送至第三方平台
| 模式 | 说明 |
|---|---|
| TurboMode | 高性能模式,单路视频全速推理 |
| BalanceMode | 均衡模式,自动根据任务数调整线程策略 |
系统内置视觉大模型(VLM)智能复审引擎,在传统 AI 算法产生告警后,自动调用多模态大模型进行二次研判,有效降低误报率。
flowchart LR
A[传统算法<br>产生告警] --> B[告警入库<br>state=待复检]
B --> C[异步复检线程池]
C --> D[读取告警截图<br>Base64编码]
D --> E[调用 VLM 大模型<br>视觉+文本推理]
E --> F{关键词匹配<br>大模型判定}
F -->|确认真实告警| G[state=未读<br>WebSocket推送]
F -->|判定误报| H{是否保留<br>误报数据}
H -->|保留| I[state=复检为误报]
H -->|不保留| J[删除告警及文件]
| 特性 | 说明 |
|---|---|
| 两阶段检测 | 一阶段(传统算法快速筛查)+ 二阶段(VLM 视觉大模型精细复审),兼顾速度与精度 |
| VLM 插件体系 | 支持 C++ / Python 两种 VLM 插件开发,可在通用算法策略中灵活配置 |
| 多模型渠道 | 支持 OpenAI 兼容接口,可对接通义千问、DeepSeek 等任意 VLM 服务 |
| 告警复检 | 告警产生后自动提交异步复检,支持自定义提示词(Prompt)、告警关键词过滤 |
| 柔性策略 | 可配置超时时间、重试次数、重试间隔、是否保留误报数据 |
| 并发控制 | 可配置复检线程池并发数和队列上限,适配不同算力设备 |
| 全链路闭环 | 复检通过→推送告警;复检误报→删除/标记,全流程自动化 |
在布控任务的算法策略中,可配置以下复检参数:
{
"recheck": {
"enabled": true,
"llm_channel_id": "channel_01",
"prompt_text": "请判断该图片中是否存在人员未佩戴安全帽的情况。",
"alarm_keywords": "未佩戴安全帽,未戴安全帽,头部裸露",
"timeout": 60,
"retry_count": 2,
"retry_interval": 5,
"save_false_positive": false
}
}系统资源概览(CPU/内存/存储)、摄像头在线状态、服务健康状态一目了然。
左侧功能菜单涵盖运维数据、媒体管理、告警管理、算法管理、布控管理等模块;右侧告警列表支持批量已读、删除、下载。
系统资源使用率、服务运行状态和摄像头在线情况的综合监控视图。
深色主题大屏:四路视频实时分析、最新告警缩略图、近7日告警趋势、告警类型排行及告警统计。
本项目的不同模块采用不同的授权方式:
| 模块 | 授权方式 | 说明 |
|---|---|---|
| ATaskPlugin | MIT 开源 | 算法插件开发套件(SDK + 文档 + 示例),可自由使用、修改、分发 |
| Analyzer | 闭源 · 免费使用 | 视频分析引擎,提供预编译二进制,免费用于个人及商业用途 |
| Admin | 闭源 · 免费使用 | Web 管理后台,提供预编译二进制,免费用于个人及商业用途 |
| Package | 闭源 · 免费使用 | 系统安装包,提供预编译二进制,免费用于个人及商业用途 |
MIT License
Copyright (c) 2024 EdgeAI
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| SoC | RK3566 / RK3568 | RK3588 |
| NPU | ≥ 1 TOPS | ≥ 6 TOPS |
| 内存 | 2 GB | ≥ 4 GB |
| 存储 | 16 GB | ≥ 64 GB |
- Debian 11+ / Ubuntu 20.04+ (ARM64)
- 其他 ARM Linux 发行版理论上兼容,但未做全面测试
sudo apt update
sudo apt install -y \
cmake make meson ninja-build \
python3-pip python3-venv python3-dev \
libssl-dev libcurl4-openssl-dev \
libjsoncpp-dev libwebsocketpp-dev \
libboost-system-dev libboost-thread-dev \
libbsd-dev nginx从本仓库的 Package/ 目录下载最新安装包:
Package/EdgeAIAnalyzer_v2.4.0.zip
# 上传至边缘设备并解压
unzip EdgeAIAnalyzer_v2.4.0.zip -d /root/
cd /root/安装包解压后的目录结构:
edgeai/
├── config.json # 系统配置(设备ID、端口、算法参数等)
├── start.sh # 一键启动
├── stop.sh # 停止服务
├── update.sh # 在线升级脚本
├── edgeapp # 主执行程序
├── analyzer_admin/ # Web 管理后台
│ └── static/
│ └── upload/
│ └── algorithm/ # 算法包上传目录
└── analyzer_core/ # 视频分析引擎 + MediaServer
编辑 config.json,根据实际环境修改设备 UUID、数据库路径等参数。
chmod +x start.sh stop.sh update.sh
./start.sh浏览器打开 http://<设备IP>:9001(或通过 Nginx 映射到 80 端口)。
从 ATaskPlugin 开始,三步完成算法开发与部署:
cd ATaskPlugin/cpp/CommonPackage
chmod +x build.sh
./build.sh产物:build/libCommonPlugin.so
cd ATaskPlugin/cpp/CommonPackage
chmod +x 打包脚本.sh
# 交互式选择要打包的算法
./打包脚本.sh
# 或打包全部算法
./打包脚本.sh --all
# 跳过编译(已编译过),仅打包某个算法
./打包脚本.sh --no-build local_person_hat生成 .tar.gz 格式的算法包,内含 shared_libs/(共享库)+ 所选算法目录(配置+模型)。
- 打开 Admin 管理后台 → 算法管理 → 上传算法包
- 上传后算法信息自动写入数据库,文件部署至
/userdata/algorithm/ - 重启 Analyzer 即可自动加载新算法:
systemctl restart analyzer
# 或
./AVSAnalyzer -f ../../config.jsontail -f /var/log/analyzer.log | grep -E "算法插件|加载|Plugin"📖 详细步骤参见 ATaskPlugin/README.md
以下算法已通过测试并在生产环境稳定运行:
| 序号 | 算法标识(task_name) | 中文名称 | 算法类别 | 说明 |
|---|---|---|---|---|
| 1 | local_person_hat |
安全帽识别 | 安全穿戴 | 检测人员是否正确佩戴安全帽 |
| 2 | local_person_reflective |
反光衣识别 | 安全穿戴 | 检测人员是否穿着反光衣 |
| 3 | local_person_chef_hat |
厨师帽识别 | 明厨亮灶 | 检测后厨人员是否佩戴厨师帽 |
| 4 | local_person_chef_uniform |
厨师服识别 | 明厨亮灶 | 检测后厨人员是否穿着厨师服 |
| 5 | local_person_mask |
口罩识别 | 明厨亮灶 | 检测后厨人员是否佩戴口罩 |
| 6 | local_person_gloves |
手套识别 | 明厨亮灶 | 检测后厨人员是否佩戴手套 |
| 7 | local_person_smoking |
吸烟检测 | 行为识别 | 检测吸烟行为并告警 |
| 8 | local_person_fight |
打架检测 | 行为识别 | 检测人员肢体冲突行为 |
| 9 | local_person_fall |
摔倒检测 | 行为识别 | 检测人员跌倒事件 |
| 10 | local_person_climb |
攀爬识别 | 行为识别 | 检测人员翻越/攀爬行为 |
| 11 | local_area_intrusion |
区域入侵 | 区域安全 | 设定禁区,检测人员非法闯入 |
| 12 | local_edge_protection |
临边防护 | 区域安全 | 基坑/楼板边缘危险区域检测 |
| 13 | local_high_altitude |
高空抛物 | 区域安全 | 检测高层建筑抛物事件 |
| 14 | local_fire_smoke |
烟火识别 | 环境安全 | 检测火焰和烟雾 |
| 15 | local_bare_soil |
裸土识别 | 环境安全 | 工地裸土未覆盖检测 |
| 16 | local_garbage |
垃圾检测 | 环境安全 | 检测区域垃圾堆积 |
| 17 | local_rat |
老鼠识别 | 环境安全 | 检测老鼠出没 |
| 18 | local_vehicle_type |
车辆类型识别 | 交通车辆 | 区分不同车辆类型 |
| 19 | local_muck_car_cover |
渣土车车盖识别 | 交通车辆 | 检测渣土车是否规范盖盖 |
| 20 | local_vehicle_exhaust |
车辆尾气识别 | 交通车辆 | 检测黑烟车/超标排放 |
| 21 | local_wheel_wash |
车轮冲洗检测 | 交通车辆 | 检测车辆是否经过冲洗台 |
| 22 | local_seatbelt |
安全带识别 | 安全穿戴 | 检测驾驶员是否系安全带 |
| 23 | local_person_count |
人员计数 | 人员统计 | 统计指定区域内人员数量 |
💡 以上均可通过 ATaskPlugin 进行二次开发和自定义扩展。算法标识(task_name)需全局唯一。
ATaskPlugin 提供了完整的算法插件开发工具链,支持 C++ 和 Python 两种开发方式。
#include "PluginInterface.h"
class MyAlgorithm : public ATaskServer::IPlugin {
public:
bool initialize() override {
// 注册 TaskMode / ControlApi
return true;
}
void shutdown() override {}
PluginMetadata getMetadata() const override {
return {"my_algorithm", "1.0.0", "Author", "算法描述", "1.0"};
}
};
EXPORT_PLUGIN(MyAlgorithm)from plugin_sdk import PluginBase, AlgorithmResult
class MyPythonAlgorithm(PluginBase):
def initialize(self, config: dict) -> bool:
return True
def process_frame(self, frame, extra_info: dict) -> AlgorithmResult:
# 在此实现推理逻辑
return AlgorithmResult()
def shutdown(self):
passmy_algorithm/
├── control_config.json # 算法配置文件(必需)
├── plugin/ # 插件目录(必需)
│ ├── algorithm.so # C++ 插件(二选一)
│ └── algorithm.py # Python 插件(二选一)
├── model/ # 模型文件(可选)
│ └── model.rknn
└── README.md # 说明文档(推荐)
Q: 开源版和商业版有什么区别?
开源版与商业版的核心分析引擎完全一致,均可免费使用全部算法功能。区别仅在于商业版提供定制化服务和技术支持。开源版默认使用 DEVICE_TYPE="edgeai" / TENANT_NAME="opensource" 的授权配置。
Q: 是否必须在 Rockchip 设备上运行?
目前仅正式支持 RK3566/RK3568/RK3588 等 Rockchip 系列 SoC。这些芯片内置 NPU(神经网络处理单元),是系统实现低功耗实时推理的硬件基础。其他 ARM 平台理论上可通过纯 CPU 模式运行,但性能和实时性无法保证。
Q: 如何接入自己的摄像头?
在 Admin 管理后台的布控管理中,输入摄像头的 RTSP/RTMP 拉流地址即可。确保边缘设备与摄像头在同一网络中互通。
Q: 可以用自己的模型吗?
可以。通过 ATaskPlugin 插件开发套件,你可以:
- 将自定义模型封装为 C++ 或 Python 插件
- 打包为标准算法包(.tar.gz)
- 通过 Admin 上传后由 Analyzer 自动加载
模型格式须转换为 RKNN(Rockchip NPU 专用格式)。
Q: 一个设备能同时分析多少路视频?
取决于 SoC 算力、分辨率和加载的算法数量。以 RK3588 为例,单路 1080P 视频同时运行 4-6 个轻量算法无明显瓶颈。建议根据实际场景测试确定最优路数。
Q: 系统启动失败怎么办?
- 确认 config.json 配置正确,特别是设备 UUID 和数据库路径
- 确认所有依赖已安装
- 查看日志输出定位具体错误:
tail -f /var/log/analyzer.logQ: 如何参与贡献?
欢迎通过以下方式贡献:
- Issue:报告 Bug、提出功能建议
- Pull Request:优化 ATaskPlugin 插件、完善文档、分享新算法插件
- Discussions:分享使用经验、交流部署方案
目前仅接受 Package/ 和 ATaskPlugin/ 目录下的贡献,其他核心模块暂不接受 PR。
以下功能正在规划或开发中,欢迎通过 Issue / Discussion 参与讨论:
| 框架 | 状态 | 说明 |
|---|---|---|
| YOLOv8-Seg | 🔜 规划中 | 实例分割,扩展区域检测精度 |
| YOLOv26 | 🔜 规划中 | 新一代检测架构,更高精度与效率 |
| PaddleOCR | 🔜 规划中 | 文字识别,支持车牌/仪表/标牌等场景 |
| RT-DETR / D-FINE | 📋 待评估 | Transformer 系检测器 |
| 功能 | 状态 | 说明 |
|---|---|---|
| 声音告警 | 🔜 规划中 | 触发告警时联动设备扬声器播放语音/警报音 |
| 外部音响 | 🔜 规划中 | 支持 USB / 蓝牙 / 网络音响设备联动 |
| 灯光控制 | 🔜 规划中 | GPIO 继电器控制警示灯/爆闪灯,支持 Modbus 协议 |
| 显示屏联动 | 📋 待评估 | HDMI 屏信息推送,实时告警大屏展示 |
| 平台 | 状态 | 说明 |
|---|---|---|
| Rockchip RK | ✅ 已支持 | RK3566 / RK3568 / RK3588 NPU |
| RK182x | 🔜 规划中 | 新一代 Rockchip 平台适配 |
| NVIDIA Jetson | 🔜 规划中 | Orin / Xavier NX 等,TensorRT 加速 |
| Intel OpenVINO | 📋 待评估 | x86 边缘服务器场景 |
| Hailo-8 | 📋 待评估 | Hailo NPU 加速卡 |
| 功能 | 状态 | 说明 |
|---|---|---|
| 大模型网关 | 🔜 规划中 | 统一管理多模型渠道、负载均衡、故障转移 |
| Skills 能力插件 | 🔜 规划中 | 基于大模型的意图识别与任务编排,支持自然语言交互 |
| CLI 指令控制 | 🔜 规划中 | 终端命令行管理设备、布控、告警等 |
| 云平台完善 | 🔜 规划中 | 多设备集群管理、统一运维面板、云端升级 |
| 运维增强 | 🔜 规划中 | 磁盘自动清理策略、日志轮转、健康度评分、异常自愈 |
💡 路线图可能根据社区反馈和市场变化调整,欢迎在 Discussions 中提出建议。
Edge AI Video Analyzer — 让 AI 视频分析触手可及
插件开源(MIT)· 完整系统免费使用
扫码添加微信,获取技术支持与商业合作
微信号:EdgeAIAnalyzer · 备注「开源交流」




