David310's picture
add project files
55478d8
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()