Подсчёт объектов с помощью Ultralytics YOLO26#
Что такое подсчёт объектов?#
Подсчёт объектов с помощью Ultralytics YOLO26 предполагает точное обнаружение и подсчёт определённых объектов на видео и в видеопотоках с камер. YOLO26 отлично подходит для задач реального времени и обеспечивает эффективный и точный подсчёт объектов в различных сценариях, например при анализе скоплений людей и видеонаблюдении, благодаря передовым алгоритмам и возможностям глубокого обучения.
Смотри: Как вести подсчет объектов в реальном времени с помощью 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 | 'tracktrack.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/unset (FP32) для моделей PyTorch и TorchScript не на CPU; для других форматов точность определяется артефактом модели и средой выполнения. Заменяет устаревший аргумент 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 легко интегрируется с различными платформами и устройствами, включая мобильные и периферийные устройства, что особенно важно для современных приложений ИИ.
- Гибкость: поддерживает задачи обнаружения и сегментации, а также режим отслеживания; модели можно настраивать под конкретные требования.
Подробнее о функциях и сравнении производительности читай в документации по Ultralytics YOLO26.
Да, Ultralytics YOLO26 отлично подходит для сложных задач, например анализа скоплений людей и управления дорожным движением, благодаря обнаружению объектов в реальном времени, масштабируемости и гибкости интеграции. Расширенные возможности модели позволяют точно отслеживать, подсчитывать и классифицировать объекты в динамичных условиях. Примеры применения:
- Анализ скоплений людей: наблюдай за массовыми мероприятиями и управляй ими, обеспечивая безопасность и регулируя движение людей с помощью подсчёта по областям.
- Управление дорожным движением: отслеживай и подсчитывай транспортные средства, анализируй транспортные потоки и управляй заторами в реальном времени с помощью функции оценки скорости.
- Аналитика в розничной торговле: анализируй перемещения покупателей и взаимодействие с товарами, чтобы оптимизировать планировку магазина и повысить качество обслуживания.
- Промышленная автоматизация: подсчитывай товары на конвейерных лентах и следи за производственными линиями, чтобы контролировать качество и повышать эффективность.
Для более специализированных задач изучи решения Ultralytics — набор инструментов для решения практических задач компьютерного зрения.

