hackergeek commited on
Commit
ce11c3a
·
verified ·
1 Parent(s): 2bc9980

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoImageProcessor, AutoModelForImageClassification
3
+ import torch
4
+ from PIL import Image
5
+ import numpy as np
6
+
7
+ # بارگذاری مدل و processor یک بار موقع شروع
8
+ MODEL_ID = "erfanansaghariyan/mobilew-v11-convnext-tiny-6layer-radiimagen"
9
+
10
+ processor = AutoImageProcessor.from_pretrained(MODEL_ID)
11
+ model = AutoModelForImageClassification.from_pretrained(MODEL_ID)
12
+ model.eval()
13
+
14
+ # اگر GPU داشتی فعالش کن
15
+ device = "cuda" if torch.cuda.is_available() else "cpu"
16
+ model.to(device)
17
+
18
+ def predict(image: Image.Image):
19
+ # پیش‌پردازش تصویر
20
+ inputs = processor(images=image, return_tensors="pt")
21
+ inputs = {k: v.to(device) for k, v in inputs.items()}
22
+
23
+ # inference
24
+ with torch.no_grad():
25
+ outputs = model(**inputs)
26
+
27
+ logits = outputs.logits
28
+ probabilities = torch.softmax(logits, dim=-1).cpu().numpy()[0]
29
+
30
+ # گرفتن top-k پیش‌بینی‌ها
31
+ top_k = 5
32
+ top_indices = np.argsort(probabilities)[-top_k:][::-1]
33
+ labels = [model.config.id2label[idx] for idx in top_indices]
34
+ probs = [float(probabilities[idx]) for idx in top_indices]
35
+
36
+ # خروجی به صورت دیکشنری برای Gradio
37
+ result = {label: prob for label, prob in zip(labels, probs)}
38
+
39
+ return result, image # تصویر + احتمالات
40
+
41
+ # رابط کاربری Gradio
42
+ demo = gr.Interface(
43
+ fn=predict,
44
+ inputs=gr.Image(type="pil", label="تصویر رادیولوژی آپلود کن"),
45
+ outputs=[
46
+ gr.Label(label="احتمالات کلاس‌ها (Top 5)"),
47
+ gr.Image(label="تصویر ورودی")
48
+ ],
49
+ title="MobileWev-v11 ConvNeXt Tiny - Radiology Image Analysis",
50
+ description=(
51
+ "این مدل سبک (ConvNeXt-tiny با 6 لایه) برای تحلیل تصاویر پزشکی/رادیولوژی فاین‌تیون شده است.\n"
52
+ "تصویر را آپلود کنید تا احتمالات کلاس‌های تشخیص را ببینید."
53
+ ),
54
+ examples=[
55
+ # می‌تونی چند تا مثال تصویر بذاری (آپلود کن توی Space)
56
+ # مثلاً: ["example_chest_xray.jpg"]
57
+ ],
58
+ cache_examples=False,
59
+ )
60
+
61
+ if __name__ == "__main__":
62
+ demo.launch()