Bối cảnh và vấn đề nghiên cứu

Ung thư da và các bệnh lý tổn thương sắc tố da là những vấn đề y tế phức tạp và nghiêm trọng trên toàn cầu, gây ảnh hưởng trực tiếp đến sức khỏe cùng chất lượng cuộc sống của con người. Việc phát hiện, chẩn đoán sớm các dạng tổn thương da đóng vai trò then chốt trong việc gia tăng tỷ lệ sống sót cũng như nâng cao hiệu quả điều trị y khoa. Trên thực tế, việc chẩn đoán tổn thương da thông thường dựa trên quá trình thăm khám lâm sàng, phân tích hình ảnh biểu hiện bề mặt như màu sắc, kích thước, hình dạng nốt ruồi hay khối u, vốn phụ thuộc nhiều vào kinh nghiệm chủ quan của bác sĩ chuyên khoa và kỹ thuật viên y tế.

Trước sự phát triển của trí tuệ nhân tạo và thị giác máy tính, việc ứng dụng các thuật toán học sâu, tiêu biểu là mạng nơ-ron tích chập (Convolutional Neural Network - CNN), mang lại giải pháp tự động hóa quá trình trích xuất đặc trưng không gian phức tạp từ dữ liệu hình ảnh da liễu.

Đề tài "Phân loại tổn thương da bằng mạng nơ-ron tích chập (CNN)" do nhóm sinh viên Khoa Công nghệ Thông tin - Trường Đại học Công nghiệp Hà Nội thực hiện nhằm giải quyết các mục tiêu và nhiệm vụ cụ thể:

  1. Nghiên cứu tổng quan lý thuyết về xử lý ảnh số, các phương pháp trích chọn đặc trưng truyền thống và các kỹ thuật học máy, học sâu.
  2. Tìm hiểu cấu trúc, nguyên lý hoạt động của mạng nơ-ron tích chập và vai trò của các tầng chức năng trong việc nhận dạng mẫu y tế.
  3. Thu thập, làm sạch, tiền xử lý và phân tích thống kê bộ dữ liệu hình ảnh soi da chuẩn quốc tế.
  4. Thiết kế, xây dựng và huấn luyện mô hình phân loại đa lớp dựa trên kiến trúc CNN; đánh giá hiệu năng mô hình qua các độ đo thống kê chuyên dụng.
  5. Tiến hành kiểm thử chương trình để đánh giá tính ổn định, độ tin cậy và khả năng dự đoán thực tế.
  • Đối tượng nghiên cứu: Các thuật toán xử lý ảnh, kiến trúc mạng nơ-ron tích chập (CNN) và tập dữ liệu hình ảnh soi da đa lớp.
  • Phạm vi nghiên cứu: 7 loại tổn thương da sắc tố trong bộ dữ liệu chuẩn HAM10000; môi trường thực nghiệm điện toán đám mây Google Colab trong khuôn khổ đồ án chuyên ngành năm 2023.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình áp dụng

Nghiên cứu được xây dựng dựa trên nền tảng lý thuyết xử lý ảnh số và trí tuệ nhân tạo:

  • Xử lý ảnh số: Khái niệm điểm ảnh (pixel), mức xám trong khoảng $[0, 255]$, độ phân giải không gian, các định dạng ảnh (ảnh màu RGB, ảnh đa mức xám, ảnh nhị phân). Kỹ thuật lược đồ độ sáng (Histogram) và công thức nhị phân hóa ảnh theo ngưỡng $T$: $$\text{greycolor} = r \times 0.114$$ $$g(x, y) = \begin{cases} 1 & \text{nếu } f(x, y) > T \ 0 & \text{nếu } f(x, y) \le T \end{cases}$$
  • Trích chọn đặc trưng truyền thống: Phân tích đặc trưng màu sắc (Histogram màu, Vector liên kết màu - CCV), đặc trưng kết cấu (Ma trận đồng hiện - Co-occurrence Matrix, biến đổi Wavelet với hàm cơ sở $\psi(x) = 2^{-1/2} \psi(2^{-m}x - n)$, bộ lọc Gabor), và đặc trưng hình dạng (Lược đồ hệ số góc, Vector liên kết hệ số góc).
  • Học máy và học sâu: Lý thuyết học có giám sát (Supervised Learning), mô hình Hồi quy tuyến tính (Linear Regression), Hồi quy Logistic (Logistic Regression) với hàm Logit: $$\text{Logit}(p_i) = \frac{1}{1 + \exp(-p_i)}$$ Mạng nơ-ron nhân tạo (Multilayer Perceptron - MLP) gồm tầng đầu vào (Input layer), tầng ẩn (Hidden layer), tầng đầu ra (Output layer) và mạng nơ-ron sâu (Deep Neural Network - DNN).
  • Mạng nơ-ron tích chập (CNN): Sử dụng các lớp tích chập (Convolutional layer) kết hợp hàm kích hoạt phi tuyến ReLU ($f(x) = \max(0, x)$), lớp lấy mẫu cực đại (Max Pooling) để giảm chiều không gian và hạn chế quá khớp (overfitting), cùng lớp kết nối đầy đủ (Fully Connected layer) với hàm kích hoạt Softmax để phân lớp đa nhãn.

Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp thực nghiệm: Xây dựng quy trình xử lý dữ liệu và huấn luyện mô hình đầu-cuối (end-to-end) bằng ngôn ngữ Python trên nền tảng Google Colab kết hợp thư viện Keras/TensorFlow.
  • Phương pháp phân tích - thống kê: Sử dụng các chỉ số sai số hồi quy và độ đo phân loại ma trận nhầm lẫn (Confusion Matrix) để đánh giá.
  • Nguồn dữ liệu: Bộ dữ liệu chuẩn "The HAM10000 dataset" thu thập từ nền tảng Kaggle, gồm 10.015 bản ghi hình ảnh soi da được lưu trữ trong 2 thư mục (HAM10000_images_part_1, HAM10000_images_part_2) và một tệp thông tin nhãn đi kèm HAM10000_metadata.csv.
Tên biến trong bộ dữ liệu Ý nghĩa dữ liệu
lesion_id Mã định danh duy nhất của vùng tổn thương da
image_id Mã định danh của từng tệp hình ảnh
dx Tên loại tổn thương da (nhãn mục tiêu phân loại)
dx_type Phương pháp xác nhận kỹ thuật/chẩn đoán
age Độ tuổi của bệnh nhân
sex Giới tính của bệnh nhân
localization Vị trí xuất hiện tổn thương trên cơ thể

Thiết kế và triển khai

Hệ thống phân loại tổn thương da được thiết kế theo quy trình tuần tự từ tiền xử lý dữ liệu, xây dựng kiến trúc mạng nơ-ron, huấn luyện và đánh giá:

[Dữ liệu thô HAM10000] 

Công nghệ và môi trường thực nghiệm

  • Môi trường thực thi: Google Colaboratory (hỗ trợ phần cứng GPU/TPU, kết nối lưu trữ dữ liệu qua Google Drive và quản lý mã nguồn GitHub).
  • Ngôn ngữ và thư viện: Python kết hợp các thư viện xử lý mảng và bảng dữ liệu (Numpy, Pandas), đồ họa thống kê (Matplotlib.pyplot, Seaborn), quản trị hệ thống (os, itertools, math, scipy.io), và framework học sâu (Keras/TensorFlow).

Tiền xử lý dữ liệu

  1. Lọc dữ liệu trùng lặp: Dữ liệu gốc chứa nhiều ảnh chụp cùng một tổn thương ở các góc độ và tỷ lệ thu phóng khác nhau. Sử dụng phương thức skin_df.drop_duplicates(subset=['lesion_id']), số lượng mẫu duy nhất thu được là 7.470 bản ghi.
  2. Xử lý giá trị khuyết thiếu: Kiểm tra bằng skin_df.isnull().sum() phát hiện cột age có 52 giá trị null. Nhóm thực hiện gán các giá trị này bằng giá trị trung bình của độ tuổi thông qua hàm skin_df['age'].fillna(skin_df['age'].mean(), inplace=True).
  3. Giảm kích thước ảnh: Kích thước gốc của ảnh lớn làm chậm tốc độ huấn luyện. Nhóm thực hiện giảm chiều rộng và chiều cao theo hệ số $0.25$ (nhỏ hơn 4 lần so với ban đầu) bằng hàm xử lý mảng np.resize và lưu vào cột image.
  4. Mã hóa nhãn mục tiêu: Tách tập dữ liệu thành features (các biến độc lập) và target (biến mục tiêu cell_type_idx). Sử dụng hàm to_categorical(target, num_classes=num_classes) trong keras.utils để biến đổi nhãn dạng số sang vector One-Hot.

Tham số huấn luyện và cấu hình tối ưu

Quá trình huấn luyện mô hình được thiết lập với các tham số cụ thể:

  • batch_size: 10
  • epochs: 50
  • steps_per_epoch: Xác định bằng công thức $\text{len}(x_train_normalized) / 10$
  • Tăng cường dữ liệu (Data Augmentation) qua phương thức augmented_data.flow() nhằm mở rộng tập mẫu huấn luyện.
  • Cơ chế cân bằng trọng số lớp class_weight được áp dụng nhằm giảm thiểu ảnh hưởng của hiện tượng mất cân bằng dữ liệu giữa các lớp bệnh.
  • Các hàm Callback hỗ trợ: TimeHistory (tự định nghĩa để ghi nhận thời gian thực thi từng epoch), reduce_lr (tự động điều chỉnh tốc độ học khi hàm mất mát không cải thiện), và CSVLogger (ghi vết tiến trình huấn luyện vào tệp tin trên Google Drive).

Nội dung chính theo từng chương

Chương I. Tổng quan về đề tài và cơ sở lý thuyết

Chương này tập trung trình bày tính cấp thiết của bài toán phát hiện sớm ung thư da và tiềm năng ứng dụng của mô hình mạng nơ-ron tích chập trong y tế thông minh. Tác giả khái quát lịch sử phát triển của trí tuệ nhân tạo từ mô hình nơ-ron năm 1943 của Warren McCulloch và Walter Pitts đến các hệ chuyên gia thập niên 1980.

Chương 1 đi sâu vào các khái niệm nền tảng của xử lý ảnh số: biểu diễn ma trận điểm ảnh, thang mức xám, không gian màu (RGB, Munsell, CIE, HSV), lược đồ Histogram và giải thuật nhị phân hóa ảnh theo ngưỡng. Tác giả phân tích các phương pháp trích chọn đặc trưng ảnh cổ điển theo ba nhóm: màu sắc (Histogram, Color Coherence Vector), kết cấu (Co-occurrence Matrix, biến đổi Wavelet đa phân giải, bộ lọc Gabor) và hình dạng (Lược đồ hệ số góc, Vector liên kết hệ số góc, trích chọn vùng). Cuối chương giới thiệu tổng quan các nhánh học máy (học có giám sát, học không có giám sát, học tăng cường), mô hình hồi quy tuyến tính, hồi quy logistic và cấu trúc mạng nơ-ron nhân tạo đa tầng (MLP, DNN).

Chương 2. Kỹ thuật học sâu CNN trong chẩn đoán bệnh

Chương 2 mô tả chi tiết nguồn dữ liệu và cơ sở kiến trúc của mạng nơ-ron tích chập áp dụng trong bài toán nhận dạng tổn thương da. Dữ liệu sử dụng là bộ dữ liệu HAM10000 gồm 10.015 ảnh soi da thuộc 7 nhóm bệnh:

  1. Melanocytic nevi (nv - Nốt ruồi hắc tố)
  2. Melanoma (mel - Ung thư hắc tố da)
  3. Benign keratosis-like lesions (bkl - Dày sừng tổn thương lành tính)
  4. Basal cell carcinoma (bcc - Ung thư biểu mô tế bào đáy)
  5. Actinic keratoses (akiec - Bệnh dày sừng ánh sáng / quang hóa)
  6. Vascular lesions (vasc - Tổn thương mạch máu bẩm sinh)
  7. Dermatofibroma (df - U sợi bì)

Tác giả giải thích chi tiết cấu trúc giải thuật CNN gồm:

  • Lớp tích chập (Convolutional layer): Thực hiện tích chập dữ liệu ma trận ảnh với các bộ lọc không gian để tạo ra các bản đồ đặc trưng (Feature maps).
  • Lớp kích hoạt ReLU: Chuyển đổi phi tuyến và loại bỏ các giá trị âm ($f(x) = \max(0, x)$) giúp mạng học nhanh và giảm thiểu sai số.
  • Lớp Pooling (Max Pooling, Average Pooling): Giảm kích thước không gian bản đồ đặc trưng, kiểm soát hiện tượng quá khớp (overfitting).
  • Lớp Fully Connected: Làm phẳng dữ liệu và kết nối toàn bộ nơ-ron tới tầng đầu ra Softmax để xuất xác suất phân loại đa lớp. Chương này cũng giới thiệu chi tiết môi trường thực nghiệm Google Colab và các thư viện nền tảng (Numpy, Pandas, Matplotlib, Seaborn, OS, Itertools, Keras).

Chương 3. Thực nghiệm, kết quả nghiên cứu

Chương 3 trình bày toàn bộ quy trình thực nghiệm từ làm sạch dữ liệu, trực quan hóa thống kê, xây dựng hàm đánh giá đến kết quả huấn luyện mô hình.

  • Phân tích dữ liệu: Biểu đồ phân bố cho thấy sự mất cân bằng lớp nghiêm trọng trong tập dữ liệu, trong đó số lượng mẫu thuộc nhóm Melanocytic nevi chiếm tỷ trọng áp đảo. Phân bố kỹ thuật xác nhận chẩn đoán (dx_type) tập trung chủ yếu vào phương pháp mô bệnh học (histo) và theo dõi lâm sàng (follow-up). Phân bố vị trí giải phẫu (localization) ghi nhận các vùng lưng, chi dưới và thân mình là những vị trí tổn thương phổ biến nhất. Độ tuổi bệnh nhân tập trung nhiều nhất từ 35 đến 70 tuổi; phân bố giới tính cho thấy tỷ lệ giữa nam và nữ tương đối cân bằng.
  • Xây dựng hàm đo lường hiệu năng: Nhóm tác giả định nghĩa và cài đặt các hàm đo lường gồm Root Mean Squared Error (RMSE), Mean Squared Error (MSE), Mean Absolute Percentage Error (MAPE), hàm tính độ chính xác/hàm mất mát (train_val_accuracy, test_accuracy), hàm trích xuất ma trận nhầm lẫn (cal_true_pred_classes) và hàm xuất báo cáo phân loại chi tiết (gen_classification_report).
  • Kết quả huấn luyện và đánh giá: Mô hình đạt độ chính xác tương đồng trên cả tập dữ liệu huấn luyện, tập xác thực và tập kiểm thử độc lập.

Chương 4. Kiểm thử chương trình

Chương 4 tập trung vào nội dung đảm bảo chất lượng và đánh giá độ tin cậy của chương trình phần mềm. Tác giả trình bày các khái niệm cơ bản về kiểm thử, phân loại các hình thức kiểm thử, các mức độ kiểm thử phần mềm (kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống) và quy trình kiểm thử mô hình thực nghiệm phân loại tổn thương da. Kết quả kiểm thử khẳng định chương trình vận hành chính xác theo các kịch bản thực thi và xử lý dữ liệu đầu vào.


Kết quả và đóng góp

Kết quả định lượng

Mô hình CNN được đánh giá thông qua các chỉ số đo lường trên các tập dữ liệu:

Tập dữ liệu Độ chính xác (Accuracy) Giá trị hàm mất mát (Loss)
Tập huấn luyện (Training Set) $\approx 78.2%$ $0.6547$
Tập xác thực (Validation Set) $\approx 78.2%$ $0.6547$
Tập kiểm thử (Testing Set) $\approx 78.05%$ $0.6547$
  • Phân tích ma trận nhầm lẫn (Confusion Matrix): Nhãn có số lượng mẫu dự đoán chính xác cao nhất là nv (Melanocytic nevi) với 1.055 mẫu được phân loại đúng. Nhãn ghi nhận sự sai lệch nhiều nhất trong quá trình dự đoán của mô hình là bkl (Benign keratosis-like lesions) với 108 trường hợp nhầm lẫn.
  • Hệ thống chỉ số báo cáo phân loại: Chương trình tính toán chi tiết các chỉ số Precision (độ chuẩn xác), Recall (độ thu hồi), F1-Score, Support, Macro Average và Weighted Average cho từng nhóm bệnh lý tổn thương da.

Đóng góp của đề tài

  1. Đã chuẩn hóa thành công quy trình xử lý dữ liệu ảnh soi da từ bộ dữ liệu HAM10000: xử lý triệt để 52 giá trị thiếu của trường age, loại bỏ hình ảnh trùng lặp giảm xuống 7.470 mẫu tổn thương duy nhất, và tối ưu hóa kích thước ảnh giúp tăng tốc độ tính toán.
  2. Xây dựng hoàn chỉnh mô hình học sâu CNN tích hợp các kỹ thuật điều chỉnh thích nghi (Data Augmentation, Class Weights, ReduceLROnPlateau, Custom TimeHistory Callback), đạt hiệu năng ổn định quanh mức 78% trên dữ liệu kiểm thử thực tế.
  3. Cung cấp báo cáo phân tích toàn diện về các yếu tố dịch tễ học trong bộ dữ liệu (độ tuổi, giới tính, vị trí tổn thương, phương thức chẩn đoán).

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Hiện tượng mất cân bằng lớp: Tập dữ liệu HAM10000 có sự phân bổ không đồng đều giữa 7 loại tổn thương; số lượng ảnh nhãn nv chiếm ưu thế vượt trội so với các loại bệnh hiếm như df hay vasc, dẫn đến độ nhạy của mô hình đối với một số lớp thiểu số còn hạn chế (nhãn bkl bị dự đoán nhầm 108 mẫu).
  • Giảm độ phân giải ảnh: Việc nén kích thước ảnh xuống 4 lần (hệ số 0.25) giúp tối ưu hóa thời gian và tài nguyên tính toán nhưng có thể làm suy giảm một số chi tiết cấu trúc vi mô của tổn thương sắc tố.
  • Phạm vi thực nghiệm: Mô hình mới được thử nghiệm trên nền tảng notebook Google Colab với cấu trúc CNN cơ bản, chưa triển khai thử nghiệm trên các kiến trúc học sâu chuyển giao (Transfer Learning) tiên tiến.

Hướng nghiên cứu tiếp

  • Áp dụng thêm các kỹ thuật lấy mẫu nâng cao (Oversampling, Undersampling, SMOTE) hoặc các hàm mất mát chuyên biệt (Focal Loss) để xử lý triệt để sự mất cân bằng dữ liệu giữa các lớp tổn thương da.
  • Thử nghiệm các kiến trúc mạng nơ-ron tích chập sâu hơn và các mô hình học chuyển giao tiền huấn luyện (ResNet, EfficientNet, DenseNet, VGG) nhằm nâng cao độ chính xác phân loại.
  • Tích hợp mô hình vào các hệ thống y tế thông minh, ứng dụng di động hoặc thiết bị chẩn đoán cầm tay hỗ trợ bác sĩ theo dõi và sàng lọc bệnh từ xa.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên, học viên và các nhóm nghiên cứu thuộc các ngành:

  • Công nghệ thông tin, Khoa học dữ liệu và Trí tuệ nhân tạo: Cung cấp quy trình từng bước về xây dựng pipeline xử lý dữ liệu ảnh, thiết kế kiến trúc CNN trên Keras/TensorFlow, cách viết các hàm Callback và tính toán ma trận đo lường chi tiết (Accuracy, Loss, RMSE, Precision, Recall, F1-Score).
  • Tin học y sinh và Xử lý ảnh y tế: Cung cấp thông tin cấu trúc, đặc tính phân bố và phương pháp làm sạch bộ dữ liệu chuẩn HAM10000 trong bài toán da liễu.
  • Kỹ thuật phần mềm: Cung cấp tài liệu tham khảo về phương pháp kiểm thử và đánh giá độ tin cậy của các module học máy trước khi triển khai thực tế.

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

1. Bộ dữ liệu HAM10000 được sử dụng trong đồ án chứa bao nhiêu bản ghi và bao nhiêu loại tổn thương da?
Bộ dữ liệu gồm 10.015 bản ghi hình ảnh soi da (thuộc 2 thư mục ảnh) và 1 tệp metadata, phân loại thành 7 nhóm tổn thương da: Melanocytic nevi (nv), Melanoma (mel), Benign keratosis-like lesions (bkl), Basal cell carcinoma (bcc), Actinic keratoses (akiec), Vascular lesions (vasc), và Dermatofibroma (df).

2. Nhóm tác giả đã xử lý các vấn đề dữ liệu trùng lặp và giá trị khuyết thiếu như thế nào?
Nhóm sử dụng hàm drop_duplicates trên cột lesion_id để lọc các ảnh chụp trùng góc độ/thu phóng, giữ lại 7.470 bản ghi duy nhất. Đối với 52 giá trị bị khuyết (null) ở cột độ tuổi (age), nhóm sử dụng hàm fillna kết hợp phương thức tính trung bình mean() để điền giá trị.

3. Kích thước hình ảnh đầu vào được tiền xử lý ra sao trước khi đưa vào mô hình CNN?
Để giảm thiểu khối lượng tính toán và tăng tốc độ xử lý khi huấn luyện, hình ảnh được thu nhỏ chiều dài và chiều rộng theo hệ số 0.25 (kích thước nhỏ hơn 4 lần so với ảnh gốc) bằng hàm np.resize và lưu thành cột image mới trong cấu trúc DataFrame.

4. Hiệu năng phân loại tổng thể của mô hình đạt mức bao nhiêu trên các tập dữ liệu?
Mô hình đạt độ chính xác khoảng 78.2% trên cả tập huấn luyện và tập xác thực (Validation Loss = 0.6547). Trên tập kiểm thử độc lập (Test Set), độ chính xác đạt 78.05% với giá trị hàm mất mát tương đương là 0.6547.

5. Nhãn tổn thương da nào được mô hình dự đoán chính xác nhiều nhất và nhãn nào bị nhầm lẫn nhiều nhất?
Theo kết quả ma trận nhầm lẫn (Confusion Matrix), nhãn được dự đoán chính xác nhiều nhất là nv (Melanocytic nevi) với 1.055 mẫu đúng. Nhãn bị mô hình dự đoán sai nhiều nhất là bkl (Benign keratosis-like lesions) với 108 trường hợp nhầm lẫn sang các nhãn khác.


Kết luận

Báo cáo đồ án chuyên ngành của nhóm sinh viên Trường Đại học Công nghiệp Hà Nội đã hoàn thành việc nghiên cứu, xây dựng và thực nghiệm mô hình mạng nơ-ron tích chập (CNN) phục vụ bài toán phân loại 7 dạng tổn thương da từ bộ dữ liệu HAM10000. Đề tài đã xây dựng thành công đường ống tiền xử lý dữ liệu, trực quan hóa phân tích dịch tễ học và huấn luyện mô hình đạt độ chính xác ổn định 78.05% trên tập kiểm thử. Kết quả nghiên cứu là nền tảng kỹ thuật và thực nghiệm quan trọng, mở ra tiềm năng tích hợp vào các hệ thống hỗ trợ chẩn đoán y tế tự động trong tương lai.