Noeies commited on
Commit
5af3a93
·
verified ·
1 Parent(s): 22227fc

Create Appply

Browse files
Files changed (1) hide show
  1. Appply +106 -0
Appply ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline
3
+ from PIL import Image, ImageDraw
4
+ from gtts import gTTS
5
+ from io import BytesIO
6
+
7
+ # โมเดลตรวจจับอวัยวะหลายตำแหน่ง
8
+ model = pipeline("object-detection", model="facebook/detr-resnet-50")
9
+
10
+ # ฐานข้อมูลอวัยวะ 50 ชนิด + คำอธิบายไทย
11
+ organs = {
12
+ "heart": "หัวใจ ❤️ สูบฉีดเลือดไปทั่วร่างกาย",
13
+ "lungs": "ปอด 💨 แลกเปลี่ยนก๊าซในร่างกาย",
14
+ "liver": "ตับ 🍷 กำจัดสารพิษและสร้างน้ำดี",
15
+ "brain": "สมอง 🧠 ควบคุมการทำงานของร่างกาย",
16
+ "stomach": "กระเพาะอาหาร 🍽️ ย่อยอาหาร",
17
+ "kidney": "ไต 💧 กรองของเสียออกจากเลือด",
18
+ "intestine": "ลำไส้ 🌀 ดูดซึมสารอาหาร",
19
+ "pancreas": "ตับอ่อน 💊 สร้างอินซูลิน",
20
+ "spleen": "ม้าม 💉 ทำลายเม็ดเลือดแดงเก่า",
21
+ "bladder": "กระเพาะปัสสาวะ 🚰 เก็บน้ำปัสสาวะ",
22
+ "esophagus": "หลอดอาหาร 🍴 ส่งอาหารจากปากสู่กระเพาะ",
23
+ "trachea": "หลอดลม 🌬️ ส่งอากาศเข้าสู่ปอด",
24
+ "gallbladder": "ถุงน้ำดี 💚 เก็บน้ำดีจากตับ",
25
+ "skin": "ผิวหนัง 🧴 ปกป้องร่างกายและควบคุมอุณหภูมิ",
26
+ "eyes": "ดวงตา 👁️ รับภาพและแสง",
27
+ "ear": "หู 👂 รับเสียงและรักษาสมดุล",
28
+ "nose": "จมูก 👃 รับกลิ่นและช่วยหายใจ",
29
+ "tongue": "ลิ้น 👅 รับรสและช่วยพูด",
30
+ "muscle": "กล้ามเนื้อ 💪 ช่วยเคลื่อนไหวร่างกาย",
31
+ "bone": "กระดูก 🦴 ค้ำจุนและป้องกันอวัยวะภายใน",
32
+ "teeth": "ฟัน 🦷 เคี้ยวอาหารและช่วยพูด",
33
+ "hair": "เส้นผม 💇 ปกป้องหนังศีรษะ",
34
+ "nail": "เล็บ 💅 ปกป้องปลายนิ้ว",
35
+ "thyroid": "ต่อมไทรอยด์ 🧬 ควบคุมการเผาผลาญพลังงาน",
36
+ "adrenal": "ต่อมหมวกไต 🧫 ควบคุมฮอร์โมนความเครียด",
37
+ "pituitary": "ต่อมใต้สมอง 🧩 ควบคุมฮอร์โมนทั่วร่างกาย",
38
+ "hypothalamus": "ไฮโปทาลามัส 🧠 ควบคุมอุณหภูมิและการหิว",
39
+ "small intestine": "ลำไส้เล็ก 🌀 ดูดซึมอาหาร",
40
+ "large intestine": "ลำไส้ใหญ่ 💩 ดูดซึมน้ำและขับของเสีย",
41
+ "rectum": "ทวารหนัก 🚻 ขับของเสียออกจากร่างกาย",
42
+ "ureter": "ท่อไต 🚰 นำน้ำปัสสาวะจากไตไปกระเพาะปัสสาวะ",
43
+ "urethra": "ท่อปัสสาวะ 🚾 ขับปัสสาวะออกจากร่างกาย",
44
+ "ovary": "รังไข่ ⚪ สร้างไข่และฮอร์โมนเพศหญิง",
45
+ "uterus": "มดลูก 🤰 ที่อยู่ของทารกระหว่างตั้งครรภ์",
46
+ "testis": "อัณฑะ ⚽ ผลิตอสุจิและฮอร์โมนเพศชาย",
47
+ "penis": "อวัยวะเพศชาย 🚹",
48
+ "vagina": "ช่องคลอด 🚺",
49
+ "diaphragm": "กะบังลม 💨 ช่วยในการหายใจ",
50
+ "spinal cord": "ไขสันหลัง 🧬 ส่งสัญญาณประสาท",
51
+ "ribs": "กระดูกซี่โครง 🦴 ปกป้องหัวใจและปอด",
52
+ "shoulder": "ไหล่ 💪 ช่วยเคลื่อนไหวแขน",
53
+ "hand": "มือ ✋ ใช้จับและสัมผัสสิ่งของ",
54
+ "foot": "เท้า 🦶 รับน้ำหนักและเคลื่อนไหว",
55
+ "knee": "เข่า 🦵 ช่วยพับขาและเคลื่อนไหว",
56
+ "hip": "สะโพก 🍑 รองรับน้ำหนักส่วนล่า���",
57
+ "appendix": "ไส้ติ่ง 🩺 ส่วนต่อของลำไส้ใหญ่",
58
+ "cornea": "กระจกตา 👁️ ช่วยให้มองเห็นชัด",
59
+ "retina": "จอประสาทตา 🧠 แปลงแสงเป็นสัญญาณภาพ",
60
+ "lungs bronchi": "หลอดลมฝอย 🌬️ ส่งอากาศเข้าสู่ถุงลม"
61
+ }
62
+
63
+ def detect_and_click(image):
64
+ img = Image.open(image).convert("RGB")
65
+ draw = ImageDraw.Draw(img)
66
+
67
+ results = model(image)
68
+ info_list = []
69
+
70
+ for r in results:
71
+ label = r["label"].lower()
72
+ score = round(r["score"] * 100, 1)
73
+ box = r["box"]
74
+
75
+ draw.rectangle(
76
+ [(box["xmin"], box["ymin"]), (box["xmax"], box["ymax"])],
77
+ outline="red", width=3
78
+ )
79
+ draw.text((box["xmin"], box["ymin"] - 10), label, fill="red")
80
+
81
+ desc = organs.get(label, "ไม่พบในฐานข้อมูลอวัยวะ")
82
+ info_list.append(f"{label} → {desc} ({score}%)")
83
+
84
+ # สร้างเสียงพูดรวมหลายอวัยวะ
85
+ text_to_speak = " ; ".join([organs.get(r["label"].lower(), r["label"]) for r in results])
86
+ tts = gTTS(text=text_to_speak, lang="th")
87
+ audio_bytes = BytesIO()
88
+ tts.write_to_fp(audio_bytes)
89
+ audio_bytes.seek(0)
90
+
91
+ return img, "\n".join(info_list), audio_bytes
92
+
93
+ # หน้าเว็บ Gradio
94
+ demo = gr.Interface(
95
+ fn=detect_and_click,
96
+ inputs=gr.Image(type="filepath", label="📸 อัปโหลดภาพร่างกาย/โมเดลอวัยวะ"),
97
+ outputs=[
98
+ gr.Image(label="ภาพพร้อมกรอบอวัยวะ"),
99
+ gr.Textbox(label="คำอธิบายอวัยวะ"),
100
+ gr.Audio(label="เสียงพูดอวัยวะภาษาไทย")
101
+ ],
102
+ title="🔬 ระบบเรียนรู้อวัยวะ Interactive 50 อวัยวะ + พูดไทย",
103
+ description="คลิกกรอบอวัยวะเพื่อฟังชื่อและดูคำอธิบายภาษาไทย"
104
+ )
105
+
106
+ demo.launch()