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 🔥 |
Segmentação de instâncias utilizando o 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
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 True apresenta 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 None A 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.