|
|
|
import gradio as gr |
|
import torch |
|
import numpy as np |
|
from PIL import Image |
|
from torchvision import transforms as T |
|
import joblib |
|
|
|
|
|
dinov2_vits14 = torch.load('dinov2_vits14.pth', map_location=torch.device('cpu')) |
|
clf = joblib.load('svm_model.joblib') |
|
|
|
|
|
transform_image = T.Compose([T.ToTensor(), T.Resize(244), T.CenterCrop(224), T.Normalize([0.5], [0.5])]) |
|
|
|
def predict(image): |
|
image = Image.fromarray(image) |
|
transformed_img = transform_image(image)[:3].unsqueeze(0) |
|
with torch.no_grad(): |
|
embedding = dinov2_vits14(transformed_img) |
|
prediction = clf.predict(np.array(embedding[0].cpu()).reshape(1, -1)) |
|
return prediction[0] |
|
|
|
iface = gr.Interface(fn=predict, inputs="image", outputs="text") |
|
iface.launch() |
|
|