Salta para o conte√ļdo

Python Utilização

Bem-vindo √† documenta√ß√£o de uso do YOLOv8 Python ! Este guia foi concebido para o ajudar a integrar facilmente o YOLOv8 nos seus projectos Python para dete√ß√£o, segmenta√ß√£o e classifica√ß√£o de objectos. Aqui, aprender√°s a carregar e a utilizar modelos pr√©-treinados, a treinar novos modelos e a efetuar previs√Ķes em imagens. A interface f√°cil de utilizar Python √© um recurso valioso para quem procura incorporar YOLOv8 nos seus projectos Python , permitindo-te implementar rapidamente capacidades avan√ßadas de dete√ß√£o de objectos. Vamos come√ßar!



Observa: Domina Ultralytics YOLOv8 : Python

Por exemplo, os utilizadores podem carregar um modelo, treiná-lo, avaliar o seu desempenho num conjunto de validação e até exportá-lo para o formato ONNX com apenas algumas linhas de código.

Python

from ultralytics import YOLO

# Create a new YOLO model from scratch
model = YOLO('yolov8n.yaml')

# Load a pretrained YOLO model (recommended for training)
model = YOLO('yolov8n.pt')

# Train the model using the 'coco128.yaml' dataset for 3 epochs
results = model.train(data='coco128.yaml', epochs=3)

# Evaluate the model's performance on the validation set
results = model.val()

# Perform object detection on an image using the model
results = model('https://ultralytics.com/images/bus.jpg')

# Export the model to ONNX format
success = model.export(format='onnx')

Comboio

O modo Train √© utilizado para treinar um modelo YOLOv8 num conjunto de dados personalizado. Neste modo, o modelo √© treinado utilizando o conjunto de dados e os hiperpar√Ęmetros especificados. O processo de treino envolve a otimiza√ß√£o dos par√Ęmetros do modelo para que este possa prever com precis√£o as classes e localiza√ß√Ķes dos objectos numa imagem.

Comboio

from ultralytics import YOLO

model = YOLO('yolov8n.pt') # pass any model type
results = model.train(epochs=5)
from ultralytics import YOLO

model = YOLO('yolov8n.yaml')
results = model.train(data='coco128.yaml', epochs=5)
model = YOLO("last.pt")
results = model.train(resume=True)

Exemplos de comboios

Val

O modo Val √© utilizado para validar um modelo YOLOv8 depois de este ter sido treinado. Neste modo, o modelo √© avaliado num conjunto de valida√ß√£o para medir a sua precis√£o e desempenho de generaliza√ß√£o. Este modo pode ser utilizado para ajustar os hiperpar√Ęmetros do modelo para melhorar o seu desempenho.

Val

  from ultralytics import YOLO

  model = YOLO('yolov8n.yaml')
  model.train(data='coco128.yaml', epochs=5)
  model.val()  # It'll automatically evaluate the data you trained.
  from ultralytics import YOLO

  model = YOLO("model.pt")
  # It'll use the data YAML file in model.pt if you don't set data.
  model.val()
  # or you can set the data you want to val
  model.val(data='coco128.yaml')

Exemplos Val

Prevê

O modo Prever √© utilizado para efetuar previs√Ķes utilizando um modelo YOLOv8 treinado em novas imagens ou v√≠deos. Neste modo, o modelo √© carregado a partir de um ficheiro de ponto de controlo e o utilizador pode fornecer imagens ou v√≠deos para realizar a infer√™ncia. O modelo prev√™ as classes e localiza√ß√Ķes dos objectos nas imagens ou v√≠deos de entrada.

Prevê

from ultralytics import YOLO
from PIL import Image
import cv2

model = YOLO("model.pt")
# accepts all formats - image/dir/Path/URL/video/PIL/ndarray. 0 for webcam
results = model.predict(source="0")
results = model.predict(source="folder", show=True) # Display preds. Accepts all YOLO predict arguments

# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True)  # save plotted images

# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # save predictions as labels

# from list of PIL/ndarray
results = model.predict(source=[im1, im2])
# results would be a list of Results object including all the predictions by default
# but be careful as it could occupy a lot memory when there're many images,
# especially the task is segmentation.
# 1. return as a list
results = model.predict(source="folder")

# results would be a generator which is more friendly to memory by setting stream=True
# 2. return as a generator
results = model.predict(source=0, stream=True)

for result in results:
    # Detection
    result.boxes.xyxy   # box with xyxy format, (N, 4)
    result.boxes.xywh   # box with xywh format, (N, 4)
    result.boxes.xyxyn  # box with xyxy format but normalized, (N, 4)
    result.boxes.xywhn  # box with xywh format but normalized, (N, 4)
    result.boxes.conf   # confidence score, (N, 1)
    result.boxes.cls    # cls, (N, 1)

    # Segmentation
    result.masks.data      # masks, (N, H, W)
    result.masks.xy        # x,y segments (pixels), List[segment] * N
    result.masks.xyn       # x,y segments (normalized), List[segment] * N

    # Classification
    result.probs     # cls prob, (num_class, )

# Each result is composed of torch.Tensor by default,
# in which you can easily use following functionality:
result = result.cuda()
result = result.cpu()
result = result.to("cpu")
result = result.numpy()

Prever exemplos

Exportação

O modo de exporta√ß√£o √© utilizado para exportar um modelo YOLOv8 para um formato que possa ser utilizado para a implanta√ß√£o. Neste modo, o modelo √© convertido para um formato que pode ser utilizado por outras aplica√ß√Ķes de software ou dispositivos de hardware. Este modo √© √ļtil quando implementa o modelo em ambientes de produ√ß√£o.

Exportação

Exporta um modelo oficial de YOLOv8n para ONNX com tamanho de lote e tamanho de imagem din√Ęmicos.

  from ultralytics import YOLO

  model = YOLO('yolov8n.pt')
  model.export(format='onnx', dynamic=True)

Exporta um modelo oficial de YOLOv8n para TensorRT em device=0 para aceleração em dispositivos CUDA.

  from ultralytics import YOLO

  model = YOLO('yolov8n.pt')
  model.export(format='onnx', device=0)

Exemplos de exportação

Acompanha

O modo de rastreamento √© usado para rastrear objetos em tempo real usando um modelo YOLOv8 . Neste modo, o modelo √© carregado a partir de um ficheiro de ponto de controlo e o utilizador pode fornecer um fluxo de v√≠deo em direto para efetuar o seguimento de objectos em tempo real. Este modo √© √ļtil para aplica√ß√Ķes como sistemas de vigil√Ęncia ou carros aut√≥nomos.

Acompanha

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official detection model
model = YOLO('yolov8n-seg.pt')  # load an official segmentation model
model = YOLO('path/to/best.pt')  # load a custom model

# Track with the model
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")

Exemplos de faixas

Referência

O modo de refer√™ncia √© utilizado para determinar a velocidade e a precis√£o de v√°rios formatos de exporta√ß√£o para YOLOv8. Os par√Ęmetros de refer√™ncia fornecem informa√ß√Ķes sobre o tamanho do formato exportado, a sua mAP50-95 m√©tricas (para dete√ß√£o e segmenta√ß√£o de objectos) ou accuracy_top5 (para classifica√ß√£o), e o tempo de infer√™ncia em milissegundos por imagem em v√°rios formatos de exporta√ß√£o como ONNX, OpenVINO, TensorRT e outros. Esta informa√ß√£o pode ajudar os utilizadores a escolher o melhor formato de exporta√ß√£o para o seu caso de utiliza√ß√£o espec√≠fico, com base nos seus requisitos de velocidade e precis√£o.

Referência

Compara um modelo oficial de YOLOv8n em todos os formatos de exportação.

from ultralytics.utils.benchmarks import benchmark

# Benchmark
benchmark(model='yolov8n.pt', data='coco8.yaml', imgsz=640, half=False, device=0)

Exemplos de referência

Explorador

A API Explorer pode ser utilizada para explorar conjuntos de dados com sem√Ęntica avan√ßada, semelhan√ßa de vectores e pesquisa SQL, entre outras funcionalidades. Procura tamb√©m imagens com base no seu conte√ļdo utilizando linguagem natural, recorrendo ao poder dos LLMs. A API Explorer permite-te escrever os teus pr√≥prios cadernos de explora√ß√£o de conjuntos de dados ou scripts para obteres informa√ß√Ķes sobre os teus conjuntos de dados.

Pesquisa sem√Ęntica com o Explorer

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

similar = exp.get_similar(img='https://ultralytics.com/images/bus.jpg', limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(
                        img=['https://ultralytics.com/images/bus.jpg',
                             'https://ultralytics.com/images/bus.jpg'],
                        limit=10
                        )
print(similar.head())
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

similar = exp.get_similar(idx=1, limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(idx=[1,10], limit=10)
print(similar.head())

Explorador

Utilizar os formadores

YOLO A classe Model é um invólucro de alto nível para as classes Trainer. Cada tarefa YOLO tem seu próprio treinador que herda de BaseTrainer.

Exemplo de um treinador de deteção

```python
from ultralytics.models.yolo import DetectionTrainer, DetectionValidator, DetectionPredictor

# trainer
trainer = DetectionTrainer(overrides={})
trainer.train()
trained_model = trainer.best

# Validator
val = DetectionValidator(args=...)
val(model=trained_model)

# predictor
pred = DetectionPredictor(overrides={})
pred(source=SOURCE, model=trained_model)

# resume from last weight
overrides["resume"] = trainer.last
trainer = detect.DetectionTrainer(overrides=overrides)
```

Podes personalizar facilmente os Trainers para suportar tarefas personalizadas ou explorar ideias de I&D. Saiba mais sobre a personalização Trainers, Validators e Predictors de acordo com as necessidades do teu projeto na secção Personalização.

Tutoriais de personalização



Criado em 2023-11-12, Atualizado em 2024-02-03
Autores: glenn-jocher (7), AyushExel (1), chr043416@gmail.com (1), Laughing-q (1), maianumerosky (1)

Coment√°rios