--- license: apache-2.0 language: - en - de tags: - object-detection - yolo - yolov8 - ultralytics - invoice - document-layout - document-understanding - ocr-prep - invoice-extraction library_name: ultralytics pipeline_tag: object-detection base_model: ultralytics/yolov8x datasets: - AvoCahDoe/invoice-annotated-bbox metrics: - map_50 - map - precision - recall model-index: - name: best results: - task: type: object-detection dataset: name: invoice-yolo-annotated type: invoice-layout metrics: - type: map_50 value: 0.8757 - type: map value: 0.6224 - type: precision value: 0.9144 - type: recall value: 0.8735 --- # 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](https://huggingface.co/collections/AvoCahDoe/invoice-layout-extraction-6a39cd2a061a508c8049d825)**. | 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](https://huggingface.co/datasets/AvoCahDoe/invoice-annotated-bbox) | | **Demo Space** | [AvoCahDoe/invoice-layout-yolov8n-demo](https://huggingface.co/spaces/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](assets/results.png) ### Precision–Recall ![PR curve](assets/BoxPR_curve.png) ### Confusion matrices | Raw | Normalized | |-----|------------| | ![Confusion matrix](assets/confusion_matrix.png) | ![Normalized confusion matrix](assets/confusion_matrix_normalized.png) | ### Validation predictions | Ground truth | Model predictions | |--------------|-------------------| | ![Val labels](assets/val_batch0_labels.jpg) | ![Val predictions](assets/val_batch0_pred.jpg) | ### Training batches (augmented) | Batch 0 | Batch 1 | Batch 2 | |---------|---------|---------| | ![Train batch 0](assets/train_batch0.jpg) | ![Train batch 1](assets/train_batch1.jpg) | ![Train batch 2](assets/train_batch2.jpg) | ### Label distribution ![Label distribution](assets/labels.jpg) ## Usage ### Ultralytics (recommended) ```python 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 ```python from ultralytics import YOLO model = YOLO("hf://AvoCahDoe/invoice-layout-yolov8x/weights/best.pt") results = model.predict("invoice_page.png") ``` ### Training reproduction ```bash 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](https://huggingface.co/AvoCahDoe/invoice-layout-yolov8n) | | 2 | `yolov8s` | 0.9006 | 0.6739 | 0.9419 | 0.8677 | [YOLOv8s](https://huggingface.co/AvoCahDoe/invoice-layout-yolov8s) | | 3 | `yolov8x` **← this model** | 0.8757 | 0.6224 | 0.9144 | 0.8735 | [YOLOv8x](https://huggingface.co/AvoCahDoe/invoice-layout-yolov8x) | | 4 | `yolo11x` | 0.8738 | 0.6127 | 0.9484 | 0.8530 | [YOLO11x](https://huggingface.co/AvoCahDoe/invoice-layout-yolo11x) | | 5 | `yolo11m` | 0.8418 | 0.4926 | 0.9033 | 0.8466 | [YOLO11m](https://huggingface.co/AvoCahDoe/invoice-layout-yolo11m) | | 6 | `yolov8m` | 0.8388 | 0.5289 | 0.9077 | 0.8580 | [YOLOv8m](https://huggingface.co/AvoCahDoe/invoice-layout-yolov8m) | ## License Apache 2.0