From 7f865578ac74086cb105b408443699d35bcc3df7 Mon Sep 17 00:00:00 2001 From: Xuban <59646791+EHxuban11@users.noreply.github.com> Date: Thu, 17 Sep 2026 00:06:07 +0200 Subject: [PATCH] Accept all G0 and G1 detector benchmark variants --- .github/workflows/website.yml | 2 + docs/g0-g1-catalog.json | 486 ++++++++++++++++++++++++ package.json | 2 +- scripts/test_g0_g1_catalog.py | 44 +++ support-matrix.json | 16 +- website/src/app/model/[slug]/page.tsx | 9 +- website/src/data/metadata/families.json | 50 ++- website/src/data/metadata/models.json | 466 ++++++++++++++++++++--- website/src/lib/types/benchmark.ts | 2 + 9 files changed, 1017 insertions(+), 60 deletions(-) create mode 100644 docs/g0-g1-catalog.json create mode 100644 scripts/test_g0_g1_catalog.py diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index e6e27b4..2537bdf 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -9,6 +9,7 @@ on: - "submissions/**" - "submission-credits.json" - "scripts/**" + - "docs/g0-g1-catalog.json" - ".github/workflows/website.yml" push: branches: @@ -20,6 +21,7 @@ on: - "submissions/**" - "submission-credits.json" - "scripts/**" + - "docs/g0-g1-catalog.json" - ".github/workflows/website.yml" jobs: diff --git a/docs/g0-g1-catalog.json b/docs/g0-g1-catalog.json new file mode 100644 index 0000000..e572490 --- /dev/null +++ b/docs/g0-g1-catalog.json @@ -0,0 +1,486 @@ +{ + "libreyolo_commit": "6a0ccc3a0e579948011d5a55200309c4082e61e7", + "task": "detect", + "models": [ + { + "id": "yolov9t", + "family": "yolo9", + "size": "t", + "group": "g0", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9s", + "family": "yolo9", + "size": "s", + "group": "g0", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9m", + "family": "yolo9", + "size": "m", + "group": "g0", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9c", + "family": "yolo9", + "size": "c", + "group": "g0", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rfdetr-n", + "family": "rfdetr", + "size": "n", + "group": "g0", + "input_size": 384, + "public_coco_checkpoint": true + }, + { + "id": "rfdetr-s", + "family": "rfdetr", + "size": "s", + "group": "g0", + "input_size": 512, + "public_coco_checkpoint": true + }, + { + "id": "rfdetr-m", + "family": "rfdetr", + "size": "m", + "group": "g0", + "input_size": 576, + "public_coco_checkpoint": true + }, + { + "id": "rfdetr-l", + "family": "rfdetr", + "size": "l", + "group": "g0", + "input_size": 704, + "public_coco_checkpoint": true + }, + { + "id": "yolov9e2e-t", + "family": "yolo9_e2e", + "size": "t", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9e2e-s", + "family": "yolo9_e2e", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9e2e-m", + "family": "yolo9_e2e", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9e2e-c", + "family": "yolo9_e2e", + "size": "c", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolov9p2-t", + "family": "yolo9_p2", + "size": "t", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": false + }, + { + "id": "yolov9p2-s", + "family": "yolo9_p2", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": false + }, + { + "id": "ec-s", + "family": "ec", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "ec-m", + "family": "ec", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "ec-l", + "family": "ec", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "ec-x", + "family": "ec", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-r18", + "family": "rtdetr", + "size": "r18", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-r34", + "family": "rtdetr", + "size": "r34", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-r50", + "family": "rtdetr", + "size": "r50", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-r50m", + "family": "rtdetr", + "size": "r50m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-r101", + "family": "rtdetr", + "size": "r101", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-l", + "family": "rtdetr", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetr-x", + "family": "rtdetr", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv2-r18", + "family": "rtdetrv2", + "size": "r18", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv2-r34", + "family": "rtdetrv2", + "size": "r34", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv2-r50", + "family": "rtdetrv2", + "size": "r50", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv2-r50m", + "family": "rtdetrv2", + "size": "r50m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv2-r101", + "family": "rtdetrv2", + "size": "r101", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv4-s", + "family": "rtdetrv4", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv4-m", + "family": "rtdetrv4", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv4-l", + "family": "rtdetrv4", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "rtdetrv4-x", + "family": "rtdetrv4", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "dfine-n", + "family": "dfine", + "size": "n", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "dfine-s", + "family": "dfine", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "dfine-m", + "family": "dfine", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "dfine-l", + "family": "dfine", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "dfine-x", + "family": "dfine", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deim-n", + "family": "deim", + "size": "n", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deim-s", + "family": "deim", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deim-m", + "family": "deim", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deim-l", + "family": "deim", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deim-x", + "family": "deim", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-atto", + "family": "deimv2", + "size": "atto", + "group": "g1", + "input_size": 320, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-femto", + "family": "deimv2", + "size": "femto", + "group": "g1", + "input_size": 416, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-pico", + "family": "deimv2", + "size": "pico", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-n", + "family": "deimv2", + "size": "n", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-s", + "family": "deimv2", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-m", + "family": "deimv2", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-l", + "family": "deimv2", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "deimv2-x", + "family": "deimv2", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "tinyformer-s", + "family": "tinyformer", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "tinyformer-m", + "family": "tinyformer", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "tinyformer-l", + "family": "tinyformer", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "tinyformer-x", + "family": "tinyformer", + "size": "x", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "tinyformer-xl", + "family": "tinyformer", + "size": "xl", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolonas-s", + "family": "yolonas", + "size": "s", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolonas-m", + "family": "yolonas", + "size": "m", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + }, + { + "id": "yolonas-l", + "family": "yolonas", + "size": "l", + "group": "g1", + "input_size": 640, + "public_coco_checkpoint": true + } + ] +} diff --git a/package.json b/package.json index 5cc60f8..d094e88 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "scripts": { "build": "npm run build --prefix website", - "test": "python3 scripts/test_verified_results_compat.py && python3 -m unittest discover -s scripts -p \"test_submission_credits.py\" && python3 -m unittest discover -s scripts -p \"test_benchmark_compat.py\"", + "test": "python3 scripts/test_verified_results_compat.py && python3 -m unittest discover -s scripts -p \"test_submission_credits.py\" && python3 -m unittest discover -s scripts -p \"test_benchmark_compat.py\" && python3 -m unittest discover -s scripts -p \"test_g0_g1_catalog.py\"", "vercel-build": "npm run build --prefix website" } } diff --git a/scripts/test_g0_g1_catalog.py b/scripts/test_g0_g1_catalog.py new file mode 100644 index 0000000..bf00e67 --- /dev/null +++ b/scripts/test_g0_g1_catalog.py @@ -0,0 +1,44 @@ +"""Every pinned G0/G1 detector must be renderable and submittable.""" +import copy +import json +import unittest +from pathlib import Path + +from benchmark_data import load_support_matrix, validate_submission + +ROOT = Path(__file__).resolve().parents[1] + + +class DetectorCatalogTests(unittest.TestCase): + def test_all_sixty_variants_have_metadata_and_valid_submission_routes(self): + catalog = json.loads((ROOT / "docs/g0-g1-catalog.json").read_text()) + metadata = json.loads((ROOT / "website/src/data/metadata/models.json").read_text())["models"] + by_id = {model["id"]: model for model in metadata} + self.assertEqual(len(by_id), len(metadata), "duplicate model metadata") + families = json.loads((ROOT / "website/src/data/metadata/families.json").read_text())["families"] + family_ids = {family["id"] for family in families} + support = load_support_matrix() + template_path = next((ROOT / "submissions").glob("yolov9t__pytorch__cuda__dgx_spark*.json")) + template = json.loads(template_path.read_text()) + self.assertEqual(len(catalog["models"]), 60) + self.assertEqual(len({row["family"] for row in catalog["models"]}), 13) + for row in catalog["models"]: + with self.subTest(model=row["id"]): + model = by_id[row["id"]] + self.assertEqual(model["coverageGroup"], row["group"]) + self.assertEqual(model["task"], "detection") + self.assertEqual(model["specs"]["inputSizeDefault"], row["input_size"]) + self.assertIn(model["family"], family_ids) + submission = copy.deepcopy(template) + submission["model"].update(id=row["id"], family=model["family"], variant=row["size"], input_size=row["input_size"]) + submission["config"]["input_size"] = row["input_size"] + submission["benchmark"]["libreyolo_commit"] = catalog["libreyolo_commit"] + self.assertEqual(validate_submission(submission, support, row["id"], set(by_id)), []) + missing = [r["id"] for r in catalog["models"] if not r["public_coco_checkpoint"]] + self.assertEqual(set(missing), {"yolov9p2-t", "yolov9p2-s"}) + for key in missing: + self.assertFalse(by_id[key]["source"].get("libreyoloWeightsUrl")) + + +if __name__ == "__main__": + unittest.main() diff --git a/support-matrix.json b/support-matrix.json index c6fae28..1427264 100644 --- a/support-matrix.json +++ b/support-matrix.json @@ -13,7 +13,8 @@ "0f1ef8e4d0d275068fadd25009a35c13c2364dc8", "61c7f13f44a41aa68cc05b305d01cce40c895c98", "40c02a02e595ba9d2249e030df34a0785506545f", - "c25f6dffb521ea60bc0f63ae3dffb168a7edc466" + "c25f6dffb521ea60bc0f63ae3dffb168a7edc466", + "6a0ccc3a0e579948011d5a55200309c4082e61e7" ], "models": [ "yolox-nano", @@ -106,7 +107,18 @@ "ec-seg-s", "ec-seg-m", "ec-seg-l", - "ec-seg-x" + "ec-seg-x", + "tinyformer-l", + "tinyformer-m", + "tinyformer-s", + "tinyformer-x", + "tinyformer-xl", + "yolov9e2e-c", + "yolov9e2e-m", + "yolov9e2e-s", + "yolov9e2e-t", + "yolov9p2-s", + "yolov9p2-t" ], "runtimes": [ { diff --git a/website/src/app/model/[slug]/page.tsx b/website/src/app/model/[slug]/page.tsx index 6146b00..583e6e2 100644 --- a/website/src/app/model/[slug]/page.tsx +++ b/website/src/app/model/[slug]/page.tsx @@ -57,7 +57,7 @@ export async function generateMetadata({ params }: Props): Promise { return { title: `${model.displayName} Benchmark Results`, - description: `${model.displayName} - ${model.specs.paramsM}M parameters, ${model.specs.flopsG} GFLOPs. See detailed benchmarks across hardware.`, + description: `${model.displayName} - ${model.specs.paramsM}M parameters, ${model.specs.flopsG > 0 ? `${model.specs.flopsG} GFLOPs` : "FLOPs not recorded"}. See detailed benchmarks across hardware.`, // Advertise the LLM-ingestible markdown twin (invisible to humans). alternates: { types: { @@ -157,6 +157,9 @@ export default async function ModelPage({ params }: Props) {

{model.architecture.type} detector with {model.architecture.backbone} backbone

+ {model.checkpointNote && ( +

{model.checkpointNote}

+ )}
@@ -198,7 +201,7 @@ export default async function ModelPage({ params }: Props) { /> 0 ? formatNumber(model.specs.flopsG, 1) : "Unknown"} borderRight /> - {formatNumber(model.specs.flopsG, 1)} + {model.specs.flopsG > 0 ? formatNumber(model.specs.flopsG, 1) : "Unknown"} {model.paperReportedMap != null ? `${model.paperReportedMap}%` : "-"} diff --git a/website/src/data/metadata/families.json b/website/src/data/metadata/families.json index 6560f1f..a70abc9 100644 --- a/website/src/data/metadata/families.json +++ b/website/src/data/metadata/families.json @@ -42,8 +42,7 @@ "organization": "External baseline", "paper": { "title": "YOLOv8", - "authors": [ - ], + "authors": [], "venue": "2023", "url": "" }, @@ -74,8 +73,7 @@ "organization": "External baseline", "paper": { "title": "YOLO11", - "authors": [ - ], + "authors": [], "venue": "2024", "url": "" }, @@ -257,6 +255,50 @@ }, "originalRepo": "https://github.com/Intellindust-AI-Lab/EdgeCrafter", "trainingDataset": "COCO train2017" + }, + { + "id": "yolov9-e2e", + "displayName": "YOLOv9-E2E", + "organization": "LibreYOLO contributors", + "paper": { + "title": "YOLOv9-E2E architecture variant", + "authors": [], + "venue": "2026", + "url": "" + }, + "originalRepo": "https://github.com/LibreYOLO/libreyolo/tree/dev/libreyolo/models/yolo9_e2e", + "trainingDataset": "COCO train2017" + }, + { + "id": "yolov9-p2", + "displayName": "YOLOv9-P2", + "organization": "LibreYOLO contributors", + "paper": { + "title": "YOLOv9-P2 architecture variant", + "authors": [], + "venue": "2026", + "url": "" + }, + "originalRepo": "https://github.com/LibreYOLO/libreyolo/tree/dev/libreyolo/models/yolo9_p2", + "trainingDataset": "Checkpoint-dependent; no public COCO weights" + }, + { + "id": "tinyformer", + "displayName": "TinyFormer", + "organization": "AICVlab, NYCU", + "paper": { + "title": "TinyFormer: Preserving Tiny Objects in YOLO-DETR Hybrid Real-time Detectors", + "authors": [ + "Jun-Wei Hsieh", + "Meng-Yu Kao", + "Ghufron Wahyu Kurniawan", + "Kuan-Chuan Peng" + ], + "venue": "arXiv 2026", + "url": "https://arxiv.org/abs/2605.25046" + }, + "originalRepo": "https://github.com/mmpmmpmmpjosh/TinyFormer", + "trainingDataset": "COCO train2017" } ] } diff --git a/website/src/data/metadata/models.json b/website/src/data/metadata/models.json index 868b5f0..efe1541 100644 --- a/website/src/data/metadata/models.json +++ b/website/src/data/metadata/models.json @@ -201,7 +201,8 @@ "inLibreYOLO": true, "detectionApproach": "anchor-free", "postprocessing": "nms", - "paperReportedMap": 38.3 + "paperReportedMap": 38.3, + "coverageGroup": "g0" }, { "id": "yolov9s", @@ -230,7 +231,8 @@ "inLibreYOLO": true, "detectionApproach": "anchor-free", "postprocessing": "nms", - "paperReportedMap": 46.8 + "paperReportedMap": 46.8, + "coverageGroup": "g0" }, { "id": "yolov9m", @@ -259,7 +261,8 @@ "inLibreYOLO": true, "detectionApproach": "anchor-free", "postprocessing": "nms", - "paperReportedMap": 51.4 + "paperReportedMap": 51.4, + "coverageGroup": "g0" }, { "id": "yolov9c", @@ -288,7 +291,8 @@ "inLibreYOLO": true, "detectionApproach": "anchor-free", "postprocessing": "nms", - "paperReportedMap": 53 + "paperReportedMap": 53, + "coverageGroup": "g0" }, { "id": "picodet-s", @@ -839,7 +843,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetr-r34", @@ -868,7 +873,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetr-r50", @@ -897,7 +903,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetr-r50m", @@ -926,7 +933,8 @@ "license": "Apache-2.0", "releaseDate": "2026-04-22", "inLibreYOLO": true, - "notes": "LibreYOLO-specific RT-DETR variant: half-width hybrid encoder and early decoder exit (layer 3 of 6) for a faster speed/accuracy tradeoff. Not in the original RT-DETR paper." + "notes": "LibreYOLO-specific RT-DETR variant: half-width hybrid encoder and early decoder exit (layer 3 of 6) for a faster speed/accuracy tradeoff. Not in the original RT-DETR paper.", + "coverageGroup": "g1" }, { "id": "rtdetr-r101", @@ -955,7 +963,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rfdetr-n", @@ -984,7 +993,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-02-23", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g0" }, { "id": "rfdetr-s", @@ -1013,7 +1023,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-02-23", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g0" }, { "id": "rfdetr-m", @@ -1042,7 +1053,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-02-23", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g0" }, { "id": "rfdetr-l", @@ -1071,7 +1083,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-02-23", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g0" }, { "id": "dfine-n", @@ -1100,7 +1113,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-10-18", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "dfine-s", @@ -1129,7 +1143,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-10-18", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "dfine-m", @@ -1158,7 +1173,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-10-18", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "dfine-l", @@ -1187,7 +1203,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-10-18", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "dfine-x", @@ -1216,7 +1233,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-10-18", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "yolonas-s", @@ -1246,7 +1264,8 @@ "license": "non-permissive", "releaseDate": "2023-05-08", "inLibreYOLO": true, - "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo." + "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo.", + "coverageGroup": "g1" }, { "id": "yolonas-m", @@ -1276,7 +1295,8 @@ "license": "non-permissive", "releaseDate": "2023-05-08", "inLibreYOLO": true, - "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo." + "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo.", + "coverageGroup": "g1" }, { "id": "yolonas-l", @@ -1306,7 +1326,8 @@ "license": "non-permissive", "releaseDate": "2023-05-08", "inLibreYOLO": true, - "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo." + "notes": "Weights are auto-downloaded from Deci's CloudFront CDN (d2gjn4b69gu75n.cloudfront.net) inside LibreYOLO. License is Apache-2.0 with a non-commercial attribution clause for the pretrained weights — see the upstream super_gradients repo.", + "coverageGroup": "g1" }, { "id": "deim-n", @@ -1335,7 +1356,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-12-05", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deim-s", @@ -1364,7 +1386,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-12-05", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deim-m", @@ -1393,7 +1416,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-12-05", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deim-l", @@ -1422,7 +1446,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-12-05", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deim-x", @@ -1451,7 +1476,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-12-05", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-atto", @@ -1480,7 +1506,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-femto", @@ -1509,7 +1536,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-pico", @@ -1538,7 +1566,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-n", @@ -1567,7 +1596,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-s", @@ -1596,7 +1626,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-m", @@ -1625,7 +1656,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-l", @@ -1654,7 +1686,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "deimv2-x", @@ -1683,7 +1716,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-09-25", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "ec-s", @@ -1712,7 +1746,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-03-19", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "ec-m", @@ -1741,7 +1776,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-03-19", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "ec-l", @@ -1770,7 +1806,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-03-19", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "ec-x", @@ -1799,7 +1836,8 @@ }, "license": "Apache-2.0", "releaseDate": "2026-03-19", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetr-l", @@ -1828,7 +1866,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetr-x", @@ -1857,7 +1896,8 @@ }, "license": "Apache-2.0", "releaseDate": "2023-04-17", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv2-r18", @@ -1886,7 +1926,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-05-01", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv2-r34", @@ -1915,7 +1956,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-05-01", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv2-r50", @@ -1944,7 +1986,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-05-01", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv2-r50m", @@ -1973,7 +2016,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-05-01", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv2-r101", @@ -2002,7 +2046,8 @@ }, "license": "Apache-2.0", "releaseDate": "2024-05-01", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv4-s", @@ -2031,7 +2076,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-10-30", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv4-m", @@ -2060,7 +2106,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-10-30", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv4-l", @@ -2089,7 +2136,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-10-30", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "rtdetrv4-x", @@ -2118,7 +2166,8 @@ }, "license": "Apache-2.0", "releaseDate": "2025-10-30", - "inLibreYOLO": true + "inLibreYOLO": true, + "coverageGroup": "g1" }, { "id": "yolo26n", @@ -2773,6 +2822,323 @@ "license": "Apache-2.0", "releaseDate": "2026-03-19", "inLibreYOLO": true + }, + { + "id": "yolov9e2e-t", + "displayName": "YOLOv9-E2E-T", + "family": "yolov9-e2e", + "variant": "t", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN", + "head": "One-to-one head" + }, + "specs": { + "paramsM": 2.634672, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreYOLO9E2Et" + }, + "license": "MIT", + "releaseDate": "2026-05-01", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7." + }, + { + "id": "yolov9e2e-s", + "displayName": "YOLOv9-E2E-S", + "family": "yolov9-e2e", + "variant": "s", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN", + "head": "One-to-one head" + }, + "specs": { + "paramsM": 8.728064, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreYOLO9E2Es" + }, + "license": "MIT", + "releaseDate": "2026-05-01", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7." + }, + { + "id": "yolov9e2e-m", + "displayName": "YOLOv9-E2E-M", + "family": "yolov9-e2e", + "variant": "m", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN", + "head": "One-to-one head" + }, + "specs": { + "paramsM": 24.726464, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreYOLO9E2Em" + }, + "license": "MIT", + "releaseDate": "2026-05-01", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7." + }, + { + "id": "yolov9e2e-c", + "displayName": "YOLOv9-E2E-C", + "family": "yolov9-e2e", + "variant": "c", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN", + "head": "One-to-one head" + }, + "specs": { + "paramsM": 31.05104, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreYOLO9E2Ec" + }, + "license": "MIT", + "releaseDate": "2026-05-01", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7." + }, + { + "id": "yolov9p2-t", + "displayName": "YOLOv9-P2-T", + "family": "yolov9-p2", + "variant": "t", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN with stride-4 scale", + "head": "Multi-scale detection" + }, + "specs": { + "paramsM": 2.248176, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": {}, + "license": "MIT", + "releaseDate": "2026-07-02", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. No published COCO checkpoint; local COCO-trained weights required. The VisDrone preview is a different dataset and is not a COCO benchmark.", + "checkpointNote": "No public COCO checkpoint. This variant requires locally COCO-trained weights; its VisDrone preview cannot be used for a COCO benchmark." + }, + { + "id": "yolov9p2-s", + "displayName": "YOLOv9-P2-S", + "family": "yolov9-p2", + "variant": "s", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "one-stage", + "backbone": "GELAN", + "neck": "PAN with stride-4 scale", + "head": "Multi-scale detection" + }, + "specs": { + "paramsM": 7.230624, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": {}, + "license": "MIT", + "releaseDate": "2026-07-02", + "inLibreYOLO": true, + "detectionApproach": "anchor-free", + "postprocessing": "nms", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. No published COCO checkpoint; local COCO-trained weights required. The VisDrone preview is a different dataset and is not a COCO benchmark.", + "checkpointNote": "No public COCO checkpoint. This variant requires locally COCO-trained weights; its VisDrone preview cannot be used for a COCO benchmark." + }, + { + "id": "tinyformer-s", + "displayName": "TinyFormer-S", + "family": "tinyformer", + "variant": "s", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "transformer", + "backbone": "DINOv3-derived ViT", + "neck": "PBM", + "head": "DEIMv2 decoder" + }, + "specs": { + "paramsM": 10.955422, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreTinyFormers" + }, + "license": "Apache-2.0 + DINOv3", + "releaseDate": "2026-05-24", + "inLibreYOLO": true, + "detectionApproach": "detr", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. Code is Apache-2.0; checkpoint backbone parameters also carry the DINOv3 license." + }, + { + "id": "tinyformer-m", + "displayName": "TinyFormer-M", + "family": "tinyformer", + "variant": "m", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "transformer", + "backbone": "DINOv3-derived ViT", + "neck": "PBM", + "head": "DEIMv2 decoder" + }, + "specs": { + "paramsM": 20.49999, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreTinyFormerm" + }, + "license": "Apache-2.0 + DINOv3", + "releaseDate": "2026-05-24", + "inLibreYOLO": true, + "detectionApproach": "detr", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. Code is Apache-2.0; checkpoint backbone parameters also carry the DINOv3 license." + }, + { + "id": "tinyformer-l", + "displayName": "TinyFormer-L", + "family": "tinyformer", + "variant": "l", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "transformer", + "backbone": "DINOv3-derived ViT", + "neck": "PBM", + "head": "DEIMv2 decoder" + }, + "specs": { + "paramsM": 33.991022, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreTinyFormerl" + }, + "license": "Apache-2.0 + DINOv3", + "releaseDate": "2026-05-24", + "inLibreYOLO": true, + "detectionApproach": "detr", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. Code is Apache-2.0; checkpoint backbone parameters also carry the DINOv3 license." + }, + { + "id": "tinyformer-x", + "displayName": "TinyFormer-X", + "family": "tinyformer", + "variant": "x", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "transformer", + "backbone": "DINOv3-derived ViT", + "neck": "PBM", + "head": "DEIMv2 decoder" + }, + "specs": { + "paramsM": 52.472408, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreTinyFormerx" + }, + "license": "Apache-2.0 + DINOv3", + "releaseDate": "2026-05-24", + "inLibreYOLO": true, + "detectionApproach": "detr", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. Code is Apache-2.0; checkpoint backbone parameters also carry the DINOv3 license." + }, + { + "id": "tinyformer-xl", + "displayName": "TinyFormer-XL", + "family": "tinyformer", + "variant": "xl", + "task": "detection", + "coverageGroup": "g1", + "architecture": { + "type": "transformer", + "backbone": "DINOv3-derived ViT", + "neck": "PBM", + "head": "DEIMv2 decoder" + }, + "specs": { + "paramsM": 127.111448, + "flopsG": 0, + "inputSizeDefault": 640, + "numClasses": 80 + }, + "source": { + "libreyoloWeightsUrl": "https://huggingface.co/LibreYOLO/LibreTinyFormerxl" + }, + "license": "Apache-2.0 + DINOv3", + "releaseDate": "2026-05-24", + "inLibreYOLO": true, + "detectionApproach": "detr", + "postprocessing": "nms-free", + "notes": "FLOPs not yet recorded. Parameters counted from the native LibreYOLO model at 6a0ccc3a0e579948011d5a55200309c4082e61e7. Code is Apache-2.0; checkpoint backbone parameters also carry the DINOv3 license." } ] -} \ No newline at end of file +} diff --git a/website/src/lib/types/benchmark.ts b/website/src/lib/types/benchmark.ts index adb3b4e..a70fcdd 100644 --- a/website/src/lib/types/benchmark.ts +++ b/website/src/lib/types/benchmark.ts @@ -94,6 +94,8 @@ export interface BenchmarkResult { // Model metadata for model pages and comparison export interface ModelMetadata { + coverageGroup?: "g0" | "g1"; + checkpointNote?: string; id: string; displayName: string; family: string;