Upload agents/statistical_agent.py with huggingface_hub
Browse files
agents/statistical_agent.py
CHANGED
|
@@ -20,7 +20,11 @@ def t01_dct_kurtosis(img):
|
|
| 20 |
c=np.array(coeffs); c=c[c!=0]
|
| 21 |
if len(c)<100: return {"test":"DCT Kurtosis","score":0.0,"note":"Insufficient data"}
|
| 22 |
k=float(sp_kurt(c,fisher=True))
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
elif k<2.0: s,n=0.5,f"Gaussian DCT (κ={k:.2f})"
|
| 25 |
elif k<3.5: s,n=0.2,f"Borderline (κ={k:.2f})"
|
| 26 |
else: s,n=-0.1,f"Near-natural (κ={k:.2f})"
|
|
@@ -88,7 +92,9 @@ def t06_wavelet_kurtosis(img):
|
|
| 88 |
hf=np.concatenate([lh.ravel(),hl.ravel(),hh.ravel()]); hf=hf[hf!=0]
|
| 89 |
if len(hf)<100: return {"test":"Wavelet Kurtosis","score":0.0,"note":"Insufficient"}
|
| 90 |
k=float(sp_kurt(hf,fisher=True))
|
| 91 |
-
|
|
|
|
|
|
|
| 92 |
elif k<1.5: s,n=0.4,f"Gaussian wavelets (κ={k:.2f})"
|
| 93 |
else: s,n=0.0,f"Wavelet κ={k:.2f}"
|
| 94 |
return {"test":"Wavelet Kurtosis","kurtosis":round(k,4),"score":s,"note":n}
|
|
|
|
| 20 |
c=np.array(coeffs); c=c[c!=0]
|
| 21 |
if len(c)<100: return {"test":"DCT Kurtosis","score":0.0,"note":"Insufficient data"}
|
| 22 |
k=float(sp_kurt(c,fisher=True))
|
| 23 |
+
# Natural photos: kurtosis 5-350. AI over-sharpening: >400.
|
| 24 |
+
# Too-low kurtosis (<2) = Gaussian = old GAN artifacts.
|
| 25 |
+
# Too-high kurtosis (>400) = pathological sharpness = modern AI.
|
| 26 |
+
if k>400: s,n=0.3,f"Pathologically high DCT kurtosis (κ={k:.0f}) — AI over-sharpening"
|
| 27 |
+
elif k>4.5: s,n=-0.4,f"Laplacian DCT (κ={k:.2f})"
|
| 28 |
elif k<2.0: s,n=0.5,f"Gaussian DCT (κ={k:.2f})"
|
| 29 |
elif k<3.5: s,n=0.2,f"Borderline (κ={k:.2f})"
|
| 30 |
else: s,n=-0.1,f"Near-natural (κ={k:.2f})"
|
|
|
|
| 92 |
hf=np.concatenate([lh.ravel(),hl.ravel(),hh.ravel()]); hf=hf[hf!=0]
|
| 93 |
if len(hf)<100: return {"test":"Wavelet Kurtosis","score":0.0,"note":"Insufficient"}
|
| 94 |
k=float(sp_kurt(hf,fisher=True))
|
| 95 |
+
# Same ceiling logic: AI over-sharpening produces kurtosis > 60
|
| 96 |
+
if k>60: s,n=0.2,f"Pathologically high wavelet kurtosis (κ={k:.1f}) — AI over-sharpening"
|
| 97 |
+
elif k>5: s,n=-0.3,f"Heavy-tailed wavelets (κ={k:.2f})"
|
| 98 |
elif k<1.5: s,n=0.4,f"Gaussian wavelets (κ={k:.2f})"
|
| 99 |
else: s,n=0.0,f"Wavelet κ={k:.2f}"
|
| 100 |
return {"test":"Wavelet Kurtosis","kurtosis":round(k,4),"score":s,"note":n}
|