wiltodelta commited on
Commit
24a0326
·
verified ·
1 Parent(s): 59b8cca

Source-classify freeze (GitHub d1aa267)

Browse files
Files changed (3) hide show
  1. README.md +38 -31
  2. metrics.json +63 -56
  3. 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:** `5c271b0ba7d7ae6b3965de18cade40c867a6bcc31f6848422111667aa2deba53`
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 (`36,761` clean audited samples; `7,395` locked test)
33
 
34
- The operating point was selected on a disjoint `5,591`-image calibration split (`0.83%` calibration `unknown` false-positive rate across 9 real-image varieties). On the `7,395`-image locked test split (`3,329` multi-variety `unknown` negatives + `4,066` AI provider images):
35
 
36
- - **Unified 10-provider router:** `99.01%` `unknown` specificity (`0.99%` test `unknown` FPR; `1.20%` photographic FPR and `0.74%` non-photographic structured FPR) and `61.68%` 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.9803 | 70.9% | 96.1% | 86.8% |
41
- | `google` | 1,038 | 0.9786 | 70.3% | 96.1% | 94.8% |
42
- | `bytedance` | 371 | 0.9451 | 59.3% | 96.9% | 89.2% |
43
- | `flux` | 740 | 0.9558 | 47.2% | 96.1% | 92.8% |
44
- | `stable_diffusion` | 397 | 0.9780 | 53.9% | 93.0% | 85.4% |
45
- | `meta` | 94 | 0.9667 | 77.7% | 91.3% | — (`meta:imagine`) |
46
- | `midjourney` | 77 | 0.9675 | 64.9% | 64.9% | 96.1% |
47
- | `ideogram` | 72 | 0.9817 | 33.3% | 92.3% | 58.3% |
48
- | `firefly` | 83 | 0.8968 | 30.1% | 86.2% | 100.0% |
49
- | `xai` | 48 | 0.9244 | 22.9% | 78.6% | 68.8% |
50
-
51
- ### Held-out real-image specificity by variety (`3,329` test negatives)
52
 
53
  | Real-image variety | Test count | False positives | False-positive rate | Specificity |
54
  |---|---:|---:|---:|---:|
55
- | `photo` | 1,839 | 22 | 1.20% | 98.80% |
56
- | `photo_retouched` | 194 | 1 | 0.52% | 99.48% |
57
- | `vector` | 67 | 1 | 1.49% | 98.51% |
58
- | `game_art` | 111 | 2 | 1.80% | 98.20% |
59
- | `digital_art` | 469 | 1 | 0.21% | 99.79% |
60
- | `interface` | 79 | 0 | 0.00% | 100.00% |
61
- | `diagram` | 231 | 2 | 0.87% | 99.13% |
62
- | `document` | 230 | 0 | 0.00% | 100.00% |
63
- | `stress_recompressed` | 103 | 4 | 3.88% | 96.12% |
 
 
 
 
 
 
 
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): **14 / 2,267 false positives (`0.62%` overall FPR, `99.38%` specificity)**.
69
 
70
  | Blind `selective-v8` cell | Evaluated | False positives | False-positive rate | Specificity |
71
  |---|---:|---:|---:|---:|
72
- | `photo` | 450 | 4 | 0.89% | 99.11% |
73
  | `vector` | 332 | 0 | 0.00% | 100.00% |
74
- | `game_art` | 230 | 6 | 2.61% | 97.39% |
75
- | `interface` | 342 | 2 | 0.58% | 99.42% |
76
  | `diagram` | 305 | 0 | 0.00% | 100.00% |
77
  | `document` | 308 | 0 | 0.00% | 100.00% |
78
- | `stress_recompressed` | 300 | 2 | 0.67% | 99.33% |
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": "5c271b0ba7d7ae6b3965de18cade40c867a6bcc31f6848422111667aa2deba53",
6
  "feature_dimension": 956,
7
  "stacked_stage2_dimension": 999,
8
  "classes": [
@@ -19,66 +19,73 @@
19
  "unknown"
20
  ],
21
  "corpus_counts": {
22
- "total": 36761,
23
- "train": 23775,
24
- "calibration": 5591,
25
- "test": 7395
26
  },
27
  "locked_internal_test": {
28
- "n": 7395,
29
- "unknown_specificity": 0.9900871132472214,
30
- "unknown_fpr": 0.009912886752778612,
31
- "photo_fpr": 0.011963023382272974,
32
- "structured_fpr": 0.007412398921832884,
33
- "aggregate_target_recall": 0.616822429906542,
34
  "recall": {
35
- "openai": 0.7085514834205934,
36
- "google": 0.7032755298651252,
37
- "bytedance": 0.5929919137466307,
38
- "flux": 0.47162162162162163,
39
- "stable_diffusion": 0.5390428211586902,
40
  "meta": 0.776595744680851,
41
- "midjourney": 0.6493506493506493,
42
- "ideogram": 0.3333333333333333,
43
- "firefly": 0.30120481927710846,
44
- "xai": 0.22916666666666666
45
  },
46
  "precision": {
47
- "openai": 0.9609467455621302,
48
- "google": 0.9605263157894737,
49
- "bytedance": 0.9691629955947136,
50
- "flux": 0.9614325068870524,
51
- "stable_diffusion": 0.9304347826086956,
52
- "meta": 0.9125,
53
- "midjourney": 0.6493506493506493,
54
- "ideogram": 0.9230769230769231,
55
- "firefly": 0.8620689655172413,
56
- "xai": 0.7857142857142857
57
  },
58
  "real_variety_specificity": {
59
- "photo": 0.988036976617727,
60
- "photo_retouched": 0.9948453608247423,
61
- "vector": 0.9850746268656716,
62
- "game_art": 0.9819819819819819,
63
- "digital_art": 0.997867803837953,
64
- "interface": 1.0,
65
- "diagram": 0.9913419913419913,
 
 
 
 
66
  "document": 1.0,
67
- "stress_recompressed": 0.9611650485436893,
 
 
 
68
  "foreign_ai": 1.0
69
  }
70
  },
71
  "external_blind_selective_v8_real_varieties": {
72
  "total_evaluated": 2267,
73
- "total_false_positives": 14,
74
- "overall_fpr": 0.006175562417291575,
75
- "overall_specificity": 0.9938244375827084,
76
  "per_variety": {
77
  "photo": {
78
  "evaluated": 450,
79
- "false_positives": 4,
80
- "fpr": 0.008888888888888889,
81
- "specificity": 0.9911111111111112
82
  },
83
  "vector": {
84
  "evaluated": 332,
@@ -88,15 +95,15 @@
88
  },
89
  "game_art": {
90
  "evaluated": 230,
91
- "false_positives": 6,
92
- "fpr": 0.02608695652173913,
93
- "specificity": 0.9739130434782609
94
  },
95
  "interface": {
96
  "evaluated": 342,
97
- "false_positives": 2,
98
- "fpr": 0.005847953216374269,
99
- "specificity": 0.9941520467836257
100
  },
101
  "diagram": {
102
  "evaluated": 305,
@@ -112,21 +119,21 @@
112
  },
113
  "stress_recompressed": {
114
  "evaluated": 300,
115
- "false_positives": 2,
116
- "fpr": 0.006666666666666667,
117
- "specificity": 0.9933333333333333
118
  }
119
  }
120
  },
121
  "stage2_version_accuracy": {
122
  "openai": 0.868237347294939,
123
  "google": 0.9479768786127167,
124
- "bytedance": 0.8921832884097035,
125
  "flux": 0.9283783783783784,
126
  "stable_diffusion": 0.853904282115869,
127
  "midjourney": 0.961038961038961,
128
- "ideogram": 0.5833333333333334,
129
  "firefly": 1.0,
130
- "xai": 0.6875
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:5c271b0ba7d7ae6b3965de18cade40c867a6bcc31f6848422111667aa2deba53
3
- size 174207178
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5264354edb0109461e3c4988e3267903a8a2a0648b05e81705dee298be97806
3
+ size 174205582