Saltar para o conteúdo

Segmentação e rastreio de instâncias utilizando Ultralytics YOLO11 🚀

O que é a segmentação de instâncias?

A segmentação de instâncias é uma tarefa de visão por computador que envolve a identificação e o contorno de objectos individuais numa imagem ao nível do pixel. Ao contrário da segmentação semântica, que apenas classifica os pixels por categoria, a segmentação de instâncias rotula e delineia com precisão cada instância de objeto, o que a torna crucial para aplicações que requerem uma compreensão espacial detalhada, como a imagiologia médica, a condução autónoma e a automação industrial.

Ultralytics YOLO11 fornece poderosas capacidades de segmentação de instâncias que permitem uma deteção precisa dos limites dos objectos, mantendo a velocidade e a eficiência pelas quais os modelos YOLO são conhecidos.

Há dois tipos de rastreamento de segmentação de instância disponíveis no pacote Ultralytics :

  • Segmentação de instâncias com objectos de classe: A cada objeto de classe é atribuída uma cor única para uma separação visual clara.

  • Segmentação de instâncias com rastos de objectos: Cada rasto é representado por uma cor distinta, facilitando a identificação e o rastreio através de fotogramas de vídeo.



Ver: Segmentação de instâncias com seguimento de objectos utilizando Ultralytics YOLO11

Amostras

Segmentação de instâncias Segmentação de instâncias + Seguimento de objectos
Ultralytics Segmentação de instâncias Ultralytics Segmentação de instâncias com seguimento de objectos
Ultralytics Segmentação de instâncias 😍 Ultralytics Segmentação de instâncias com seguimento de objectos 🔥

Segmentação de instâncias utilizando o 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 os InstanceSegmentation argumentos:

Argumento Tipo Predefinição Descrição
model str None Caminho para o ficheiro 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 Predefinição Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de seguimento a utilizar, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limiar de confiança para as detecções; valores mais baixos permitem o seguimento de mais objectos, mas podem incluir falsos positivos.
iou float 0.5 Define o limiar 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] só rastreia as classes especificadas.
verbose bool True Controla a apresentação dos resultados do seguimento, fornecendo uma saída visual dos objectos seguidos.
device str None Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite aos utilizadores selecionar entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo.

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

Argumento Tipo Predefinição Descrição
show bool False Se Trueapresenta as imagens ou vídeos anotados numa 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 NoneA largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza.

Aplicações da segmentação de instâncias

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

Gestão de resíduos e reciclagem

YOLO11 pode ser utilizado em instalações de gestão de resíduos para identificar e selecionar diferentes tipos de materiais. O modelo pode segmentar resíduos de plástico, cartão, metal e outros materiais recicláveis com elevada precisão, permitindo que os sistemas de triagem automatizados processem os resíduos de forma mais eficiente. Isto é particularmente valioso tendo em conta que apenas cerca de 10% dos 7 mil milhões de toneladas de resíduos plásticos produzidos a nível mundial são reciclados.

Veículos autónomos

Nos automóveis autónomos, a segmentação de instâncias ajuda a identificar e a seguir peões, veículos, sinais de trânsito e outros elementos da estrada ao nível do pixel. Essa compreensão precisa do ambiente é crucial para as decisões de navegação e segurança. O desempenho em tempo real do YOLO11 torna-o ideal para estas aplicações sensíveis ao tempo.

Imagiologia 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 para delinear com precisão os limites dos objectos torna-o valioso para o diagnóstico médico e o planeamento de tratamentos.

Monitorização do local de construção

Nos estaleiros de construção, a segmentação de instâncias pode seguir a maquinaria pesada, os trabalhadores e os materiais. Isto ajuda a garantir a segurança, monitorizando as posições do equipamento e detectando quando os trabalhadores entram em áreas perigosas, ao mesmo tempo que optimiza o fluxo de trabalho e a atribuição de recursos.

Nota

Para quaisquer questões, não hesite em colocar as suas perguntas na secção de questõesUltralytics ou na secção de discussão mencionada abaixo.

FAQ

Como é que efectuo a segmentação de instâncias utilizando Ultralytics YOLO11 ?

Para executar a segmentação de instância usando Ultralytics YOLO11 , inicialize o modelo YOLO com uma versão de segmentação de YOLO11 e processe quadros 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 a segmentação de instâncias no guiaUltralytics YOLO11 .

Qual é a diferença entre a segmentação de instâncias e o seguimento de objectos em Ultralytics YOLO11 ?

A segmentação de instâncias identifica e delineia objectos individuais numa imagem, atribuindo a cada objeto uma etiqueta e uma máscara únicas. O rastreamento de objetos estende isso atribuindo IDs consistentes a objetos em quadros 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-se capacidades poderosas para analisar o movimento e o comportamento dos objectos nos vídeos, mantendo a informação precisa dos limites.

Por que razão devo utilizar Ultralytics YOLO11 para segmentação e rastreio, por exemplo, 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 utilização em comparação com outros modelos como o Mask R-CNN ou o Faster R-CNN. YOLO11 processa imagens numa única passagem (deteção numa fase), o que o torna significativamente mais rápido, mantendo uma elevada precisão. Também proporciona uma integração perfeita com o Ultralytics HUB, permitindo aos utilizadores gerir modelos, conjuntos de dados e pipelines de formação de forma eficiente. Para aplicações que exigem velocidade e precisão, YOLO11 oferece um equilíbrio ideal.

Existem conjuntos de dados fornecidos por Ultralytics adequados para treinar modelos YOLO11 , por exemplo, para segmentação e rastreio?

Sim, 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 mais pequeno 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, também é possível criar conjuntos de dados personalizados seguindo o formato Ultralytics . Informações completas sobre o conjunto de dados e instruções de uso podem ser encontradas na documentaçãoUltralytics Datasets.

📅C riado há 1 ano ✏️ Atualizado há 6 dias

Comentários