Перейти к содержанию

Сегментация и отслеживание экземпляров с использованием Ultralytics YOLO11 🚀

Что такое сегментация экземпляров?

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

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

В пакете Ultralytics доступны два типа отслеживания сегментации экземпляров:

  • Сегментация экземпляров с объектами классов: Каждому объекту класса присваивается уникальный цвет для четкого визуального разделения.

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



Смотреть: Сегментация экземпляров с отслеживанием объектов с использованием Ultralytics YOLO11

Примеры

Сегментация экземпляров Сегментация экземпляров + отслеживание объектов
Сегментация экземпляров Ultralytics Сегментация экземпляров Ultralytics с отслеживанием объектов
Сегментация экземпляров Ultralytics 😍 Сегментация экземпляров Ultralytics с отслеживанием объектов 🔥

Сегментация экземпляров с использованием Ultralytics YOLO

# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 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("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
    # classes=[0, 2],  # segment specific classes i.e, person and car with pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = isegment(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

InstanceSegmentation Аргументы

Вот таблица с InstanceSegmentation аргументы:

Аргумент Тип По умолчанию Описание
model str None Путь к файлу модели Ultralytics YOLO.
region list '[(20, 400), (1260, 400)]' Список точек, определяющих область подсчета.

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

Аргумент Тип По умолчанию Описание
tracker str 'botsort.yaml' Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conf float 0.3 Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
iou float 0.5 Устанавливает порог 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 None or int None Указывает ширину линии ограничивающих рамок. Если None, ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для большей четкости.
show_conf bool True Отображает оценку достоверности для каждого обнаружения рядом с меткой. Дает представление об уверенности модели для каждого обнаружения.
show_labels bool True Отображает метки для каждого обнаружения в визуальном выводе. Обеспечивает немедленное понимание обнаруженных объектов.

Приложения для сегментации экземпляров

Сегментация экземпляров с YOLO11 имеет множество реальных применений в различных отраслях:

Управление отходами и переработка

YOLO11 можно использовать на предприятиях по переработке отходов для идентификации и сортировки различных типов материалов. Модель может сегментировать пластиковые отходы, картон, металл и другие перерабатываемые материалы с высокой точностью, позволяя автоматизированным системам сортировки более эффективно перерабатывать отходы. Это особенно ценно, учитывая, что перерабатывается только около 10% из 7 миллиардов тонн пластиковых отходов, образующихся в мире.

Автономные транспортные средства

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

Медицинская визуализация

Сегментация экземпляров может идентифицировать и выделять контуры опухолей, органов или клеточных структур на медицинских снимках. Способность YOLO11 точно очерчивать границы объектов делает его ценным для медицинской диагностики и планирования лечения.

Мониторинг строительной площадки

На строительных площадках сегментация экземпляров может отслеживать тяжелую технику, рабочих и материалы. Это помогает обеспечить безопасность, отслеживая положение оборудования и обнаруживая, когда рабочие входят в опасные зоны, а также оптимизируя рабочий процесс и распределение ресурсов.

Примечание

Если у вас есть какие-либо вопросы, не стесняйтесь задавать их в разделе проблем Ultralytics или в разделе обсуждений, упомянутом ниже.

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

Как выполнить сегментацию экземпляров с использованием Ultralytics YOLO11?

Чтобы выполнить сегментацию экземпляров с помощью Ultralytics YOLO11, инициализируйте модель YOLO с версией YOLO11 для сегментации и обработайте через нее видеокадры. Вот упрощенный пример кода:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 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("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Узнайте больше о сегментации экземпляров в руководстве Ultralytics YOLO11.

В чем разница между сегментацией экземпляров и отслеживанием объектов в Ultralytics YOLO11?

Сегментация экземпляров идентифицирует и выделяет отдельные объекты на изображении, присваивая каждому объекту уникальную метку и маску. Отслеживание объектов расширяет это, присваивая постоянные идентификаторы объектам в видеокадрах, что облегчает непрерывное отслеживание одних и тех же объектов во времени. В сочетании, как в реализации YOLO11, вы получаете мощные возможности для анализа движения и поведения объектов в видео, сохраняя при этом точную информацию о границах.

Почему мне следует использовать Ultralytics YOLO11 для сегментации экземпляров и отслеживания вместо других моделей, таких как Mask R-CNN или Faster R-CNN?

Ultralytics YOLO11 обеспечивает производительность в реальном времени, превосходную точность и простоту использования по сравнению с другими моделями, такими как Mask R-CNN или Faster R-CNN. YOLO11 обрабатывает изображения за один проход (одноэтапное обнаружение), что делает его значительно быстрее, сохраняя при этом высокую точность. Он также обеспечивает бесшовную интеграцию с Ultralytics HUB, позволяя пользователям эффективно управлять моделями, наборами данных и конвейерами обучения. Для приложений, требующих как скорости, так и точности, YOLO11 обеспечивает оптимальный баланс.

Предоставляет ли Ultralytics какие-либо наборы данных, подходящие для обучения моделей YOLO11 для сегментации экземпляров и отслеживания?

Да, Ultralytics предлагает несколько наборов данных, подходящих для обучения моделей YOLO11 для сегментации экземпляров, включая COCO-Seg, COCO8-Seg (меньший поднабор для быстрого тестирования), Package-Seg и Crack-Seg. Эти наборы данных поставляются с аннотациями на уровне пикселей, необходимыми для задач сегментации экземпляров. Для более специализированных приложений вы также можете создавать собственные наборы данных, соответствующие формату Ultralytics. Полную информацию о наборах данных и инструкции по использованию можно найти в документации по наборам данных Ultralytics.



📅 Создано 1 год назад ✏️ Обновлено 4 месяца назад

Комментарии