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)
python
1from ultralytics import YOLO
23# Carrega direto do Hugging Face4model = YOLO("hf://Kodjaoglanian/pavimentos-yolo11s/weights/best.pt")56results = model("imagem.jpg", conf=0.25, imgsz=512)7for r in results:8for box in r.boxes:9 cls_id =int(box.cls[0])10 conf =float(box.conf[0])11 x1, y1, x2, y2 = box.xyxy[0].tolist()12print(f"{model.names[cls_id]}: {conf:.2f}{[round(v)for v in[x1,y1,x2,y2]]}")
ONNX Runtime (CPU, sem PyTorch)
python
1import onnxruntime as ort
2import cv2, numpy as np
34session = ort.InferenceSession("best.onnx")5img = cv2.imread("imagem.jpg")6img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)7img = cv2.resize(img,(512,512))8img =(img.astype(np.float32)/255.0)[None].transpose(0,3,1,2)9out = session.run(None,{session.get_inputs()[0].name: img})
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)
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.