Kang-Seong-Jun's picture
Update app.py
b1d46e7 verified
raw
history blame
1.78 kB
!pip install torch transformers gradio pillow
import torch
import requests
import gradio as gr
from PIL import Image
from transformers import ResNetForImageClassification, AutoImageProcessor
target_folder = "Kang-Seong-Jun/Korean_Real_Estate_Classifier"
def load_model_and_preprocessor(target_folder):
model = ResNetForImageClassification.from_pretrained(target_folder)
image_processor = AutoImageProcessor.from_pretrained(target_folder)
return model, image_processor
def infer_image(image, model, image_processor, k):
processed_img = image_processor(images=image.convert("RGB"), return_tensors="pt")
with torch.no_grad():
outputs = model(**processed_img)
logits = outputs.logits
prob = torch.nn.functional.softmax(logits, dim=-1)
topk_prob, topk_indices = torch.topk(prob, k=k)
res = ""
for idx, (prob, index) in enumerate(zip(topk_prob[0], topk_indices[0])):
res += f"{idx+1}. {model.config.id2label[index.item()]:<15} ({prob.item()*100:.2f} %) \n"
return res
def infer(image, k, target_folder=target_folder):
try:
model, image_processor = load_model_and_preprocessor(target_folder)
res = infer_image(image, model, image_processor, k)
except Exception as e:
image = Image.new('RGB', (224, 224))
res = f"์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค: {str(e)}"
return image, res
demo = gr.Interface(
fn=infer,
inputs=[
gr.Image(type="pil", label="์ž…๋ ฅ ์ด๋ฏธ์ง€"),
gr.Slider(minimum=0, maximum=20, step=1, value=3, label="์ƒ์œ„ ๋ช‡๊ฐœ๊นŒ์ง€ ๋ณด์—ฌ์ค„๊นŒ์š”?")
],
outputs=[
gr.Image(type="pil", label="์ž…๋ ฅ ์ด๋ฏธ์ง€"),
gr.Textbox(label="์ข…๋ฅ˜ (ํ™•๋ฅ )")
],
)
demo.launch()