Salta para o conteúdo

Recorte de objectos utilizando Ultralytics YOLOv8

O que é o Recorte de objectos?

O recorte de objectos com Ultralytics YOLOv8 envolve o isolamento e a extração de objectos específicos detectados de uma imagem ou vídeo. As capacidades do modelo YOLOv8 são utilizadas para identificar e delinear com precisão os objectos, permitindo um recorte preciso para análise ou manipulação posterior.



Observa: Recorte de objectos utilizando Ultralytics YOLOv8

Vantagens do corte de objectos?

  • Análise focada: YOLOv8 facilita o recorte de objectos específicos, permitindo um exame ou processamento aprofundado de itens individuais numa cena.
  • Reduz o volume de dados: 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 YOLOv8 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
Tapete rolante no aeroporto Malas a serem cortadas usando Ultralytics YOLOv8
Recolha de malas no tapete rolante do aeroporto utilizando Ultralytics YOLOv8

Recorte de objectos utilizando YOLOv8 Exemplo

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolov8n.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

Argumenta 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 abaixo deste limite serão ignorados. Ajustar este 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, eliminando caixas sobrepostas, o que é ú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 precisão da deteção e a 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 que os utilizadores seleccionem entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo.
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 saídas excessivas em cenas densas.
vid_stride int 1 Avanço 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 cada fotograma, valores mais altos saltam fotogramas.
stream_buffer bool False Determina se todos os quadros devem ser armazenados em buffer ao processar fluxos de vídeo (True), ou se o modelo deve retornar o quadro mais recente (False). Útil para aplicações em tempo real.
visualize bool False Ativa a visualização dos recursos do modelo durante a inferência, fornecendo informações sobre o que o modelo está "vendo". Útil para depuração e interpretação do modelo.
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 de classe, que mescla caixas sobrepostas de classes diferentes. Útil em cenários de deteção de várias classes em que 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 objetos relevantes em tarefas de deteção de várias classes.
retina_masks bool False Usa máscaras de segmentação de alta resolução, se disponíveis no modelo. Isso pode melhorar a qualidade da máscara para tarefas de segmentação, fornecendo detalhes mais finos.
embed list[int] None Especifica as camadas a partir das quais se extraem vectores de características ou incorporações. Útil para tarefas a jusante como o agrupamento ou a pesquisa de semelhanças.

FAQ

O que é o recorte de objectos em Ultralytics YOLOv8 e como funciona?

O recorte de objectos utilizando Ultralytics YOLOv8 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 YOLOv8. Este processo permite uma análise focada, um volume de dados reduzido e uma precisão melhorada, tirando partido do YOLOv8 para identificar objectos com elevada precisão e cortá-los em conformidade. Para um tutorial aprofundado, consulta o exemplo de corte de objectos.

Por que razão devo utilizar Ultralytics YOLOv8 para recortar objectos em vez de outras soluções?

Ultralytics YOLOv8 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, o YOLOv8 integra-se perfeitamente com ferramentas como OpenVINO e TensorRT para implementações que requerem capacidades em tempo real e otimização em hardware diverso. Explora as vantagens no guia sobre exportação de modelos.

Como posso reduzir o volume de dados do meu conjunto de dados utilizando o corte de objectos?

Utilizando Ultralytics YOLOv8 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 treinar o 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 YOLOv8 , visita o nosso guia de início rápido.

Posso utilizar o Ultralytics YOLOv8 para análise de vídeo em tempo real e recorte de objectos?

Sim, o Ultralytics YOLOv8 pode processar feeds de vídeo em tempo real para detetar e cortar objectos de forma dinâmica. Os recursos de inferência de alta velocidade do modelo o tornam ideal para aplicações em tempo real, como vigilância, análise de esportes e sistemas de inspeção automatizados. Consulta os modos de rastreio e previsão para compreenderes como implementar o processamento em tempo real.

Quais são os requisitos de hardware para executar eficientemente o YOLOv8 para recorte de objectos?

Ultralytics YOLOv8 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 um GPU dedicado (por exemplo, NVIDIA Tesla, série RTX). Para implantação em dispositivos leves, considera 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.



Criado em 2024-01-09, Atualizado em 2024-07-05
Autores: glenn-jocher (8), RizwanMunawar (2), IvorZhu331 (1), AyushExel (1)

Comentários