File size: 2,290 Bytes
6364b8e
 
063d7d0
436d80d
 
 
 
 
6364b8e
436d80d
759d503
 
 
53c3b30
759d503
063d7d0
387ecb3
6364b8e
387ecb3
53c3b30
 
6364b8e
 
436d80d
 
 
 
 
 
 
6364b8e
 
 
387ecb3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6364b8e
 
759d503
836257c
759d503
 
387ecb3
 
 
 
 
 
 
 
 
6364b8e
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
import gradio as gr
import torch
from transformers import AutoFeatureExtractor, AutoModelForImageClassification, pipeline
from numpy import exp
 
def softmax(vector):
 e = exp(vector)
 return e / e.sum()

    
models=[
    "Nahrawy/AIorNot",
    "arnolfokam/ai-generated-image-detector",
    "umm-maybe/AI-image-detector",
]

def aiornot0(image):    
    labels = ["Real", "AI"]
    mod=models[0]
    feature_extractor = AutoFeatureExtractor.from_pretrained(mod)
    model = AutoModelForImageClassification.from_pretrained(mod)
    input = feature_extractor(image, return_tensors="pt")
    with torch.no_grad():
        outputs = model(**input)
        print (outputs)
        logits = outputs.logits
        print (logits)
        probability = softmax(logits, axis=-1)
        print(probability)

    prediction = logits.argmax(-1).item()
    label = labels[prediction] 
    return label
def aiornot1(image):    
    labels = ["Real", "AI"]
    mod=models[1]
    feature_extractor = AutoFeatureExtractor.from_pretrained(mod)
    model = AutoModelForImageClassification.from_pretrained(mod)
    input = feature_extractor(image, return_tensors="pt")
    with torch.no_grad():
      outputs = model(**input)
      print (outputs)
      logits = outputs.logits
      print (logits)
    prediction = logits.argmax(-1).item()
    label = labels[prediction] 
    return label
def aiornot2(image):    
    labels = ["Real", "AI"]
    mod=models[2]
    feature_extractor = AutoFeatureExtractor.from_pretrained(mod)
    model = AutoModelForImageClassification.from_pretrained(mod)
    input = feature_extractor(image, return_tensors="pt")
    with torch.no_grad():
      outputs = model(**input)
      print (outputs)
      logits = outputs.logits
      print (logits)
    prediction = logits.argmax(-1).item()
    label = labels[prediction] 
    return label    
with gr.Blocks() as app:
    with gr.Row():
        with gr.Column():
            inp = gr.Image()
            mod_choose=gr.Number(value=0)
            btn = gr.Button()
            
        with gr.Column():
            outp0 = gr.Textbox()
            outp1 = gr.Textbox()
            outp2 = gr.Textbox()
    btn.click(aiornot0,[inp],outp0)
    btn.click(aiornot1,[inp],outp1)
    btn.click(aiornot2,[inp],outp2)
    
app.launch()