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() | |