Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Xây dựng mô hình phát hiện bệnh từ ảnh X-quang
Hướng Dẫn Đồ ÁnLập Trình AI

Xây dựng mô hình phát hiện bệnh từ ảnh X-quang

Chia sẻ
Chia sẻ

Phát hiện bệnh từ ảnh X-quang là một ứng dụng quan trọng của học sâu trong lĩnh vực y tế, giúp hỗ trợ bác sĩ chẩn đoán nhanh chóng và chính xác hơn. Với sự phát triển của deep learning, việc xây dựng một mô hình nhận diện dấu hiệu bệnh trên ảnh X-quang trở nên khả thi ngay cả với những người mới học.

Trước khi bắt đầu, bạn có thể tham khảo bài Phân tích cảm xúc review sản phẩm bằng học sâu để hiểu cách mạng nơ-ron xử lý dữ liệu phi cấu trúc, bài Tạo mô hình phân loại ảnh chó mèo với TensorFlow để làm quen với xử lý ảnh, và bài Tạo mô hình phát hiện cảm xúc từ văn bản bằng NLP để nắm rõ các bước xử lý dữ liệu trong học máy.

Tổng quan bài toán phát hiện bệnh từ ảnh X-quang

Bài toán đặt ra là: từ ảnh X-quang lồng ngực, phát hiện các dấu hiệu bệnh như viêm phổi, tràn dịch màng phổi hoặc u phổi. Đây là bài toán phân loại ảnh, nơi mô hình phải học cách nhận diện các đặc trưng hình ảnh khác nhau tương ứng với từng bệnh.

Trong thực tế, các hệ thống AI hỗ trợ chẩn đoán này đã được triển khai để giảm tải cho bác sĩ và nâng cao độ chính xác. Tuy nhiên, để làm tốt, dữ liệu phải đủ lớn và mô hình cần được huấn luyện cẩn thận để tránh overfitting.

Trong bài này, chúng ta sẽ sử dụng bộ dữ liệu Chest X-Ray Images (Pneumonia) từ Kaggle – một dataset gồm ảnh X-quang phân loại thành bệnh và bình thường.

📥 Link tải dữ liệu: Chest X-Ray Pneumonia Dataset – Kaggle

Cài đặt và chuẩn bị môi trường làm việc

Trước tiên, đảm bảo bạn có các thư viện cần thiết để xử lý ảnh và xây dựng mô hình:

# Cài đặt các thư viện cần thiết
!pip install tensorflow keras matplotlib numpy pandas

Import các thư viện:

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
import matplotlib.pyplot as plt

Tải dữ liệu và xử lý ảnh

Dataset có cấu trúc thư mục rõ ràng: phân chia thành train, val, test, mỗi thư mục chứa hai lớp NORMALPNEUMONIA. Chúng ta sử dụng ImageDataGenerator để load dữ liệu và thực hiện augmentation.

# Đường dẫn đến dữ liệu
train_dir = '/content/chest_xray/train'
val_dir = '/content/chest_xray/val'
test_dir = '/content/chest_xray/test'

# Tiền xử lý và augmentation
train_datagen = ImageDataGenerator(rescale=1./255,
                                   rotation_range=20,
                                   zoom_range=0.2,
                                   horizontal_flip=True)
val_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(train_dir,
                                                    target_size=(150, 150),
                                                    batch_size=32,
                                                    class_mode='binary')
val_generator = val_datagen.flow_from_directory(val_dir,
                                                target_size=(150, 150),
                                                batch_size=32,
                                                class_mode='binary')

Xây dựng và huấn luyện mô hình CNN

Chúng ta sử dụng mô hình CNN cơ bản để xử lý ảnh X-quang:

# Khởi tạo mô hình
model = Sequential([
    Conv2D(32, (3,3), activation='relu', input_shape=(150, 150, 3)),
    MaxPooling2D(2,2),
    Conv2D(64, (3,3), activation='relu'),
    MaxPooling2D(2,2),
    Conv2D(128, (3,3), activation='relu'),
    MaxPooling2D(2,2),
    Flatten(),
    Dense(128, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

# Compile mô hình
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# Huấn luyện
history = model.fit(train_generator,
                    epochs=10,
                    validation_data=val_generator)

Đánh giá và trực quan hóa kết quả

Hiển thị đồ thị accuracy và loss trong quá trình huấn luyện:

# Vẽ biểu đồ
plt.plot(history.history['accuracy'], label='Accuracy (Train)')
plt.plot(history.history['val_accuracy'], label='Accuracy (Validation)')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.show()

Đánh giá trên tập test:

# Đánh giá trên tập test
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(test_dir,
                                                  target_size=(150, 150),
                                                  batch_size=32,
                                                  class_mode='binary')
test_loss, test_acc = model.evaluate(test_generator)
print(f"Độ chính xác trên tập test: {test_acc:.2f}")

Kết luận

Bài viết đã hướng dẫn từng bước xây dựng một mô hình CNN cơ bản để phát hiện bệnh viêm phổi từ ảnh X-quang. Bạn đã học cách tải và xử lý dữ liệu, xây dựng kiến trúc mạng, huấn luyện và đánh giá mô hình.

Để cải thiện kết quả, bạn có thể áp dụng các mô hình sâu hơn như ResNet hoặc EfficientNet và tăng cường dữ liệu bằng các kỹ thuật augmentation nâng cao.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!