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

openlab_96bf3613 更新于 1月前

作者:Anisha Udayakumar 英特尔AI软件布道师
武卓 英特尔AI软件布道师

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


让我们一起来实现吧!

幸运的是,这种应用程序已经存在于我们新的 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:

sudo apt install git gcc python3-venv python3-dev


然后克隆整个仓库:

git clone https://github.com/openvinotoolkit/openvino_build_deploy.git


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

cd openvino_build_deploy/demos/people_counter_demo


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

python3 -m venv venv
source venv/bin/activate


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

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 。

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)上加载和编译模型。但是,让我们先显示所有可用设备。

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)


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

# 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

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

result*****odel(input_image)


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

https://github.com/roboflow/supervision

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

polygon = [[0, 360], [0, 1080], [1920, 1080], [1920, 360]]
# a zone to count people inzone = sv.Polygon
Zone(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()


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

frame = zone_annotator.annotate(scene=frame)
# get detections relevant only for the zone
mask = zone.trigger(detections=detections)
detections_filtered = detection***ask]
# visualize boxes around people in the zoneframe = box_annotator.annotate(scene=frame, detections=detections_filtered)


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

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))


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

python main.py --stream 0


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

python main.py --help


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

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

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

https://github.com/openvinotoolkit/openvino_build_deploy

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

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

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/inteldevzone/article/details/142588449

0个评论