Building an AI-powered multimodal compliance monitor: From training to tracking to chat
TL;DR · AI 摘要
Building an AI-powered multimodal compliance monitor: From training to tracking to chat Component Article teaser Septemb...
核心要点
- 主题聚焦:Building an AI-powered multimodal compliance mon
- 来源:Red Hat AI,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
构建一个AI驱动的多模态合规监控系统:从训练到跟踪到聊天
组件 | 文章摘要
2026年9月30日
10分钟阅读
人工智能
Ganesh Murthy
子模式 | 社交分享集
组件 | 社交分享
分享
子模式 | 订阅
组件 | 社交图标
订阅RSS
组件 | 图标
© Red Hat, Inc. CC-BY-4.0许可
子模式 | 结果导航
组布局
组件 | 导航链接
- 返回所有文章
组件 | 通用
组织在拥有多个视频流的设施中,面临着持续的挑战,需要维护工作场所的安全、安保、资产跟踪和运营合规性。人工监控资源消耗大,本质上是被动的,常常会错过关键事件或表明安全风险的模式。单个安全人员盯着一整排屏幕,无法可靠地跟踪繁忙工厂地板上每个工人是否佩戴了安全帽、背心和口罩,更不用说回忆上周的合规趋势了。
该项目通过一个完整的端到端AI监控系统解决了这个问题,该系统将计算机视觉和大型语言模型(LLMs)整合到一个平台中。它超越了简单的物体检测——它可以帮助训练自定义模型,实时提供服务,跨视频帧跟踪人员和设备,将相关数据持久化到数据库,并允许用户通过自然语言聊天查询所有内容。底层数据库模式经过精心设计,具有通用性——它使用灵活的JSONB(JSON二进制)属性存储轨迹和观察结果,而不是特定场景的数据库列——因此,同一应用程序可以捕捉任何监控场景的细节(野生动物、人员、车辆交通、仓库操作和生产线)而无需对应用程序进行任何更改。作为Red Hat OpenShift AI的AI快速入门示例,它展示了这些功能如何在一个生产级应用程序中结合在一起,该应用程序可用于许多监控场景。
以下是对整个工作流程的逐步介绍——从图像标注和训练模型,到实时检测和跟踪,再到对话式分析和实时仪表板。
训练自定义检测模型
该系统使用You Only Look Once v8(YOLOv8),这是一种最先进的物体检测架构。开箱即用,YOLOv8在Common Objects in Context(COCO)数据集上进行了预训练,可以识别80种常见的物体类别——人、汽车、动物和日常物品。对于许多一般的监控场景,这个预训练模型无需额外训练即可立即使用。然而,当部署需要检测超出COCO词汇范围的特定领域物体(如安全帽、安全背心和口罩)时,必须通过迁移学习在新的标注图像上对模型进行微调。
通过集成的Label Studio实例支持标注这些图像,该实例可通过自己的Red Hat OpenShift路由访问,提供基于浏览器的标注界面,其背后使用与应用程序其他部分相同的PostgreSQL和MinIO存储堆栈。对于希望加速标注的团队,训练流程包括可选的AI辅助标注功能,由Grounding DINO提供支持,可以自动生成初始边界框供人工审核和优化。
有关如何标注和标注图像的详细步骤,请参阅训练README。
该项目包含一个 Jupyter 笔记本,逐步演示训练流程:安装依赖项、整理数据集、生成训练配置以及运行 YOLOv8 迁移学习。输出结果是一个可用于部署的训练权重文件。对于希望进一步自动化的团队,使用 Kubeflow 管道方法——将自动标注到训练、验证和条件部署的组件串联起来——是在 OpenShift AI 上的自然延伸步骤,尽管本项目未展示该方法。
从训练模型到服务端点
模型训练完成后,需要以低延迟方式部署以实现实时视频处理。系统支持两种模型服务运行时,选择依据是可用的硬件类型。
针对 CPU 部署,系统使用 OpenVINO 模型服务器(OVMS)。在模型服务器启动前,一个准备容器会自动将训练好的 PyTorch 权重导出为 OpenVINO 的优化中间表示格式。对于支持 GPU 的部署,系统使用 KServe 配合 NVIDIA 的 Triton 推理服务器,遵循标准的开放推理协议。
两种运行时都通过远程过程调用(gRPC)与后端通信,实现快速低开销的推理调用。后端的运行时抽象层在启动时动态选择合适的客户端,使应用程序其余部分无需关心底层服务基础设施。
单个部署可同时服务多个模型。包含的演示配置展示了这一点:个人防护装备(PPE)检测(10 个类别)、鸟类物种识别,以及使用预训练模型进行通用交通监控——所有模型均通过同一基础设施提供服务,并可在运行时切换。
通过应用的配置页面添加新视频源。用户需提供模型服务器 URL(OVMS 或 KServe 端点)、模型名称(如 ppe、bird 或 yolov8n)、视频源(本地文件路径、S3 对象 URL 或实时流协议(RTSP)流),以及 JSON 类定义(将模型的数字类索引映射到可读名称,并指定需要跟踪的类别)。上传按钮允许直接从浏览器将视频文件推送到 MinIO 存储。
图1:设置视频流的配置对话框。
实时视频处理与目标检测
当模型已部署后,系统即可处理实时视频。它可接收多种来源的视频帧:通过 RTSP 的实时摄像头流、存储在 MinIO 中的 MPEG-4(MP4)文件,或本地视频文件。RTSP 流包含自动重连逻辑;基于文件的源会持续循环并限制到原生帧率。
推理管道设计注重吞吐量。一组工作线程池预处理传入的帧,并将它们批量合并为每个推理调用的单个张量,减少单个 gRPC 调用的开销。推理完成后,原始模型输出会经过标准后处理:非极大值抑制消除重复检测、坐标转换将结果映射回原始帧尺寸,以及置信度阈值过滤低质量预测。
一个关键的架构决策是采用广播模式实现多客户端流媒体传输。无论连接多少个浏览器客户端,系统都会对每帧画面仅执行一次推理计算。边界框绘制和JPEG编码操作只进行一次,随后将结果分发到所有连接的客户端队列中。这种设计避免了为每个观众重复执行昂贵计算所带来的成本。
图2:广播模式的实现方式。图片由Claude AI生成
多目标跟踪与PPE关联
检测功能仅能告知单帧画面中包含的内容。跟踪功能则能揭示随时间推移发生的动态变化。系统采用BoostTrack++多目标跟踪算法,在专用操作系统进程(而非单纯线程)中运行,以隔离其计算资源与其他处理流程。
跟踪器在不同帧之间为人员和物体维持持久的身份标识。但仅靠跟踪不足以实现合规监控——系统还需要知道哪些PPE装备属于哪些人员。它通过空间关联步骤解决这一问题:对每个被跟踪人员,系统会使用高效的向量化操作计算哪些安全帽、背心和口罩与其边界框存在重叠。结果是每个人的合规状态会在每一帧画面中得到更新。
为避免数据库被冗余数据淹没,系统实现了状态变更检测机制。只有当工人PPE状态发生变化时(例如有人摘下安全帽或穿上背心),系统才会记录新的观测数据。这些轨迹和观测数据通过批量事务写入PostgreSQL,逐步构建出丰富的历史记录,供对话式AI层进行查询。
下图展示了该数据库模式如何处理三种完全不同的监控场景——PPE合规、鸟类观察和交通监控——而无需任何结构变更。detection_classes表定义了每个模型的检测对象,detection_tracks存储被跟踪物体的身份标识,detection_observations表则通过灵活的JSONB属性列记录每个轨迹的状态,该列中包含工人的PPE状态信息,或在更简单的场景(如鸟类或车辆计数)中保持为空。
图3:通用数据库(DB)模式,可在不修改模式的情况下收集任何视频数据。图片由Claude AI生成
对话式AI:聊天与自然语言警报
这正是系统真正实现多模态交互的环节。与其要求用户编写SQL查询或浏览仪表板来理解合规趋势,系统提供了由LangGraph状态机驱动的自然语言聊天界面。
聊天流程从一个澄清器开始,它利用对话历史将模糊的后续问题重写为独立查询。随后,每个问题会通过智能分类器进行路由,判断用户是询问当前发生的情况还是历史数据。
现在时态的问题——"地板上有多少人?"或"所有人都戴了安全帽吗?"——会直接根据摄像头当前画面的实时检测上下文进行回答。历史问题——"昨天有多少工人没戴安全帽?"或"上周背心合规率平均是多少?"——则会通过完全不同的路径处理。SQL规划器会将问题分解为所需的特定指标,SQL代理会生成并执行针对跟踪数据库的查询,最后的综合步骤会将原始查询结果转化为人类可读的答案。
数据库访问层使用模型上下文协议(Model Context Protocol,MCP)连接到只读的PostgreSQL工具服务器。应用层安全防护机制会验证每个生成的SQL查询是否限定在当前视频配置范围内,防止通过LLM生成的查询导致跨租户数据泄露。
除了聊天功能,系统还支持自然语言告警。用户可以用纯英文输入告警规则——例如"如果过去一小时内有超过3人未佩戴安全帽,请告警"——系统会将其转换为SQL查询,并定期对实时追踪数据执行。告警结果会以不同严重等级显示在仪表盘中,且规则可随时编辑或删除。
仪表盘:整合所有功能
基于React的前端将整个工作流程整合到统一界面中。采用三面板布局:左侧是带视频缩略图的源选择器,中间是带检测覆盖层的实时视频流,右侧是聊天助手。
中间面板显示Motion JPEG(MJPEG)视频流,实时绘制检测目标的边界框,并持续更新检测数量和自动化安全合规摘要。聊天面板支持完整的Markdown渲染,便于展示复杂历史查询的结构化答案。
以下是仪表盘运行交通监控视频的示例。模型检测并追踪繁忙道路上的车辆,在每辆车周围绘制带置信度评分的边界框。左侧的源选择器显示可用视频流——用户只需单击即可切换不同视频源。
图4:交通摄像头实时画面
切换到PPE合规性视频时,同一仪表盘现在可检测人员、安全帽、安全背心及其缺失情况。视频下方的"最新检测"面板显示实时统计(如"安全帽:3,无安全背心:2,人员:4"),而"安全趋势"部分则展示滚动合规率——所有数据均自动从追踪数据生成,无需任何配置更改。
图5:工地实时画面
您很容易集成对门禁卡车/车辆入口的实时闭路电视(CCTV)监控,例如下图所示场景。您只需将该用例训练好的模型上传到应用即可。
图6:门禁卡车/车辆入口实时画面。图像由Claude AI生成
多个浏览器标签页或客户端通过服务器发送事件(Server-Sent Events,SSE)保持同步。当1个用户切换视频源时,所有连接的客户端会自动更新。专用配置页面提供视频源管理、检测类别定义和告警规则的完整管理功能,包括可直接上传新视频文件到MinIO存储。
仅需CPU运行——无需GPU
整个应用已优化为可在CPU硬件上运行。默认的模型服务运行时OpenVINO Model Server专为CPU推理设计,无需GPU即可提供实时视频处理所需的性能。这使没有GPU基础设施的团队也能使用该系统,并保持部署成本低廉。
对于小规模部署——监控从1到约30个视频流——基于CPU的推理已绰绰有余。OpenVINO优化的模型执行、批量推理调用和高效的帧处理相结合,使系统在该规模下延迟远低于实时要求。对于需要扩展到更大规模的组织,系统也支持通过NVIDIA Triton推理服务器实现GPU加速推理的KServe,但GPU是扩展选择而非必要条件。
架构概述
该架构设计注重模块化、可扩展性,并可无缝部署在OpenShift AI和混合云环境中。
系统组件
| 层/组件 | 使用技术 | 功能 | |---|---|---| | 前端 | React, React Router, Axios, Markdown渲染 | 视频流监控交互仪表板、目标检测可视化、配置管理、聊天界面 | | 后端API | Python, Flask API | 处理视频采集、编排检测流水线、管理数据库持久化、暴露REST端点 | | 计算机视觉 | Ultralytics YOLO, OpenVINO模型服务器, KServe, BoxMOT | 执行目标检测(如安全徽章、PPE合规性)、多目标跟踪、逐帧分析 | | LLM与可观测性 | LangGraph, Arize Phoenix, OpenAI兼容API | 驱动对话查询工作流、构建自然语言安全报告、追踪LLM执行轨迹 | | 存储层 | MinIO, PostgreSQL | 存储原始视频流、处理后的片段、帧元数据、边界框坐标和审计日志 |
部署选项
对于本地开发和演示,Podman Compose配置可启动完整堆栈——包含MinIO、PostgreSQL、MCP服务器、RTSP媒体中继、模型准备、模型服务、后端、前端以及Label Studio和Arize Phoenix等可选组件在内的12个容器化服务。
生产环境部署通过Helm chart在Kubernetes或OpenShift上部署相同应用,支持路由、网络策略、安全上下文约束和持久卷声明。初始化容器负责在后端启动前的工作流:将模型和视频资产上传到MinIO,然后下载到本地存储。
应用部署与运行
应用支持使用Podman或Docker进行本地容器化执行,也支持通过Helm chart在Kubernetes和Red Hat OpenShift上进行云原生部署。
先决条件
- 本地环境:Podman或Docker,配合podman-compose或docker-compose
- 集群部署:Red Hat OpenShift CLI(oc)或kubectl
- Kubernetes清单部署:Helm 3.x
- 配置文件:包含OpenAI兼容API端点凭证和存储参数的.env文件
快速启动安装步骤
- 克隆仓库并准备配置文件:
git clone https://github.com/rh-ai-quickstart/multimodal-compliance-monitor.git
cd multimodal-compliance-monitor
cp .env.example .env- 使用容器编排部署本地环境或运行集群部署目标:
# 本地编排执行
podman-compose up -d
# 通过Helm在OpenShift/Kubernetes部署(仅使用CPU,不使用GPU)
make deploy-cpu
# 通过Helm在OpenShift/Kubernetes部署(使用CPU和GPU)
make deploy-gpu- 通过访问 http://localhost:8888(或您的 OpenShift 路由 URL)进入仪表板网页界面,上传视频流、连接 RTSP 流并查看实时 AI 检测结果。
结论与下一步
该项目展示了当计算机视觉与大型语言模型(LLMs)结合在一个端到端平台时所能实现的潜力。工作流程涵盖从图像标注和训练自定义 YOLO 模型,到实时视频处理和多目标跟踪(带有持续的 PPE 关联),再到支持用户通过自然语言查询实时和历史合规数据的对话式分析。
这不是一组相互独立的 AI 演示——这是一个各层紧密衔接的完整应用:训练生成模型,模型产生检测结果,检测结果生成轨迹,轨迹生成数据库记录,这些记录可通过自然语言聊天和告警进行查询。这种集成使其适用于实际工作场所的安全监控,而不仅仅是概念验证。
要查看代码、在您的环境中部署 AI 快速入门或为项目做贡献,请访问 GitHub 仓库。
Block | Dynamic pattern deluxe promo
Component | Band_header
Resource
适应性强的企业:AI 准备度即颠覆准备度
这本电子书由 Red Hat 首席运营官兼首席安全官 Michael Ferris 撰写,帮助 IT 领导者应对当前面临的 AI 技术变革和颠覆性挑战。
Component | spacer
Component | Cta_multi_basic
Subpattern | simple_cta
Component | CTA
获取资源
Deluxe mbox
Component | Card_header
关于作者
Subpattern | speaker
Card layout
Component | Image_embed
Component | Person
Ganesh Murthy
更多相关内容
Dynamic pattern
Blog post
重新构想智能体时代的企业创新引擎
用于网络运营的智能体 AI:在经过验证的自动化基础上做出更明智的决策
原始播客
Red Hat 如何为可扩展 AI 清理 IT 债务
使用 PyTorch 标准化 AI 堆栈
Subpattern | card_flex
Subpattern | text_basic
继续探索
- 什么是智能体 AI?文章
- 预测性 AI 与生成性 AI 对比 文章
- 构建生产就绪的 AI/ML 环境的首要考虑因素 电子书
- 以 Ansible 方式实现生成性 AI 视频
- 通过现代应用平台实现创新与转型 电子书
继续探索 mbox
Subpattern | simple_text
按频道浏览
探索所有频道
Pattern | raw_html
自动化
有关技术、团队和环境的最新 IT 自动化信息
人工智能
关于使客户能够随时随地运行 AI 工作负载的平台的更新
混合云
探索我们如何通过混合云构建更加灵活的未来
安全
有关我们如何在各种环境和技术中降低风险的最新信息
边缘计算
有关简化边缘操作平台的最新信息
基础设施
有关全球领先的企业级 Linux 平台的最新信息
应用程序
深入了解我们解决最复杂应用程序挑战的方案
虚拟化
您本地或跨云工作负载的企业虚拟化未来