PavimentOS-YOLO11s — Detector de Defeitos em Pavimentos

Detector de objetos baseado na arquitetura YOLO11s (Ultralytics) treinado para identificar cinco categorias de defeitos em pavimentos urbanos a partir de imagens de superfície rodoviária. Otimizado para inferência eficiente em CPU/GPU de baixo custo, com exportações prontas para ONNX, OpenVINO, TorchScript e TensorRT.

Curvas de treino

Sumário Executivo

Item Valor
Arquitetura YOLO11s
Parâmetros 9.4M
GFLOPs 21.3
Resolução de treino 512x512
Resolução de inferência 512x512 (ou 640 via .pt)
Classes 5
Dataset de teste 1.317 imagens / 2.868 instâncias
mAP@0.5 0.594
mAP@0.5:0.95 0.293
Precision 0.642
Recall 0.550
GPU de treino Tesla T4 (Google Colab)
Épocas 30

Classes

ID Classe Descrição
0 buraco Degradamento profundo do pavimento (buraco / pothole)
1 trinca_longitudinal Trinca no sentido da via
2 trinca_transversal Trinca perpendicular à via
3 trinca_malha Trinca em malha / couro de jacaré (alligator cracking)
4 tampa_bueiro Tampa de bueiro / grelha de drenagem

Métricas por Classe (conjunto de teste)

Classe Precision Recall mAP@0.5 mAP@0.5:0.95
all 0.642 0.550 0.594 0.293
buraco 0.560 0.427 0.471 0.201
trinca_longitudinal 0.611 0.468 0.505 0.231
trinca_transversal 0.525 0.395 0.426 0.160
trinca_malha 0.675 0.628 0.680 0.362
tampa_bueiro 0.840 0.829 0.887 0.511

Matriz de Confusão (normalizada)

Matriz de confusão

Curva Precision-Recall

Curva PR

Amostras de Predição (validação)

Predições

Como Usar

Python (Ultralytics)

from ultralytics import YOLO

# Carrega direto do Hugging Face
model = YOLO("hf://Kodjaoglanian/pavimentos-yolo11s/weights/best.pt")

results = model("imagem.jpg", conf=0.25, imgsz=512)
for r in results:
    for box in r.boxes:
        cls_id = int(box.cls[0])
        conf = float(box.conf[0])
        x1, y1, x2, y2 = box.xyxy[0].tolist()
        print(f"{model.names[cls_id]}: {conf:.2f} {[round(v) for v in [x1,y1,x2,y2]]}")

ONNX Runtime (CPU, sem PyTorch)

import onnxruntime as ort
import cv2, numpy as np

session = ort.InferenceSession("best.onnx")
img = cv2.imread("imagem.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (512, 512))
img = (img.astype(np.float32) / 255.0)[None].transpose(0, 3, 1, 2)
out = session.run(None, {session.get_inputs()[0].name: img})

CLI (Ultralytics)

yolo predict model=hf://Kodjaoglanian/pavimentos-yolo11s/weights/best.pt source=./imagens/ imgsz=512

Detecção em vídeo (performance em tempo real)

Incluímos o script detectar_video.py para inferência em vídeo/arquivo com exportação de dataset YOLO (images/ + labels/):

huggingface-cli download Kodjaoglanian/pavimentos-yolo11s exports/best.torchscript --local-dir ./modelo
python detectar_video.py --model ./modelo/best.torchscript --video rua.mp4 --imgsz 416

Formatos Disponíveis

Formato Tamanho Caminho no repo
PyTorch 19 MB weights/best.pt
TorchScript 37 MB exports/best.torchscript
ONNX 37 MB exports/best.onnx
OpenVINO 37 MB exports/best_openvino_model/
TensorRT 41 MB exports/best.engine

Detalhes do Treino

Dataset

Imagens de pavimentos brasileiros consolidadas a partir de múltiplas fontes (Roboflow), unificadas em um único dataset com mapeamento de classes consistente. As 4 classes originais com anotações insuficientes (remendo, afundamento, desgaste, poça de água) foram removidas por adicionarem ruído ao treino.

Split Imagens Instâncias
Treino ~10.500 ~23.000
Validação ~1.300 ~2.900
Teste 1.317 2.868

Hiperparâmetros

Parâmetro Valor
Modelo base yolo11s.pt (pré-treinado COCO)
Épocas 30
Tamanho de imagem 512
Batch auto (determinado pela memória)
Otimizador auto (SGD c/ momentum)
LR inicial 0.01
LR final 0.01 (coseno)
Patience (early stop) 15
Dropout 0.1
Mosaic 1.0 (fecha na época 15)
Mixup 0.15
Copy-paste 0.1
HSV (H/S/V) 0.015 / 0.7 / 0.4
Flip horizontal 0.5
Auto-augment randaugment
Erasing 0.4

Hardware

  • GPU: NVIDIA Tesla T4 (15 GB VRAM) — Google Colab
  • Treino completo: 30 épocas em ~2h48min (336s/época)
  • Pós-processamento: validação + exportação + upload automáticos

Aumento de Dados

Toda a augmentação é feita online na GPU durante o treino (Ultralytics nativo): mosaic, mixup, copy-paste, HSV jitter, flip horizontal, escala/translação, randaugment e erasing. Sem augmentação offline (Albumentations) para manter o pipeline enxuto.

Estrutura do Repositório

weights/
  best.pt                Pesos PyTorch (melhor época)
  last.pt                Pesos da última época
exports/
  best.onnx              ONNX (opset 12, entrada fixa 512x512)
  best.torchscript       TorchScript (entrada dinâmica)
  best_openvino_model/   OpenVINO IR (.xml/.bin/.yaml)
  best.engine            TensorRT (gerado na T4)
runs/
  results.csv            Métricas por época
  results.png            Gráfico de treino
  confusion_matrix*.png  Matriz de confusão
  BoxPR_curve.png        Curva Precision-Recall
  BoxF1_curve.png        Curva F1
  val_batch*_pred.jpg    Predições na validação
  train_batch*.jpg       Lotes de treino (com augmentação)
  labels.jpg             Distribuição de labels
  args.yaml              Configuração completa do treino

Treino — Evolução das Métricas

Época mAP50 mAP50-95 Precision Recall
1 0.269 0.112 0.313 0.317
5 0.388 0.170 0.431 0.395
10 0.467 0.213 0.487 0.478
15 0.532 0.251 0.555 0.516
20 0.579 0.279 0.595 0.563
25 0.601 0.287 0.633 0.559
30 (final) 0.601 0.287 0.638 0.565

Comparação com modelo yolo11l (H100)

Modelo irmão treinado em H100 com dataset expandido (RDD2022 + Brasil) e arquitetura yolo11l:

Métrica yolo11l (H100) yolo11s (este)
Parâmetros 25.3M 9.4M
GFLOPs 86.6 21.3
mAP50 0.637 0.594
mAP50-95 0.325 0.293
Imagens teste 2465 1317

O yolo11s é 2.7x menor e 4x mais leve — ideal para inferência em CPU local e tempo real, a custa de ~4% de mAP50.

Licença

A arquitetura YOLO11 é licenciada sob AGPL-3.0 pela Ultralytics. O dataset RDD2022 possui seus próprios termos. Para uso comercial, consulte a licença em docs.ultralytics.com/license.

Citação

@software{pavimentos_yolo11s,
  author  = {Bruno Kodjaoglanian Cardoso Tulux},
  title   = {PavimentOS-YOLO11s — Pavement Defect Detection},
  year    = {2025},
  url     = {https://huggingface.co/Kodjaoglanian/pavimentos-yolo11s}
}

Referências

Downloads last month
30
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support