Сегментация и отслеживание экземпляров с помощью Ultralytics YOLO11 🚀
Что такое сегментация экземпляров?
Сегментация объектов - это задача компьютерного зрения, которая заключается в идентификации и выделении отдельных объектов на изображении на уровне пикселей. В отличие от семантической сегментации, которая классифицирует пиксели только по категориям, сегментация экземпляров уникально маркирует и точно очерчивает каждый экземпляр объекта, что делает ее критически важной для приложений, требующих детального пространственного понимания, таких как медицинская визуализация, автономное вождение и промышленная автоматизация.
Ultralytics YOLO11 предоставляет мощные возможности сегментации экземпляров, которые позволяют точно определять границы объектов, сохраняя при этом скорость и эффективность моделей YOLO , которыми они славятся.
В пакете Ultralytics доступны два типа отслеживания сегментации экземпляров:
-
Сегментация экземпляров с помощью объектов класса: Каждому объекту класса присваивается уникальный цвет для четкого визуального разделения.
-
Сегментация объектов с помощью треков объектов: Каждая дорожка представлена отдельным цветом, что облегчает ее идентификацию и отслеживание по видеокадрам.
Смотреть: Сегментация экземпляров с отслеживанием объектов с помощью Ultralytics YOLO11
Образцы
Сегментация экземпляров | Сегментация объектов + отслеживание объектов |
---|---|
![]() |
![]() |
Ultralytics Сегментация экземпляра 😍 | Ultralytics Сегментация экземпляров с отслеживанием объектов 🔥 |
Сегментация экземпляров с помощью Ultralytics YOLO
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.