Ir para o conteúdo

Segmentação e Rastreamento de Instâncias usando Ultralytics YOLO11 🚀

O que é Segmentação de Instância?

Segmentação de instância é uma tarefa de visão computacional que envolve identificar e delinear objetos individuais em uma imagem no nível do pixel. Ao contrário da segmentação semântica, que apenas classifica pixels por categoria, a segmentação de instância rotula exclusivamente e delineia precisamente cada instância de objeto, tornando-a crucial para aplicações que exigem compreensão espacial detalhada, como imagens médicas, direção autônoma e automação industrial.

Ultralytics YOLO11 fornece poderosos recursos de segmentação de instâncias que permitem a detecção precisa de limites de objetos, mantendo a velocidade e a eficiência pelas quais os modelos YOLO são conhecidos.

Existem dois tipos de rastreamento de segmentação de instâncias disponíveis no pacote Ultralytics:

  • Segmentação de Instância com Objetos de Classe: Cada objeto de classe recebe uma cor única para uma separação visual clara.

  • Segmentação de Instâncias com Rastreamento de Objetos: Cada faixa é representada por uma cor distinta, facilitando a identificação e o rastreamento em quadros de vídeo.



Assista: Segmentação de Instâncias com Rastreamento de Objetos usando Ultralytics YOLO11

Amostras

Segmentação de Instância Segmentação de Instância + Rastreamento de Objetos
Segmentação de Instâncias da Ultralytics Segmentação de Instâncias da Ultralytics com Rastreamento de Objetos
Segmentação de Instâncias da Ultralytics 😍 Segmentação de Instâncias da Ultralytics com Rastreamento de Objetos 🔥

Segmentação de instâncias usando 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 Argumentos

Aqui está uma tabela com o InstanceSegmentation argumentos:

Argumento Tipo Padrão Descrição
model str None Caminho para o arquivo do modelo Ultralytics YOLO.
region list '[(20, 400), (1260, 400)]' Lista de pontos que definem a região de contagem.

Também pode tirar partido de track argumentos dentro do InstanceSegmentation solução:

Argumento Tipo Padrão Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de rastreamento a ser usado, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limite de confiança para detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos.
iou float 0.5 Define o limite de Intersecção sobre União (IoU) para filtrar detecções sobrepostas.
classes list None Filtra os resultados por índice de classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas.
verbose bool True Controla a exibição dos resultados de rastreamento, fornecendo uma saída visual dos objetos rastreados.
device str None Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo.

Além disso, os seguintes argumentos de visualização estão disponíveis:

Argumento Tipo Padrão Descrição
show bool False Se True, exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste.
line_width None or int None Especifica a largura da linha das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Fornece personalização visual para clareza.
show_conf bool True Exibe o score de confiança para cada detecção junto com o rótulo. Dá uma ideia da certeza do modelo para cada detecção.
show_labels bool True Exibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados.

Aplicações de Segmentação de Instâncias

A segmentação de instâncias com YOLO11 tem inúmeras aplicações no mundo real em vários setores:

Gestão de Resíduos e Reciclagem

O YOLO11 pode ser usado em instalações de gerenciamento de resíduos para identificar e classificar diferentes tipos de materiais. O modelo pode segmentar resíduos plásticos, papelão, metal e outros recicláveis com alta precisão, permitindo que sistemas de triagem automatizados processem os resíduos de forma mais eficiente. Isso é particularmente valioso, considerando que apenas cerca de 10% dos 7 bilhões de toneladas de resíduos plásticos gerados globalmente são reciclados.

Veículos Autônomos

Em carros autônomos, a segmentação de instâncias ajuda a identificar e rastrear pedestres, veículos, sinais de trânsito e outros elementos da estrada no nível do pixel. Essa compreensão precisa do ambiente é crucial para decisões de navegação e segurança. O desempenho em tempo real do YOLO11 o torna ideal para essas aplicações sensíveis ao tempo.

Imagem Médica

A segmentação de instâncias pode identificar e delinear tumores, órgãos ou estruturas celulares em exames médicos. A capacidade do YOLO11 de delinear com precisão os limites dos objetos torna-o valioso para diagnósticos médicos e planeamento de tratamentos.

Monitoramento de Canteiros de Obras

Em canteiros de obras, a segmentação de instâncias pode rastrear máquinas pesadas, trabalhadores e materiais. Isso ajuda a garantir a segurança, monitorando as posições dos equipamentos e detectando quando os trabalhadores entram em áreas perigosas, ao mesmo tempo em que otimiza o fluxo de trabalho e a alocação de recursos.

Nota

Para qualquer dúvida, sinta-se à vontade para colocar as suas questões na Seção de Problemas do Ultralytics ou na seção de discussão mencionada abaixo.

FAQ

Como realizar a segmentação de instâncias usando Ultralytics YOLO11?

Para realizar a segmentação de instâncias usando o Ultralytics YOLO11, inicialize o modelo YOLO com uma versão de segmentação do YOLO11 e processe os frames de vídeo através dele. Aqui está um exemplo de código simplificado:

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()

Saiba mais sobre segmentação de instâncias no guia Ultralytics YOLO11.

Qual é a diferença entre segmentação de instâncias e rastreamento de objetos no Ultralytics YOLO11?

A segmentação de instâncias identifica e delimita objetos individuais dentro de uma imagem, atribuindo a cada objeto uma etiqueta e máscara únicas. O rastreamento de objetos estende isto, atribuindo IDs consistentes aos objetos em frames de vídeo, facilitando o rastreamento contínuo dos mesmos objetos ao longo do tempo. Quando combinados, como na implementação do YOLO11, obtém capacidades poderosas para analisar o movimento e o comportamento dos objetos em vídeos, mantendo ao mesmo tempo informações precisas sobre os limites.

Por que devo usar Ultralytics YOLO11 para segmentação de instâncias e rastreamento em vez de outros modelos como Mask R-CNN ou Faster R-CNN?

Ultralytics YOLO11 oferece desempenho em tempo real, precisão superior e facilidade de uso em comparação com outros modelos como Mask R-CNN ou Faster R-CNN. YOLO11 processa imagens em uma única passagem (detecção de estágio único), tornando-o significativamente mais rápido, mantendo a alta precisão. Ele também oferece integração perfeita com o Ultralytics HUB, permitindo que os usuários gerenciem modelos, conjuntos de dados e pipelines de treinamento de forma eficiente. Para aplicações que exigem velocidade e precisão, o YOLO11 oferece um equilíbrio ideal.

Existem conjuntos de dados fornecidos pela Ultralytics adequados para treinar modelos YOLO11 para segmentação e rastreamento de instâncias?

Sim, a Ultralytics oferece vários conjuntos de dados adequados para treinar modelos YOLO11 para segmentação de instâncias, incluindo COCO-Seg, COCO8-Seg (um subconjunto menor para testes rápidos), Package-Seg e Crack-Seg. Estes conjuntos de dados vêm com anotações ao nível do pixel necessárias para tarefas de segmentação de instâncias. Para aplicações mais especializadas, você também pode criar conjuntos de dados personalizados seguindo o formato Ultralytics. Informações completas sobre o conjunto de dados e instruções de utilização podem ser encontradas na documentação Ultralytics Datasets.



📅 Criado há 1 ano ✏️ Atualizado há 2 meses

Comentários