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

Сегментация и отслеживание экземпляров с помощью 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 Устанавливает порог пересечения над объединением (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Ширина линии автоматически регулируется в зависимости от размера изображения. Обеспечивает визуальную настройку для наглядности.

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

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

Утилизация и переработка отходов

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

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

В самоуправляемых автомобилях сегментация экземпляров помогает идентифицировать и отслеживать пешеходов, транспортные средства, дорожные знаки и другие элементы дороги на уровне пикселей. Такое точное понимание окружающей обстановки имеет решающее значение для принятия решений по навигации и безопасности. Производительность 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 Datasets.

📅 Создано 1 год назад ✏️ Обновлено 5 дней назад

Комментарии