Source-classify freeze (GitHub d1aa267)
Browse files- README.md +38 -31
- metrics.json +63 -56
- multi-provider-source-v3.npz +2 -2
README.md
CHANGED
|
@@ -21,61 +21,68 @@ This model is **not a SynthID detector** and does not decode or verify any crypt
|
|
| 21 |
- `768-d` phase-free `16x16` log-power and radial spectral features (`source_spectral`).
|
| 22 |
- `64-d` directional / block-boundary (`8x8` and `16x16`) / chroma-aliasing / azimuthal-anisotropy features (`augment_892d_to_956d`).
|
| 23 |
- **Stage 1 (`43` specialist units across `10` canonical providers):**
|
| 24 |
-
- `10` global provider specialists + `33` subfamily specialists, each combining a 3-seed MLP Soup, a vectorized fixed-depth `HistGradientBoosting` tree ensemble, and a distilled `ExtraTrees -> MLP` student with calibration-reoptimized distilled blend weights (`w_e <= 0.25`), pooled via drift-bounded zero-inflation subfamily blending (`alpha in {0.0, 0.55, 0.70, 0.85, 1.0}`) and routed by a unified damped competitive margin (`gamma = 0.60`).
|
| 25 |
- **Stage 2 (`9` stacked version heads, `999-d`):**
|
| 26 |
- Feature-subsampled vectorized `HistGradientBoosting` tree ensembles taking the `956-d` features (and Stage-1 log-odds scores) to predict the canonical model/export subfamily (`version_subfamily`).
|
| 27 |
- **Artifact:** `multi-provider-source-v3.npz` (`allow_pickle=False`)
|
| 28 |
-
- **SHA-256:** `
|
| 29 |
|
| 30 |
The artifact contains only learned parameters, normalization constants, tree arrays, labels, and calibrated thresholds. It does not contain training images, paths, image hashes, embeddings, or a training catalog.
|
| 31 |
|
| 32 |
-
## Evaluation (`
|
| 33 |
|
| 34 |
-
The operating point was selected on a disjoint `
|
| 35 |
|
| 36 |
-
- **Unified 10-provider router:** `99.
|
| 37 |
|
| 38 |
| Provider | Test count | Standalone ROC AUC | Router recall | Router precision | Stage-2 version accuracy |
|
| 39 |
|---|---:|---:|---:|---:|---:|
|
| 40 |
-
| `openai` | 1,146 | 0.
|
| 41 |
-
| `google` | 1,038 | 0.
|
| 42 |
-
| `bytedance` | 371 | 0.
|
| 43 |
-
| `flux` | 740 | 0.
|
| 44 |
-
| `stable_diffusion` | 397 | 0.
|
| 45 |
-
| `meta` | 94 | 0.
|
| 46 |
-
| `midjourney` | 77 | 0.
|
| 47 |
-
| `ideogram` | 72 | 0.
|
| 48 |
-
| `firefly` | 83 | 0.
|
| 49 |
-
| `xai` | 48 | 0.
|
| 50 |
-
|
| 51 |
-
### Held-out real-image specificity by variety (`
|
| 52 |
|
| 53 |
| Real-image variety | Test count | False positives | False-positive rate | Specificity |
|
| 54 |
|---|---:|---:|---:|---:|
|
| 55 |
-
| `photo` |
|
| 56 |
-
| `photo_retouched` |
|
| 57 |
-
| `
|
| 58 |
-
| `
|
| 59 |
-
| `
|
| 60 |
-
| `
|
| 61 |
-
| `
|
| 62 |
-
| `
|
| 63 |
-
| `
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
| `foreign_ai` | 6 | 0 | 0.00% | 100.00% |
|
| 65 |
|
| 66 |
### External blind multi-variety real-image verification (`selective-v8`, `2,267` untouched images)
|
| 67 |
|
| 68 |
-
Evaluated on the hash-disjoint external `selective-v8` blind real-image cohorts (`2,267` images never seen in train, calibration, or test): **
|
| 69 |
|
| 70 |
| Blind `selective-v8` cell | Evaluated | False positives | False-positive rate | Specificity |
|
| 71 |
|---|---:|---:|---:|---:|
|
| 72 |
-
| `photo` | 450 |
|
| 73 |
| `vector` | 332 | 0 | 0.00% | 100.00% |
|
| 74 |
-
| `game_art` | 230 |
|
| 75 |
-
| `interface` | 342 |
|
| 76 |
| `diagram` | 305 | 0 | 0.00% | 100.00% |
|
| 77 |
| `document` | 308 | 0 | 0.00% | 100.00% |
|
| 78 |
-
| `stress_recompressed` | 300 |
|
| 79 |
|
| 80 |
## Intended use
|
| 81 |
|
|
|
|
| 21 |
- `768-d` phase-free `16x16` log-power and radial spectral features (`source_spectral`).
|
| 22 |
- `64-d` directional / block-boundary (`8x8` and `16x16`) / chroma-aliasing / azimuthal-anisotropy features (`augment_892d_to_956d`).
|
| 23 |
- **Stage 1 (`43` specialist units across `10` canonical providers):**
|
| 24 |
+
- `10` global provider specialists + `33` subfamily specialists, each combining a 3-seed MLP Soup, a vectorized fixed-depth `HistGradientBoosting` tree ensemble, and a distilled `ExtraTrees -> MLP` student with calibration-reoptimized distilled blend weights (`w_e <= 0.25`), pooled via drift-bounded zero-inflation subfamily blending (`alpha in {0.0, 0.55, 0.70, 0.85, 1.0}`) across 16 real-image varieties and routed by a unified damped competitive margin (`gamma = 0.60`).
|
| 25 |
- **Stage 2 (`9` stacked version heads, `999-d`):**
|
| 26 |
- Feature-subsampled vectorized `HistGradientBoosting` tree ensembles taking the `956-d` features (and Stage-1 log-odds scores) to predict the canonical model/export subfamily (`version_subfamily`).
|
| 27 |
- **Artifact:** `multi-provider-source-v3.npz` (`allow_pickle=False`)
|
| 28 |
+
- **SHA-256:** `e5264354edb0109461e3c4988e3267903a8a2a0648b05e81705dee298be97806`
|
| 29 |
|
| 30 |
The artifact contains only learned parameters, normalization constants, tree arrays, labels, and calibrated thresholds. It does not contain training images, paths, image hashes, embeddings, or a training catalog.
|
| 31 |
|
| 32 |
+
## Evaluation (`40,974` clean audited samples; `8,476` locked test)
|
| 33 |
|
| 34 |
+
The operating point was selected on a disjoint `6,708`-image calibration split (`0.19%` calibration `unknown` false-positive rate across 16 fine-grained real-image varieties). On the `8,476`-image locked test split (`4,410` multi-variety `unknown` negatives + `4,066` AI provider images):
|
| 35 |
|
| 36 |
+
- **Unified 10-provider router:** `99.68%` `unknown` specificity (`0.32%` test `unknown` FPR; `0.37%` photographic FPR and `0.27%` non-photographic structured FPR) and `53.30%` aggregate target recall.
|
| 37 |
|
| 38 |
| Provider | Test count | Standalone ROC AUC | Router recall | Router precision | Stage-2 version accuracy |
|
| 39 |
|---|---:|---:|---:|---:|---:|
|
| 40 |
+
| `openai` | 1,146 | 0.9807 | 65.0% | 96.6% | 86.8% |
|
| 41 |
+
| `google` | 1,038 | 0.9804 | 56.1% | 97.5% | 94.8% |
|
| 42 |
+
| `bytedance` | 371 | 0.9456 | 48.2% | 98.9% | 87.9% |
|
| 43 |
+
| `flux` | 740 | 0.9604 | 41.2% | 97.8% | 92.8% |
|
| 44 |
+
| `stable_diffusion` | 397 | 0.9803 | 48.1% | 96.0% | 85.4% |
|
| 45 |
+
| `meta` | 94 | 0.9690 | 77.7% | 94.8% | — (`meta:imagine`) |
|
| 46 |
+
| `midjourney` | 77 | 0.9742 | 54.5% | 84.0% | 96.1% |
|
| 47 |
+
| `ideogram` | 72 | 0.9825 | 34.7% | 78.1% | 59.7% |
|
| 48 |
+
| `firefly` | 83 | 0.8993 | 21.7% | 85.7% | 100.0% |
|
| 49 |
+
| `xai` | 48 | 0.9291 | 14.6% | 77.8% | 64.6% |
|
| 50 |
+
|
| 51 |
+
### Held-out real-image specificity by variety (`4,410` test negatives across 16 real classes + foreign AI)
|
| 52 |
|
| 53 |
| Real-image variety | Test count | False positives | False-positive rate | Specificity |
|
| 54 |
|---|---:|---:|---:|---:|
|
| 55 |
+
| `photo` | 2,183 | 8 | 0.37% | 99.63% |
|
| 56 |
+
| `photo_retouched` | 321 | 1 | 0.31% | 99.69% |
|
| 57 |
+
| `classical_inpaint` | 17 | 0 | 0.00% | 100.00% |
|
| 58 |
+
| `digital_art` | 441 | 1 | 0.23% | 99.77% |
|
| 59 |
+
| `game_art` | 131 | 1 | 0.76% | 99.24% |
|
| 60 |
+
| `vector` | 135 | 0 | 0.00% | 100.00% |
|
| 61 |
+
| `interface` | 171 | 1 | 0.58% | 99.42% |
|
| 62 |
+
| `diagram` | 98 | 1 | 1.02% | 98.98% |
|
| 63 |
+
| `chart_data_viz` | 159 | 0 | 0.00% | 100.00% |
|
| 64 |
+
| `technical_architecture` | 84 | 0 | 0.00% | 100.00% |
|
| 65 |
+
| `procedural_graphic` | 13 | 0 | 0.00% | 100.00% |
|
| 66 |
+
| `document` | 165 | 0 | 0.00% | 100.00% |
|
| 67 |
+
| `gov_scientific_doc` | 32 | 0 | 0.00% | 100.00% |
|
| 68 |
+
| `receipt_invoice` | 122 | 0 | 0.00% | 100.00% |
|
| 69 |
+
| `print_publishing` | 229 | 0 | 0.00% | 100.00% |
|
| 70 |
+
| `stress_recompressed` | 103 | 1 | 0.97% | 99.03% |
|
| 71 |
| `foreign_ai` | 6 | 0 | 0.00% | 100.00% |
|
| 72 |
|
| 73 |
### External blind multi-variety real-image verification (`selective-v8`, `2,267` untouched images)
|
| 74 |
|
| 75 |
+
Evaluated on the hash-disjoint external `selective-v8` blind real-image cohorts (`2,267` images never seen in train, calibration, or test): **8 / 2,267 false positives (`0.35%` overall FPR, `99.65%` specificity)**.
|
| 76 |
|
| 77 |
| Blind `selective-v8` cell | Evaluated | False positives | False-positive rate | Specificity |
|
| 78 |
|---|---:|---:|---:|---:|
|
| 79 |
+
| `photo` | 450 | 3 | 0.67% | 99.33% |
|
| 80 |
| `vector` | 332 | 0 | 0.00% | 100.00% |
|
| 81 |
+
| `game_art` | 230 | 4 | 1.74% | 98.26% |
|
| 82 |
+
| `interface` | 342 | 0 | 0.00% | 100.00% |
|
| 83 |
| `diagram` | 305 | 0 | 0.00% | 100.00% |
|
| 84 |
| `document` | 308 | 0 | 0.00% | 100.00% |
|
| 85 |
+
| `stress_recompressed` | 300 | 1 | 0.33% | 99.67% |
|
| 86 |
|
| 87 |
## Intended use
|
| 88 |
|
metrics.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
"claim": "abstaining 10-provider source-pipeline classification with version subfamily attribution; not SynthID detection",
|
| 3 |
"schema": "multi-provider-source-v3",
|
| 4 |
"artifact_file": "multi-provider-source-v3.npz",
|
| 5 |
-
"artifact_sha256": "
|
| 6 |
"feature_dimension": 956,
|
| 7 |
"stacked_stage2_dimension": 999,
|
| 8 |
"classes": [
|
|
@@ -19,66 +19,73 @@
|
|
| 19 |
"unknown"
|
| 20 |
],
|
| 21 |
"corpus_counts": {
|
| 22 |
-
"total":
|
| 23 |
-
"train":
|
| 24 |
-
"calibration":
|
| 25 |
-
"test":
|
| 26 |
},
|
| 27 |
"locked_internal_test": {
|
| 28 |
-
"n":
|
| 29 |
-
"unknown_specificity": 0.
|
| 30 |
-
"unknown_fpr": 0.
|
| 31 |
-
"photo_fpr": 0.
|
| 32 |
-
"structured_fpr": 0.
|
| 33 |
-
"aggregate_target_recall": 0.
|
| 34 |
"recall": {
|
| 35 |
-
"openai": 0.
|
| 36 |
-
"google": 0.
|
| 37 |
-
"bytedance": 0.
|
| 38 |
-
"flux": 0.
|
| 39 |
-
"stable_diffusion": 0.
|
| 40 |
"meta": 0.776595744680851,
|
| 41 |
-
"midjourney": 0.
|
| 42 |
-
"ideogram": 0.
|
| 43 |
-
"firefly": 0.
|
| 44 |
-
"xai": 0.
|
| 45 |
},
|
| 46 |
"precision": {
|
| 47 |
-
"openai": 0.
|
| 48 |
-
"google": 0.
|
| 49 |
-
"bytedance": 0.
|
| 50 |
-
"flux": 0.
|
| 51 |
-
"stable_diffusion": 0.
|
| 52 |
-
"meta": 0.
|
| 53 |
-
"midjourney": 0.
|
| 54 |
-
"ideogram": 0.
|
| 55 |
-
"firefly": 0.
|
| 56 |
-
"xai": 0.
|
| 57 |
},
|
| 58 |
"real_variety_specificity": {
|
| 59 |
-
"photo": 0.
|
| 60 |
-
"photo_retouched": 0.
|
| 61 |
-
"
|
| 62 |
-
"
|
| 63 |
-
"
|
| 64 |
-
"
|
| 65 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
"document": 1.0,
|
| 67 |
-
"
|
|
|
|
|
|
|
|
|
|
| 68 |
"foreign_ai": 1.0
|
| 69 |
}
|
| 70 |
},
|
| 71 |
"external_blind_selective_v8_real_varieties": {
|
| 72 |
"total_evaluated": 2267,
|
| 73 |
-
"total_false_positives":
|
| 74 |
-
"overall_fpr": 0.
|
| 75 |
-
"overall_specificity": 0.
|
| 76 |
"per_variety": {
|
| 77 |
"photo": {
|
| 78 |
"evaluated": 450,
|
| 79 |
-
"false_positives":
|
| 80 |
-
"fpr": 0.
|
| 81 |
-
"specificity": 0.
|
| 82 |
},
|
| 83 |
"vector": {
|
| 84 |
"evaluated": 332,
|
|
@@ -88,15 +95,15 @@
|
|
| 88 |
},
|
| 89 |
"game_art": {
|
| 90 |
"evaluated": 230,
|
| 91 |
-
"false_positives":
|
| 92 |
-
"fpr": 0.
|
| 93 |
-
"specificity": 0.
|
| 94 |
},
|
| 95 |
"interface": {
|
| 96 |
"evaluated": 342,
|
| 97 |
-
"false_positives":
|
| 98 |
-
"fpr": 0.
|
| 99 |
-
"specificity":
|
| 100 |
},
|
| 101 |
"diagram": {
|
| 102 |
"evaluated": 305,
|
|
@@ -112,21 +119,21 @@
|
|
| 112 |
},
|
| 113 |
"stress_recompressed": {
|
| 114 |
"evaluated": 300,
|
| 115 |
-
"false_positives":
|
| 116 |
-
"fpr": 0.
|
| 117 |
-
"specificity": 0.
|
| 118 |
}
|
| 119 |
}
|
| 120 |
},
|
| 121 |
"stage2_version_accuracy": {
|
| 122 |
"openai": 0.868237347294939,
|
| 123 |
"google": 0.9479768786127167,
|
| 124 |
-
"bytedance": 0.
|
| 125 |
"flux": 0.9283783783783784,
|
| 126 |
"stable_diffusion": 0.853904282115869,
|
| 127 |
"midjourney": 0.961038961038961,
|
| 128 |
-
"ideogram": 0.
|
| 129 |
"firefly": 1.0,
|
| 130 |
-
"xai": 0.
|
| 131 |
}
|
| 132 |
}
|
|
|
|
| 2 |
"claim": "abstaining 10-provider source-pipeline classification with version subfamily attribution; not SynthID detection",
|
| 3 |
"schema": "multi-provider-source-v3",
|
| 4 |
"artifact_file": "multi-provider-source-v3.npz",
|
| 5 |
+
"artifact_sha256": "e5264354edb0109461e3c4988e3267903a8a2a0648b05e81705dee298be97806",
|
| 6 |
"feature_dimension": 956,
|
| 7 |
"stacked_stage2_dimension": 999,
|
| 8 |
"classes": [
|
|
|
|
| 19 |
"unknown"
|
| 20 |
],
|
| 21 |
"corpus_counts": {
|
| 22 |
+
"total": 40974,
|
| 23 |
+
"train": 25790,
|
| 24 |
+
"calibration": 6708,
|
| 25 |
+
"test": 8476
|
| 26 |
},
|
| 27 |
"locked_internal_test": {
|
| 28 |
+
"n": 8476,
|
| 29 |
+
"unknown_specificity": 0.9968253968253968,
|
| 30 |
+
"unknown_fpr": 0.0031746031746031746,
|
| 31 |
+
"photo_fpr": 0.0036646816307833257,
|
| 32 |
+
"structured_fpr": 0.0027014858171994597,
|
| 33 |
+
"aggregate_target_recall": 0.5329562223315298,
|
| 34 |
"recall": {
|
| 35 |
+
"openai": 0.650087260034904,
|
| 36 |
+
"google": 0.5606936416184971,
|
| 37 |
+
"bytedance": 0.48247978436657685,
|
| 38 |
+
"flux": 0.41216216216216217,
|
| 39 |
+
"stable_diffusion": 0.4811083123425693,
|
| 40 |
"meta": 0.776595744680851,
|
| 41 |
+
"midjourney": 0.5454545454545454,
|
| 42 |
+
"ideogram": 0.3472222222222222,
|
| 43 |
+
"firefly": 0.21686746987951808,
|
| 44 |
+
"xai": 0.14583333333333334
|
| 45 |
},
|
| 46 |
"precision": {
|
| 47 |
+
"openai": 0.9662775616083009,
|
| 48 |
+
"google": 0.9748743718592965,
|
| 49 |
+
"bytedance": 0.988950276243094,
|
| 50 |
+
"flux": 0.9775641025641025,
|
| 51 |
+
"stable_diffusion": 0.9597989949748744,
|
| 52 |
+
"meta": 0.948051948051948,
|
| 53 |
+
"midjourney": 0.84,
|
| 54 |
+
"ideogram": 0.78125,
|
| 55 |
+
"firefly": 0.8571428571428571,
|
| 56 |
+
"xai": 0.7777777777777778
|
| 57 |
},
|
| 58 |
"real_variety_specificity": {
|
| 59 |
+
"photo": 0.9963353183692167,
|
| 60 |
+
"photo_retouched": 0.9968847352024922,
|
| 61 |
+
"classical_inpaint": 1.0,
|
| 62 |
+
"digital_art": 0.9977324263038548,
|
| 63 |
+
"game_art": 0.9923664122137404,
|
| 64 |
+
"vector": 1.0,
|
| 65 |
+
"interface": 0.9941520467836257,
|
| 66 |
+
"diagram": 0.9897959183673469,
|
| 67 |
+
"chart_data_viz": 1.0,
|
| 68 |
+
"technical_architecture": 1.0,
|
| 69 |
+
"procedural_graphic": 1.0,
|
| 70 |
"document": 1.0,
|
| 71 |
+
"gov_scientific_doc": 1.0,
|
| 72 |
+
"receipt_invoice": 1.0,
|
| 73 |
+
"print_publishing": 1.0,
|
| 74 |
+
"stress_recompressed": 0.9902912621359223,
|
| 75 |
"foreign_ai": 1.0
|
| 76 |
}
|
| 77 |
},
|
| 78 |
"external_blind_selective_v8_real_varieties": {
|
| 79 |
"total_evaluated": 2267,
|
| 80 |
+
"total_false_positives": 8,
|
| 81 |
+
"overall_fpr": 0.0035288928098808998,
|
| 82 |
+
"overall_specificity": 0.9964711071901191,
|
| 83 |
"per_variety": {
|
| 84 |
"photo": {
|
| 85 |
"evaluated": 450,
|
| 86 |
+
"false_positives": 3,
|
| 87 |
+
"fpr": 0.006666666666666667,
|
| 88 |
+
"specificity": 0.9933333333333333
|
| 89 |
},
|
| 90 |
"vector": {
|
| 91 |
"evaluated": 332,
|
|
|
|
| 95 |
},
|
| 96 |
"game_art": {
|
| 97 |
"evaluated": 230,
|
| 98 |
+
"false_positives": 4,
|
| 99 |
+
"fpr": 0.017391304347826087,
|
| 100 |
+
"specificity": 0.9826086956521739
|
| 101 |
},
|
| 102 |
"interface": {
|
| 103 |
"evaluated": 342,
|
| 104 |
+
"false_positives": 0,
|
| 105 |
+
"fpr": 0.0,
|
| 106 |
+
"specificity": 1.0
|
| 107 |
},
|
| 108 |
"diagram": {
|
| 109 |
"evaluated": 305,
|
|
|
|
| 119 |
},
|
| 120 |
"stress_recompressed": {
|
| 121 |
"evaluated": 300,
|
| 122 |
+
"false_positives": 1,
|
| 123 |
+
"fpr": 0.0033333333333333335,
|
| 124 |
+
"specificity": 0.9966666666666667
|
| 125 |
}
|
| 126 |
}
|
| 127 |
},
|
| 128 |
"stage2_version_accuracy": {
|
| 129 |
"openai": 0.868237347294939,
|
| 130 |
"google": 0.9479768786127167,
|
| 131 |
+
"bytedance": 0.8787061994609164,
|
| 132 |
"flux": 0.9283783783783784,
|
| 133 |
"stable_diffusion": 0.853904282115869,
|
| 134 |
"midjourney": 0.961038961038961,
|
| 135 |
+
"ideogram": 0.5972222222222222,
|
| 136 |
"firefly": 1.0,
|
| 137 |
+
"xai": 0.6458333333333334
|
| 138 |
}
|
| 139 |
}
|
multi-provider-source-v3.npz
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e5264354edb0109461e3c4988e3267903a8a2a0648b05e81705dee298be97806
|
| 3 |
+
size 174205582
|