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 sectionАргументы ObjectCounter#
Ниже представлена таблица с аргументами 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 | Устанавливает порог Intersection over Union (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 sectionFAQ#
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, а не другие модели обнаружения объектов для приложений реального времени?#
Ultralytics YOLO26 предоставляет несколько преимуществ перед другими моделями обнаружения объектов, такими как Faster R-CNN, SSD и предыдущими версиями YOLO:
- Скорость и эффективность: YOLO26 предлагает возможности обработки в реальном времени, что делает его идеальным для приложений, требующих высокоскоростного инференса, таких как видеонаблюдение и автономное вождение.
- Точность: Он обеспечивает передовую точность в задачах обнаружения и отслеживания объектов, уменьшая количество ложных срабатываний и повышая общую надежность системы.
- Простота интеграции: YOLO26 предлагает бесшовную интеграцию с различными платформами и устройствами, включая мобильные и периферийные устройства, что крайне важно для современных AI-приложений.
- Гибкость: поддержка различных задач, таких как обнаружение объектов, сегментация и отслеживание с помощью настраиваемых моделей для соответствия конкретным требованиям проекта.
Ознакомься с документацией Ultralytics YOLO26 для более глубокого изучения функций и сравнения производительности.
Link to this sectionМогу ли я использовать YOLO26 для продвинутых задач, таких как анализ толпы и управление дорожным движением?#
Да, Ultralytics YOLO26 идеально подходит для продвинутых приложений, таких как анализ толпы и управление дорожным движением, благодаря своим возможностям обнаружения в реальном времени, масштабируемости и гибкости интеграции. Его расширенные функции позволяют выполнять высокоточное отслеживание, подсчет и классификацию объектов в динамических средах. Примеры вариантов использования:
- Анализ толпы: контролируй и управляй большими скоплениями людей, обеспечивая безопасность и оптимизируя потоки людей с помощью подсчета на основе областей.
- Управление движением: отслеживай и подсчитывай транспортные средства, анализируй дорожные паттерны и управляй загруженностью дорог в реальном времени с помощью возможностей оценки скорости.
- Ритейл-аналитика: Анализируй паттерны перемещения покупателей и взаимодействия с товарами для оптимизации планировки магазинов и улучшения клиентского опыта.
- Промышленная автоматизация: Подсчитывай продукцию на конвейерных лентах и контролируй производственные линии для контроля качества и улучшения эффективности.
Для более специализированных задач изучи решения Ultralytics, представляющие собой комплексный набор инструментов для решения реальных проблем компьютерного зрения.

