Red Hat AI

Building an AI-powered multimodal compliance monitor: From training to tracking to chat

6.9内容质量

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#编程#前端#后端#云计算
打开原文

构建一个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文件

快速启动安装步骤

  1. 克隆仓库并准备配置文件:
code
git clone https://github.com/rh-ai-quickstart/multimodal-compliance-monitor.git 
cd multimodal-compliance-monitor 
cp .env.example .env
  1. 使用容器编排部署本地环境或运行集群部署目标:
code
# 本地编排执行 
podman-compose up -d 
# 通过Helm在OpenShift/Kubernetes部署(仅使用CPU,不使用GPU) 
make deploy-cpu
# 通过Helm在OpenShift/Kubernetes部署(使用CPU和GPU) 
make deploy-gpu
  1. 通过访问 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 平台的最新信息

应用程序

深入了解我们解决最复杂应用程序挑战的方案

虚拟化

您本地或跨云工作负载的企业虚拟化未来