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