Giới thiệu dự án

Chẩn đoán hình ảnh lồng ngực qua phim X-quang (Chest X-Ray - CXR) là phương pháp chẩn đoán cận lâm sàng đầu tay, phổ biến và có chi phí tối ưu nhất trong y học hiện đại nhằm sàng lọc các bệnh lý hô hấp và tim mạch. Theo Tổ chức Y tế Thế giới (WHO), các bệnh lý về đường hô hấp như viêm phổi, phổi tắc nghẽn mạn tính (COPD) và ung thư phổi nằm trong nhóm nguyên nhân gây tử vong hàng đầu toàn cầu. Tuy nhiên, sự phân bổ nguồn nhân lực y tế chuyên trách (bác sĩ chẩn đoán hình ảnh) hiện nay có sự mất cân bằng nghiêm trọng giữa tuyến trung ương và các cơ sở y tế tuyến dưới. Tình trạng quá tải làm gia tăng nguy cơ bỏ sót tổn thương hoặc chẩn đoán sai lệch trong các ca bệnh lý phức tạp.

Đồ án tốt nghiệp Kỹ thuật Y sinh với đề tài "Ứng dụng phương pháp học sâu trong mô hình chẩn đoán hình ảnh X-quang phổi" tập trung giải quyết triệt để hai bài toán cốt lõi:

  1. Sự xuất hiện đồng thời của nhiều tổn thương (Multi-label co-occurrence): Một phim X-quang ngực thường chứa nhiều bệnh lý cùng lúc, phân bố ở các vùng giải phẫu cục bộ (local) hoặc cách xa nhau (non-local). Các mô hình CNN truyền thống thường gặp khó khăn trong việc trích xuất đồng thời mối tương quan không gian đa tỷ lệ này.
  2. Hiện tượng dịch chuyển miền dữ liệu (Domain Gap) và Overfitting: Sự khác biệt về thông số kỹ thuật giữa các dòng máy chụp X-quang, tư thế chụp và nhiễu nền từ các cơ sở y tế khác nhau dẫn đến suy giảm độ chính xác khi mô hình triển khai trên dữ liệu thực tế ngoài tập huấn luyện.

Mục tiêu cụ thể của dự án bao gồm:

  1. Huấn luyện mô hình Deep Learning có khả năng phân loại tự động 14 nhãn bệnh lý phổi (như Cardiomegaly, Atelectasis, Effusion, Pneumothorax, Consolidation...) và 1 trạng thái bình thường (No Finding) trên ảnh chụp hướng sau-trước (Posteroanterior - PA).
  2. Tích hợp cơ chế Nút cổ chai thông tin biến phân cấp độ mảnh (Patch-Level Variational Information Bottleneck - P-VIB) kết hợp cấu trúc MLRFNet (Multi-Level Residual Feature Fusion Network) nhằm loại bỏ đặc trưng nhiễu và bảo tồn cấu trúc không gian 2D.
  3. Xây dựng hệ thống phần mềm hoàn chỉnh (Full-stack Web CADx) cung cấp giao diện trực quan hóa bản đồ nhiệt nhiệt kích hoạt lớp có trọng số gradient (Grad-CAM) chi tiết cho từng loại bệnh thành phần, phục vụ trực tiếp cho bác sĩ và chuyên gia y tế.

Phạm vi nghiên cứu tập trung vào hai tập dữ liệu chuẩn hóa quốc tế: NIH ChestX-ray14 (>100.000 ảnh) và Stanford CheXpert (224.316 ảnh), triển khai thực nghiệm hệ thống phân tích hình ảnh hỗ trợ chẩn đoán (Computer-Aided Diagnosis - CADx).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nhiều nghiên cứu tiền nhiệm đã ứng dụng trí tuệ nhân tạo vào xử lý ảnh CXR, tuy nhiên vẫn còn tồn tại các khoảng trống công nghệ đáng kể:

Tiêu chí so sánh Vision Transformer (ViT) [1] CNN Transfer Learning [2] CNN Đơn nhãn [3] Hệ thống đề xuất (P-VIB + MLRFNet)
Dạng bài toán Đa nhãn (14 bệnh) Đa nhãn (14 bệnh) Đơn nhãn (4 bệnh) Đa nhãn (14 bệnh + No Finding)
Xử lý đặc trưng cục bộ Phụ thuộc dữ liệu lớn, tính toán nặng Mất cấu trúc không gian khi pooling Kém, chỉ bắt đặc trưng toàn cục Trích xuất đa tỷ lệ qua Res2Net + ECA
Khử nhiễu / Kháng Overfitting Cơ chế Self-Attention cơ bản Dropout thông thường Không có cơ chế lọc nhiễu miền Module P-VIB tối ưu hóa phân phối KL
Giải thích hình ảnh (XAI) Chỉ hiển thị 1 bệnh trên Grad-CAM 1 ảnh Grad-CAM gộp chung Không hỗ trợ Grad-CAM 1 ảnh tổng quan + từng ảnh bệnh chi tiết
Đánh giá Domain Generalization Thấp Trung bình Không đánh giá Cao (Kiểm thử chéo ChestX-ray14 & CheXpert)

Yêu cầu người dùng được phân loại theo chuẩn MoSCoW:

  • Must-have: Phân loại chính xác xác suất 14 bệnh lý; sinh ảnh Grad-CAM cho từng nhãn dự đoán; xác thực người dùng qua JWT; quản lý hồ sơ bệnh nhân.
  • Should-have: Cho phép tài khoản phân quyền chuyên gia (Professor/Doctor) gán nhãn lại dữ liệu; gửi báo cáo chẩn đoán qua email tự động.
  • Could-have: Bộ lọc tìm kiếm bệnh án nâng cao; xuất báo cáo định dạng PDF.
  • Won't-have (giai đoạn này): Tích hợp trực tiếp chuẩn truyền thông hình ảnh y tế DICOM/PACS thời gian thực.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình Microservices tách biệt 3 tầng:

[Client Frontend (ReactJS 18)] 
[AI Model Serving API (Python Flask / Waitress WSGI)]
  • Technology Stack:

    • AI Engine: Python 3.10, PyTorch 2.1.0, Torchvision, PyTorch-Grad-CAM, CUDA 11.8.
    • Model Serving API: Flask 2.3, Waitress WSGI Server (xử lý concurrency đa luồng).
    • Backend Server: Node.js v18 LTS, Express.js 4.18, Mongoose ORM, JSON Web Token (JWT), Nodemailer.
    • Frontend Client: ReactJS 18, React Router v6, Axios, TailwindCSS, HTML5 Canvas.
    • Database & Cloud Storage: MongoDB Atlas (NoSQL Document Store), Cloudinary API (lưu trữ ảnh gốc và ảnh Grad-CAM).
  • Thiết kế Database (MongoDB Schema):

    • Users Collection: _id, username, email, password_hash, role ('doctor' | 'professor' | 'admin'), createdAt.
    • Predictions Collection: _id, patient_name, patient_age, gender, original_image_url, gradcam_overview_url, detailed_findings: [{disease_name, confidence_score, gradcam_url}], doctor_notes, verified_labels: [], created_by, createdAt.
  • Thiết kế API Endpoints:

    • POST /api/v1/auth/login: Xác thực và cấp token JWT (HS256).
    • POST /api/v1/predict/inference: Nhận chuỗi Base64 ảnh CXR từ BE, chuyển tới Flask API để suy luận mô hình và trích xuất Grad-CAM.
    • POST /api/v1/records/save: Lưu thông tin chẩn đoán và metadata vào MongoDB Atlas.
    • POST /api/v1/mail/send-report: Kích hoạt dịch vụ gửi mail kết quả đính kèm trực tiếp cho bệnh nhân.

Methodology

Quy trình phát triển dự án áp dụng mô hình Agile/Scrum rút gọn trong vòng 17 tuần:

  • Tuần 1 - 3: Khảo sát bài toán, chuẩn hóa dữ liệu ChestX-ray14 & CheXpert (lọc nhãn, resize $224 \times 224$, chuẩn hóa Min-Max, Data Augmentation).
  • Tuần 4 - 6: Xây dựng kiến trúc mô hình Deep Learning, lập trình module P-VIB, ECA và đầu phân loại CSRA.
  • Tuần 7 - 12: Huấn luyện, tinh chỉnh siêu tham số ($\beta$, $\alpha$, $\lambda$), đóng gói Model API (Flask) và phát triển Full-stack Web (Express + React).
  • Tuần 13 - 17: Kiểm thử toàn diện hệ thống, đánh giá Grad-CAM lâm sàng, tối ưu hóa giao diện và viết báo cáo luận văn.

Implementation và kết quả

Development process

Cốt lõi thuật toán nằm ở sự phối hợp giữa bộ trích xuất đặc trưng đa tỷ lệ Res2Net50, cơ chế lọc thông tin P-VIB, bộ chú ý kênh ECA (Efficient Channel Attention) và bộ phân loại vùng bệnh chuyên biệt CSRA (Class-Specific Residual Attention):

  1. Trích xuất đặc trưng đa tỷ lệ: Bản đồ đặc trưng được trích xuất từ 3 mức tỷ lệ $P_2, P_3, P_4$ của Res2Net50 đại diện cho các độ phân giải từ nông (chi tiết cục bộ) đến sâu (ngữ cảnh toàn cục).
  2. Cơ chế P-VIB (Patch-Level VIB): Thay vì làm phẳng ma trận đặc trưng thành 1D vector (làm mất tọa độ tổn thương), P-VIB sử dụng hai lớp tích chập song song $3 \times 3$ để ước lượng trực tiếp ma trận kỳ vọng $\mu_l$ và phương sai $\sigma_l$ tại từng tọa độ không gian $(H \times W)$: $$\mu_l = \text{Conv}{3\times3}^{(\mu)}(F_l), \quad \sigma_l = \text{Softplus}\left(\text{Conv}{3\times3}^{(\sigma)}(F_l)\right)$$
  3. Kỹ thuật tái tham số hóa (Re-parameterization Trick): $$z_l = \mu_l + \sigma_l \odot \epsilon, \quad \text{với } \epsilon \sim \mathcal{N}(0, I)$$
  4. Hàm mất mát tổng hợp đa mục tiêu: $$\mathcal{L}{\text{total}} = \mathcal{L}{\text{cls}}(y, \hat{P}) + \beta \cdot \sum_{l \in {P_2, P_3, P_4}} \mathcal{L}{\text{fea}}(\mu_l, \sigma_l)$$ Trong đó, $\mathcal{L}{\text{fea}}$ là khoảng cách phân kỳ Kullback-Leibler (KL Divergence): $$\mathcal{L}{\text{fea}}(\mu_l, \sigma_l) = \frac{1}{2 C_l W_l H_l} \sum{j=1}^{C_l} \sum_{k=1}^{W_l \times H_l} \left( \mu_{l,j,k}^2 + \sigma_{l,j,k}^2 - \log(\sigma_{l,j,k}^2) - 1 \right)$$
import torch
import torch.nn as nn

class PVIBModule(nn.Module):
    """
    Patch-Level Variational Information Bottleneck (P-VIB)
    Preserves spatial structural dimensions for CNN medical feature maps.
    """
    def __init__(self, in_channels: int):
        super(PVIBModule, self).__init__()
        self.conv_mu = nn.Conv2d(in_channels, in_channels, kernel_size=3, padding=1)
        self.conv_logvar = nn.Conv2d(in_channels, in_channels, kernel_size=3, padding=1)
        self.softplus = nn.Softplus()

    def forward(self, x: torch.Tensor):
        mu = self.conv_mu(x)
        logvar = self.conv_logvar(x)
        std = self.softplus(logvar)
        
        # Reparameterization trick
        eps = torch.randn_like(std)
        z = mu + std * eps
        
        # Compute KL Divergence Loss for spatial feature selection
        kl_loss = 0.5 * torch.mean(mu.pow(2) + std.pow(2) - 2 * torch.log(std + 1e-8) - 1)
        return z, kl_loss

Testing và validation

Hiệu năng của mô hình được đánh giá thông qua chỉ số diện tích dưới đường cong ROC (AUC - Area Under the Curve), đo lường năng lực phân loại trên từng bệnh lý:

Nhãn bệnh lý (Pathology) Baseline (Res2Net50 + CSRA) AUC P-VIB + MLRFNet (Proposed) AUC Cải thiện ($\Delta$)
Atelectasis (Xẹp phổi) 0.812 0.829 +1.7%
Cardiomegaly (Tim to) 0.901 0.923 +2.2%
Effusion (Tràn dịch màng phổi) 0.884 0.898 +1.4%
Infiltration (Thâm nhiễm) 0.709 0.724 +1.5%
Mass (U phổi) 0.835 0.856 +2.1%
Nodule (Nốt phổi) 0.768 0.791 +2.3%
Pneumonia (Viêm phổi) 0.772 0.795 +2.3%
Pneumothorax (Tràn khí màng phổi) 0.871 0.892 +2.1%
Consolidation (Đông đặc) 0.803 0.819 +1.6%
Edema (Phù phổi) 0.892 0.908 +1.6%
Emphysema (Khí phế thũng) 0.915 0.938 +2.3%
Fibrosis (Xơ phổi) 0.826 0.841 +1.5%
Pleural Thickening (Dày màng phổi) 0.779 0.796 +1.7%
Hernia (Thoát vị hoành) 0.898 0.932 +3.4%
Mean AUC (Trung bình 14 bệnh) 0.833 0.854 +2.1%
  • Đánh giá tổng quát hóa miền (Domain Generalization): Khi kiểm thử chéo mô hình huấn luyện từ ChestX-ray14 trực tiếp trên tập dữ liệu CheXpert với 5 bệnh phổ biến (Atelectasis, Cardiomegaly, Consolidation, Edema, Effusion), mô hình tích hợp P-VIB duy trì mức sụt giảm AUC dưới 3.1%, trong khi mô hình Baseline sụt giảm tới 7.8%.
  • Hiệu năng hệ thống: Thời gian xử lý suy luận trung bình (Inference Latency) cho một ảnh X-quang hoàn chỉnh (bao gồm tiền xử lý, chạy model qua GPU và trích xuất toàn bộ bản đồ Grad-CAM) đạt 180ms - 250ms/ảnh.

Đổi mới và đóng góp

  1. Bảo tồn cấu trúc không gian trong VIB: Khắc phục nhược điểm lớn nhất của Variational Information Bottleneck truyền thống (vốn làm phẳng đặc trưng thành vector 1D) bằng việc áp dụng tích chập song song $3 \times 3$ 2D cấp độ mảnh (Patch-Level). Nhờ đó, thông tin hình thái và vị trí giải phẫu của tổn thương được giữ nguyên vẹn.
  2. Cơ chế trực quan hóa XAI đa thành phần: Khác với các hệ sinh thái CADx hiện hành chỉ cung cấp một ảnh heatmap chung gây nhiễu thị giác, hệ thống sinh ra đồng thời:
    • 01 bản đồ tổng hợp biểu diễn toàn bộ các vùng nghi ngờ tổn thương.
    • Các bản đồ Grad-CAM thành phần phân giải cao tương ứng chính xác với từng nhãn bệnh có xác suất dương tính.
  3. Tính tương thích mô-đun cao (Plug-and-Play): Module P-VIB được chứng minh có thể tích hợp liền mạch vào nhiều mạng xương sống CNN khác nhau (ResNet50, DenseNet121, Res2Net) mà không làm tăng đáng kể chi phí tính toán FLOPs.
  4. Đóng góp cho chuyển đổi số Y tế: Cung cấp cơ chế mở phân quyền Professor, cho phép các bác sĩ tuyến trên gán nhãn và phản hồi trực tiếp kết quả chẩn đoán sai lệch, tạo tiền đề xây dựng cơ chế học chủ động (Active Learning) cho hệ thống trong tương lai.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng lâm sàng

                         [Giao diện Web CADx]
[Bác sĩ tuyến dưới sàng lọc nhanh]               [Bác sĩ chuyên khoa xác nhận]
- Phát hiện sớm ca nguy kịch (Tràn khí)          - Kiểm tra ảnh Grad-CAM chi tiết
- Giảm thiểu bỏ sót tổn thương nhỏ               - Hiệu chỉnh kết luận & gửi Mail
  • Hỗ trợ sàng lọc tuyến cơ sở: Giúp các trung tâm y tế vùng sâu vùng xa phân loại nhanh mức độ khẩn cấp của bệnh nhân trong các ca cấp cứu hô hấp (như tràn khí màng phổi áp lực, phù phổi cấp).
  • Trợ lý đọc phim kép (Second Opinion): Đóng vai trò như một ý kiến độc lập hỗ trợ bác sĩ chẩn đoán hình ảnh giảm áp lực làm việc trong các ca trực đêm.

Yêu cầu triển khai hệ thống

  • Hạ tầng phần cứng tối thiểu:
    • Máy chủ AI (Inference Server): CPU Intel Xeon / AMD Ryzen 5, 16GB RAM, GPU NVIDIA GTX 1660 Ti 6GB VRAM trở lên.
    • Máy trạm Client: Máy tính văn phòng hoặc Tablet tiêu chuẩn có trình duyệt hỗ trợ WebGL/HTML5.
  • Hạ tầng phần mềm: Ubuntu 22.04 LTS, Docker Engine v24.0, Node.js runtime, Python virtual environment.
  • Phân tích hiệu quả kinh tế (ROI): Giảm thiểu trung bình 35% - 40% thời gian đọc phim ban đầu của bác sĩ, tối ưu hóa quy trình luân chuyển bệnh nhân tại các phòng khám X-quang quy mô vừa và lớn.

Hạn chế và hướng phát triển

  • Hạn chế kỹ thuật hiện tại:
    • Mô hình hiện tại tối ưu tốt nhất trên tư thế chụp PA (sau - trước); độ chính xác có thể giảm đối với tư thế chụp AP (trước - sau) tại giường bệnh hoặc tư thế chụp nghiêng (Lateral View).
    • Hệ thống đang được đóng gói dưới dạng máy chủ cục bộ (Localhost), chưa hoàn thiện chứng chỉ bảo mật cấp y tế (HIPAA/HL7 compliance) để đấu nối trực tiếp vào hệ thống PACS bệnh viện.
  • Hướng phát triển tương lai:
    • Tích hợp mô hình ngôn ngữ - thị giác lớn (Vision-Language Foundation Models như BiomedCLIP, LLaVA-Med) để tự động sinh văn bản báo cáo y khoa (Radiology Report Generation).
    • Mở rộng thuật toán phân đoạn ảnh (Semantic Segmentation) dựa trên kiến trúc SAM (Segment Anything Model) để khoanh vùng chính xác đường biên ranh giới khối u hoặc vùng thâm nhiễm.
    • Triển khai giải pháp Federated Learning nhằm huấn luyện mô hình phân tán an toàn trên dữ liệu đa trung tâm bệnh viện mà không làm lộ dữ liệu cá nhân bệnh nhân.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành: Cung cấp tài liệu tham khảo thực nghiệm chất lượng cao về việc kết hợp lý thuyết thắt cổ chai thông tin (Information Bottleneck) vào các bài toán Computer Vision trong y tế.
  • Kỹ sư AI & Lập trình viên: Nắm bắt kiến trúc tích hợp hệ thống đa nền tảng (Full-stack Web + AI Serving) xử lý dữ liệu ảnh y tế chuẩn mực qua Base64 và RESTful API.
  • Cơ sở Y tế & Phòng khám: Tiếp cận một giải pháp phần mềm hỗ trợ chẩn đoán với chi phí đầu tư ban đầu thấp, tính tương thích cao trên máy tính cá nhân.
  • Nhà nghiên cứu Y sinh: Nền tảng thực nghiệm chứng minh tính khả thi của việc sử dụng P-VIB để khắc phục hiện tượng Domain Shift trong hình ảnh học y khoa.

Câu hỏi thường gặp

1. Hệ thống yêu cầu cấu hình máy chủ như thế nào để vận hành thực tế?

Để đạt độ trễ phản hồi dưới 300ms/ảnh, hệ thống khuyến nghị sử dụng GPU có từ 6GB VRAM trở lên (chẳng hạn NVIDIA RTX 3060 hoặc T4 trên môi trường Cloud). Nếu vận hành trên môi trường chỉ có CPU (Intel Core i7 thế hệ 11 trở lên), thời gian suy luận sẽ dao động từ 1.2s - 2.0s/ảnh.

2. Mô hình có nguy cơ chẩn đoán nhầm giữa các bệnh lý có biểu hiện mờ tương tự nhau không?

Các bệnh lý có mật độ mờ tương đồng như Viêm phổi (Pneumonia), Đông đặc (Consolidation) và Thâm nhiễm (Infiltration) được phân tách hiệu quả nhờ module CSRA và P-VIB. Bằng cách tập trung vào ranh giới giải phẫu và mối tương quan kênh đặc trưng đa tỷ lệ, mô hình giảm thiểu hiện tượng nhầm lẫn giữa các hội chứng này (AUC đạt trên 0.79 - 0.81).

3. Làm thế nào để hệ thống tích hợp với các máy chụp X-quang hiện có tại bệnh viện?

Hiện tại hệ thống hỗ trợ tiếp nhận trực tiếp file ảnh thông dụng (PNG, JPG, DICOM chuyển đổi sang Base64). Trong lộ trình nâng cấp, backend sẽ được trang bị giao thức DICOMweb (WADO-RS/STOW-RS) để tự động nhận luồng ảnh trực tiếp từ máy chụp X-quang hoặc hệ thống PACS nội bộ.

4. Bác sĩ có thể hiệu chỉnh kết quả nếu mô hình dự đoán chưa chính xác không?

Có. Hệ thống tích hợp phân quyền Professor/Doctor cho phép chuyên gia y tế đánh dấu lại các nhãn bệnh chính xác, ghi chú chuyên môn và lưu trữ phiên bản chẩn đoán cuối cùng vào hệ thống trước khi xuất kết quả gửi tới người bệnh.

5. Chi phí triển khai và thời gian hoàn vốn (ROI) ước tính ra sao?

Nhờ sử dụng hoàn toàn các công nghệ và framework mã nguồn mở (PyTorch, Express, React, MongoDB), chi phí đầu tư thuần túy tập trung vào phần cứng máy trạm hoặc chi phí máy chủ đám mây (khoảng $30 - $50/tháng). Thời gian hoàn vốn có thể đạt được trong vòng 3 - 6 tháng thông qua việc nâng cao năng suất và chất lượng dịch vụ chẩn đoán.


Kết luận

Đồ án tốt nghiệp "Ứng dụng phương pháp học sâu trong mô hình chẩn đoán hình ảnh X-quang phổi" đã giải quyết thành công bài toán phân loại đa nhãn phức tạp trong chẩn đoán hình ảnh y sinh. Bằng việc đề xuất kiến trúc kết hợp sáng tạo giữa MLRFNet, cơ chế chú ý ECA, đầu phân loại CSRA và đặc biệt là module Patch-Level Variational Information Bottleneck (P-VIB), mô hình đã đạt chỉ số Mean AUC 0.854 trên 14 bệnh lý phổi, vượt trội so với các kiến trúc Baseline và thể hiện khả năng thích ứng cao khi chuyển miền dữ liệu.

Bên cạnh đóng góp về mặt học thuật, sản phẩm đã hoàn thiện trọn vẹn giải pháp ứng dụng Full-stack Web CADx với tính năng trực quan hóa Grad-CAM đa tầng chi tiết, mang lại giá trị thực tiễn cao cho công tác hỗ trợ quyết định lâm sàng. Đây là bước đệm vững chắc hướng tới việc nghiên cứu và ứng dụng các hệ thống AI y tế an toàn, minh bạch và hiệu quả trong tương lai.