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 'coco8.yaml' dataset for 3 epochs
results = model.train(data='coco8.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
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
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()
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.
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")
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
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. Também permite a pesquisa de imagens com base no seu conteúdo utilizando linguagem natural, utilizando o 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='coco8.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='coco8.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())
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
para atender às necessidades do teu projeto na secção Personalização.
Criado em 2023-11-12, Atualizado em 2024-04-18
Autores: glenn-jocher (9), AyushExel (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)