Link to this section使用 Ultralytics YOLO26 进行物体计数#
Link to this section什么是物体计数?#
使用 Ultralytics YOLO26 进行物体计数涉及对视频和摄像机流中的特定物体进行准确识别和计数。得益于其先进的算法和 深度学习 能力,YOLO26 在实时应用中表现出色,能为人群分析和监控等各种场景提供高效、精确的物体计数。
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
Link to this section物体计数的优势#
- 资源优化: 对象计数通过提供准确的计数,优化了诸如库存管理等应用中的资源分配,从而实现高效的资源管理。
- 增强安全性: 对象计数通过准确跟踪和统计实体,增强了安全性和监控能力,有助于进行主动的威胁检测。
- 明智的决策制定: 物体计数为决策提供有价值的见解,优化零售、交通管理 以及其他各种领域中的流程。
Link to this section现实世界应用#
| 物流 | 水产养殖 |
|---|---|
![]() | ![]() |
| 使用 Ultralytics YOLO26 进行传送带包裹计数 | 使用 Ultralytics YOLO26 进行海中鱼类计数 |
Link to this section使用 YOLO26 进行物体计数#
定义一个计数 region(线段需两个点,多边形需三个或更多点),并将其传递给 ObjectCounter 解决方案。计数器会在帧之间跟踪每个物体,当被跟踪的质心穿过线段或移动到区域内时,统计进入/离开(IN/OUT)的计数,并返回一个可写入输出视频的标注帧。
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"region 参数接受两个点(构成一条线)或三个及以上点的多边形。请按连接顺序定义坐标,这样计数器就能确切知道进入和离开发生的位置。
Link to this sectionObjectCounter 参数#
下表列出了 ObjectCounter 的参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
show_in | bool | True | 控制是否在视频流上显示进入计数的标志。 |
show_out | bool | True | 控制是否在视频流上显示离开计数的标志。 |
region | list 或 dict | None | 定义感兴趣区域的点,可以是 (x, y) 元组列表,也可以是将区域名称映射到点列表的字典(仅适用于 RegionCounter)。当为 None 时,需要区域的解决方案将回退到预定义的默认值。 |
ObjectCounter 解决方案允许使用多个 track 参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 指定要使用的追踪算法。内置选项包括:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.1 | 设置检测的置信度阈值;较低的值允许跟踪更多的对象,但也可能包含误报。 |
iou | float | 0.7 | 设置用于过滤重叠检测的 交并比 (IoU) 阈值。 |
classes | list | None | 按类别索引过滤结果。例如,classes=[0, 2, 3] 仅跟踪指定的类别。 |
verbose | bool | True | 控制跟踪结果的显示,提供被跟踪对象的视觉输出。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。允许用户在 CPU、特定的 GPU 或其他计算设备之间进行选择以执行模型。 |
此外,还支持下面列出的可视化参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
show | bool | False | 如果为 True,则在窗口中显示标注后的图像或视频。这对于开发或测试过程中的即时视觉反馈非常有用。 |
line_width | int or None | None | 指定边界框的线条宽度。如果为 None,则线条宽度会根据图像尺寸自动调整。提供用于清晰度的视觉自定义功能。 |
show_conf | bool | True | 在标签旁显示每次检测的置信度得分。让你深入了解模型对每次检测的确定性。 |
show_labels | bool | True | 在视觉输出中显示每次检测的标签。提供对检测到对象的即时理解。 |
Link to this section常见问题解答#
Link to this section如何使用 Ultralytics YOLO26 对视频中的物体进行计数?#
要使用 Ultralytics YOLO26 对视频中的物体进行计数,你可以按照以下步骤操作:
- 导入必要的库 (
cv2,ultralytics)。 - 定义计数区域(例如,多边形、线段等)。
- 设置视频捕获并初始化物体计数器。
- 处理每一帧以跟踪物体并在定义的区域内进行计数。
这是一个简单的区域计数示例:
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")如需更高级的配置和选项,请查看RegionCounter 解决方案,以同时对多个区域中的对象进行计数。
Link to this section使用 Ultralytics YOLO26 进行物体计数有什么优势?#
使用 Ultralytics YOLO26 进行物体计数有以下几点优势:
- 资源优化: 它通过提供准确的计数数据来辅助高效的资源管理,帮助优化 库存管理 等行业的资源配置。
- 增强安全性: 它通过准确跟踪和统计实体,增强了安全性和监控能力,有助于进行主动的威胁检测和安全系统维护。
- 明智的决策制定: 它为决策提供有价值的见解,优化零售、交通管理等领域中的流程。
- 实时处理: YOLO26 的架构支持 实时推理,使其非常适合实时视频流和对时间敏感的应用。
有关实现示例和实际应用,请探索TrackZone 解决方案,以在特定区域中跟踪对象。
Link to this section如何使用 Ultralytics YOLO26 统计特定类别的物体?#
要使用 Ultralytics YOLO26 统计特定类别的物体,你需要在跟踪阶段指定感兴趣的类别。下面是一个 Python 示例:
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])在本例中,classes_to_count=[0, 2] 表示它会统计类别 0 和 2 的对象(例如 COCO 数据集中的人和车)。你可以查阅COCO 数据集文档,获取有关类别索引的更多信息。
Link to this section为什么要在实时应用中使用 YOLO26 而不是其他 物体检测 模型?#
与 Faster R-CNN、SSD 和之前的 YOLO 版本等其他物体检测模型相比,Ultralytics YOLO26 具有以下优势:
- 速度与效率: YOLO26 提供实时处理能力,非常适合需要高速推理的应用,如监控和 自动驾驶。
- 准确性: 它为物体检测和跟踪任务提供了业内领先的准确性,减少了误报数量并提高了整体系统的可靠性。
- 易于集成: YOLO26 能够与各种平台和设备(包括移动设备和边缘设备)无缝集成,这对于现代 AI 应用至关重要。
- 灵活性: 支持对象检测、分割和跟踪等多种任务,并配备可配置的模型以满足特定用例的需求。
查阅 Ultralytics YOLO26 文档,深入了解其功能和性能对比。
Link to this section我可以将 YOLO26 用于人群分析和交通管理等高级应用吗?#
可以,由于 Ultralytics YOLO26 具备实时检测能力、可扩展性和集成灵活性,它非常适合人群分析和交通管理等高级应用。其先进的功能允许在动态环境中进行高精度的物体跟踪、计数和分类。示例用例包括:
- 人群分析: 通过基于区域的计数来监控和管理大型集会,确保安全并优化人流。
- 交通管理: 借助速度估计功能,实时跟踪和统计车辆、分析交通模式并管理拥堵情况。
- 零售分析: 分析顾客的移动模式和产品互动,从而优化门店布局并改善顾客体验。
- 工业自动化: 统计传送带上的产品并监控生产线,以进行质量控制和效率提升。
对于更多专业应用,请探索 Ultralytics 解决方案,其中包含一套专为应对现实世界计算机视觉挑战而设计的综合工具。

