Trong bài luận, mình sử dụng các mô hình phân lớp như Resnet50, InceptionV3, và EfficientNetB6 để huấn luyện mô hình phân lớp lắt cắt MRI não có bất thường hay không. Sau đó, mình sử dụng mô hình Pix2Pix để huấn luyện mô hình tìm vùng bất thường trên các ảnh có bất thường. Cuối cùng mình sử dụng tkinter để thiết kế giao diện để sử dụng các mô hình đã huấn luyện được.
Các thư viện sử dụng
Môi trường
- Google Colaboratory
- Pycharm
- Python 3.9.2
- CUDA Version: 11.2
Run demo
https://github.com/liemkg1234/Pix2Pix_MRIBrain
cd Pix2Pix_MRIBrain
pip install -r requirements.txt
python app/pred.py
- MRI Brain DHYDCT: Gồm 2812 MRI não (604 ảnh có bất thường/khối u) của 139 bệnh nhân với chuỗi xung T2FLAIR được Bệnh viện Trường Đại học Y Dược Cần Thơ cung cấp cùng với nhãn bất thường được các bác sĩ tại bệnh viện thực hiện gán nhãn bằng ứng dụng labelme. Tập dữ liệu được chia với tỷ lệ Train/Validation/Test là 65%/15%/20%.
- Brain MRI segmentation: Gồm 3929 ảnh MRI não (1373 lát cắt có bất thường/khối u) với chuỗi xung FLAIR. Tập dữ liệu được sử dụng để tăng cường cho tập Train để huấn luyện mô hình.
Tiền xử lý ảnh
- Bước 1: Chuyển mặt nạ từ .JSON sang .JPG
- Bước 2: Lọc các bệnh nhân không có bất thường (33 bệnh nhân)
- Bước 3: Cắt bỏ viền ảnh (Dùng Yolov5)
- Chuẩn hóa giá trị từ [0,255] về [-1,1] (Pix2Pix) hoặc [0,1] (Efficient)
Tăng cường hình ảnh
Để tập dữ liệu cân bằng, cần tăng cường các hình ảnh có bất thường, sau đó các hình ảnh bất thường tăng lên 2 lần. Các phương pháp gồm:
Các thông số chung:
- Img_size: 256x256
- Batch_size: 64
- Steps: 20000
- Generator_lr: 0.0002
- Discriminator_lr: 0.0002
- Loss Distance: Euclid (L2)
- Lambda: 200
Kết quả phân lớp
Kết quả phân vùng bất thường
Email: liemkg1234@gmail.com