Recorte de objectos utilizando Ultralytics YOLO11
O que é o Recorte de objectos?
O recorte de objectos com Ultralytics YOLO11 envolve o isolamento e a extração de objectos específicos detectados de uma imagem ou vídeo. As capacidades do modelo YOLO11 são utilizadas para identificar e delinear com precisão os objectos, permitindo um recorte preciso para análise ou manipulação posterior.
Ver: Recorte de objectos utilizando Ultralytics YOLO
Vantagens do recorte de objectos?
- Análise focada: YOLO11 facilita o recorte de objectos específicos, permitindo um exame ou processamento aprofundado de itens individuais numa cena.
- Volume de dados reduzido: Ao extrair apenas objectos relevantes, o recorte de objectos ajuda a minimizar o tamanho dos dados, tornando-os eficientes para armazenamento, transmissão ou tarefas computacionais subsequentes.
- Precisão melhorada: A precisão da deteção de objectos do YOLO11 assegura que os objectos recortados mantêm as suas relações espaciais, preservando a integridade da informação visual para uma análise detalhada.
Visuais
Bagagem de aeroporto |
---|
Recolha de malas no tapete rolante do aeroporto utilizando Ultralytics YOLO11 |
Recorte de objectos utilizando YOLO11 Exemplo
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n.pt")
names = model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
os.mkdir(crop_dir_name)
# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
idx = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
idx += 1
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Argumentos model.predict
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Especifica a fonte de dados para inferência. Pode ser um caminho de imagem, ficheiro de vídeo, diretório, URL ou ID de dispositivo para feeds em direto. Suporta uma vasta gama de formatos e fontes, permitindo uma aplicação flexível em diferentes tipos de entrada. |
conf |
float |
0.25 |
Define o limite mínimo de confiança para as detecções. Os objectos detectados com confiança inferior a este limite serão ignorados. O ajuste deste valor pode ajudar a reduzir os falsos positivos. |
iou |
float |
0.7 |
Limiar de Intersecção sobre União (IoU) para Supressão Não Máxima (NMS). Valores mais baixos resultam em menos detecções através da eliminação de caixas sobrepostas, útil para reduzir duplicados. |
imgsz |
int or tuple |
640 |
Define o tamanho da imagem para inferência. Pode ser um único número inteiro 640 para redimensionamento quadrado ou uma tupla (altura, largura). O dimensionamento correto pode melhorar a deteção exatidão e velocidade de processamento. |
half |
bool |
False |
Permite a inferência de meia-precisão (FP16), que pode acelerar a inferência de modelos em GPUs compatíveis com um impacto mínimo na precisão. |
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. |
batch |
int |
1 |
Especifica o tamanho do lote para inferência (só funciona quando a fonte é um diretório, ficheiro de vídeo ou .txt ficheiro). Uma maior dimensão do lote pode proporcionar um maior rendimento, reduzindo o tempo total necessário para a inferência. |
max_det |
int |
300 |
Número máximo de detecções permitidas por imagem. Limita o número total de objectos que o modelo pode detetar numa única inferência, evitando resultados excessivos em cenas densas. |
vid_stride |
int |
1 |
Passagem de fotogramas para entradas de vídeo. Permite saltar fotogramas em vídeos para acelerar o processamento à custa da resolução temporal. Um valor de 1 processa todos os fotogramas, valores mais elevados saltam fotogramas. |
stream_buffer |
bool |
False |
Determina se os quadros de entrada devem ser colocados em fila de espera para fluxos de vídeo. Se False Se `Verdadeiro', quadros antigos são descartados para acomodar novos quadros (otimizado para aplicações em tempo real). Se `Verdadeiro', enfileira novos quadros em um buffer, garantindo que nenhum quadro seja pulado, mas causará latência se o FPS da inferência for menor que o FPS do fluxo. |
visualize |
bool |
False |
Ativa a visualização das caraterísticas do modelo durante a inferência, fornecendo informações sobre o que o modelo está a "ver". Útil para depuração e interpretação de modelos. |
augment |
bool |
False |
Permite o aumento do tempo de teste (TTA) para previsões, melhorando potencialmente a robustez da deteção à custa da velocidade de inferência. |
agnostic_nms |
bool |
False |
Permite a Supressão Não Máxima (NMS) independente da classe, que funde caixas sobrepostas de classes diferentes. Útil em cenários de deteção multi-classe onde a sobreposição de classes é comum. |
classes |
list[int] |
None |
Filtra as previsões para um conjunto de IDs de classe. Apenas as detecções pertencentes às classes especificadas serão retornadas. Útil para se concentrar em objectos relevantes em tarefas de deteção multi-classe. |
retina_masks |
bool |
False |
Devolve máscaras de segmentação de alta resolução. As máscaras devolvidas (masks.data ) corresponderão ao tamanho da imagem original se estiverem activados. Se estiverem desactivados, terão o tamanho de imagem utilizado durante a inferência. |
embed |
list[int] |
None |
Especifica as camadas a partir das quais se devem extrair vectores de caraterísticas ou embeddings. Útil para tarefas a jusante como o agrupamento ou a pesquisa de semelhanças. |
project |
str |
None |
Nome do diretório do projeto onde são guardados os resultados da previsão, se save está ativado. |
name |
str |
None |
Nome da execução da previsão. Utilizado para criar um subdiretório dentro da pasta do projeto, onde os resultados da previsão são armazenados se save está ativado. |
FAQ
O que é o recorte de objectos em Ultralytics YOLO11 e como funciona?
O recorte de objectos utilizando Ultralytics YOLO11 envolve o isolamento e a extração de objectos específicos de uma imagem ou vídeo com base nas capacidades de deteção do YOLO11. Este processo permite uma análise focada, um volume de dados reduzido e uma precisão melhorada, tirando partido do YOLO11 para identificar objectos com elevada precisão e cortá-los em conformidade. Para um tutorial aprofundado, consulte o exemplo de corte de objectos.
Por que razão devo utilizar Ultralytics YOLO11 para o recorte de objectos em vez de outras soluções?
Ultralytics YOLO11 destaca-se pela sua precisão, velocidade e facilidade de utilização. Permite a deteção e o recorte detalhados e precisos de objectos, essenciais para análises específicas e aplicações que necessitem de uma elevada integridade dos dados. Além disso, YOLO11 integra-se perfeitamente com ferramentas como OpenVINO e TensorRT para implementações que requerem capacidades em tempo real e otimização em hardware diverso. Explore as vantagens no guia sobre exportação de modelos.
Como posso reduzir o volume de dados do meu conjunto de dados utilizando o recorte de objectos?
Ao utilizar o Ultralytics YOLO11 para cortar apenas objectos relevantes das suas imagens ou vídeos, pode reduzir significativamente o tamanho dos dados, tornando-os mais eficientes para armazenamento e processamento. Este processo envolve a formação do modelo para detetar objectos específicos e, em seguida, utilizar os resultados para cortar e guardar apenas essas partes. Para mais informações sobre como explorar as capacidades do Ultralytics YOLO11 , visite o nosso guia de início rápido.
Posso utilizar o Ultralytics YOLO11 para análise de vídeo em tempo real e recorte de objectos?
Sim, o Ultralytics YOLO11 pode processar feeds de vídeo em tempo real para detetar e cortar objectos de forma dinâmica. As capacidades de inferência de alta velocidade do modelo tornam-no ideal para aplicações em tempo real, como vigilância, análise desportiva e sistemas de inspeção automatizados. Confira os modos de rastreamento e previsão para entender como implementar o processamento em tempo real.
Quais são os requisitos de hardware para executar eficientemente o YOLO11 para recorte de objectos?
Ultralytics YOLO11 está optimizado para ambientes CPU e GPU , mas para obter um desempenho ótimo, especialmente para inferência em tempo real ou de grande volume, recomenda-se a utilização de um GPU dedicado (por exemplo, NVIDIA Tesla, série RTX). Para implantação em dispositivos leves, considere usar CoreML para iOS ou TFLite para Android. Mais detalhes sobre os dispositivos e formatos suportados podem ser encontrados em nossas opções de implantação de modelos.