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

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

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

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

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

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

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

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



Смотреть: Сегментация экземпляров с отслеживанием объектов с использованием 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 аргументы:

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

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

АргументТипПо умолчаниюОписание
trackerstr'botsort.yaml'Указывает алгоритм отслеживания, например, bytetrack.yaml или botsort.yaml.
conffloat0.3Устанавливает порог уверенности для обнаружений; более низкие значения позволяют отслеживать больше объектов, но могут включать ложные срабатывания.
ioufloat0.5Устанавливает порог пересечения над объединениемIoU) для фильтрации перекрывающихся обнаружений.
classeslistNoneФильтрует результаты по индексу класса. Например, classes=[0, 2, 3] отслеживает только указанные классы.
verboseboolTrueУправляет отображением результатов отслеживания, обеспечивая визуальный вывод отслеживаемых объектов.
devicestrNoneУказывает устройство для инференса (например, cpu, cuda:0 или 0). Позволяет пользователям выбирать между CPU, конкретным GPU или другими вычислительными устройствами для выполнения модели.

Кроме того, доступны следующие аргументы визуализации:

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

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

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

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

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

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

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

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

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

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

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

Примечание

Если у вас есть какие-либо вопросы, не стесняйтесь задавать их в разделе проблем 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, COCO8 (меньшее подмножество для быстрого тестирования), Package-Seg и Crack-Seg. Эти наборы данных содержат аннотации на уровне пикселей, необходимые для задач сегментации экземпляров. Для более специализированных приложений вы также можете создавать собственные наборы данных в формате Ultralytics . Полную информацию о наборах данных и инструкции по их использованию можно найти в документацииUltralytics Datasets.



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

Комментарии