Invoice Layout Detection — YOLOv8s

Fine-tuned YOLOv8s for 8-class invoice document layout region detection (metadata, vendor/customer blocks, table, line items, summary, payment, column headers).

Part of the Hub collection Invoice Layout Extraction.

Property Value
Architecture YOLOv8s (11.2M params, 28.6 GFLOPs)
Base weights ultralytics/yolov8s
Input size 1024 px
Classes 8 layout regions
Training epochs 100 (best @ epoch 94)
Optimizer AdamW
Dataset AvoCahDoe/invoice-annotated-bbox
Demo Space AvoCahDoe/invoice-layout-yolov8n-demo
Train / val / test 372 / 14 / 7 pages

Classes

ID Name
0 invoice_metadata
1 vendor_block
2 customer_block
3 table_block
4 line_item
5 summary_block
6 payment_block
7 Column

Metrics

Test split (held-out, 7 images)

Metric Value
mAP50 0.9006
mAP50-95 0.6739
Precision 0.9419
Recall 0.8677

Validation (best epoch 94)

Metric Best Final (epoch 100)
mAP50 0.8537 0.8478
mAP50-95 0.6140 0.6086
Precision 0.8587 0.9096
Recall 0.7795 0.7908

Training time: ~32.0 min on RTX 4070 Laptop GPU.

Training configuration

Parameter Value
Batch 8
Image size 1024
Patience 25
LR (cosine) 0.01 → 0.01
Mosaic 1.0
Mixup 0.15
Copy-paste 0.1
Horizontal flip 0.0

Training results

Learning curves

Training results

Precision–Recall

PR curve

Confusion matrices

Raw Normalized
Confusion matrix Normalized confusion matrix

Validation predictions

Ground truth Model predictions
Val labels Val predictions

Training batches (augmented)

Batch 0 Batch 1 Batch 2
Train batch 0 Train batch 1 Train batch 2

Label distribution

Label distribution

Usage

Ultralytics (recommended)

from ultralytics import YOLO
from huggingface_hub import hf_hub_download

weights = hf_hub_download("AvoCahDoe/invoice-layout-yolov8s", "weights/best.pt")
model = YOLO(weights)
results = model.predict("invoice_page.png", imgsz=1024, conf=0.25)
results[0].show()

Load from Hub by repo id

from ultralytics import YOLO

model = YOLO("hf://AvoCahDoe/invoice-layout-yolov8s/weights/best.pt")
results = model.predict("invoice_page.png")

Training reproduction

python scripts/train_comparison.py --models yolov8s

Repository layout

weights/best.pt          # Best checkpoint (use this)
weights/last.pt          # Last epoch checkpoint
config/                  # Training configuration
metrics/                 # Per-epoch and summary metrics
assets/                  # Plots and visualizations

Model comparison (test split)

All six architectures fine-tuned on the same invoice layout dataset.

Rank Model test mAP50 test mAP50-95 Precision Recall Hub
1 yolov8n 0.9600 0.7167 0.9502 0.9592 YOLOv8n
2 yolov8s ← this model 0.9006 0.6739 0.9419 0.8677 YOLOv8s
3 yolov8x 0.8757 0.6224 0.9144 0.8735 YOLOv8x
4 yolo11x 0.8738 0.6127 0.9484 0.8530 YOLO11x
5 yolo11m 0.8418 0.4926 0.9033 0.8466 YOLO11m
6 yolov8m 0.8388 0.5289 0.9077 0.8580 YOLOv8m

License

Apache 2.0

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

Dataset used to train AvoCahDoe/invoice-layout-yolov8s

Space using AvoCahDoe/invoice-layout-yolov8s 1

Collection including AvoCahDoe/invoice-layout-yolov8s

Evaluation results