使用 OpenVINO™ 在 Linux AI 开发套件上实现实时人流统计:从入门到精通

点击蓝字

关注我们,让开发变得更有趣

作者 | Anisha Udayakumar 英特尔AI软件布道师

武卓 英特尔AI软件布道师

排版 | 吴紫琴

OpenVINO™

介绍

基于 AI 的智能化、自动化人流统计在许多场景中都具有极大的实用价值。例如,在零售和购物中心中,它可以监控客流量,提升客户的购物体验;在公共交通中,它可以优化时间表并管理人群密度;在智能城市中,它有助于提升公共安全和改进城市规划。通过结合 OpenVINO™ 的模型优化和快速部署功能,以及搭载 英特尔®酷睿™ Ultra7 的 AI 开发套件的强大计算能力,实时人流统计可以轻松实现。

OpenVINO™

让我们一起来实现吧!

幸运的是,这种应用程序已经存在于我们新的 OpenVINO™ 构建和部署存储库中,

https://github.com/openvinotoolkit/openvino_build_deploy

并且是开源 Apache 2.0 许可证:

https://github.com/openvinotoolkit/openvino_build_deploy/blob/master/LICENSE.txt

尽管如此,让我们一步一步地了解它是如何工作的以及如何运行它。为此,我们使用 Ubuntu 24.04 作为操作系统。

让我们从安装所有先决条件开始,尤其是 git 和 python:

nginx 复制代码
sudo apt install git gcc python3-venv python3-dev

然后克隆整个仓库:

php 复制代码
git clone https://github.com/openvinotoolkit/openvino_build_deploy.git

代码位于 "人流统计(People Counter)"目录中,因此让我们更改文件夹路径:

bash 复制代码
cd openvino_build_deploy/demos/people_counter_demo

创建和激活虚拟环境始终是一个不错的选择,可以让我们避免混淆各个项目之间的依赖关系:

properties 复制代码
python3 -m venv venv
source venv/bin/activate

准备就绪后,按照要求进行安装:

sql 复制代码
python -m pip install --upgrade pip 
pip install -r requirements.txt

我们已经为我们的环境做好了准备!但是,在运行应用程序之前,让我们先看一下代码。我们在这里只介绍最重要的代码片段。

要检查其他任何内容,请查看 main.py 文件。

https://github.com/openvinotoolkit/openvino_build_deploy/blob/master/demos/people_counter_demo/main.py

要计算人数,我们需要首先检测他们。为了检测人,我们使用了最先进的模型之一 - Ultralytics 的 YOLOv8 。

我们坚信,出色的性能也是关键,因此我们使用 OpenVINO™ 和 NNCF :

https://github.com/openvinotoolkit/openvino

https://github.com/openvinotoolkit/nncf

来实现这一目标。然后第一步是加载、导出和量化模型(本例中为 YOLOv8 nano )。要量化模型,我们只需要设置 int8=True 。

python 复制代码
from ultralytics import YOLO
# create a YOLO object detection model
yolo_model = YOLO("yolov8n")
# export the model to OpenVINO format (FP16 and INT8)
yolo_model.export(format="openvino", dynamic=False, half=True)
yolo_model.export(format="openvino", dynamic=False, half=True, int8=True)

由于该模型已经是 OpenVINO™ 格式,因此接下来在特定设备(例如 CPU、GPU或NPU)上加载和编译模型。但是,让我们先显示所有可用设备。

python 复制代码
from openvino import runtime as ov
core = ov.Core()
for device in core.available_devices:
  device_name = core.get_property(device, "FULL_DEVICE_NAME")
  print(device_name)

在延迟模式下编译模型非常重要,因为我们希望尽快获得视频帧的结果。

ini 复制代码
# read the model from file
model = core.read_model(model_path)
# compile the model for latency mode
model = core.compile_model(model, device_name="NPU", config={"PERFORMANCE_HINT": "LATENCY"})

在推理之前和之后都需要进行 预处理:和 后处理
https://github.com/openvinotoolkit/openvino_build_deploy/blob/ead86243e7227e78aef49c08e497c795637645d9/demos/people_counter_demo/main.py

我们将在这篇博客中跳过它们,但请随时访问链接以查看详细的代码信息。接下来,我们已经准备好进行模型推理了!

ini 复制代码
results = model(input_image)

就这样。只需要一行代码。我们就能够从图像得到结果。但这些结果仍然需要以某种方式解释,来方便我们的观察和理解。因此,我们在这个代码中使用的下一个库是 监督

https://github.com/roboflow/supervision

它帮助我们过滤、注释和统计指定区域中的人员。让我们为视频流的底部创建注释器。

ini 复制代码
polygon = [[0, 360], [0, 1080], [1920, 1080], [1920, 360]]
# a zone to count people in
zone = sv.PolygonZone(polygon=polygon, frame_resolution_wh=(1920, 1080))
# the annotator - visual part of the zone
zone_annotator = sv.PolygonZoneAnnotator(zone=zone)
# box annotator, showing boxes around people
box_annotator = sv.BoxAnnotator()

让我们用这段代码来解释。

ini 复制代码
frame = zone_annotator.annotate(scene=frame)
# get detections relevant only for the zone
mask = zone.trigger(detections=detections)
detections_filtered = detections[mask]
# visualize boxes around people in the zone
frame = box_annotator.annotate(scene=frame, detections=detections_filtered)

我们需要做的最后一件事就是进行人数统计并确认是否触发警报。这超级简单。

makefile 复制代码
people_count = len(detections_filtered)
# add alert text to the frame if necessary 
if people_count > people_limit:
  utils.draw_text(frame, text=f"Intel employee required in zone {zone_id}!", point=(20, 20), font_color=(0, 0, 255))

要运行所有代码并查看结果,只需在命令行中键入:

css 复制代码
python main.py --stream 0

其中数字(例如 0)表示网络摄像头号码。如果需要,您也可以使用具体路径中的视频。当然,还有一些参数需要更改,例如模型或人数上限people_limit,这里请运行帮助选项以了解如何设置更多的输入参数修改。

bash 复制代码
python main.py --help

OpenVINO™

结果

这是在输入视频上运行人流计数的运行结果。通过我们设计的控制面板,您可以通过在键盘上按下不同的数字,轻松地在 Linux AI 开发套件中的 CPU、GPU 和 NPU 之间切换推理设备。

在本地 AI 开发套件上尝试这个 demo 吧,祝你编程开心!

如果您对 AI 充满热情并渴望探索更多有趣的 AI 演示,我们邀请您查看我们的 GitHub 仓库,网址为 :

https://github.com/openvinotoolkit/openvino_build_deploy

我们的仓库包含现成的 demo,展示了 AI 在实际应用中的能力。无论您是对优化性能、部署高级模型感兴趣,还是只是尝试新想法,我们的代码库都提供了一个完美的起点。通过克隆仓库并在您自己的计算机上运行 demo,您将获得可以加速项目开发的实战经验。不要错过这个深入研究 AI 的机会------今天就克隆我们的仓库并开始探索吧!

OpenVINO™

通知及免责声明

性能因使用情况、配置和其他因素而异。如需了解详情,请访问网址:

https://edc.intel.com/content/www/us/en/products/performance/benchmarks/overview/

性能结果基于截至配置中显示的日期的测试,可能无法反映所有公开可用的更新。有关配置详细信息,请参阅备份。没有任何产品或组件可以绝对安全。您的成本和结果可能会有所不同。英特尔技术可能需要支持的硬件、软件或服务激活。

© 英特尔公司。英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。

OpenVINO™


*OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries.


OpenVINO 中文社区

微信号 : openvinodev

B站:OpenVINO中文社区

"开放、开源、共创"

致力于通过定期举办线上与线下的沙龙、动手实践及开发者交流大会等活动,促进人工智能开发者之间的交流学习。

○ 点击 " 在看 ",让更多人看见

相关推荐
量子网络5 分钟前
debian 如何进入root
linux·服务器·debian
时光の尘8 分钟前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
我们的五年12 分钟前
【Linux课程学习】:进程描述---PCB(Process Control Block)
linux·运维·c++
陈鋆14 分钟前
智慧城市初探与解决方案
人工智能·智慧城市
qdprobot14 分钟前
ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
网络·人工智能·百度·文心一言·arduino
QQ395753323715 分钟前
金融量化交易模型的突破与前景分析
人工智能·金融
QQ395753323716 分钟前
金融量化交易:技术突破与模型优化
人工智能·金融
The_Ticker28 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Elastic 中国社区官方博客34 分钟前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
jwolf234 分钟前
摸一下elasticsearch8的AI能力:语义搜索/vector向量搜索案例
人工智能·搜索引擎