Подсчет объектов с помощью Ultralytics YOLO11
Что такое подсчет объектов?
Подсчет объектов с помощью Ultralytics YOLO11 включает в себя точную идентификацию и подсчет конкретных объектов в видео и потоках с камер. YOLO11 превосходит приложения реального времени, обеспечивая эффективный и точный подсчет объектов для различных сценариев, таких как анализ толпы и наблюдение, благодаря своим современным алгоритмам и возможностям глубокого обучения.
Смотреть: Подсчет объектов по классам с помощью Ultralytics YOLOv8
Преимущества подсчета объектов
- Оптимизация ресурсов: Подсчет объектов способствует эффективному управлению ресурсами, обеспечивая точный подсчет, оптимизируя распределение ресурсов в таких приложениях, как управление запасами.
- Повышенная безопасность: Подсчет объектов повышает уровень безопасности и наблюдения благодаря точному отслеживанию и подсчету объектов, что помогает в проактивном обнаружении угроз.
- Принятие обоснованных решений: Подсчет объектов дает ценные сведения для принятия решений, оптимизации процессов в розничной торговле, управлении дорожным движением и других сферах.
Применение в реальном мире
Логистика | Аквакультура |
---|---|
![]() |
![]() |
Подсчет пакетов на конвейерной ленте с использованием Ultralytics YOLO11 | Подсчет рыбы в море с помощью Ultralytics YOLO11 |
Подсчет объектов с помощью Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml", # choose trackers i.e "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter
Аргументы
Вот таблица с данными ObjectCounter
аргументы:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
model |
str |
None |
Путь к файлу модели Ultralytics YOLO . |
show_in |
bool |
True |
Флаг для управления отображением количества входящих в видеопоток. |
show_out |
bool |
True |
Флаг для контроля отображения количества выходов в видеопотоке. |
region |
list |
[(20, 400), (1260, 400)] |
Список точек, определяющих область подсчета. |
Сайт ObjectCounter
Решение позволяет использовать несколько track
аргументы:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Указывает используемый алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml . |
conf |
float |
0.3 |
Устанавливает порог доверия для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания. |
iou |
float |
0.5 |
Устанавливает порог пересечения над объединением (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 |
None or int |
None |
Определяет ширину линии ограничительных рамок. Если None Ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для наглядности. |
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как подсчитать объекты в видео с помощью Ultralytics YOLO11 ?
Чтобы подсчитать объекты на видео с помощью Ultralytics YOLO11 , выполните следующие действия:
- Импортируйте необходимые библиотеки (
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", "yolo11n.pt")
Для более продвинутых конфигураций и опций обратите внимание на решение RegionCounter для подсчета объектов в нескольких регионах одновременно.
В чем преимущества использования Ultralytics YOLO11 для подсчета объектов?
Использование сайта Ultralytics YOLO11 для подсчета объектов имеет ряд преимуществ:
- Оптимизация ресурсов: Он способствует эффективному управлению ресурсами, обеспечивая точные подсчеты, что помогает оптимизировать распределение ресурсов в таких отраслях, как управление запасами.
- Повышенная безопасность: Она повышает уровень безопасности и наблюдения, точно отслеживая и подсчитывая объекты, помогая в проактивном обнаружении угроз и создании систем безопасности.
- Обоснованное принятие решений: Предлагает ценные сведения для принятия решений, оптимизируя процессы в таких областях, как розничная торговля, управление дорожным движением и др.
- Обработка в реальном времени: Архитектура YOLO11 позволяет делать выводы в режиме реального времени, что делает ее подходящей для работы с потоковым видео и чувствительными к времени приложениями.
В качестве примеров реализации и практического применения изучите решение TrackZone для отслеживания объектов в определенных зонах.
Как подсчитать определенные классы объектов с помощью Ultralytics YOLO11 ?
Чтобы подсчитать определенные классы объектов с помощью Ultralytics YOLO11 , необходимо указать интересующие вас классы на этапе отслеживания. Ниже приведен пример 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", "yolo11n.pt", [0, 2])
В данном примере, classes_to_count=[0, 2]
означает, что он подсчитывает объекты класса 0
и 2
(например, человек и автомобиль в наборе данных COCO). Более подробную информацию об индексах классов вы можете найти в разделе Документация по набору данных COCO.
Почему для приложений реального времени следует использовать YOLO11 , а не другие модели обнаружения объектов?
Ultralytics YOLO11 обладает рядом преимуществ по сравнению с другими моделями обнаружения объектов, такими как Faster R-CNN, SSD и предыдущими версиями YOLO :
- Скорость и эффективность: YOLO11 предлагает возможности обработки данных в режиме реального времени, что делает его идеальным для приложений, требующих высокоскоростных выводов, таких как видеонаблюдение и автономное вождение.
- Точность: Обеспечивает высочайшую точность при решении задач обнаружения и отслеживания объектов, снижая количество ложных срабатываний и повышая общую надежность системы.
- Простота интеграции: YOLO11 предлагает бесшовную интеграцию с различными платформами и устройствами, включая мобильные и пограничные устройства, что крайне важно для современных приложений искусственного интеллекта.
- Гибкость: Поддержка различных задач, таких как обнаружение, сегментация и отслеживание объектов, с настраиваемыми моделями для удовлетворения конкретных требований к использованию.
Ознакомьтесь сдокументацией Ultralytics YOLO11 для более глубокого изучения его возможностей и сравнения производительности.
Можно ли использовать YOLO11 для таких продвинутых приложений, как анализ толпы и управление дорожным движением?
Да, Ultralytics YOLO11 идеально подходит для таких передовых приложений, как анализ толпы и управление дорожным движением, благодаря возможностям обнаружения в режиме реального времени, масштабируемости и гибкости интеграции. Его расширенные возможности позволяют с высокой точностью отслеживать, подсчитывать и классифицировать объекты в динамичных средах. Примеры использования включают:
- Анализ толпы: Контролируйте и управляйте большими собраниями, обеспечивая безопасность и оптимизируя потоки людей с помощью подсчета по регионам.
- Управление дорожным движением: Отслеживайте и подсчитывайте транспортные средства, анализируйте схемы движения и управляйте заторами в режиме реального времени с помощью функции оценки скорости.
- Аналитика розничной торговли: Анализ моделей движения покупателей и взаимодействия с товарами для оптимизации планировки магазинов и повышения качества обслуживания клиентов.
- Промышленная автоматизация: Учет продукции на конвейерных лентах и мониторинг производственных линий для контроля качества и повышения эффективности.
Для более специализированных приложений изучите решенияUltralytics Solutions - это полный набор инструментов, предназначенных для решения реальных задач компьютерного зрения.