Подсчёт объектов с использованием Ultralytics YOLO26#
Что такое подсчёт объектов?#
Подсчёт объектов с помощью Ultralytics YOLO26 включает точное обнаружение и подсчёт определённых объектов в видео и потоках с камер. YOLO26 превосходно подходит для приложений реального времени, обеспечивая эффективный и точный подсчёт объектов в различных сценариях, таких как анализ толпы и видеонаблюдение, благодаря современным алгоритмам и возможностям глубокого обучения.
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
Преимущества подсчёта объектов#
- Оптимизация ресурсов: Подсчёт объектов упрощает эффективное управление ресурсами благодаря точным значениям, помогая оптимизировать их распределение в таких приложениях, как управление запасами.
- Повышенная безопасность: Подсчёт объектов повышает уровень безопасности и эффективности видеонаблюдения благодаря точному отслеживанию и подсчёту объектов, помогая заблаговременно обнаруживать угрозы.
- Обоснованное принятие решений: Подсчёт объектов предоставляет ценные сведения для принятия решений и оптимизации процессов в розничной торговле, управлении дорожным движением и других областях.
Примеры использования в реальном мире#
| Логистика | Аквакультура |
|---|---|
![]() | ![]() |
| Подсчёт упаковок на конвейерной ленте с использованием Ultralytics YOLO26 | Подсчёт рыбы в море с использованием Ultralytics YOLO26 |
Подсчёт объектов с YOLO26#
Задай область подсчёта region — две точки для линии или три и более для полигона — и передай её решению ObjectCounter. Счётчик отслеживает каждый объект между кадрами и подсчитывает входящие и исходящие объекты, когда отслеживаемые объекты пересекают линию или проходят через область, возвращая аннотированный кадр, который можно записать в выходное видео.
# 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 принимает либо две точки (для линии), либо полигон с тремя и более точками. Задай координаты в порядке их соединения, чтобы счётчик точно определял места входа и выхода.
Аргументы ObjectCounter#
Вот таблица с аргументами ObjectCounter:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | None | Путь к файлу модели Ultralytics YOLO. |
show_in | bool | True | Флаг, управляющий отображением количества входящих объектов в видеопотоке. |
show_out | bool | True | Флаг, управляющий отображением количества выходящих объектов в видеопотоке. |
region | list или dict | None | Точки, определяющие интересующую область: либо список кортежей (x, y), либо словарь, сопоставляющий названия регионов со списками точек для нескольких регионов (только RegionCounter). Если None, решения, которым нужен регион, используют заранее заданный регион по умолчанию. |
line_width | int | 2 | Толщина линий для рамок, ключевых точек и счётчиков, которые рисует решение. |
verbose | bool | True | Включает покадровый журнал решения с указанием формы входных данных, количества классов и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода. |
Решение ObjectCounter позволяет использовать несколько аргументов track:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Определяет используемый алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Задаёт порог уверенности для детекций: более низкие значения позволяют отслеживать больше объектов, но могут включать ложноположительные результаты. |
iou | float | 0.7 | Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся детекций. |
classes | list | None | Фильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы. |
device | str | None | Определяет устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, конкретный GPU или другое вычислительное устройство для выполнения модели. |
imgsz | int or tuple | 640 | Целевой размер изображения для вывода: целое число для квадрата или пара (height, width). Формы подстраиваются под шаг модели. |
max_det | int | 300 | Максимальное количество обнаружений, сохраняемых на кадр перед трекингом, ограничивает объекты, обрабатываемые решением в плотных сценах. |
quantize | int or str | None | Точность вывода: 16 (FP16) или 32/не задано (FP32) для моделей PyTorch и TorchScript; остальные форматы выполняют вычисления с точностью, выбранной их артефактом и средой выполнения. Заменяет устаревший флаг half. |
Кроме того, поддерживаются перечисленные ниже аргументы визуализации:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
show | bool | False | Если True, аннотированные изображения или видео отображаются в окне. Это полезно для получения визуальной обратной связи в процессе разработки или тестирования. |
show_conf | bool | True | Отображает показатель уверенности для каждой детекции рядом с её меткой. Показывает, насколько модель уверена в каждой детекции. |
show_labels | bool | True | Отображает метки каждой детекции в визуальном результате. Даёт непосредственное представление об обнаруженных объектах. |
Часто задаваемые вопросы#
Чтобы подсчитывать объекты в видео с помощью 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, предназначенном для одновременного подсчёта объектов в нескольких областях.
- Импортируй необходимые библиотеки (
Использование Ultralytics YOLO26 для подсчёта объектов даёт несколько преимуществ:
- Оптимизация ресурсов: Решение упрощает эффективное управление ресурсами благодаря точным значениям, помогая оптимизировать их распределение в таких отраслях, как управление запасами.
- Повышенная безопасность: Решение повышает уровень безопасности и эффективности видеонаблюдения благодаря точному отслеживанию и подсчёту объектов, помогая заблаговременно обнаруживать угрозы и поддерживать системы безопасности.
- Обоснованное принятие решений: Решение предоставляет ценные сведения для принятия решений и оптимизации процессов в таких областях, как розничная торговля, управление дорожным движением и других сферах.
- Обработка в реальном времени: Архитектура YOLO26 обеспечивает вывод в реальном времени, поэтому модель подходит для потокового видео и приложений, чувствительных к задержкам.
Примеры реализации и практического применения см. в решении TrackZone, предназначенном для отслеживания объектов в определённых зонах.
Чтобы подсчитывать определённые классы объектов с помощью 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.Ultralytics YOLO26 имеет несколько преимуществ перед другими моделями обнаружения объектов, такими как Faster R-CNN, SSD и предыдущие версии YOLO:
- Скорость и эффективность: YOLO26 поддерживает обработку в реальном времени, поэтому идеально подходит для приложений, требующих высокоскоростного вывода, таких как видеонаблюдение и автономное вождение.
- Точность: Модель обеспечивает современный уровень точности обнаружения и отслеживания, сокращая количество ложных срабатываний и повышая общую надёжность системы.
- Простота интеграции: YOLO26 легко интегрируется с различными платформами и устройствами, включая мобильные и периферийные устройства, что крайне важно для современных приложений ИИ.
- Гибкость: Поддерживает задачи обнаружения и сегментации, а также режим отслеживания, и позволяет настраивать модели под конкретные требования сценария использования.
Подробнее о функциях YOLO26 и сравнении производительности см. в документации YOLO26 от Ultralytics.
Да, Ultralytics YOLO26 отлично подходит для сложных задач, таких как анализ толпы и управление дорожным движением, благодаря возможностям обнаружения в реальном времени, масштабируемости и гибкости интеграции. Расширенные функции модели обеспечивают высокоточность отслеживания, подсчёта и классификации объектов в динамичных условиях. Примеры использования:
- Анализ толпы: Наблюдай за большими скоплениями людей и управляй ими, обеспечивая безопасность и оптимизируя потоки людей с помощью подсчёта по областям.
- Управление дорожным движением: Отслеживай и подсчитывай транспортные средства, анализируй схемы движения и управляй заторами в реальном времени с помощью возможностей оценки скорости.
- Аналитика розничной торговли: Анализируй схемы перемещения покупателей и их взаимодействие с товарами, чтобы оптимизировать планировку магазинов и улучшить качество обслуживания.
- Промышленная автоматизация: Подсчитывай продукцию на конвейерных лентах и контролируй производственные линии для повышения качества и эффективности.
Для более специализированных задач изучи решения Ultralytics — полный набор инструментов для решения реальных задач компьютерного зрения.

