Ứng dụng desktop hỗ trợ bác sĩ chẩn đoán hình ảnh y tế, sử dụng mô hình YOLOv26 Medium để phát hiện khối u vú, phổi và não từ ảnh X-quang / MRI / CT.
- Chẩn đoán AI: Phân tích ảnh y tế bằng 3 mô hình YOLO chuyên biệt (u vú, u phổi, u não)
- Hỗ trợ GPU/CPU: Tự động phát hiện và sử dụng GPU nếu có, fallback về CPU
- Đa nguồn đầu vào: Tải ảnh từ file (JPG/PNG/BMP) hoặc chụp trực tiếp từ webcam
- Xử lý hàng loạt: Phân tích nhiều ảnh cùng lúc, duyệt kết quả qua lại từng ảnh
- Tiền xử lý CLAHE: Tăng cường độ tương phản ảnh y tế trước khi đưa vào AI
- Xuất PDF hồ sơ: Tạo phiếu kết quả bệnh nhân có tên bác sĩ, kết quả AI, lời khuyên
- Đọc kết quả TTS: Thông báo kết quả bằng giọng nói tiếng Việt (gTTS + VLC)
- Giao diện sáng/tối: Hỗ trợ Dark Mode, zoom & kéo ảnh trực tiếp trên màn hình
- Python 3.9+
- Windows (để xuất PDF với font Arial; Linux/macOS dùng font Helvetica tự động)
- GPU NVIDIA (khuyến nghị, không bắt buộc)
pip install customtkinter pillow opencv-python torch torchvision
pip install ultralytics gtts python-vlc reportlabNếu dùng GPU:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118project/
├── main.py # Phiên bản gốc
├── ai.py # Phiên bản mở rộng (hỗ trợ ảnh kiểm chứng)
├── train.py # Script huấn luyện / fine-tuning model
├── taikhoang.txt # File tài khoản bác sĩ (username:password)
├── UT_VU.pt # Model YOLO — Ung thư vú
├── UT_PHOI.pt # Model YOLO — Ung thư phổi
└── NAO.pt # Model YOLO — Khối u não
Tạo file taikhoang.txt trong cùng thư mục, mỗi dòng là một tài khoản theo định dạng:
bacsi1:matkhau1
bacsi2:matkhau2
- Chạy ứng dụng:
python main.pyhoặcpython ai.py - Đăng nhập bằng tài khoản bác sĩ
- Nhập tên/mã bệnh nhân ở thanh bên trái
- Chọn mô hình chẩn đoán: U vú, U phổi hoặc U não
- Tải ảnh từ máy tính hoặc bật webcam để chụp
- Nhấn "CHẨN ĐOÁN TẤT CẢ ẢNH" để chạy AI
- Duyệt kết quả từng ảnh bằng nút điều hướng
- Nhấn "LẬP HỒ SƠ BỆNH ÁN" để xuất PDF
| Model | File | Loại bệnh |
|---|---|---|
| Model2 | UT_VU.pt |
Khối u vú (cancer / normal) |
| Model3 | UT_PHOI.pt |
Khối u phổi |
| Model4 | NAO.pt |
Khối u não (tumor / normal) |
Các file
.ptlà trọng số tự train trên kiến trúc YOLOv26 Medium.
Kết quả phân loại theo ngưỡng tin cậy:
- ≥ 50% → PHÁT HIỆN (cảnh báo đỏ)
- 20–49% → CÓ DẤU HIỆU (cảnh báo vàng)
- < 20% → KHÔNG PHÁT HIỆN BẤT THƯỜNG (xanh lá)
Script train.py hỗ trợ fine-tuning (train tiếp) từ model có sẵn, đồng thời tự động gộp thêm dữ liệu mới vào tập train gốc trước khi chạy.
Mở file train.py và chỉnh 3 biến đầu:
DIR_GOC = r"đường/dẫn/đến/dataset/gốc" # Dataset gốc cần train
DIR_MOI = r"đường/dẫn/đến/dataset/mới" # Dataset bổ sung (YOLO format)
MODEL_PT = r"đường/dẫn/đến/model.pt" # Model cũ để fine-tunepython train.pyScript sẽ tự động thực hiện theo thứ tự:
- Xóa cache cũ — Tránh lỗi khi thêm data mới
- Gộp dữ liệu thông minh — Copy ảnh + nhãn từ
DIR_MOIvàoDIR_GOC, tự đổi tên file để tránh trùng; foldertestđược gộp vàotrain - Fine-tune model — Load model
.ptcũ và train tiếp với data đã gộp
| Thông số | Giá trị | Ghi chú |
|---|---|---|
epochs |
100 | Số vòng lặp tối đa |
imgsz |
640 | Kích thước ảnh đầu vào |
batch |
16 | Số ảnh mỗi batch |
patience |
20 | Dừng sớm nếu không cải thiện |
workers |
0 | Bắt buộc = 0 trên Windows |
conf (infer) |
0.45 | Ngưỡng tin cậy khi chạy app |
DOI_CLASS_VE_1 = True # Gom tất cả class từ data mới về class 1
DOI_CLASS_VE_1 = False # Giữ nguyên class ID từ data mớiChỉ bật
Truekhi bạn chắc chắn class 0 trong data mới cũng là "khối u".
Model sau khi train được lưu tại:
NhanDream_AI_Project/KetQua_Final_U_Nao/weights/best.pt
ai.py là phiên bản mở rộng của main.py, bổ sung logic xử lý ảnh kiểm chứng đặc biệt: với một file ảnh được chỉ định (anhkiemchungduocphepsudung1.jpg), hệ thống bỏ qua AI và tự vẽ bounding box thủ công tại tọa độ định sẵn, dùng cho mục đích demo/kiểm thử.
⚠️ Kết quả từ AI chỉ mang tính tham khảo hỗ trợ. Không thay thế chẩn đoán của bác sĩ chuyên khoa.
- CustomTkinter — Giao diện đồ họa
- YOLOv26 Medium — Mô hình phát hiện đối tượng
- OpenCV — Xử lý ảnh
- gTTS + python-vlc — Đọc kết quả bằng giọng nói
- ReportLab — Xuất PDF
- PyTorch — Backend deep learning



