File size: 3,322 Bytes
9d1f29a
 
 
 
 
 
7d0ad0f
 
9d1f29a
7d0ad0f
9d1f29a
 
7d0ad0f
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
 
 
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
 
 
 
 
 
 
 
 
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
 
 
9d1f29a
7d0ad0f
 
 
 
 
 
 
 
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
9d1f29a
7d0ad0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
---
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.