| --- |
| license: other |
| library_name: pytorch |
| pipeline_tag: image-feature-extraction |
| tags: |
| - fingerprint |
| - biometric-matching |
| - fastvit |
| - onnx |
| - qualcomm-ai-hub |
| --- |
| |
| # MDGT Matching - FastVIT Cross-Sensor Checkpoint |
|
|
| This repository currently points to the FastVIT cross-sensor branch, not the older MDGT/NIST300A checkpoint. |
|
|
| Primary checkpoint: |
|
|
| ```text |
| checkpoints_fastvit_cross_sensor_sa12_round5_consistency_light/best_rank1.pt |
| ``` |
|
|
| ## Model |
|
|
| - Architecture: `FastVITGraph` |
| - Backbone: `fastvit_sa12.apple_in1k` |
| - Feature index: `1` |
| - Token selection: TRAM |
| - Token count: `64` |
| - GNN: 2 layers, dim 256, 4 heads, k=8 |
| - Embedding dim: `256` |
| - Input: preprocessed grayscale tensor `(B, 1, 224, 224)` |
| - Preprocess used for export/eval: squeeze resize, CLAHE on, Gabor off |
|
|
| ## Metrics |
|
|
| These metrics are from the checkpoint metadata for the full NIST302 cross-sensor 1:N protocol: |
|
|
| - Probe: NIST302A challengers, 13,630 probes |
| - Reference: NIST302B baseline, 8,000 gallery images |
| - Identities: 2,000 |
|
|
| | Metric | Value | |
| |---|---:| |
| | Rank-1 | 0.8133528829 | |
| | Rank-5 | 0.9174614549 | |
| | Rank-10 | 0.9479089975 | |
| | mAP | 0.7901349983 | |
| | AUC | 0.9983431867 | |
| | EER | 0.0178200894 | |
|
|
| The earlier low `Rank-1: 0.390625` result belonged to an MDGT/NIST300A QAI smoke benchmark on a 64-identity spread subset. It is not the metric for this FastVIT checkpoint. |
|
|
| ## Files |
|
|
| ```text |
| pytorch/fastvit_cross_sensor_sa12_round5_consistency_light_best_rank1.pt |
| onnx/fastvit_cross_sensor_embedding_fp32.onnx |
| onnx/fastvit_cross_sensor_embedding_fp16.onnx |
| onnx/fastvit_cross_sensor_embedding_int8_linear_qdq.onnx |
| onnx/export_summary.json |
| qai/fastvit_cross_sensor_qai_target_model.dlc |
| qai/qai_qnn_context_binary_summary.json |
| qai/qai_qnn_dlc_summary.json |
| qai/qai_qnn_lib_attempt_summary.json |
| results/checkpoint_metrics.json |
| training/history.jsonl |
| artifact_metadata.json |
| ``` |
|
|
| ## ONNX Export |
|
|
| The ONNX export uses an export-safe FastVITGraph wrapper with vectorized deterministic token deduplication. |
|
|
| Observed local drift on 16 samples: |
|
|
| | Comparison | Cos mean | Cos min | |
| |---|---:|---:| |
| | Original PyTorch vs exportable PyTorch | 1.0000000000 | 0.9999999404 | |
| | Exportable PyTorch vs ONNX FP32 | 0.9999986887 | 0.9999958277 | |
| | ONNX FP16 vs ONNX FP32 | 0.9990564585 | 0.9972373843 | |
| | ONNX INT8 linear QDQ vs ONNX FP32 | 0.9941318631 | 0.9882222414 | |
|
|
| ## Qualcomm AI Hub |
|
|
| QAI test was rerun on the FastVIT ONNX, not on MDGT. |
|
|
| - `qnn_context_binary`: compile failed with exit code 14. |
| - `qnn_lib_aarch64_android`: unsupported by the installed QAI Hub client. |
| - `qnn_dlc`: compile succeeded, target DLC was produced. |
| - NPU profile/inference for the DLC failed with `MODEL_GRAPH_ERROR` from `QnnModel_composeGraphsFromDlc`. |
|
|
| Jobs: |
|
|
| ```text |
| qnn_context_binary compile: https://workbench.aihub.qualcomm.com/jobs/jgjwl2v75/ |
| qnn_dlc compile: https://workbench.aihub.qualcomm.com/jobs/jgdzvqxk5/ |
| qnn_dlc profile: https://workbench.aihub.qualcomm.com/jobs/jp847m2z5/ |
| qnn_dlc inference: https://workbench.aihub.qualcomm.com/jobs/jgz47j2zp/ |
| ``` |
|
|
| This means the current full FastVITGraph ONNX can be exported and compiled to DLC, but the graph is not yet deployable as a working NPU profile/inference artifact on QAI Hub. The likely next step is to simplify or split the dynamic token/GNN section for NPU compatibility. |
|
|