Ultralytics YOLO27:
Get Started

Подсчёт объектов с помощью Ultralytics YOLO26#

Что такое подсчёт объектов?#

Open Object Counting In Colab

Подсчёт объектов с помощью Ultralytics YOLO26 предполагает точное обнаружение и подсчёт определённых объектов на видео и в видеопотоках с камер. YOLO26 отлично подходит для задач реального времени и обеспечивает эффективный и точный подсчёт объектов в различных сценариях, например при анализе скоплений людей и видеонаблюдении, благодаря передовым алгоритмам и возможностям глубокого обучения.



Смотри: Как вести подсчет объектов в реальном времени с помощью Ultralytics YOLO26 🚀

Преимущества подсчёта объектов#

  • Оптимизация ресурсов: подсчёт объектов помогает эффективно управлять ресурсами, предоставляя точные данные и оптимизируя их распределение в таких задачах, как управление запасами.
  • Повышение безопасности: подсчёт объектов повышает уровень безопасности и эффективность видеонаблюдения благодаря точному отслеживанию и подсчёту объектов, помогая заблаговременно обнаруживать угрозы.
  • Обоснованные решения: подсчёт объектов даёт ценную информацию для принятия решений и оптимизации процессов в розничной торговле, управлении дорожным движением и других сферах.

Применение в реальном мире#

ЛогистикаАквакультура
Подсчёт упаковок на конвейерной ленте с помощью Ultralytics YOLO26Подсчёт рыбы в море с помощью Ultralytics YOLO26
Подсчёт упаковок на конвейерной ленте с помощью Ultralytics YOLO26Подсчёт рыбы в море с помощью Ultralytics YOLO26

Подсчёт объектов с YOLO26#

Задай область подсчёта region — две точки для линии или три и более для многоугольника — и передай её решению ObjectCounter. Счётчик отслеживает каждый объект между кадрами и подсчитывает входы и выходы, когда отслеживаемые объекты пересекают линию или проходят через область, а затем возвращает размеченный кадр, который можно записать в выходное видео.

Подсчёт объектов с помощью Ultralytics YOLO
# 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:

АргументТипПо умолчаниюОписание
modelstrNoneПуть к файлу модели Ultralytics YOLO.
show_inboolTrueФлаг, управляющий отображением счётчиков входа в видеопотоке.
show_outboolTrueФлаг, управляющий отображением счётчиков выхода в видеопотоке.
regionlist или dictNoneТочки, задающие интересующую область: список кортежей (x, y) или словарь, сопоставляющий названия областей со списками точек для нескольких областей (только RegionCounter). Если None, решения, которым требуется область, используют заданную по умолчанию область.
line_widthint2Толщина линий рамок, ключевых точек и счётчиков, которые рисует решение.
verboseboolTrueВключает журнал решения для каждого кадра с указанием формы входных данных, количества объектов по классам и скорости обработки. Сам вызов отслеживания всегда выполняется без вывода сообщений.

Решение ObjectCounter позволяет использовать несколько аргументов track:

АргументТипПо умолчаниюОписание
trackerstr'tracktrack.yaml'Задаёт алгоритм отслеживания. Встроенные варианты: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Задаёт порог уверенности для обнаружений: при более низких значениях можно отслеживать больше объектов, но возрастает вероятность ложноположительных срабатываний.
ioufloat0.7Задаёт порог пересечения над объединением (IoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
devicestrNoneЗадаёт устройство для инференса (например, cpu, cuda:0 или 0). Позволяет выбрать CPU, определённый GPU или другое вычислительное устройство для выполнения модели.
imgszint or tuple640Целевой размер изображения для инференса: целое число для квадратного изображения или пара (height, width). Размеры корректируются с учётом шага модели.
max_detint300Максимальное количество обнаружений, сохраняемых в каждом кадре перед отслеживанием; ограничивает число объектов, обрабатываемых решением в насыщенных сценах.
quantizeint or strNoneТочность инференса: 16 (FP16) или 32/unset (FP32) для моделей PyTorch и TorchScript не на CPU; для других форматов точность определяется артефактом модели и средой выполнения. Заменяет устаревший аргумент half.

Также поддерживаются перечисленные ниже аргументы визуализации:

АргументТипПо умолчаниюОписание
showboolFalseЕсли True, показывает аннотированные изображения или видео в окне. Полезно для мгновенной визуальной проверки во время разработки или тестирования.
show_confboolTrueПоказывает оценку уверенности каждой детекции рядом с меткой. Позволяет оценить уверенность модели в каждой детекции.
show_labelsboolTrueПоказывает метки каждой детекции на визуализации. Помогает сразу понять, какие объекты обнаружены.

Часто задаваемые вопросы#

  • Чтобы подсчитывать объекты на видео с помощью Ultralytics YOLO26, выполни следующие шаги:

    1. Импортируй необходимые библиотеки (cv2, ultralytics).
    2. Задай область подсчёта (например, многоугольник, линию и т. д.).
    3. Настрой захват видео и инициализируй счётчик объектов.
    4. Обрабатывай каждый кадр, чтобы отслеживать объекты и подсчитывать их в заданной области.

    Вот простой пример подсчёта объектов в области:

    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 для подсчёта объектов даёт ряд преимуществ:

    1. Оптимизация ресурсов: решение помогает эффективно управлять ресурсами, предоставляя точные данные и оптимизируя их распределение в таких отраслях, как управление запасами.
    2. Повышение безопасности: решение повышает уровень безопасности и эффективность видеонаблюдения благодаря точному отслеживанию и подсчёту объектов, помогая заблаговременно обнаруживать угрозы и улучшать системы безопасности.
    3. Обоснованные решения: решение даёт ценную информацию для принятия решений и оптимизации процессов в розничной торговле, управлении дорожным движением и других сферах.
    4. Обработка в реальном времени: архитектура 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:

    1. Скорость и эффективность: YOLO26 обеспечивает обработку в реальном времени и идеально подходит для приложений, требующих быстрого инференса, например для видеонаблюдения и автономного вождения.
    2. Точность: модель обеспечивает передовую точность обнаружения и отслеживания, сокращая число ложных срабатываний и повышая общую надёжность системы.
    3. Простота интеграции: YOLO26 легко интегрируется с различными платформами и устройствами, включая мобильные и периферийные устройства, что особенно важно для современных приложений ИИ.
    4. Гибкость: поддерживает задачи обнаружения и сегментации, а также режим отслеживания; модели можно настраивать под конкретные требования.

    Подробнее о функциях и сравнении производительности читай в документации по Ultralytics YOLO26.

  • Да, Ultralytics YOLO26 отлично подходит для сложных задач, например анализа скоплений людей и управления дорожным движением, благодаря обнаружению объектов в реальном времени, масштабируемости и гибкости интеграции. Расширенные возможности модели позволяют точно отслеживать, подсчитывать и классифицировать объекты в динамичных условиях. Примеры применения:

    • Анализ скоплений людей: наблюдай за массовыми мероприятиями и управляй ими, обеспечивая безопасность и регулируя движение людей с помощью подсчёта по областям.
    • Управление дорожным движением: отслеживай и подсчитывай транспортные средства, анализируй транспортные потоки и управляй заторами в реальном времени с помощью функции оценки скорости.
    • Аналитика в розничной торговле: анализируй перемещения покупателей и взаимодействие с товарами, чтобы оптимизировать планировку магазина и повысить качество обслуживания.
    • Промышленная автоматизация: подсчитывай товары на конвейерных лентах и следи за производственными линиями, чтобы контролировать качество и повышать эффективность.

    Для более специализированных задач изучи решения Ultralytics — набор инструментов для решения практических задач компьютерного зрения.

Комментарии