Prototype สำหรับจำแนกภาพ MRI สมองด้วย AI พร้อมเว็บอินเทอร์เฟซสำหรับอัปโหลดภาพและดูผลวิเคราะห์
ข้อควรระวัง: โปรเจกต์นี้จัดทำเพื่อการศึกษาและวิจัยเท่านั้น ไม่ใช่อุปกรณ์ทางการแพทย์ และห้ามใช้เพื่อวินิจฉัย คัดกรอง หรือวางแผนการรักษา ผู้เชี่ยวชาญด้านรังสีวิทยาต้องเป็นผู้ตรวจสอบภาพเสมอ
Live Demo: https://brain-tumor-classifier.jrptech.dev
UI/UX ของระบบออกแบบด้วย Figma ก่อนนำมาพัฒนาเป็นเว็บแอปพลิเคชันด้วย React โดยเน้นหน้าจอที่อ่านผลได้ง่าย มีขั้นตอนอัปโหลดที่ชัดเจน และสื่อสารข้อจำกัดของ AI อย่างตรงไปตรงมา
- Model: MobileNetV3-Small แบบ transfer learning ด้วย PyTorch
- Dataset:
masoudnickparvar/brain-tumor-mri-datasetดาวน์โหลดผ่าน KaggleHub - ประเภทที่จำแนกได้: Glioma, Meningioma, No Tumour และ Pituitary Tumour
- Input: ภาพ MRI 2D ชนิด PNG, JPEG หรือ WEBP ขนาดไม่เกิน 10 MB
- Output: คลาสที่คาดการณ์, confidence และความน่าจะเป็นของทุกคลาส
- การวัดผล: แบ่ง validation set 15% และบันทึก model weights จาก epoch ที่มี validation accuracy สูงสุด
Dataset ที่ใช้เป็น classification dataset จึงไม่มีตำแหน่งก้อนเนื้องอก (bounding-box annotations) ที่เป็น ground truth ระบบเวอร์ชันนี้จึงจำแนกประเภทของภาพทั้งภาพเท่านั้น หากต้องการ bounding box ที่ใช้งานได้จริง ต้องใช้ dataset ที่มี annotation ตำแหน่งก้อน และเทรน object-detection model เช่น YOLOv8
- อัปโหลดภาพด้วยการเลือกไฟล์หรือ drag-and-drop
- แสดงตัวอย่างภาพก่อนวิเคราะห์
- ตรวจสอบชนิดและขนาดของไฟล์
- เรียกใช้โมเดล AI จริงผ่าน REST API
- แสดงผลคลาสหลัก, confidence และ class probabilities
- ตรวจสถานะ API และ model weights ก่อนให้เริ่มวิเคราะห์
- แสดงคำเตือนเรื่องขอบเขตการใช้งานทางการแพทย์
| ส่วน | เครื่องมือ |
|---|---|
| UI/UX Design | Figma |
| Frontend | React, TypeScript, Vite, CSS, Lucide React |
| Backend | Python, FastAPI, Uvicorn |
| AI / ML | PyTorch, Torchvision, MobileNetV3-Small |
| Image Processing | Pillow |
| Dataset | KaggleHub, Kaggle Dataset |
เปิด Terminal สองหน้าต่างจากโฟลเดอร์โปรเจกต์นี้
cd backend
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python train.py --epochs 8
python -m uvicorn app:app --reload --port 8000train.py จะดาวน์โหลด dataset และสร้าง weights ที่ backend/models/brain_tumor_mobilenet_v3.pth ก่อน UI จะเปิดให้วิเคราะห์ภาพ
cd frontend
npm install
npm run devเปิด URL ที่ Vite แสดงใน Terminal โดยปกติคือ http://localhost:5173 จากนั้นอัปโหลดภาพ MRI และกด RUN AI ANALYSIS
GET /health— ตรวจสอบสถานะ API และความพร้อมของ model weightsPOST /predict— รับไฟล์ภาพผ่าน form fieldfileและส่งกลับ prediction กับ probabilities
backend/
app.py # FastAPI inference service
train.py # Download dataset, train, validate และบันทึก weights
requirements.txt
frontend/
src/App.tsx # React user interface
src/styles.css
"# Brain-Tumor-MRI-Classifier"