Ver como markdown

Início rápido

O caminho mais curto pelo LibreYOLO: prediga em uma imagem, treine com um dataset pequeno e depois exporte o resultado. Todos os comandos desta página rodam na CPU.

Instalação
pip install libreyolo
Checkpoint
LibreYOLO9t.pt
Hardware
A CPU basta para tudo nesta página

Instalação

bash
pip install libreyolo

Isso é tudo o que as seções de predição e treinamento abaixo precisam. Exportar para ONNX adiciona um extra; veja instalação para a lista completa.

Predição

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Baixa o checkpoint no primeiro uso e depois o guarda em cache em weights/.model = LibreYOLO("LibreYOLO9t.pt") # Uma única imagem retorna um objeto Results.result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(result.names[int(box.cls)], float(box.conf), box.xyxy.tolist())
CLI
libreyolo predict model=yolo9-t save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Vídeo e streams
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # stream=True gera um Results por quadro em vez de montar uma lista.# Troque o caminho por um índice de webcam, uma URL RTSP ou uma pasta.for result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

LibreYOLO() é uma fábrica. Ela lê o arquivo, descobre a qual família os pesos pertencem e retorna o modelo dessa família, então trocar por outro detector é uma mudança de uma linha. Passar LibreYOLO9t.pt sem diretório faz com que weights/LibreYOLO9t.pt seja procurado em relação ao diretório de trabalho e baixado ali quando estiver faltando. Veja checkpoints e pesos para as regras de download e como trabalhar offline.

save=True escreve uma cópia anotada em runs/detect/, dentro de um diretório predict que é incrementado a cada execução. O Results retornado carrega boxes, e names mapeia um índice de classe para o seu rótulo. O caminho de uma única imagem retorna um Results; um diretório, uma lista de imagens ou stream=True retornam uma lista ou um gerador deles.

Treinamento

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # coco8 é um dataset de 8 imagens que vem com a biblioteca. Ele é baixado# de uma URL no primeiro uso, então nenhum script precisa ser executado.results = model.train(    data="coco8.yaml",    epochs=1,    imgsz=640,    batch=4,    device="cpu",) print(results["save_dir"])print(results["best_checkpoint"])
CLI
libreyolo train model=yolo9-t data=coco8.yaml \  epochs=1 imgsz=640 batch=4 device=cpu
Validar
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # val() retorna um dict simples, não um objeto.metrics = model.val(data="coco8.yaml", device="cpu") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])

data é um YAML de dataset. coco8.yaml vem com a biblioteca, e é por isso que o snippet roda como está colado; um nome que não venha incluído é lido como um caminho. Os datasets são resolvidos em ~/datasets, ou em LIBREYOLO_DATASETS_DIR quando essa variável está definida.

Uma execução escreve em project/name, por padrão um diretório abaixo de runs/train, com weights/best.pt e weights/last.pt dentro dele. train() retorna um dicionário que inclui save_dir, best_checkpoint, last_checkpoint, as losses por época e as métricas de validação por época. O checkpoint treinado é carregado através de LibreYOLO() exatamente como o pré-treinado.

Nem toda família é treinável. Quando uma família traz apenas inferência, train() lança NotImplementedError e diz isso. Conceitos básicos explica o que significa cada nível de suporte.

Exportação

TorchScript
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") # export() retorna o caminho que escreveu.path = model.export(format="torchscript")print(path) # A fábrica roteia pelo sufixo do arquivo, então o artefato é carregado# de volta como um checkpoint e retorna o mesmo objeto Results.exported = LibreYOLO(path)result = exported(SAMPLE_IMAGE)print(len(result.boxes))
ONNX
pip install "libreyolo[onnx]"libreyolo export model=yolo9-t format=onnx imgsz=640

O TorchScript não precisa de nada além da instalação base. Os outros destinos têm cada um o seu próprio extra, e a cobertura é por família e por tarefa, não uniforme: veja exportação e deploy.

Os argumentos aceitos por todos os formatos incluem imgsz (um int, ou um par de altura e largura), batch (padrão 1), half, int8 com um YAML de data para calibração, dynamic (padrão True), simplify (padrão True), opset, device e output_path. Quando output_path é omitido, o arquivo é escrito em weights/ com um nome derivado do checkpoint.

Próximos passos

Verificado com o LibreYOLO v1.5.0.