Invoice Layout Detection — YOLOv8x

Fine-tuned YOLOv8x 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 YOLOv8x (68.2M params, 257.8 GFLOPs)
Base weights ultralytics/yolov8x
Input size 1024 px
Classes 8 layout regions
Training epochs 100 (best @ epoch 100)
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.8757
mAP50-95 0.6224
Precision 0.9144
Recall 0.8735

Validation (best epoch 100)

Metric Best Final (epoch 100)
mAP50 0.8767 0.8767
mAP50-95 0.6016 0.6016
Precision 0.9213 0.9213
Recall 0.7415 0.7415

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

Training configuration

Parameter Value
Batch 2
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-yolov8x", "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-yolov8x/weights/best.pt")
results = model.predict("invoice_page.png")

Training reproduction

python scripts/train_comparison.py --models yolov8x

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 0.9006 0.6739 0.9419 0.8677 YOLOv8s
3 yolov8x ← this model 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
50
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train AvoCahDoe/invoice-layout-yolov8x

Space using AvoCahDoe/invoice-layout-yolov8x 1

Collection including AvoCahDoe/invoice-layout-yolov8x

Evaluation results