Spaces:
Sleeping
Sleeping
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 | |
# from detect_one_image import detect_one_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() | |
""" | |
# img = Image.open(image_path).convert("RGB") | |
""" | |
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): | |
# print(type(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.load_state_dict(state_dict) | |
# print ("Model loaded..") | |
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() | |