| --- |
| library_name: onnx |
| license: other |
| license_name: mixed-upstream-model-licenses |
| license_link: https://huggingface.co/ketiswp/ONNX_Models/blob/main/LICENSES.md |
| tags: |
| - onnx |
| - onnxruntime |
| - onnx-mlir |
| - quantization |
| - fp32 |
| --- |
| |
| # FP32 and Quantized Model ONNX/ONNX-MLIR Validation |
|
|
| This repository contains paired public FP32 and public quantized models and reproduces the following tasks. |
|
|
| 1. Identify and collect paired public FP32 and quantized models. |
| 2. Convert or prepare each model pair in ONNX format. |
| 3. Validate the ONNX models with ONNX Runtime and compare their outputs with the source-model outputs. |
| 4. Compare the task-level accuracy of the FP32 and quantized variants using the same evaluation dataset and protocol for each pair. |
| 5. Generate Netron PNG images of the FP32 and quantized ONNX graphs. |
| 6. Import the ONNX models into the ONNX-MLIR ONNX Dialect and lower them further where supported. |
| 7. Generate MLIR graphs based on static operation order and SSA dependencies. |
|
|
| ## Models |
|
|
| A total of 21 FP32/quantized model pairs are included. |
|
|
| | Task | Number of models | |
| |---|---:| |
| | Vision classification | 10 | |
| | Keyword spotting | 4 | |
| | Semantic segmentation | 3 | |
| | Object detection | 2 | |
| | Anomaly detection | 1 | |
| | Language model | 1 | |
|
|
| Model names, public URLs, licenses, and original-file SHA-256 checksums are listed in [`model_registry.csv`](model_registry.csv). |
|
|
| ## Accuracy Summary |
|
|
| The delta is `quantized - FP32`. Higher values are better except for SP02 (FP/FN) and VC13 (error), where lower values are better. |
|
|
| | Model | Metric | FP32 | Quantized | Delta | |
| |---|---|---:|---:|---:| |
| | AD01 | AUC / pAUC (max_fpr=0.1) | 0.876001 / 0.764121 | 0.840250 / 0.720049 | -0.035750 / -0.044071 | |
| | LM04 | AUROC / TPR@FPR 5% / 1% | 0.667078 / 0.318983 / 0.233873 | 0.668862 / 0.322615 / 0.235853 | +0.001785 / +0.003632 / +0.001981 | |
| | OD06 | COCO bbox mAP | 24.8751% | 24.2822% | -0.5929 pp | |
| | OD07 | COCO bbox mAP | 31.8594% | 31.4191% | -0.4403 pp | |
| | SG06 | mIoU | 75.6398% | 74.1290% | -1.5108 pp | |
| | SG07 | mIoU | 70.6473% | 69.6191% | -1.0282 pp | |
| | SG08 | mIoU (CamVid cross-dataset) | 50.6498% | 51.1600% | +0.5102 pp | |
| | SP01 | Top-1 accuracy | 91.86% | 91.66% | -0.2045 pp | |
| | SP02 | FP / FN (1 s) | 5 / 6 | 4 / 6 | -1 / +0 | |
| | SP08 | Top-1 accuracy (yes/no subset) | 94.05% | 94.05% | +0.0000 pp | |
| | SP09 | Top-1 accuracy | 95.06% | 94.70% | -0.3590 pp | |
| | VC01 | Top-1 accuracy | 85.10% | 85.60% | +0.5000 pp | |
| | VC02 | Top-1 accuracy | 87.00% | 87.00% | +0.0000 pp | |
| | VC03 | Top-1 / Top-5 accuracy | 49.80% / 74.20% | 48.00% / 72.80% | -1.8000 / -1.4000 pp | |
| | VC04 | Top-1 / Top-5 accuracy | 63.30% / 84.90% | 60.70% / 83.20% | -2.6000 / -1.7000 pp | |
| | VC05 | Top-1 accuracy | 58.13% | 56.77% | -1.3600 pp | |
| | VC06 | Top-1 accuracy | 66.20% | 65.31% | -0.8900 pp | |
| | VC09 | Top-1 / Top-5 accuracy | 56.85% / 79.87% | 56.48% / 79.76% | -0.3700 / -0.1100 pp | |
| | VC11 | Top-1 accuracy | 75.10% | 74.40% | -0.7000 pp | |
| | VC12 | Top-1 / Top-5 accuracy | 69.48% / 89.26% | 68.30% / 88.44% | -1.1800 / -0.8200 pp | |
| | VC13 | Top-1 / Top-5 error | 33.65% / 13.43% | 33.85% / 13.66% | +0.2000 / +0.2300 pp | |
| |
| Full model names and published-result comparisons are available in [`reports/accuracy/model_accuracy.csv`](reports/accuracy/model_accuracy.csv). |
| |
| ## Results |
| |
| | Result | File | |
| |---|---| |
| | FP32/quantized accuracy | [`reports/accuracy/model_accuracy.csv`](reports/accuracy/model_accuracy.csv) | |
| | conversion status | [`reports/conversion/pipeline_status.csv`](reports/conversion/pipeline_status.csv) | |
| | MLIR stage coverage | [`reports/conversion/ir_stage_coverage.csv`](reports/conversion/ir_stage_coverage.csv) | |
| | Netron ONNX graphs | [`reports/graphs/netron/README.md`](reports/graphs/netron/README.md) | |
| | ONNX Dialect static-order graphs | [`reports/graphs/mlir/README.md`](reports/graphs/mlir/README.md) | |
| |
| ## Directories |
| |
| ```text |
| configs/ Model conversion, MLIR conversion, and accuracy evaluation configurations |
| environment/ Python, Netron, and ONNX-MLIR versions and installation scripts |
| models/ Per-model conversion outputs |
| reports/ Accuracy, conversion status, Netron, and IR graph results |
| research/ Public original models and source materials |
| scripts/ Conversion, evaluation, graph generation, and validation code |
| schemas/ Configuration and execution-result formats |
| tests/ Tests for reproducibility code |
| ``` |
| |
| ## Reproduction |
| |
| ```bash |
| git lfs install |
| git lfs pull |
| make setup |
| make validate |
| make convert |
| make accuracy |
| make netron |
| make mlir |
| make mlir-graphs |
| make test |
| ``` |
| |
| `make mlir-graphs` updates `reports/conversion/ir_stage_coverage.csv` using the checksums of the current MLIR results in `models/`, and then generates the graphs. |
| |
| Individual scripts are documented in [`scripts/README.md`](scripts/README.md), configuration files in [`configs/README.md`](configs/README.md), and result files in [`reports/README.md`](reports/README.md). |
| |