File size: 1,468 Bytes
be0b780
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed8a286
be0b780
 
 
 
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
36
from PIL import Image
import os

# Load model directly
from transformers import AutoImageProcessor, AutoModelForImageClassification
import gradio as gr
processor = AutoImageProcessor.from_pretrained("nickmuchi/vit-finetuned-chest-xray-pneumonia")
model = AutoModelForImageClassification.from_pretrained("nickmuchi/vit-finetuned-chest-xray-pneumonia")
def update(image_processed):
  #image = Image.open(image_url)
  #image_processed = image.convert("RGB")

  inputs = processor(images=image_processed, return_tensors="pt")
  outputs = model(**inputs)
  logits = outputs.logits
  predicted_class_idx = logits.argmax(-1).item()

  for class_name, score in zip(model.config.id2label.values(), logits.softmax(dim=-1).squeeze().tolist()):
    ket_qua = "Viêm phổi"
    if (class_name == "NORMAL") :
      ket_qua = "Bình thường"
    if (model.config.id2label[predicted_class_idx] == class_name) :
      return (f"{ket_qua}: {score:.0%}")
  return ""
def create_pneumonia_tab() :
  with gr.Blocks() as demo:
      gr.Markdown("Hãy tải ảnh lên và nhấn **Xử Lý** để chẩn đoán viêm phổi.")
      with gr.Row():
          

          inp = gr.Image(label= "Nhập Ảnh",type="pil",height=512, width=512,value=os.path.join(os.path.dirname(__file__), "../anh/viemphoi.jpeg"),interactive=True)
          out = gr.Label(label="Kết Quả Dự Đoán")
      btn = gr.Button("Xử Lý")
      btn.click(fn=update, inputs=inp, outputs=out)
  return demo