| import gradio as gr |
| import os |
| import csv |
| from models import get_model |
| import torch |
| import torchvision.transforms as transforms |
| import torch.utils.data |
| import numpy as np |
| import sys |
| from PIL import Image |
| |
|
|
| MEAN = { |
| "imagenet":[0.485, 0.456, 0.406], |
| "clip":[0.48145466, 0.4578275, 0.40821073] |
| } |
|
|
| STD = { |
| "imagenet":[0.229, 0.224, 0.225], |
| "clip":[0.26862954, 0.26130258, 0.27577711] |
| } |
|
|
|
|
| def detect_one_image(model, image): |
|
|
| """ |
| model = get_model('CLIP:ViT-L/14') |
| state_dict = torch.load(ckpt, map_location='cpu') |
| model.fc.load_state_dict(state_dict) |
| print ("Model loaded..") |
| model.eval() |
| model.cuda() |
| """ |
| |
| """ |
| if jpeg_quality is not None: |
| img = png2jpg(img, jpeg_quality) |
| """ |
| transform = transforms.Compose([ |
| transforms.ToTensor(), |
| transforms.CenterCrop(224), |
| transforms.Normalize( mean=MEAN['clip'], std=STD['clip'] ), |
| ]) |
| img = transform(image) |
| img = img.to('cuda:0') |
|
|
| detection_output = model(img) |
| output = torch.sigmoid(detection_output) |
|
|
| return output |
|
|
| def detect(image): |
| |
| model = get_model('CLIP:ViT-L/14') |
| state_dict = torch.load('./pretrained_weights/fc_weights.pth', map_location='cpu') |
| model.fc.load_state_dict(state_dict) |
| |
| |
| model.eval() |
| model.cuda() |
| output_tensor = detect_one_image(model, image) |
| ai_likelihood = (100*output_tensor).item() |
| return "The image is " + str(ai_likelihood) + r" % likely to be AI-generated." |
|
|
| demo = gr.Interface( |
| fn=detect, |
| inputs=["image"], |
| outputs=["text"], |
| ) |
|
|
| demo.launch() |
|
|