转发自研扬科技

AI_GUARD

AI_GUARD是一个基于Intel x86 CPU + Intel Arc GPU(A370M)硬件平台,实现大模型(Qwen)+小模型+私域数据库融合的在线AI监管系统平台。该平台以YOLO算法为核心,实现了在不同需求场景下,识别异常并记录的功能,同时可结合大语言模型进行综合管理,提供问询等便利服务。在本文中,我们将使用OpenVINO™ 2024.4.0部署 AI_GUARD实现智能在线监管系统平台:

操作系统(OS):Ubuntu 22.04.5 LTS (Jammy Jellyfish)

使用OpenVINO™ 2024.4.0部署 AI_GUARD全部源码(MIT协议):

gitee地址:https://gitee.com/QinkSkye/AI_GUARD.git

本项目已发布版本及大模型(Qwen2.5 7B)docker镜像链接如下:

通过网盘分享的文件:AI_GUARD_Management

链接: https://pan.baidu.com/s/1YS-DrHqHQ7_3SXIjXxtmqw?pwd=mu44

OpenVINO介绍

英特尔发行版OpenVINO™工具套件基于oneAPI而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程,OpenVINO™可赋能开发者在现实世界中部署高性能应用程序和算法。

Image

2024年9月19日,英特尔发布了OpenVINO™ 2024.4版本,该版本引入了一系列新特性和优化。本次更新以最大限度减少代码更改的同时,增加了生成式人工智能(GenAI)覆盖范围和框架集成,不仅支持GLM-4-9B Chat, MiniCPM-1B, Llama 3 和 3.1, Phi-3-Mini, Phi-3-Medium 以及YOLOX-s模型,并新增了一系列值得关注的Notebook,还与Hugging Face合作,更新了Optimum-Intel解决方案,使得在利用Hugging Face API运行模型的同时,能够使用OpenVINO™ 高效地导出和压缩模型,以供OpenVINO™ GenAI套件API使用。在模型优化和内存管理方面,OpenVINO™ 2024.4版本有效降低了AI部署的成本,优化了内存使用,并显著减少了延迟。因篇幅有限,无法详细描述新版本的所有特性与优化,详情请进入官方网址查看:

https://www.intel.cn/content/www/cn/zh/

developer/articles/releasenotes/openvino/

2024-4.html

AI_GUARD介绍

AI_GUARD是一种智能在线监管系统平台,由研扬科技AI LAB实验室开发。它能在不同需求场景下,通过加载不同的模型,识别特定目标,保证7x24小时智能化管理的同时,降低人员成本和运维负荷。

该项目的核心思想在于,使用大模型作为决策层,提供问询和数据库管理;使用专用小模型实现快速目标检测,实时高效,可在此基础上加上实际应用场景的控制逻辑,实现AI自制管理,将一些低阶非关键决策交给大模型处理,高阶安全性问题及时汇报给专人管理。在此项目中使用vLLM作为大模型的推理服务后端,采用docker部署,极大的方便和简化了开发流程和周期。

Image

通过这种技术,AI_GUARD能精确识别、记录特定目标,并将结果实时推送至Web端,用户可通过浏览器、app等程序轻松查看情况,并做出对应处理。项目中,私域数据库和大模型结合的实现方式,让用户不再需要对数据库进行复杂操作与计算,仅需向大模型询问“X年X月X日共有多少条记录”等问题,便可得知对应记录和答案。

总的来说,AI_GUARD智能在线监管系统平台能在工厂生产管理、医院病患看护、高端居住区管理等多个场景大展身手,应用前景十分广泛,在降低管理成本和难度上有明显优势,是促进各项产业数字化、智能化的好帮手。

模型获取

Ultralytics 提供了一系列用于计算机视觉任务的工具,包括目标检测、图像分类、语义分割和人脸识别等。这些工具基于流行的深度学习框架如PyTorch,并通过简化复杂任务的实现过程,使用户能够更轻松地进行模型训练和性能评估。

首先安装Ultralytics 环境:Ultralytics 可以通过pip安装,在环境中输入以下指令即可:

pip install ultralytics

然后通过Python导出模型:模型导出代码如下所示:

from ultralytics import YOLO

# 加载官方模型

model = YOLO('yolov8n.pt')

# 导出模型

model.export(format='onnx')

模型导出后结构如下图所示:

Image

然后根据官方教程,安装OpenVINO™ 2024.4版本,教程网址如下(建议安装路径为 /opt/Intel/ openvino_2024):

https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-linux.html

安装完成后,运行以下命令,获取OpenVINO格式的模型

mo命令

处理后,可得到后缀名为.bin、.xml的两个新文件,模型结构如下图所示:

Image

项目获取

【源码下载和配置】

AI_GUARD项目架构如下图所示:

Image

首先使用Git克隆项目源码。输入以下指令:

git clone 命令

git clone https://gitee.com/QinkSkye/AI_GUARD.git

代码下载完成后,使用Qt6.7.2打开CMakeList.txt文件,如下图所示:

Image

选择X86架构,并按需选择编译模式后,项目文件如图所示:

Image

QT需要的模块:Multimedia、MultimediaWidgets、WebEngineWidgets、Sql

本项目依赖以下C++第三方开源库:

FFmpeg 下载地址:https://ffmpeg.org/download.html

Opencv 下载地址:https://opencv.org/releases/

Protobuf 下载地址:https://github.com/golang/protobuf

PresenterAgent 下载地址:

https://gitee.com/ascend/samples/blob/v0.4.0/

cplusplus/environment/presenteragent_install/

README_200DK_CN.md

本项目对PresenterAgent库进行了一定改造,部署时请以本项目仓库中的PresenterAgent的内容为准。

以上开源库,均已在git仓库,上传编译后文件。从git下载项目源码后,依赖项所在文件夹

如图所示:

Image

OpenVINO 推理方法

C++

初始化 OpenVINO Runtime Core

ov::Core core;

编译模型

ov::CompiledModel compiled_model = core.compile_model(model_path, device_name);

创建推理请求

ov::InferRequest infer_request =

 compiled_model.create_infer_request()

处理图像

cv::Mat letterbox_img =

 letterbox(srcImg);

blob =

 cv::dnn::blobFromImage(letterbox_img, 1.0 / 255.0, cv::Size(model_width, model_height), cv::Scalar(), true);

输入数据

auto input_port = compiled_model.input();

ov::Tensor input_tensor(input_port.get_element_type(), input_port.get_shape(), blob.ptr());

infer_request.set_input_tensor(input_tensor);

开始推理

infer_request.start_async();

获取推理结果

auto output =

infer_requestVec[0].get_output_tensor(0);

auto output_shape =output.get_shape();

后处理

cv::Mat output_buffer(output_shape[1], output_shape[2], CV_32F, data);

cv::transpose

(output_buffer, output_buffer);

Postprocess

(scale, output_buffer, srcImg);

以上是使用OpenVINO™ API 进行推理的部分代码,具体实现可以下载项目源码进行查看。

项目运行演示

配置好项目后,点击运行,如下图所示,本项目主要包含五个部分,分别为大模型对话及管理区域、车辆车牌识别子系统、跌倒检测子系统、安全帽反光衣识别子系统、区域入侵识别子系统。

Image

Image

采用OpenVINO软件包提供的vehicle-license-plate-detection-barrier-0106模型进行车辆车牌检测,license-plate-recognition-barrier-0001模型进行车牌号识别,支持实时车牌识别,并通过SQLite数据库存储每个识别的车牌号信息,包括识别时间、车牌号以及车牌图像的路径,与大模型结合后,用户可以直接通过大模型查询指定时间的车辆进入情况,方便后期查询和管理识别记录。

Image

跌倒检测子系统基于 YOLOv5 深度学习模型,结合 Intel 的 OpenVINO 工具套件优化模型,提高推理速度,用于实时检测视频流中的跌倒事件,同时集成了 SQLite 数据库,用于存储检测到的跌倒事件信息。该系统不仅能实时检测跌倒行为,还能将关键数据记录到本地数据库中,为后续分析改进场所布局,预防并减少跌倒提供可靠的数据支持。系统旨在提高跌倒检测的精度和效率,适用于监控场景中需要实时安全预警的应用,例如养老院、医院和智能家居等场景。

Image

安全帽反光衣识别子系统利用 YOLOv5 深度学习模型,实现对视频流中的安全帽与反光衣的精准识别,使用 OpenVINO 优化模型提高推理速度,满足设备上的实时计算需求。通过 SQLite 数据库存储检测到的违规记录,包括时间戳、检测对象类别(安全帽/反光衣)以及图片截帧。支持查询以及导出功能,方便后续的安全管理和审核。集成大语言模型,提供智能化的用户交互功能,例如基于自然语言查询检测结果、生成检测报告等。适用于工地、工厂和其他需要安全装备检测的场景。

Image

区域入侵识别子系统采用YOLO v8模型,可对指定区域进行框选,并对框选区域进行目标检测识别,同时会将识别到的异常记录进数据库,方便查阅及后续逻辑控制和警报系统的联动。

在使用时,用户可以根据自己需求,选择待推理数据,支持图片、视频、RTSP、摄像头四种输入方式,然后点击“Start”按钮,即可开始推理,并将结果上传至网页。如有其余疑问,请打开项目仓库中“用户手册.txt”文件,查询对应条目。

总结

随着技术的不断进步和完善,我们有理由相信,未来的安防系统将更加智能、高效,为人们的生活和工作提供更坚实的保障。此项目的实施是对未来智慧城市建设和公共安全管理理念的一次重要探索,随着更多类似智能系统的推广和应用,我们期待看到一个更加智慧化、人性化的社会安全管理体系逐渐成形。

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐