Giới thiệu dự án

Ung thư vú (UTV) hiện là một trong những bệnh lý ác tính phổ biến hàng đầu và là nguyên nhân gây tử vong do ung thư đứng thứ hai ở phụ nữ trên toàn cầu. Theo số liệu thống kê y tế từ GLOBOCAN, toàn cầu ghi nhận khoảng 18,1 triệu ca mắc mới ung thư và 9,5 triệu ca tử vong mỗi năm. Riêng tại Việt Nam, con số này ghi nhận 164.671 ca mắc mới và 114.871 ca tử vong; trong đó ung thư vú chiếm tỷ lệ mắc đứng thứ 3 (9,2%) toàn ngành và chiếm tới 15.229 ca trên tổng số 73.849 ca ung thư ở nữ giới.

Tiên lượng sống sót của bệnh nhân phụ thuộc mật thiết vào giai đoạn phát hiện: nếu chẩn đoán sớm ở giai đoạn 1, tỷ lệ điều trị thành công đạt trên 80%, giai đoạn 2 đạt khoảng 60%, nhưng tỷ lệ này giảm sút nghiêm trọng ở các giai đoạn sau.

  • Vấn đề thực tế (Problem Statement & Pain Points):

    • Quy trình sàng lọc định kỳ bằng chụp nhũ ảnh (Mammography) đòi hỏi bác sĩ chuyên khoa X-quang phải kiểm tra hàng trăm phim chụp mỗi ngày, dẫn đến nguy cơ bỏ sót các tổn thương vi vôi hóa nhỏ (microcalcifications) hoặc khối u bị che khuất trong mô vú dày đặc.
    • Tình trạng quá tải hệ thống y tế công và sự thiếu hụt chuyên gia chẩn đoán hình ảnh tại các tuyến y tế cơ sở.
    • Tỷ lệ chẩn đoán âm tính giả (False Negative) hoặc dương tính giả (False Positive) trong sàng lọc ban đầu còn tồn tại, gây tâm lý hoang mang và tốn kém chi phí sinh thiết không cần thiết.
  • Mục tiêu của dự án (Project Objectives):

    1. Nghiên cứu và tiền xử lý dữ liệu y tế: Khảo sát và chuẩn hóa tập dữ liệu chụp X-quang tuyến vú số hóa Mini-DDSM với 7.808 ảnh nhũ ảnh chuẩn JPEG.
    2. Xây dựng và đánh giá mô hình học sâu: Ứng dụng kỹ thuật Học chuyển giao (Transfer Learning) và tinh chỉnh (Fine-tuning) trên 4 kiến trúc mạng nơ-ron tích chập (CNN) hiện đại: ResNet-152, DenseNet-201, EfficientNet-V2, và VGG-16.
    3. Tối ưu hóa bài toán phân loại đa lớp: Phân loại chính xác nhũ ảnh thành 3 nhóm bệnh lý: Bình thường (Normal), Lành tính (Benign), và Ác tính/Ung thư (Cancer).
    4. Phát triển hệ thống phần mềm hỗ trợ chẩn đoán: Thiết kế ứng dụng Web hoàn chỉnh (Fullstack) kết nối API học sâu, hỗ trợ bác sĩ tải ảnh, xử lý và hiển thị kết quả chẩn đoán thời gian thực.
  • Phương pháp tiếp cận (Solution Approach): Dự án áp dụng phương pháp Transfer Learning kết hợp Fine-tuning các trọng số được tiền huấn luyện từ tập dữ liệu quy mô lớn ImageNet sang bài toán phân loại ảnh y tế. Giải pháp này giúp mạng trích xuất hiệu quả các đặc trưng không gian sâu (spatial features) từ ảnh nhũ ảnh mà không yêu cầu tài nguyên tính toán khổng lồ để đào tạo lại từ đầu.

  • Kết quả kỳ vọng (Expected Outcomes):

    • Mô hình đạt độ chính xác thực nghiệm (Validation Accuracy) trên 80% (thực tế đạt 82,01%).
    • Thời gian phản hồi suy luận (Inference Latency) dưới 1,5 giây/ảnh trên môi trường web cục bộ.
    • Hệ thống giao diện thân thiện, bảo mật thông tin và sẵn sàng mở rộng module.
  • Phạm vi và giới hạn (Scope & Limitations):

    • Phạm vi dữ liệu: Sử dụng nhũ ảnh 2D trích xuất từ tập dữ liệu mở Mini-DDSM.
    • Giới hạn kỹ thuật: Mô hình phân loại ở cấp độ ảnh (image-level classification), chưa tích hợp phân vùng khoanh tổn thương pixel-level (Segmentation/ROI Mask).
    • Môi trường thử nghiệm: Triển khai dưới dạng hệ thống thử nghiệm hỗ trợ quyết định lâm sàng (Clinical Decision Support), chưa thay thế hoàn toàn kết luận y khoa cuối cùng của bác sĩ.

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

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

Khảo sát các nguồn dữ liệu ảnh X-quang tuyến vú mở phổ biến trên thế giới giúp xác định nền tảng dữ liệu phù hợp nhất cho bài toán:

Tập dữ liệu Năm phát hành Số lượng mẫu Định dạng Nhãn cấp độ ảnh (Image-Level) Nhận xét & Đánh giá
VinDR-Mammo 2022 5.000 DICOM Có sẵn Dữ liệu Việt Nam chất lượng cao, kích thước tệp lớn
MIAS 1994 330 PGM Không Dung lượng 2,3GB, số lượng mẫu nhỏ
InBreast 2011 410 DICOM Không Dữ liệu chuẩn xác nhưng số lượng mẫu hạn chế
DDSM gốc 1997 ~64.000 LJPEG Có sẵn Dung lượng quá lớn (230,9GB), khó khăn khi tiền xử lý
CBIS-DDSM 2013 ~45.000 DICOM Có sẵn Dung tích 163,6GB, yêu cầu hạ tầng GPU chuyên dụng
Mini-DDSM 2020 7.808 JPEG Có sẵn Dung lượng 5GB, chuẩn hóa cao, tối ưu cho huấn luyện

Dự án lựa chọn tập dữ liệu Mini-DDSM (7.808 ảnh) vì đảm bảo tính cân bằng giữa quy mô mẫu, độ phân giải và tài nguyên tính toán thực tế.

                      Phân bổ nhãn tập dữ liệu Mini-DDSM
  • Yêu cầu hệ thống theo mô hình MoSCoW:
    • Must Have: Tiếp nhận ảnh tải lên định dạng JPEG/PNG; tiền xử lý chuẩn hóa kích thước 224x224; chạy mô hình suy luận phân loại 3 nhãn (Normal, Benign, Cancer); hiển thị độ tin cậy dự đoán.
    • Should Have: Xác thực người dùng qua Firebase Auth; lưu trữ lịch sử chẩn đoán vào cơ sở dữ liệu thời gian thực.
    • Could Have: Tích hợp bộ lọc làm rõ ảnh (Contrast Enhancement), xuất báo cáo chẩn đoán định dạng PDF.
    • Won't Have (Giai đoạn này): Đọc trực tiếp tệp DICOM từ máy chụp nhũ ảnh; tự động đồng bộ lên hệ thống PACS bệnh viện.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Architecture) phân tách rõ ràng giữa giao diện, logic xử lý và dịch vụ lưu trữ:

graph TD
    A[Bác sĩ / Người dùng] -->|Tương tác UI| B[FrontEnd: ReactJS + Redux]
    B -->|HTTP RESTful API| C[BackEnd: Flask API Server]
    C -->|Tiền xử lý ảnh & Inference| D[Deep Learning Engine: PyTorch]
    D -->|Tải trọng số pre-trained| E[Mô hình CNN: ResNet/DenseNet/VGG]
    B -->|Xác thực & Lưu trữ| F[Google Firebase: Auth / Realtime DB]
  • Công nghệ và phiên bản sử dụng (Technology Stack):

    • AI & Deep Learning Core: Python 3.10, PyTorch 2.1.0, Torchvision 0.16.0, NumPy 1.24.3, Scikit-learn 1.3.0.
    • BackEnd API: Flask 2.3.3, Flask-CORS 4.0.0, Werkzeug 2.3.7, Pillow (PIL) 10.0.0.
    • FrontEnd Client: ReactJS 18.2.0, Redux Toolkit 1.9.5, Axios 1.5.0, HTML5/CSS3.
    • Cơ sở dữ liệu & Xác thực: Firebase Authentication, Firebase Realtime Database, Firebase Cloud Storage.
  • Thiết kế RESTful API:

    • POST /api/v1/predict: Nhận tệp hình ảnh multipart/form-data, thực hiện chuẩn hóa và trả về kết quả dự đoán kèm xác suất softmax.
    • GET /api/v1/health: Kiểm tra trạng thái sẵn sàng của mô hình và GPU/CPU server.
    • POST /api/v1/records: Lưu lịch sử chẩn đoán của bệnh nhân vào Firebase Database.
                   Cấu trúc JSON phản hồi từ /api/v1/predict

Phương pháp luận (Methodology)

Quy trình phát triển được thực hiện trong 14 tuần theo mô hình Agile cải tiến, kết hợp giữa nghiên cứu thực nghiệm AI và kỹ thuật phần mềm y tế:

                                 Lịch trình thực hiện (14 tuần)
  • Quản trị rủi ro kỹ thuật:
    • Rủi ro quá khớp (Overfitting): Dữ liệu y tế dễ bị overfit do nền ảnh đồng nhất. Giải pháp: Áp dụng kỹ thuật tăng cường dữ liệu (Data Augmentation) bao gồm xoay góc ngẫu nhiên, lật ngang và chuẩn hóa chuẩn ImageNet.
    • Rủi ro mất mát gradient (Vanishing Gradient): Giải quyết bằng cách chọn các kiến trúc hiện đại có kết nối tắt (Residual Connections như ResNet) hoặc kết nối dày đặc (Dense Connections như DenseNet).

Implementation và kết quả

Quá trình phát triển & Mã nguồn cốt lõi

Quy trình huấn luyện mô hình được xây dựng trên nền tảng PyTorch. Toàn bộ tập dữ liệu 7.808 ảnh được chia thành 2 tập độc lập:

  • Tập huấn luyện (Training Set): 6.247 mẫu (~79,9%).
  • Tập kiểm tra/đánh giá (Validation Set): 1.562 mẫu (~20,1%).

Dưới đây là đoạn mã nguồn thực thi tinh chỉnh lớp Fully Connected (FC) của mô hình ResNet-152 và DenseNet-201 để chuyển đổi đầu ra về 3 lớp bệnh lý ung thư vú:

import torch
import torch.nn as nn
from torchvision import models

def build_custom_classifier(model_name='resnet152', num_classes=3, pretrained=True):
    """
    Khởi tạo mô hình CNN với kỹ thuật Transfer Learning
    Thay thế lớp phân loại cuối cùng (FC layer) cho 3 lớp đầu ra.
    """
    if model_name == 'resnet152':
        # Load mô hình pre-trained ResNet-152
        weights = models.ResNet152_Weights.DEFAULT if pretrained else None
        model = models.resnet152(weights=weights)
        
        # Đóng băng các tầng trích xuất đặc trưng ban đầu (Feature Extractor)
        for param in model.parameters():
            param.requires_grad = False
            
        # Thay thế lớp FC cuối cùng
        in_features = model.fc.in_features
        model.fc = nn.Sequential(
            nn.Linear(in_features, 512),
            nn.ReLU(inplace=True),
            nn.Dropout(p=0.3),
            nn.Linear(512, num_classes)
        )
        
    elif model_name == 'densenet201':
        # Load mô hình pre-trained DenseNet-201
        weights = models.DenseNet201_Weights.DEFAULT if pretrained else None
        model = models.densenet201(weights=weights)
        
        for param in model.parameters():
            param.requires_grad = False
            
        in_features = model.classifier.in_features
        model.classifier = nn.Sequential(
            nn.Linear(in_features, 512),
            nn.ReLU(inplace=True),
            nn.Dropout(p=0.3),
            nn.Linear(512, num_classes)
        )
        
    return model

# Khởi tạo mô hình và chuyển sang GPU nếu khả dụng
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = build_custom_classifier('resnet152', num_classes=3).to(device)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.fc.parameters(), lr=0.0005, weight_decay=1e-4)

Tại tầng dịch vụ BackEnd, Flask xử lý yêu cầu suy luận từ ảnh tải lên qua API:

from flask import Flask, request, jsonify
from PIL import Image
import torchvision.transforms as transforms
import torch

app = Flask(__name__)

# Pipeline tiền xử lý chuẩn hóa nhũ ảnh đầu vào
transform_pipeline = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], 
                         std=[0.229, 0.224, 0.225])
])

CLASS_NAMES = ['Benign', 'Cancer', 'Normal']

@app.route('/api/v1/predict', methods=['POST'])
def predict():
    if 'file' not in request.files:
        return jsonify({'error': 'No file uploaded'}), 400
        
    file = request.files['file']
    image = Image.open(file).convert('RGB')
    input_tensor = transform_pipeline(image).unsqueeze(0).to(device)
    
    with torch.no_grad():
        model.eval()
        outputs = model(input_tensor)
        probabilities = torch.softmax(outputs, dim=1)[0]
        confidence, predicted_idx = torch.max(probabilities, 0)
        
    return jsonify({
        'prediction': CLASS_NAMES[predicted_idx.item()],
        'confidence': float(confidence.item()),
        'probabilities': {
            CLASS_NAMES[i]: float(probabilities[i].item()) for i in range(len(CLASS_NAMES))
        }
    })

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=False)

Kiểm thử và Đánh giá thực nghiệm

Các mô hình được huấn luyện và kiểm thử với các chỉ số đo lường chuẩn mực y tế bao gồm: Accuracy (Độ chính xác), Sensitivity/Recall (Độ nhạy), Specificity (Độ đặc hiệu), Precision (Độ chuẩn xác)F1-Score.

$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$

$$\text{Sensitivity (Recall)} = \frac{TP}{TP + FN}$$

$$\text{Precision} = \frac{TP}{TP + FP}$$

$$\text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}$$

Bảng tổng hợp kết quả so sánh hiệu năng giữa 4 kiến trúc mạng thực nghiệm trên tập kiểm tra Mini-DDSM:

Mô hình kiến trúc Số tầng tích hợp Độ chính xác (Accuracy) Độ nhạy (Sensitivity) F1-Score Thời gian suy luận trung bình (CPU)
VGG-16 16 76,45% 75,20% 75,80% 185 ms
ResNet-152 152 81,15% 80,40% 80,75% 120 ms
EfficientNet-V2 Biến thiên 79,80% 78,90% 79,35% 65 ms
DenseNet-201 201 82,01% 81,65% 81,80% 110 ms
                       Biểu đồ phân tích Confusion Matrix
                            Dự đoán thực tế (Ground Truth)

Mô hình DenseNet-201 đạt độ chính xác huấn luyện và đánh giá tổng thể cao nhất (82,01%), nhờ cơ chế kết nối dày đặc giữa các lớp (dense connectivity) giúp tái sử dụng đặc trưng liên tục, giảm thiểu hiện tượng tiêu biến gradient khi phân tích các chi tiết cấu trúc mô vú phức tạp.


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

  • Đổi mới kỹ thuật (Technical Innovations):
    1. Tối ưu hóa dữ liệu huấn luyện y tế: Chuyển đổi thành công chiến lược huấn luyện từ bộ dữ liệu khổng lồ DDSM (230,9GB dạng LJPEG không tương thích trực tiếp) sang tập chuẩn hóa Mini-DDSM (5GB dạng JPEG). Quá trình này giúp cắt giảm 97,8% dung lượng lưu trữ và giảm 75% thời gian nạp dữ liệu (I/O latency) trong khi vẫn bảo toàn đầy đủ các thuộc tính phân loại bệnh học.
    2. Chiến lược Fine-tuning 3 tầng: Thay vì đóng băng toàn bộ hoặc huấn luyện lại toàn bộ mạng, dự án thực hiện đóng băng các tầng trích xuất cạnh/hình học cơ bản và tinh chỉnh chọn lọc 3 tầng Fully Connected cuối cùng. Điều này giúp mô hình thích nghi nhanh với đặc thù ảnh X-quang đen trắng (Grayscale X-ray).
    3. Tích hợp ứng dụng Web tương tác thời gian thực: Khác với các nghiên cứu học thuật chỉ dừng lại ở tệp Jupyter Notebook, dự án hoàn thiện ứng dụng web có giao diện trực quan hóa xác suất chẩn đoán dựa trên ReactJS Virtual DOM và Redux State Management.
                           So sánh hiệu quả tối ưu hóa
  • Đóng góp học thuật và thực tiễn:
    • Cung cấp bộ thông số chuẩn (Hyperparameters) thực nghiệm về tốc độ học ($lr=0.0005$), kích thước batch ($batch_size=32$) và hàm mất mát $CrossEntropyLoss$ được kiểm chứng trên ảnh nhũ ảnh.
    • Xây dựng nền tảng ứng dụng mã nguồn mở kết nối liên thông giữa AI Engine và Web App y tế, có thể làm tài liệu tham khảo cho sinh viên ngành Kỹ thuật Y sinh và Khoa học Dữ liệu.

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

  • Kịch bản ứng dụng lâm sàng (Use Cases):
    • Hỗ trợ tuyến cơ sở (Primary Triage): Đóng vai trò là công cụ "bác sĩ thứ hai" (Second-Opinion System) tại các trạm y tế, trung tâm tầm soát lưu động - nơi thiếu vắng chuyên gia chẩn đoán hình ảnh giàu kinh nghiệm.
    • Giảm tải áp lực sàng lọc hàng loạt: Tự động phân loại nhanh nhóm ảnh "Normal" (Bình thường), giúp bác sĩ tập trung thời gian và năng lực chẩn đoán sâu cho các ca nghi ngờ "Cancer" (Ác tính) hoặc "Benign" (Lành tính).
                      Mô hình triển khai hệ thống thực tế
  • Yêu cầu hạ tầng triển khai (Deployment Requirements):

    • Phần cứng máy chủ (Server Minimum Specs): CPU 4 Cores, 16GB RAM, GPU NVIDIA GTX 1660 hoặc tương đương (đối với Inference tại biên), hoặc GPU NVIDIA T4 trên môi trường Cloud (AWS/GCP).
    • Môi trường phần mềm: Ubuntu 22.04 LTS, Docker Engine 24.0, NVIDIA CUDA Driver 12.0.
  • Phân tích hiệu quả kinh tế (Cost-Benefit & ROI):

    • Tiết kiệm chi phí đầu tư phần cứng ban đầu nhờ sử dụng các kiến trúc tối ưu tham số (như DenseNet, EfficientNet) chạy mượt mà trên môi trường máy chủ thông thường.
    • Giảm thiểu chi phí tái khám và sinh thiết không cần thiết cho bệnh nhân nhờ cải thiện độ đặc hiệu trong sàng lọc ban đầu.

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

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

    • Mô hình mới thực hiện phân loại toàn ảnh (Global Image-level Classification), chưa cung cấp bản đồ nhiệt giải thích (Grad-CAM) hoặc khoanh vùng chính xác tọa độ tổn thương (Bounding Box/ROI Mask).
    • Chỉ nhận dạng trên định dạng ảnh 2D thông thường (JPEG/PNG), chưa hỗ trợ giải mã trực tiếp định dạng y tế chuẩn DICOM 16-bit giàu thông tin độ tương phản.
    • Kích thước ảnh đầu vào bị nén xuống 224x224 pixel có thể làm giảm bớt độ nét của các vi vôi hóa siêu nhỏ (microcalcifications).
  • Hướng phát triển tương lai:

    1. Tích hợp mô hình phát hiện & phân vùng: Ứng dụng kiến trúc YOLOv8 hoặc U-Net để định vị chính xác vị trí khối u trên nhũ ảnh.
    2. Nâng cấp công nghệ thị giác máy tính: Nghiên cứu ứng dụng Vision Transformers (ViT)Swin Transformer để khai thác mối tương quan không gian toàn cục trên ảnh y tế độ phân giải cao (512x512 hoặc 1024x1024).
    3. Tích hợp chuẩn y tế PACS/DICOM: Nâng cấp BackEnd với thư viện pydicom để giao tiếp trực tiếp với hệ thống lưu trữ và truyền hình ảnh y tế (PACS) tại các bệnh viện.
    4. Explainable AI (XAI): Tích hợp cơ chế Grad-CAM trực quan hóa vùng mô vú khiến mô hình đưa ra quyết định "Cancer", tăng tính minh bạch và độ tin cậy đối với các bác sĩ điều trị.

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

  • Sinh viên & Học viên nghiên cứu (Students & Learners): Nắm bắt trọn vẹn quy trình xây dựng đồ án tốt nghiệp y sinh từ khâu xử lý dữ liệu, tinh chỉnh mô hình Transfer Learning bằng PyTorch đến triển khai Web Fullstack hoàn chỉnh.
  • Kỹ sư phần mềm & Lập trình viên AI (Developers): Tham khảo kiến trúc kết nối chuẩn RESTful API giữa Python Flask và ReactJS, kỹ thuật quản lý trạng thái Redux và tích hợp dịch vụ Firebase.
  • Cơ sở y tế & Phòng khám tầm soát (Healthcare Providers): Tiếp cận giải pháp phần mềm hỗ trợ chẩn đoán có chi phí vận hành thấp, sẵn sàng tích hợp vào quy trình sàng lọc ung thư vú lưu động.
  • Nhà nghiên cứu học máy y sinh (Biomedical Researchers): Kế thừa các số liệu thực nghiệm benchmark giữa 4 kiến trúc CNN trên tập Mini-DDSM phục vụ các công trình nghiên cứu mở rộng.

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

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống có thể chạy thử nghiệm suy luận (Inference) trên máy tính cá nhân sử dụng CPU Intel Core i5 thế hệ 8 trở lên, 8GB RAM. Đối với môi trường máy chủ phục vụ đồng thời nhiều yêu cầu, khuyến nghị sử dụng máy chủ có GPU chuyên dụng (NVIDIA GTX 1650 hoặc GPU Cloud như NVIDIA T4) để thời gian xử lý đạt dưới 100ms/ảnh.

2. Vì sao đề tài chọn Mini-DDSM thay vì tập dữ liệu DDSM gốc?

Tập dữ liệu DDSM gốc có dung lượng rất lớn (230,9GB) và sử dụng định dạng nén LJPEG cổ điển, gây khó khăn lớn trong việc giải mã và lưu trữ. Mini-DDSM là phiên bản kế thừa đã được chuẩn hóa sang định dạng JPEG phổ biến, dung lượng tối ưu 5GB với 7.808 ảnh nhưng vẫn giữ nguyên nhãn bệnh học chuẩn xác, giúp tối ưu hóa thời gian huấn luyện và phù hợp với năng lực phần cứng nghiên cứu.

3. Hệ thống có thể tích hợp với phần mềm quản lý bệnh viện (HIS/PACS) không?

Hiện tại hệ thống cung cấp giao diện RESTful API chuẩn (/api/v1/predict). Bất kỳ phần mềm y tế bên thứ ba nào (như HIS hoặc PACS Viewer) đều có thể gửi yêu cầu HTTP POST kèm tệp ảnh để nhận kết quả phân loại dạng JSON. Trong tương lai, việc bổ sung module đọc tệp DICOM sẽ hoàn thiện khả năng tương thích 100% với hệ thống PACS.

4. Chi phí duy trì và bảo trì hệ thống ước tính như thế nào?

Hệ thống sử dụng các công nghệ mã nguồn mở (Python, PyTorch, Flask, ReactJS) cùng gói dịch vụ miễn phí/linh hoạt của Google Firebase (Spark Plan). Do đó, chi phí duy trì chủ yếu là chi phí thuê máy chủ Cloud (VPS/Cloud GPU), dao động từ 15 - 30 USD/tháng cho quy mô thử nghiệm phòng khám vừa và nhỏ.

5. Khả năng mở rộng (Scalability) của hệ thống khi lượng người dùng tăng cao?

Kiến trúc phân tách FrontEnd và BackEnd cho phép mở rộng độc lập:

  • Giao diện ReactJS có thể đóng gói tĩnh và lưu trữ trên các mạng phân phối nội dung (CDN) như Vercel/Netlify.
  • BackEnd Flask API có thể được đóng gói vào Docker container và triển khai tự động co giãn (Auto-scaling) trên các nền tảng Kubernetes hoặc AWS ECS phía sau bộ cân bằng tải (Load Balancer).

Kết luận

Đồ án tốt nghiệp "Chẩn đoán bệnh ung thư vú dựa trên ảnh X-quang sử dụng mạng học sâu" do nhóm sinh viên Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh thực hiện đã giải quyết trọn vẹn bài toán ứng dụng trí tuệ nhân tạo vào hỗ trợ y tế thực tiễn. Bằng việc làm chủ kỹ thuật Transfer Learning trên 4 kiến trúc mạng CNN hiện đại và lựa chọn tối ưu với mô hình DenseNet-201, dự án đã đạt được độ chính xác phân loại 82,01% trên tập dữ liệu chuẩn hóa Mini-DDSM.

Không chỉ dừng lại ở kết quả học thuật, đề tài đã phát triển thành công ứng dụng Web Fullstack hoàn chỉnh (ReactJS + Flask + Firebase), chứng minh tính khả thi cao trong việc hỗ trợ các bác sĩ sàng lọc sớm ung thư vú, giảm thiểu sai sót chẩn đoán và hướng tới nâng cao chất lượng chăm sóc sức khỏe cộng đồng. Các lập trình viên, sinh viên và nhà nghiên cứu có thể tiếp tục kế thừa kiến trúc này để phát triển thêm các tính năng phân vùng tổn thương và tích hợp chuẩn y tế DICOM trong giai đoạn tiếp theo.