使用 OpenVINO™ 在 Linux AI 开发套件上实现实时人流统计:从入门到精通
基于 AI 的智能化、自动化人流统计在许多场景中都具有极大的实用价值。例如,在零售和购物中心中,它可以监控客流量,提升客户的购物体验;在公共交通中,它可以优化时间表并管理人群密度;在智能城市中,它有助于提升公共安全和改进城市规划。通过结合 OpenVINO™的模型优化和快速部署功能,以及搭载英特尔®酷睿™Ultra7 的 AI 开发套件的强大计算能力,实时人流统计可以轻松实现。
作者:
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
我们将在这篇博客中跳过它们,但请随时访问链接以查看详细的代码信息。接下来,我们已经准备好进行模型推理了!
results = model(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 = detections[mask]
# 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/
性能结果基于截至配置中显示的日期的测试,可能无法反映所有公开可用的更新。有关配置详细信息,请参阅备份。没有任何产品或组件可以绝对安全。您的成本和结果可能会有所不同。英特尔技术可能需要支持的硬件、软件或服务激活。
更多推荐
所有评论(0)