File size: 1,329 Bytes
a87c3be
0462cba
172362f
a87c3be
9378acd
a87c3be
cac5c68
 
172362f
a87c3be
 
 
cac5c68
463c121
a87c3be
 
172362f
a87c3be
5e1d0b4
a87c3be
9378acd
a87c3be
 
 
172362f
a87c3be
 
 
463c121
cf15f5b
a87c3be
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import gradio as gr
from transformers import SegformerFeatureExtractor, SegformerForSemanticSegmentation
from PIL import Image
import torch

# ๋ชจ๋ธ๊ณผ feature extractor ๋กœ๋“œ
model = SegformerForSemanticSegmentation.from_pretrained("nvidia/segformer-b3-finetuned-cityscapes-1024-1024")
feature_extractor = SegformerFeatureExtractor.from_pretrained("nvidia/segformer-b3-finetuned-cityscapes-1024-1024")

# ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜
def predict(image):
    # ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋ธ์— ๋งž๊ฒŒ ๋ณ€ํ™˜
    processed_image = image.resize((1024, 1024))
    inputs = feature_extractor(images=processed_image, return_tensors="pt")
    outputs = model(**inputs)
    logits = outputs.logits

    # ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ (์˜ˆ: ๊ฐ€์žฅ ๋†’์€ ํ™•๋ฅ ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค ์„ ํƒ)
    result = torch.argmax(logits)
    result = result.squeeze().cpu().numpy()

    # ์—ฌ๊ธฐ์—์„œ๋Š” ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    # ์‹ค์ œ๋กœ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ ์ ˆํ•œ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    return result

# Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
demo = gr.Interface(
    fn=predict,
    inputs=gr.inputs.Image(type='pil'),
    outputs=gr.outputs.Image(type='pil'),
    examples=["image1.jpg", "image2.jpg", "image3.jpg"]  # ์„ธ ๊ฐœ์˜ ์˜ˆ์ œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ
)

# ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰
demo.launch()