Giới thiệu dự án

Bối cảnh và thực trạng y tế

Đại dịch COVID-19 do chủng virus SARS-CoV-2 gây ra đã tạo nên một cuộc khủng hoảng y tế toàn cầu chưa từng có, với hơn 283 triệu ca nhiễm và 5,41 triệu ca tử vong được ghi nhận đến cuối năm 2021. Mặc dù xét nghiệm sinh học phân tử RT-PCR (Reverse Transcription Polymerase Chain Reaction) được coi là tiêu chuẩn vàng, phương pháp này đòi hỏi thời gian xử lý từ vài giờ đến vài ngày, đồng thời tạo ra gánh nặng lớn cho các phòng xét nghiệm khi số lượng ca nhiễm tăng vọt.

Trong khi đó, chụp X-quang ngực (Chest X-Ray - CXR) là kỹ thuật chẩn đoán hình ảnh phổ biến, chi phí thấp, cho kết quả chỉ trong vài phút. Tuy nhiên, tổn thương phổi do COVID-19 (chủ yếu là dạng mờ kính mờ - ground-glass opacities và đông đặc phổi - consolidation) có biểu hiện hình ảnh tương đồng lớn với các bệnh viêm phổi do vi khuẩn hoặc virus khác. Điều này dẫn đến sự quá tải và nguy cơ sai sót cao cho các bác sĩ chẩn đoán hình ảnh khi phải đánh giá hàng trăm phim chụp mỗi ngày.

       +--------------------+      +-----------------------------------------+
       | Ảnh X-quang (CXR)  | ---> | Hai nhánh xử lý độc lập (Two-Stage)     |
       | Định dạng: DICOM   |      | 1. Study-Level: Phân loại 4 nhóm bệnh   |
       +--------------------+      | 2. Image-Level: Định vị Bounding Boxes  |
                                   +-----------------------------------------+
                                                        |
                                                        v
                                   +-----------------------------------------+
                                   | Hậu xử lý & Ensemble (WBF + Averaging)  |
                                   | Output: Xác suất bệnh + Tọa độ tổn thương|
                                   +-----------------------------------------+

Vấn đề nghiên cứu cụ thể

  1. Độ biến thiên lớn của tổn thương: Dấu hiệu bệnh phân bố rải rác, đa ổ, không đồng nhất về kích thước và ranh giới giải phẫu.
  2. Mất cân bằng dữ liệu nghiêm trọng: Phân bổ các nhóm bệnh lý có độ lệch lớn giữa các lớp (lớp Typical chiếm áp đảo so với Atypical).
  3. Thách thức dữ liệu DICOM: Ảnh y tế DICOM 16-bit có kích thước lớn, chứa nhiều thông tin nhiễu phi hình ảnh và yêu cầu chuẩn hóa windowing/leveling phức tạp.

Mục tiêu của đề tài

  1. Xây dựng pipeline tiền xử lý và chuẩn hóa dữ liệu ảnh y tế DICOM sang PNG tối ưu cho huấn luyện mạng nơ-ron sâu.
  2. Thiết kế và huấn luyện hệ thống phân loại cấp độ ca bệnh (Study-level) gồm 4 nhóm: Negative for Pneumonia, Typical Appearance, Indeterminate Appearance, Atypical Appearance.
  3. Thiết kế và huấn luyện hệ thống định vị vùng tổn thương (Image-level) để xuất tọa độ bounding box các đám mờ trên phổi.
  4. Nghiên cứu và áp dụng kỹ thuật hợp nhất hộp giới hạn có trọng số (Weighted Boxes Fusion - WBF) và ensemble mô hình nhằm tối ưu hóa chỉ số mAP.
  5. Triển khai ứng dụng thử nghiệm trên giao diện Web hỗ trợ trực quan hóa kết quả chẩn đoán cho nhân viên y tế.

Giải pháp và kết quả kỳ vọng

Đề tài áp dụng kiến trúc hai giai đoạn tách biệt (Decoupled Two-Stage Approach) kết hợp kỹ thuật đa mô hình (Ensemble Learning). Kết quả kỳ vọng đạt chỉ số mAP@0.5 vượt mức 0.60 trên tập kiểm thử nội bộ, thời gian suy luận dưới 150ms/ảnh, đáp ứng tiêu chuẩn hỗ trợ chẩn đoán thời gian thực.


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

Phân tích hiện trạng và khoảng trống công nghệ

Tiêu chí Phương pháp RT-PCR Phương pháp CXR Truyền thống Mô hình Deep Learning Đề xuất
Thời gian trả kết quả 4 - 24 giờ 15 - 30 phút (chờ bác sĩ đọc) < 1 giây (suy luận tức thì)
Khả năng định vị Không (chỉ định tính) Phụ thuộc chủ quan bác sĩ Xuất tọa độ Bounding Box chính xác
Độ phức tạp vận hành Hóa chất, phòng LAB chuẩn Đòi hỏi bác sĩ chuyên khoa sâu Tích hợp trực tiếp vào hệ thống PACS
Khả năng mở rộng Giới hạn theo sinh phẩm Dễ quá tải nhân lực y tế Tự động hóa hàng loạt không giới hạn

Phân tích yêu cầu hệ thống theo chuẩn MoSCoW

  • Must have: Tiền xử lý DICOM sang PNG giữ nguyên tỉ lệ khung hình; phân loại 4 lớp bệnh lý study-level; phát hiện bounding box tổn thương image-level; thuật toán WBF hợp nhất kết quả.
  • Should have: Áp dụng K-Fold Cross Validation ($k=5$); kiểm nghiệm đa độ phân giải ($512\times512$ và $1024\times1024$); kỹ thuật cân bằng mẫu dữ liệu.
  • Could have: Giao diện Web Client tải ảnh và xem visual heatmap/bounding box; xuất báo cáo PDF tự động.
  • Won't have: Khả năng chẩn đoán phân biệt trên ảnh CT-Scan 3D; tích hợp hệ thống bệnh viện qua chuẩn giao tiếp HL7/FHIR trong pha thử nghiệm.

Thiết kế kiến trúc hệ thống

+-----------------------------------------------------------------------------------+
|                              KIẾN TRÚC TỔNG THỂ HỆ THỐNG                          |
+-----------------------------------------------------------------------------------+
|  [Input: DICOM Image] ---> [Preprocessing: Rescale Slope/Intercept, 8-bit Convert]|
|                                      |                                            |
|                  +-------------------+-------------------+                        |
|                  |                                       |                        |
|                  v                                       v                        |
|       [STUDY-LEVEL ENSEMBLE]                  [IMAGE-LEVEL ENSEMBLE]              |
|   - EfficientNet-B0 (512x512)             - YOLOv5s (512x512)                     |
|   - EfficientNet-B7 (512x512)             - YOLOv5m (512x512)                     |
|   - EfficientNet-B7 (1024x1024)           - YOLOv5x (512x512)                     |
|   - EfficientNet-B5 (1024x1024)           - EfficientDet-D0 (512x512)             |
|   - EfficientNetV2-L (512x512)            - EfficientDet-D3 (512x512)             |
|                  |                                       |                        |
|                  v                                       v                        |
|       [Soft-Voting / Averaging]               [Weighted Boxes Fusion (WBF)]       |
|                  |                                       |                        |
|                  +-------------------+-------------------+                        |
|                                      |                                            |
|                                      v                                            |
|       [Output: 4-Class Probability Distribution + Fused Bounding Boxes]           |
+-----------------------------------------------------------------------------------+

Technology Stack và phiên bản cụ thể

  • Ngôn ngữ lập trình: Python 3.8.10
  • Deep Learning Frameworks: PyTorch 1.9.0, Torchvision 0.10.0, CUDA 11.1 / cuDNN 8.0.5
  • Computer Vision & Object Detection: YOLOv5 (v5.0 - Ultralytics), EfficientNet-PyTorch 0.7.1, timm 0.4.12
  • Xử lý ảnh & Dữ liệu y tế: PyDICOM 2.2.2, OpenCV-Python 4.5.3.56, Albumentations 1.0.3
  • Thư viện Ensemble: Ensemble-Boxes 1.0.6 (Weighted Box Fusion)
  • Web Serving & UI: Flask 2.0.1, Bootstrap 5.0, Gunicorn 20.1.0

Phương pháp nghiên cứu và phân rã kỹ thuật

1. Nguyên lý Compound Scaling của EfficientNet

EfficientNet tối ưu hóa đồng thời 3 chiều không gian mạng: chiều sâu ($d$), chiều rộng ($w$), và độ phân giải ($r$) thông qua hệ số phức hợp $\phi$: $$\text{depth: } d = \alpha^\phi, \quad \text{width: } w = \beta^\phi, \quad \text{resolution: } r = \gamma^\phi$$ $$\text{s.t.} \quad \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 \quad \text{và} \quad \alpha \ge 1, \beta \ge 1, \gamma \ge 1$$ Nhờ nguyên lý này, EfficientNet-B7 đạt độ chính xác tương đương các mạng ResNet kích thước lớn nhưng giảm số lượng tham số tới 8.4 lần và giảm số phép tính FLOPs tới 6.1 lần.

2. Thuật toán Weighted Boxes Fusion (WBF)

Thay vì loại bỏ hoàn toàn các hộp có chỉ số IoU cao như Non-Maximum Suppression (NMS), WBF sử dụng trung bình có trọng số theo điểm tin cậy (Confidence Score $C$) của tất cả các dự đoán trong cùng một cụm để tính tọa độ hộp tối ưu:

$$C = \frac{\sum_{i=1}^T C_i}{T} \times \frac{\min(T, N)}{N}$$

$$X_{1,2} = \frac{\sum_{i=1}^T C_i \cdot X_{1,2}^i}{\sum_{i=1}^T C_i}, \quad Y_{1,2} = \frac{\sum_{i=1}^T C_i \cdot Y_{1,2}^i}{\sum_{i=1}^T C_i}$$

Trong đó: $T$ là số lượng bounding box trong cụm, $N$ là tổng số mô hình tham gia ensemble.


Implementation và kết quả

Quy trình phát triển và xử lý dữ liệu

Tập dữ liệu SIIM-FISABIO-RSNA COVID-19 Detection trên Kaggle chứa 6,054 ảnh huấn luyện với phân bổ chi tiết:

  • Typical Appearance: 2,855 ảnh (47.16%)
  • Negative for Pneumonia: 1,676 ảnh (27.68%)
  • Indeterminate Appearance: 1,049 ảnh (17.33%)
  • Atypical Appearance: 474 ảnh (7.83%)
import pydicom
import cv2
import numpy as np
from ensemble_boxes import weighted_boxes_fusion

def convert_dicom_to_array(path, target_size=(512, 512)):
    """
    Doc file DICOM y te, ap dung rescale intercept/slope va chuan hoa ve 8-bit RGB.
    """
    dicom = pydicom.read_file(path)
    data = dicom.pixel_array.astype(np.float32)
    
    # Xu ly Rescale Slope va Intercept neu co trong metadata
    if hasattr(dicom, 'RescaleSlope') and hasattr(dicom, 'RescaleIntercept'):
        data = data * dicom.RescaleSlope + dicom.RescaleIntercept
        
    # Chuyen doi sang dai gia tri [0, 255]
    data = (data - np.min(data)) / (np.max(data) - np.min(data) + 1e-6) * 255.0
    data = data.astype(np.uint8)
    
    # Fix anh bi dao nguoc phan cuc (MONOCHROME1)
    if hasattr(dicom, 'PhotometricInterpretation') and dicom.PhotometricInterpretation == "MONOCHROME1":
        data = np.amax(data) - data
        
    # Resize giu ty le va ghi sang khong gian 3 kenh
    resized = cv2.resize(data, target_size, interpolation=cv2.INTER_AREA)
    return cv2.cvtColor(resized, cv2.COLOR_GRAY2RGB)

def apply_wbf_ensemble(boxes_list, scores_list, labels_list, iou_thr=0.5, skip_box_thr=0.001):
    """
    Hop nhat bounding boxes tu cac model YOLOv5 va EfficientDet su dung WBF.
    """
    boxes, scores, labels = weighted_boxes_fusion(
        boxes_list, 
        scores_list, 
        labels_list, 
        weights=[2, 2, 3, 1, 1], # Trong so uu tien: YOLOv5x, YOLOv5m, YOLOv5s, EfficientDet-D3, D0
        iou_thr=iou_thr, 
        skip_box_thr=skip_box_thr
    )
    return boxes, scores, labels

Thử nghiệm và đánh giá chi tiết

Hệ thống đánh giá hiệu năng thông qua độ đo Mean Average Precision (mAP) tại ngưỡng giao cắt IoU = 0.5 (mAP@0.5) và nội suy 11 điểm:

$$\text{mAP} = \frac{1}{11} \sum_{r \in {0, 0.1, \dots, 1.0}} p_{\text{interp}}(r)$$

Bảng kết quả thực nghiệm mô hình Object Detection độc lập

Mô hình Backbone / Engine Kích thước ảnh Precision Recall mAP@0.5 Tốc độ suy luận (ms/ảnh)
YOLOv5s CSPDarknet-Small $512\times512$ 0.542 0.518 0.528 8.2 ms
YOLOv5m CSPDarknet-Medium $512\times512$ 0.581 0.564 0.573 14.5 ms
YOLOv5x CSPDarknet-XLarge $512\times512$ 0.624 0.598 0.612 28.6 ms
EfficientDet-D0 EfficientNet-B0 + BiFPN $512\times512$ 0.512 0.485 0.496 18.2 ms
EfficientDet-D3 EfficientNet-B3 + BiFPN $512\times512$ 0.563 0.541 0.552 34.1 ms

Đánh giá hiệu quả chiến lược kết hợp (Ensemble & Fusion)

Chiến lược kết hợp Mô hình thành phần tham gia Độ phân giải mAP@0.5 (Tập Validation)
Single Best Model YOLOv5x $512\times512$ 0.6120
YOLOv5 Family WBF YOLOv5s + YOLOv5m + YOLOv5x $512\times512$ 0.6385 (+2.65%)
EfficientDet Family WBF EfficientDet-D0 + EfficientDet-D3 $512\times512$ 0.5790
Multi-Scale Study Model EfficientNet (B0, B5, B7, V2L) $512 + 1024$ ROC-AUC: 0.8842 (Classification)
Full Two-Stage Ensemble Tất cả 5 Study Models + 5 Image Detectors Đa tỷ lệ 0.6592 (+4.72%)

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

Các cải tiến kỹ thuật nổi bật

  1. Kiến trúc phân rã bài toán (Decoupling Architecture): Thay vì sử dụng một mạng Single-Stage gánh cả hai nhiệm vụ phân loại thể trạng và định vị tổn thương, việc tách riêng Study-Model và Image-Model giúp mỗi nhánh mạng hội tụ tối ưu trên không gian hàm mục tiêu riêng.
  2. Khai thác sức mạnh Compound Scaling ở đa độ phân giải: Thử nghiệm thành công việc nạp ảnh độ phân giải $1024\times1024$ trên các backbone hạng nặng (EfficientNet-B5, EfficientNet-B7), giúp trích xuất các dải kính mờ kích thước siêu nhỏ mà ảnh $512\times512$ thường làm mất chi tiết.
  3. Ứng dụng WBF thay thế hoàn toàn NMS truyền thống: NMS thường triệt tiêu các bounding box trùng lặp do nhận định là dự đoán dư thừa. Tuy nhiên, tổn thương phổi thường lan tỏa và lồng ghép; WBF tận dụng toàn bộ thông tin từ các box dự đoán để tính trung bình tọa độ có trọng số, cải thiện mAP tổng thể thêm 4.72%.
+------------------------------------------------------------------------------------+
|                   SO SÁNH CƠ CHẾ HỢP NHẤT HỘP GIỚI HẠN (WBF VS NMS)                |
+------------------------------------------------------------------------------------+
|  NMS:  Box A (conf 0.9)  \                                                         |
|        Box B (conf 0.75)  --[IoU > 0.5]-->  LOẠI BỎ Box B, CHỈ GIỮ Box A           |
|        Box C (conf 0.6)  /                  (Mất thông tin từ mô hình B và C)      |
|                                                                                    |
|  WBF:  Box A (conf 0.9)  \                                                         |
|        Box B (conf 0.75)  --[Weighted Average]--> TẠO BOX MỚI:                     |
|        Box C (conf 0.6)  /                        Coord = (0.9*A + 0.75*B + 0.6*C)/|
|                                                           (0.9 + 0.75 + 0.6)       |
+------------------------------------------------------------------------------------+

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

Kịch bản ứng dụng trong quy trình y tế

Hệ thống được thiết kế dưới dạng Microservice, dễ dàng tích hợp vào hệ thống lưu trữ và truyền hình ảnh y tế PACS (Picture Archiving and Communication System) của bệnh viện:

  1. Phân luồng khẩn cấp (Triage System): Khi phòng chụp X-quang tiếp nhận hàng loạt ca chụp, hệ thống tự động quét và phân loại các ca có nguy cơ cao (Typical Appearance với xác suất > 85%), đẩy lên đầu danh sách chờ đọc của bác sĩ.
  2. Hỗ trợ bác sĩ sơ bộ (Second Opinion): Hệ thống vẽ tự động các bounding box khoanh vùng tổn thương lên màn hình DICOM Viewer, giảm 40% thời gian tìm kiếm tổn thương khu trú.
+---------------+      +-------------------+      +-------------------+      +---------------+
| Máy Chụp CXR  | ---> | PACS Server DICOM | ---> | AI Inference Node | ---> | Bác Sĩ CĐHA   |
| (Phòng X-Quang|      | (Kho lưu trữ ảnh) |      | (Web/REST API)    |      | (Màn hình đọc)|
+---------------+      +-------------------+      +-------------------+      +---------------+

Yêu cầu phần cứng và thông số triển khai

  • Môi trường Server: Linux Ubuntu 20.04 LTS, Docker Container Engine.
  • Tài nguyên tối thiểu (CPU Mode): Intel Xeon 8 Cores, 32GB RAM (Thời gian suy luận: ~1.2s/ảnh).
  • Tài nguyên đề xuất (GPU Acceleration): NVIDIA Tesla T4 hoặc RTX 3090 24GB VRAM (Thời gian suy luận: ~85ms/ảnh, phục vụ đồng thời 25 request/giây).

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

Hạn chế kỹ thuật hiện tại

  • Tài nguyên tính toán khi Ensemble: Việc kết hợp đồng thời 5 mạng phân loại và 5 mạng nhận dạng đòi hỏi tài nguyên GPU lớn, khó triển khai trên các thiết bị biên (Edge Devices).
  • Dữ liệu nhãn giới hạn: Tập dữ liệu SIIM-FISABIO-RSNA chỉ gồm hơn 6,000 ảnh từ một số nguồn bệnh viện nhất định, chưa bao phủ đa dạng các biến thể giải phẫu của nhiều chủng tộc khác nhau.

Hướng phát triển tiếp theo

  1. Áp dụng kỹ thuật Chưng cất tri thức (Knowledge Distillation): Nén toàn bộ tri thức của cụm Ensemble 10 mô hình vào một mô hình đơn lẻ duy nhất (như YOLOv8 hoặc Co-DETR) để tăng tốc độ xử lý gấp 5 lần.
  2. Mở rộng mô hình đa phương thức (Multimodal Learning): Kết hợp phân tích hình ảnh CXR với dữ liệu bảng (chỉ số xét nghiệm máu, SpO2, bệnh lý nền) để đưa ra dự báo mức độ tiến triển nặng của bệnh nhân.

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

  • Sinh viên chuyên ngành CNTT & Khoa học Dữ liệu: Tiếp cận mã nguồn thực tế về quy trình xử lý ảnh y tế chuẩn DICOM, kỹ thuật áp dụng Compound Scaling và thuật toán WBF trong các cuộc thi Kaggle đỉnh cao.
  • Kỹ sư AI / Computer Vision: Tham khảo kiến trúc giải pháp hai giai đoạn (Decoupled Two-Stage), chiến lược phân chia 5-Fold Cross Validation và pipeline tối ưu hóa mAP trên dữ liệu mất cân bằng.
  • Cơ sở y tế & Bệnh viện: Sở hữu giải pháp phần mềm mã nguồn mở có khả năng tích hợp linh hoạt, giúp tăng tốc độ chẩn đoán và giảm áp lực trực chiến cho đội ngũ bác sĩ trong các đợt bùng phát dịch hô hấp.
  • Nhóm nghiên cứu Y sinh (Biomedical Researchers): Sử dụng các kết quả thực nghiệm đối sánh làm baseline vững chắc cho các nghiên cứu mở rộng về các bệnh lý phổi khác như Lao (Tuberculosis), Viêm phổi kẽ, hay Ung thư phổi.

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

1. Cần cấu hình phần cứng tối thiểu nào để vận hành hệ thống?

Để triển khai phiên bản thử nghiệm đầy đủ (Full Ensemble), hệ thống yêu cầu GPU tối thiểu 8GB VRAM (như NVIDIA RTX 2060 trở lên). Nếu triển khai ở môi trường sản xuất tối ưu (chỉ sử dụng model đơn lẻ YOLOv5m), hệ thống có thể chạy ổn định trên CPU máy chủ 4 Cores với RAM 16GB.

2. Weighted Boxes Fusion (WBF) khác biệt thế nào so với Soft-NMS?

Soft-NMS chỉ giảm điểm tin cậy của các bounding box lân cận có IoU cao thay vì xóa bỏ hoàn toàn, nhưng tọa độ hộp cuối cùng vẫn giữ nguyên từ một dự đoán duy nhất. WBF tính toán lại hoàn toàn tọa độ hộp mới bằng cách lấy trung bình có trọng số của toàn bộ các hộp thành viên, mang lại độ chính xác ranh giới vượt trội.

3. Hệ thống xử lý thế nào đối với các ảnh X-quang không có bất thường?

Nhánh Study-Model sẽ dự đoán xác suất cao ở nhãn Negative for Pneumonia. Đồng thời, nhánh Image-Model nếu không phát hiện cụm bounding box nào vượt qua ngưỡng tin cậy $C \ge 0.25$, hệ thống sẽ kết luận ảnh âm tính và không hiển thị hộp giới hạn trên giao diện.

4. Tại sao cần chuyển đổi từ định dạng DICOM sang PNG trong quá trình huấn luyện?

Ảnh DICOM 16-bit nguyên bản chứa dải giá trị Hounsfield Unit rộng và dung lượng nặng (thường 10-30MB/ảnh). Chuyển đổi sang 8-bit PNG sau khi áp dụng thuật toán cân bằng độ tương phản giúp giảm dung lượng tập dữ liệu đi hơn 85%, tăng tốc độ I/O đĩa và nạp tensor vào GPU nhanh hơn 4-6 lần.

5. Khả năng mở rộng của mô hình cho các bệnh lý phổi khác ra sao?

Kiến trúc hoàn toàn mang tính module. Để phát hiện các bệnh khác (như tràn dịch màng phổi, u phổi), chỉ cần thay đổi số lượng lớp đầu ra tại Head của Study-Model và tái huấn luyện bộ dữ liệu có nhãn bounding box tương ứng mà không cần thay đổi pipeline tiền xử lý hay thuật toán WBF cốt lõi.


Kết luận

Khóa luận tốt nghiệp "Xác định vị trí bất thường do COVID-19 trên ảnh X-quang ngực" của nhóm sinh viên Võ Quốc An và Thái Hoàng Nhân (Đại học Công nghệ Thông tin - ĐHQG TP.HCM) đã giải quyết trọn vẹn bài toán ứng dụng Trí tuệ nhân tạo trong y tế thông qua các đóng góp chính:

  • Thiết kế thành công kiến trúc xử lý 2 giai đoạn kết hợp các mô hình tiên tiến nhất: Họ mạng EfficientNet cho phân loại tổng thể và YOLOv5 / EfficientDet cho định vị tổn thương.
  • Khai phá hiệu quả thuật toán Weighted Boxes Fusion (WBF), đẩy chỉ số mAP@0.5 lên mức 0.6592, vượt trội 4.72% so với mô hình đơn lẻ mạnh nhất.
  • Xây dựng hoàn chỉnh luồng xử lý từ dữ liệu y tế gốc DICOM đến sản phẩm web demo trực quan, chứng minh tính khả thi cao trong triển khai thực tế.

Mô hình là nền tảng vững chắc để tiếp tục phát triển các hệ sinh thái AI hỗ trợ chẩn đoán hình ảnh toàn diện, góp phần hiện đại hóa cơ sở hạ tầng công nghệ y tế trong tương lai.