TỔNG QUAN
ĐẶT VẤN ĐỀ
Đái tháo đường đang gia tăng nhanh chóng trên toàn cầu, với khoảng 1/3 bệnh nhân mắc biến chứng võng mạc đái tháo đường (VMĐTĐ), là nguyên nhân hàng đầu gây mất thị lực, đặc biệt trong độ tuổi lao động Nếu không được phát hiện và điều trị kịp thời, bệnh có thể dẫn đến những tổn thương nghiêm trọng ở đáy mắt, như phù hoàng điểm và xuất huyết võng mạc, gây mù lòa Dự báo đến năm 2030, số người mắc đái tháo đường sẽ tăng lên 439 triệu, với khoảng 1.8 triệu người hàng năm bị mù do VMĐTĐ Tại Việt Nam, khoảng 4.5 triệu người mắc đái tháo đường, trong đó 20% có biến chứng về mắt Tỷ lệ mắc VMĐTĐ gia tăng theo thời gian mắc bệnh, với khoảng 60% bệnh nhân có thời gian mắc từ 15 năm trở lên sẽ bị tổn thương mạch máu trong mắt, và một phần trăm trong số này có nguy cơ mù lòa.
Bệnh lý VMĐTĐ thường được khám đáy mắt bằng thuốc giãn đồng tử, giúp bác sĩ quan sát rõ hơn nhưng có thể gây mờ mắt trong vài giờ Quy trình phân tích hình ảnh võng mạc hiện tại bằng máy chụp ảnh đáy mắt vẫn còn thủ công, mất thời gian và độ tin cậy không cao Do đó, cần phát triển quy trình tự động với độ chính xác cao Trong bối cảnh công nghệ phát triển, AI đang được ứng dụng trong y tế, đặc biệt trong chẩn đoán hình ảnh Thay vì dựa vào kinh nghiệm cá nhân và triệu chứng lâm sàng, bác sĩ có thể sử dụng hệ thống chẩn đoán hình ảnh AI để hỗ trợ, giúp phát hiện những hình ảnh chụp đáy mắt khó chẩn đoán do chất lượng hoặc cường độ ảnh Các thuật toán AI sẽ trích xuất và phân tích dữ liệu chẩn đoán, từ đó nâng cao độ chính xác và giúp bệnh nhân yên tâm hơn trong quá trình thăm khám.
Để giải quyết những khó khăn trong chẩn đoán bệnh võng mạc đái tháo đường thủ công, chúng tôi đã áp dụng khoa học công nghệ vào y tế Mục tiêu là phát triển mô hình trí tuệ nhân tạo nhằm phân loại các cấp độ bệnh và hỗ trợ bác sĩ trong quá trình chẩn đoán Vì vậy, chúng tôi đã tiến hành nghiên cứu mô hình này.
Bài viết "Phân loại bệnh võng mạc đái tháo đường sử dụng mô hình mạng ResNet" nhằm hỗ trợ bác sĩ trong việc chẩn đoán các cấp độ của bệnh võng mạc do đái tháo đường Việc áp dụng mô hình này không chỉ giúp tối ưu hóa quy trình khám chữa bệnh, tiết kiệm thời gian mà còn đảm bảo độ chính xác cao, từ đó tạo niềm tin và sự an tâm cho bệnh nhân.
MỤC TIÊU
Bài viết này trình bày việc phân loại hình ảnh bệnh võng mạc do biến chứng của bệnh đái tháo đường thông qua việc xây dựng mô hình mạng ResNet Dữ liệu được thu thập từ tập dữ liệu APTOS 2019, giúp cải thiện khả năng chẩn đoán và phát hiện sớm các vấn đề liên quan đến võng mạc.
Hệ thống phân loại đã được hoàn thiện với 3,662 ảnh được gắn nhãn rõ ràng theo 5 cấp độ: không bệnh, nhẹ, trung bình, nghiêm trọng và rất nghiêm trọng Giao diện web được thiết kế để hiển thị kết quả một cách trực quan và dễ hiểu.
NỘI DUNG NGHIÊN CỨU
Trong quá trình thực hiện Đồ án tốt nghiệp với đề tài “Phân loại bệnh võng mạc đái tháo đường sử dụng mô hình mạng Resnet”, chúng tôi đã tập trung vào việc giải quyết và hoàn thành những nội dung quan trọng liên quan đến phân loại bệnh, áp dụng công nghệ mạng Resnet để nâng cao độ chính xác trong chẩn đoán.
Nội dung 1: Tìm kiếm tập dữ liệu hình ảnh và phân chia tập ảnh dữ liệu thành tập
Train, tập Validation và tập Test
Xây dựng mô hình huấn luyện phân loại bệnh võng mạc đái tháo đường là bước quan trọng trong việc phát triển công nghệ y tế Tiến hành cho máy học, điều chỉnh và đánh giá kết quả giúp cải thiện độ chính xác và hiệu quả của mô hình.
Nội dung 4: Nghiên cứu xây dựng Web để trình bày kết quả
Nội dung 5: Viết báo cáo thực hiện
Nội dung 6: Bảo vệ đồ án.
GIỚI HẠN
Trong quá trình thực hiện đề tài có những giới hạn sau:
Để đảm bảo độ đa dạng và đại diện cho các trường hợp bệnh, cần tăng cường tập dữ liệu huấn luyện được lấy từ nguồn internet.
- Đề tài chỉ phân loại hình ảnh chưa khoanh được vùng tổn thương
Giao diện demo hiện chỉ hỗ trợ các chức năng cơ bản như đăng nhập, đăng ký và chẩn đoán Đặc biệt, phần chẩn đoán từ xa hiện tại chỉ có thể thực hiện các tương tác với giao diện mà chưa hoàn thiện đầy đủ.
BỐ CỤC
Giới thiệu tổng quan về nội dung đề tài nghiên cứu, mục tiêu, phạm vi và bố cục của đồ án
• Chương 2: Cơ Sở Lý Thuyết
Giới thiệu tổng quan về bệnh võng mạc đái tháo đường, ảnh chụp đáy mắt và các phương pháp phân loại ảnh đáy mắt
• Chương 3: Xây Dựng Mô Hình Phân Loại Bệnh Võng Mạc Tiểu Đường
Sơ đồ khối của đề tài được trình bày rõ ràng, cùng với cách xây dựng mô hình huấn luyện dựa trên dữ liệu đã thu thập trước đó Sau khi hoàn tất quá trình huấn luyện, mô hình sẽ được thử nghiệm để nhận diện ảnh Đồng thời, một giao diện đơn giản sẽ được phát triển, cho phép người dùng tải lên ảnh và thực hiện quá trình nhận diện một cách dễ dàng.
• Chương 4: Kết Quả Và Thảo Luận
Tổng kết kết quả từ quá trình thực hiện và đánh giá mô hình huấn luyện, đồng thời tiến hành so sánh và phân tích kết quả đạt được Nghiên cứu cũng sẽ viết hướng dẫn sử dụng giao diện và đưa ra dự toán chi phí thực hiện.
• Chương 5: Kết Luận và Hướng Phát Triển
Sau quá trình thực hiện, chúng tôi đã đạt được nhiều kết quả đáng khích lệ, đồng thời rút ra những kết luận quan trọng Bên cạnh những ưu điểm nổi bật, vẫn tồn tại một số nhược điểm cần khắc phục Dựa trên những phân tích này, chúng tôi đề xuất một số ý tưởng và hướng phát triển tiềm năng cho đề tài trong tương lai.
CƠ SỞ LÝ THUYẾT
BỆNH VÕNG MẠC ĐÁI THÁO ĐƯỜNG
Bệnh võng mạc đái tháo đường là nguyên nhân chính gây ra mù lòa ở các nước phát triển và dần trở nên phổ biến ở các nước đang phát triển [2]
Bệnh võng mạc đái tháo đường là một biến chứng nghiêm trọng của bệnh tiểu đường, xảy ra khi lượng đường trong máu cao kéo dài gây tổn thương các mạch máu nhỏ trong võng mạc - phần nhạy cảm với ánh sáng ở phía sau mắt Theo thời gian, tình trạng này có thể dẫn đến tắc nghẽn các mạch máu nuôi dưỡng võng mạc, làm giảm nguồn cung cấp máu cần thiết cho mắt Để bù đắp cho sự thiếu hụt này, mắt sẽ cố gắng phát triển các mạch máu mới, nhưng chúng thường không phát triển đúng cách và dễ bị rò rỉ, gây ra các vấn đề nghiêm trọng về thị lực.
Hầu hết những người mắc bệnh tiểu đường đều bị tổn thương võng mạc, thường chỉ được phát hiện qua khám mắt Học viện Nhãn khoa Hoa Kỳ phân loại bệnh lý võng mạc tiểu đường thành 5 mức độ, bắt đầu từ không có bệnh lý rõ ràng (No Apparent Retinopathy) cho những người có kết quả kiểm tra bình thường Ba loại tiếp theo là bệnh võng mạc tiểu đường không tăng sinh nhẹ (Mild), trung bình (Moderate) và nặng (Severe), phản ánh mức độ tổn thương võng mạc gia tăng Những người mắc NPDR nhẹ có vi phình mạch ở võng mạc nhưng không có tổn thương đáng kể nào khác.
Những người mắc bệnh NPDR nặng thường có hơn 20 lần xuất huyết võng mạc ở mỗi góc phần tư của võng mạc, cùng với tổn thương đặc trưng trên các tĩnh mạch được gọi là "kết hạt tĩnh mạch" ở ít nhất hai góc phần tư Các bất thường vi mạch trong võng mạc cũng rõ ràng ở bất kỳ vị trí nào trên võng mạc NPDR vừa phải được xác định là nghiêm trọng hơn NPDR nhẹ nhưng chưa đạt tiêu chí cho NPDR nghiêm trọng Giai đoạn thứ năm, bệnh võng mạc tiểu đường tăng sinh (PDR), xảy ra ở những bệnh nhân có mạch máu mới hình thành trên võng mạc hoặc có hiện tượng rò rỉ vào dịch kính, dẫn đến xuất huyết dịch kính hoặc xuất huyết trước võng mạc.
ẢNH CHỤP ĐÁY MẮT
Hình 2.2 Ảnh chụp đáy mắt
Chụp ảnh đáy mắt, hay còn gọi là chụp ảnh phía sau mắt, là một kỹ thuật quan trọng trong y học Quy trình này sử dụng máy ảnh đáy mắt chuyên dụng, bao gồm một kính hiển vi phức tạp và đèn flash, để ghi lại hình ảnh chi tiết của đáy mắt Các cấu trúc chính có thể được quan sát qua ảnh chụp đáy mắt bao gồm võng mạc trung tâm và ngoại vi, dây thần kinh thị giác, và điểm vàng, giúp bác sĩ đánh giá sức khỏe mắt một cách hiệu quả.
Hình 2.3 Các giai đoạn của bệnh võng mạc tiểu đường
Chụp ảnh đáy mắt là phương pháp hiệu quả để phát hiện bệnh tiểu đường (DR) thông qua việc sử dụng ánh sáng phản xạ Quá trình này tạo ra hình ảnh hai chiều và mô phân lớp ba chiều của võng mạc, cho phép quan sát các cấu trúc bên trong mắt Hình 2.3 minh họa các mức độ nghiêm trọng của bệnh.
DR khác nhau từ các hình ảnh đáy mắt màu võng mạc [7].
MỘT SỐ PHƯƠNG PHÁP PHÂN LOẠI BỆNH VÕNG MẠC
2.3.1 PHƯƠNG PHÁP MÁY VECTOR HỖ TRỢ Đề tài nghiên cứu “Automated detection of diabetic retinopathy using SVM” của nhóm tác giả Enrique V.carrera, Ricardo Carrera và Andrés González năm 2017 sử dụng phương pháp SVM để đánh giá việc phân loại bệnh võng mạc tiểu đường
[8] Đề tài này sử dụng dữ liệu hình ảnh số màu đáy mắt của ba khoa mắt Sau quá trình huấn luyện độ chính xác của hệ thống là 85%
SVM (Support Vector Machine) là một thuật toán giám sát chủ yếu được sử dụng cho phân loại, mặc dù cũng có thể áp dụng cho đệ quy Mục tiêu chính của SVM là xác định siêu phẳng, tức là đường hoặc ranh giới quyết định tốt nhất, nhằm tách không gian n chiều thành các lớp khác nhau Điều này giúp dễ dàng phân loại các điểm dữ liệu mới vào đúng danh mục trong tương lai.
Hình 2.4 Điểm dữ liệu được phân tách bằng SVM
Trong không gian 2 chiều , khoảng cách từ một điểm có tọa độ (x 0, y 0 ) tới đường thẳng có phương trình ω 1 x + ω 2 y + b = 0 xác định bởi công thức (2.1)
Trong không gian ba chiều(x 0, y 0, , z 0 ) tới một mặt phẳng có phương trình ω 1 x + ω 2 y + ω 3 z + b = 0 được xác định bởi công thức (2.2)
Tổng quát không gian nhiều chiều, khoảng cách từ một điểm (vector) có tọa độ x 0 tới siêu mặt phẳng có phương trình ω T x + b = 0 được xác định bởi công thức
(2.3) với ||w|| 2 = √∑ d i=1 ω i 2 với d là số chiều của không gian
2.3.2 PHƯƠNG PHÁP MẠNG NƠ-RON TÍCH CHẬP Đề tài phân loại bệnh võng mạc tiểu đường được nhóm tác giả Harry Pratt, Frans Coenen, Deborah M Broadbent, Simon P Harding, Yalin Zheng sử dụng mạng nơ-ron tích chập Tập dataset đầu vào có 80000 ảnh có sẵn tại thư viện trực tuyến Kaggle Mô hình sau khi huấn luyện có độ chính xác trung bình là 75% [11]
Mạng nơ-ron tích chập (CNN hoặc ConvNet) là một trong những mô hình quan trọng của Deep Learning, sử dụng các thuật toán để trừu tượng hóa dữ liệu ở mức cao thông qua nhiều lớp xử lý phức tạp CNN chủ yếu được áp dụng trong phân tích hình ảnh trực quan.
Hình 2.5 Kiến trúc CNN điển hình
Lớp tích chập là thành phần quan trọng nhất trong mô hình CNN, có chức năng phát hiện các đặc trưng không gian hiệu quả trong dữ liệu Lớp này bao gồm bốn đối tượng chính: bộ filter, ma trận đầu vào, receptive field và feature map Lớp tích chập nhận đầu vào là ma trận 3 chiều và bộ filter cần học, sau đó bộ filter được trượt qua từng vị trí trên bức ảnh để thực hiện phép tích chập Vùng tương ứng trên bức ảnh mà một neuron có thể "nhìn thấy" được gọi là receptive field Quá trình này tạo ra một ma trận kết quả gọi là feature map, chứa thông tin về sự xuất hiện của các đặc trưng quan trọng trong dữ liệu.
Qua lớp tích chập, mô hình học được các đặc trưng cục bộ trong dữ liệu và tạo ra các feature map, giúp trích xuất thông tin hữu ích từ đầu vào Những feature map này sau đó được đưa vào các lớp tiếp theo để tiếp tục xử lý và tạo ra đầu ra cuối cùng của mô hình.
Tầng tích chập trong mô hình CNN đóng vai trò quan trọng trong việc phát hiện các đặc trưng đặc biệt của bức ảnh, bao gồm các yếu tố cơ bản như góc, cạnh, màu sắc và các đặc trưng phức tạp hơn như texture Nhờ vào việc bộ filter trượt qua toàn bộ bức ảnh, tầng tích chập có khả năng nhận diện các đặc trưng này ở mọi vị trí, ngay cả khi bức ảnh bị xoay hoặc lật Kích thước bộ filter, stride và padding là những tham số quan trọng quyết định hiệu quả của quá trình này.
Kích thước bộ filter đóng vai trò quan trọng trong việc xác định số lượng tham số cần học ở mỗi tầng tích chập và vùng receptive field của tầng đó Kích thước phổ biến nhất cho bộ filter là 3x3, nhưng có thể điều chỉnh kích thước tùy thuộc vào bài toán và kiến trúc mô hình cụ thể.
Tham số stride (bước trượt) quyết định số pixel cần dịch chuyển khi áp dụng bộ lọc lên bức ảnh Nếu chọn giá trị stride bằng 1, bộ lọc sẽ di chuyển từng pixel từ trái sang phải và từ trên xuống dưới Mặc dù giá trị stride lớn giúp tăng tốc độ tính toán, nhưng nó cũng làm giảm kích thước thông tin đặc trưng của hình ảnh, dẫn đến việc mất nhiều thông tin quan trọng.
Tham số padding là các giá trị 0 được thêm vào cùng lớp input, giúp duy trì kích thước đầu ra sau mỗi tầng convolution Khi không có padding, ma trận đầu vào sẽ dần nhỏ lại, giới hạn số lượng lớp trong mô hình CNN và cản trở việc xây dựng các deep nets mong muốn Việc áp dụng padding vào ma trận đầu vào cho phép tạo ra các mô hình với số tầng convolution lớn hơn, từ đó cải thiện khả năng học tập của mạng.
Hàm kích hoạt trong mạng nơ-ron nhân tạo tương tự như tỷ lệ truyền xung qua axon của neuron thần kinh, đóng vai trò quan trọng trong việc xác định đầu ra của mỗi nơ-ron Đây là thành phần phi tuyến tại đầu ra của nơ-ron, ảnh hưởng đến khả năng học và dự đoán của mạng Một số hàm kích hoạt phổ biến được sử dụng trong các mô hình nơ-ron bao gồm ReLU, sigmoid và tanh.
Hình 2.7 Một số hàm kích hoạt thông dụng
Hàm Sigmoid là một công cụ quan trọng trong toán học và học máy, được sử dụng để chuyển đổi các số thực thành giá trị trong khoảng từ 0 đến 1 Khi đầu vào là số thực âm rất nhỏ, đầu ra của hàm Sigmoid sẽ gần bằng 0 Ngược lại, nếu đầu vào là số thực dương lớn, đầu ra sẽ tiến gần đến 1.
Trong những năm gần đây, hàm ReLU đã trở thành lựa chọn phổ biến trong huấn luyện mạng neuron nhờ vào khả năng loại bỏ các giá trị nhỏ hơn 0 Với công thức đơn giản, hàm ReLU hoạt động hiệu quả hơn so với hàm Sigmoid và Tanh, mang lại nhiều ưu điểm vượt trội cho việc tối ưu hóa mô hình.
• ReLU không gặp vấn đề của vanishing gradient (đạo hàm gần tiến tới 0) như hàm Sigmoid và Tanh, giúp tăng cường hiệu suất huấn luyện mạng neuron sâu
• ReLU tính toán nhanh hơn so với hàm Sigmoid và Tanh, do không có các phép tính exponentiation phức tạp
• Hàm ReLU không bị chặn trong khoảng giá trị nhất định như hàm Sigmoid và Tanh, giúp mạng neuron linh hoạt hơn trong việc xác định đầu ra
Vì những ưu điểm này, hàm ReLU đã trở thành một lựa chọn phổ biến trong huấn luyện mạng neuron trong những năm gần đây
Lớp tổng hợp (Pooling Layer) được sử dụng sau hàm kích hoạt để đơn giản hóa thông tin đầu ra và giảm số lượng neuron Các loại pooling layer phổ biến như max-pooling và average pooling có chức năng chính là giảm chiều của tầng trước đó Với pooling kích thước 2x2, cần trượt filter 2x2 trên các vùng ảnh tương ứng và tính toán max hoặc average cho từng vùng Quá trình này giúp loại bỏ thông tin không cần thiết và tối ưu hóa đầu ra.
Hình 2.8 Hình ảnh ví dụ đầu vào sau khi qua lớp pooling
Lớp kết nối đầy đủ (Fully Connected Layer): Tầng cuối cùng của mô hình
Trong mạng nơ-ron tích chập (CNN), tầng fully connected layer đóng vai trò quan trọng trong việc phân loại ảnh Tầng này chuyển đổi ma trận đặc trưng từ tầng trước thành một vector chứa xác suất cho các đối tượng cần dự đoán Chẳng hạn, trong bài toán phân loại chữ số viết tay MNIST, tầng này sẽ chuyển ma trận đặc trưng thành một vector 10 chiều, thể hiện xác suất cho 10 lớp tương ứng với các chữ số từ 0 đến 9.
KỸ THUẬT HỌC CHUYỂN GIAO
Kỹ thuật học chuyển giao (transfer learning) rất hữu ích khi dữ liệu huấn luyện hạn chế, vì nó cho phép tận dụng kiến thức từ các tác vụ hoặc tập dữ liệu lớn khác Thay vì bắt đầu huấn luyện mô hình từ đầu trên tập dữ liệu nhỏ, chúng ta có thể sử dụng mô hình đã được huấn luyện trước và chỉ điều chỉnh một số phần nhỏ để phù hợp với tác vụ mới, từ đó tiết kiệm thời gian và công sức.
Hình 2.9 Bảng các loại kiến trúc Resnet
ResNet (Residual Network) là một kiến trúc mạng nơ-ron nổi bật, được sử dụng rộng rãi hiện nay, với khả năng xử lý các mạng sâu lên đến 152 lớp Đây là kiến trúc đầu tiên áp dụng batch normalization, giúp cải thiện hiệu suất học sâu Mặc dù có số lượng lớp lớn, kích thước của ResNet50 chỉ khoảng 26 triệu tham số nhờ vào việc sử dụng các khối residual, cho phép mô hình tập trung vào việc học sự khác biệt giữa đầu vào và đầu ra Hiện tại, có nhiều biến thể của ResNet với số lượng lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101 và ResNet-152, phản ánh số lượng lớp cụ thể trong kiến trúc này.
Hình 2.10 Kiến trúc mạng Resnet50
ResNet50 là một biến thể của mô hình ResNet có 48 lớp Convolution cùng với
Mạng bao gồm 1 lớp MaxPool và 1 lớp Pool trung bình, với lớp Convolutional đầu tiên có bước nhảy 2, áp dụng 64 kernel kích thước 7x7 lên đầu vào Mỗi kernel sẽ tạo ra một feature map mới Lớp Max Pooling tiếp theo sử dụng max pooling để giảm kích thước của feature map từ bước trước đó xuống còn một nửa Các lớp Convolutional từ 2 đến 10 tiếp tục xử lý dữ liệu.
• Stride: 2 Đây là bước đầu tiên trong mạng, và nó áp dụng 64 kernel với kích thước 7x7 lên đầu vào Mỗi kernel tạo ra một feature map mới
• Bước này sử dụng max pooling để giảm kích thước của feature map từ bước trước đó đi một nửa
• Các convolutional layers này được lặp lại 3 lần, tổng cộng 9 lớp
• Các convolutional layers này được lặp lại 4 lần, tổng cộng 12 lớp
• Các convolutional layers này được lặp lại 6 lần, tổng cộng 18 lớp
• Các convolutional layers này được lặp lại 3 lần, tổng cộng có 9 lớp
Sau khi hoàn thành các lớp convolutional này, tiếp theo là một bước average pooling để giảm kích thước của feature map
Cuối cùng, có một fully connected layer với 1000 nodes và sau đó áp dụng hàm softmax để đưa ra xác suất dự đoán cho các lớp
XÂY DỰNG MÔ HÌNH PHÂN LOẠI BỆNH VÕNG MẠC ĐÁI THÁO ĐƯỜNG
GIỚI THIỆU
Trong chương này, chúng tôi sẽ xây dựng sơ đồ khối cho mô hình trong quá trình huấn luyện, nhằm tìm ra mô hình phân loại phù hợp với tập dữ liệu hiện có để đạt kết quả tối ưu Đồng thời, chúng tôi sẽ hiệu chỉnh thông số và cấu trúc của mô hình để nâng cao hiệu suất và đáp ứng yêu cầu của tập dữ liệu Sau khi hoàn tất huấn luyện, chúng tôi sẽ đánh giá hiệu suất bằng các phương pháp đánh giá AI phổ biến và đáng tin cậy, nhằm thu thập dữ liệu khách quan để đảm bảo tính chính xác.
SƠ ĐỒ KHỐI
Mô hình phân loại bệnh võng mạc đái tháo đường sử dụng mạng nơ-ron tích chập, cho phép dự đoán mức độ bệnh một cách chính xác Hình 3.1 minh họa sơ đồ khối tổng quát của mô hình này.
Hình 3.1 Sơ đồ khối mô hình phân loại bệnh
Khối đầu vào nhận hình ảnh đáy mắt từ bộ dữ liệu công khai của Hiệp hội Nhãn khoa Châu Á Thái Bình Dương.
Khối tiền xử lý đóng vai trò quan trọng trong việc xử lý dữ liệu đầu vào cho quá trình huấn luyện, bao gồm các bước như thay đổi kích thước ảnh, chuẩn hóa dữ liệu, áp dụng các phép biến đổi và trích xuất đặc trưng.
Khối huấn luyện: Mô hình được huấn luyện bằng cách sử dụng mạng nơ-ron tích chập ResNet50, nhằm tối ưu hóa các tham số tốt nhất từ dữ liệu huấn luyện.
Khối đầu ra của mô hình huấn luyện cung cấp kết quả cuối cùng, cho phép phân loại các cấp độ bệnh Kết quả chẩn đoán được trình bày trên giao diện của trang web, giúp người dùng dễ dàng sử dụng và tiếp cận thông tin.
TẬP DỮ LIỆU
Hình 3.2 Hình ảnh minh họa một mẫu cho từng lớp trong bộ dữ liệu
Tập APTOS 2019 cung cấp cái nhìn đa dạng về các bệnh lý mắt và thị lực thông qua 5 cấp độ ảnh, từ tình trạng nhẹ có thể tiềm ẩn nguy cơ đến những trường hợp nghiêm trọng đe dọa thị lực Những bức ảnh này giúp chúng ta nhận diện sự khác biệt trong mức độ nghiêm trọng của các tình trạng mắt, từ đó có cái nhìn tổng quan về sự biến đổi và mức độ nghiêm trọng của các vấn đề liên quan đến mắt.
Bảng 3.1 Tập dữ liệu ảnh đầu vào sử dụng trong đề tài
Tập dữ liệu như bảng 3.1 được lấy từ bộ dữ liệu phát hiện điểm mù APTOS
2019 với tổng số 3662 ảnh từ các bệnh nhân trong đó: No DR 1805 ảnh, Mild DR
370 ảnh , Moderate DR 999 ảnh, Severe DR 193 ảnh và Proliferative DR là 295 ảnh
Bộ dữ liệu này được phát hành vào quý 2 năm 2019 bởi Hiệp hội Nhãn khoa Châu Á Thái Bình Dương Trong đó 5 lớp của bộ ảnh như sau:
- No DR : không có bệnh võng mạc đái tháo đường
Milde DR là tình trạng xuất hiện các vi phình mạch, giống như những vùng nhỏ sưng lên trong các mạch máu nhỏ của võng mạc, diễn ra ở giai đoạn đầu của bệnh Những vi phình mạch này có khả năng rò rỉ chất lỏng vào võng mạc, gây ảnh hưởng đến sức khỏe thị lực.
Khi bệnh tiểu đường tiến triển, các mạch máu nuôi dưỡng võng mạc có thể sưng lên và biến dạng, dẫn đến mất khả năng vận chuyển máu Những thay đổi này gây ra biến dạng cho võng mạc và có thể góp phần vào tình trạng phù hoàng điểm do tiểu đường (DME).
Bệnh võng mạc tiểu đường nặng (Severe DR) xảy ra khi nhiều mạch máu bị tắc nghẽn, dẫn đến việc mất nguồn cung cấp máu cho các vùng của võng mạc Kết quả là, những khu vực này sẽ tiết ra các yếu tố tăng trưởng, kích thích võng mạc phát triển các mạch máu mới.
Proliferative DR là giai đoạn tiến triển của bệnh, trong đó các yếu tố tăng trưởng từ võng mạc kích thích sự hình thành mạch máu mới Những mạch máu này phát triển trên bề mặt bên trong võng mạc và tạo ra gel thủy tinh thể, chất lỏng trong mắt Tuy nhiên, vì mạch máu mới rất mỏng manh, chúng dễ bị rò rỉ và chảy máu Sự hình thành mô sẹo có thể dẫn đến co rút và gây bong võng mạc, kéo võng mạc ra khỏi mô bên dưới, điều này có thể dẫn đến mất thị lực vĩnh viễn.
CHUẨN HÓA HÌNH ẢNH
Hình 3.3 Minh họa một số ảnh đầu vào
Khi huấn luyện mô hình, việc sử dụng kích thước ảnh ban đầu giúp tăng cường độ rõ nét và chi tiết, nhưng lại làm giảm tốc độ xử lý do sự đa dạng kích thước ảnh từ nhiều nguồn khác nhau Do đó, cần điều chỉnh kích thước ảnh đầu vào về cùng một kích thước để tối ưu hóa tốc độ xử lý và hiệu suất của mô hình Trong quá trình đào tạo, kích thước ảnh được thiết lập là 512x512 để đảm bảo đồng nhất trong tập dữ liệu Thêm vào đó, các giá trị pixel trong ảnh, thường nằm trong khoảng từ 0 đến 255, sẽ được chuẩn hóa về khoảng từ 0 đến 1 bằng cách chia cho 255, nhằm tối ưu hóa chương trình minh họa.
Hình 3.4 Ảnh trước và sau khi định cỡ
MẠNG CNN
Trong thiết kế kiến trúc mô hình, việc xem xét số lượng và chất lượng hình ảnh sẵn có cùng với đối tượng phân loại là rất quan trọng Dựa trên các yếu tố này, cần lựa chọn các tham số phù hợp như số lớp tích chập, kích thước bộ lọc và các thông số của mô hình để tối ưu hóa quá trình huấn luyện Quá trình này đòi hỏi thực hiện nhiều thí nghiệm và tiêu tốn thời gian để đánh giá hiệu suất của mô hình với các tham số khác nhau.
Trong quá trình thiết lập thông số huấn luyện cho mô hình, cần xác định kích thước bộ lọc cho các lớp tích chập, chọn số mẫu dữ liệu cho mỗi batch size, thiết lập ngưỡng dừng cho epoch và điều chỉnh hệ số để tránh hiện tượng overfitting.
❖ XÂY DỰNG CẤU TRÚC MẠNG CNN
Hình 3.5 Mô hình mạng CNN xây dựng
Mô hình mạng Nơ-ron tích chập được xây dựng như Hình 3.5 Kiến trúc mô hình sử dụng transfer learning được chia ra thành 2 phần:
Mạng cơ sở sử dụng cấu trúc RESNET50 đã được huấn luyện trên tập dữ liệu ImageNet, loại bỏ các lớp Fully Connected và Softmax Ảnh đầu vào được định dạng và chuẩn hóa với kích thước 512x512x3, kèm theo ZeroPadding 2D trước lớp Conv2D để bảo toàn thông tin Qua lớp tích chập đầu tiên (conv1) với 64 bộ lọc 7x7 và BatchNormalization, kết quả được kích hoạt bằng ReLU và giảm kích thước còn 128x128 thông qua Max Pooling Mô hình tiếp tục sử dụng 5 khối Residual blocks (Conv2, Conv3, Conv4, Conv5 và output) để học đặc trưng ảnh, mỗi khối bao gồm nhiều lớp Conv2D, BatchNormalization, Activation và Add, với kết nối phần dư để ngăn ngừa mất mát đạo hàm Chiều sâu của mỗi tầng tăng gấp đôi, bắt đầu từ 256 và lần lượt là 512, 1024, 2048, với kích thước cuối cùng là 16x16.
Các lớp Fully Connected giúp giảm chiều dài dữ liệu và phân phối xác suất đầu ra Đầu tiên, lớp GlobalAveragePooling2D được sử dụng để giảm kích thước đầu ra Sau đó, lớp Dropout với tỷ lệ 0.5 được thêm vào để hạn chế overfitting bằng cách giảm số nút mạng ngẫu nhiên Tiếp theo, lớp Dense với 2048 nodes được tạo ra, giúp học các tính năng phức tạp của ảnh như cạnh, góc, và đường cong, sử dụng hàm kích hoạt ‘ReLU’ để cải thiện hiệu suất mô hình và giải quyết vấn đề mất mát đạo hàm trong quá trình huấn luyện Một lớp Dropout khác với tỷ lệ 0.5 cũng được thêm vào để ngăn ngừa overfitting Cuối cùng, lớp ngõ ra có 5 nút cho mô hình phân loại không bệnh và 4 cấp độ bệnh võng mạc đái tháo đường, sử dụng hàm kích hoạt Softmax để dự đoán xác suất cho từng lớp.
PHƯƠNG PHÁP ĐÁNH GIÁ HUẤN LUYỆN
❖ Ma trận nhầm lẫn (Confusion matrix)
Hình 3.6 Ma trận nhầm lẫn
Ma trận nhầm lẫn là một công cụ hữu ích để đánh giá hiệu suất của mô hình dự đoán bằng cách so sánh kết quả dự đoán với nhãn thực tế trong dữ liệu kiểm tra Nó cho thấy số lượng dự đoán đúng và sai cho từng lớp phân loại, giúp xác định lớp nào được phân loại chính xác nhất và lớp nào thường bị nhầm lẫn Việc phân tích ma trận này cho phép chúng ta hiểu rõ hơn về khả năng phân loại của mô hình, đồng thời nhận diện các điểm yếu cần cải thiện Hình 3.6 minh họa một ma trận nhầm lẫn với các tham số liên quan.
• TP (True Positive): Số lượng dự đoán chính xác Là khi mô hình dự đoán đúng một người bị bệnh
• TN (True Negative): Số lượng dự đoán một cách gián tiếp Là khi mô hình dự đoán đúng một người không bị bệnh
• FP (False Positive): Số lượng các dự đoán sai lệch Là khi mô hình dự đoán một người bị bệnh và người đó hoàn toàn khỏe mạnh
• FN (False Negative): Số lượng dự đoán sai lệch một cách gián tiếp Là khi mô hình dự đoán một người không bị bệnh nhưng người đó bị bệnh
Ngoài ra, có 4 thông số cần quan tâm đến là các tỉ lệ TPR, TNR, FPR, FNR được tính theo công thức như sau:
Trong lĩnh vực y tế, tỉ lệ báo động nhầm (FPR) và tỉ lệ bỏ sót (FNR) là hai chỉ số quan trọng trong chẩn đoán bệnh Người ta thường ưu tiên tỉ lệ báo động nhầm cao hơn vì chẩn đoán sai có thể dẫn đến xét nghiệm hoặc điều trị không cần thiết, tuy gây phiền toái nhưng giúp đảm bảo không bỏ sót các trường hợp tiềm ẩn Ngược lại, tỉ lệ bỏ sót cao có thể khiến bệnh không được phát hiện kịp thời, làm tăng nguy cơ sức khỏe cho bệnh nhân và dẫn đến hậu quả nghiêm trọng như gia tăng tỷ lệ tử vong hoặc tình trạng bệnh trở nặng.
Trong lĩnh vực y tế, việc không thể loại bỏ hoàn toàn sai sót là điều hiển nhiên, do đó, nhiều chuyên gia chấp nhận tỉ lệ báo động nhầm cao hơn để giảm thiểu nguy cơ bỏ sót bệnh Sự cân nhắc này rất quan trọng nhằm đảm bảo rằng những trường hợp bệnh nghiêm trọng không bị bỏ qua và được nhận sự chăm sóc, điều trị kịp thời.
Precision là chỉ số đo lường độ chính xác của các điểm được dự đoán là Positive Khi Precision cao, tỷ lệ các điểm dự đoán đúng là Positive cũng cao Ví dụ, nếu Precision đạt giá trị 1, điều đó có nghĩa là tất cả các điểm được dự đoán là Positive đều chính xác, không có điểm nào bị nhầm lẫn là Negative.
Recall, hay còn gọi là Tỷ lệ Dương tính Thực sự, đo lường tỷ lệ các điểm Dương tính thực sự được phát hiện trong tổng số điểm Dương tính Một Recall cao cho thấy tỷ lệ bỏ sót các điểm Dương tính là thấp, và nếu Recall đạt giá trị 1, điều này có nghĩa là tất cả các điểm Dương tính đều được tìm thấy Tuy nhiên, Recall không đánh giá số lượng điểm Âm tính bị nhầm lẫn trong kết quả.
Một mô hình phân loại hiệu quả cần có cả Precision và Recall ở mức cao, gần với giá trị 1 Điều này cho thấy rằng tỷ lệ các điểm dự đoán là Positive thực sự đúng (Precision cao) và tỷ lệ bỏ sót các điểm Positive là thấp (Recall cao).
F1-score là một chỉ số tổng hợp, được tính theo công thức (3.7), nhằm kết hợp Precision và Recall để đánh giá hiệu suất của mô hình phân loại Việc sử dụng F1-score giúp đạt được sự cân bằng giữa việc dự đoán chính xác các trường hợp Positive và giảm thiểu việc bỏ sót các trường hợp Positive khác.
F1-score là chỉ số quan trọng trong việc đánh giá hiệu suất mô hình phân loại, đặc biệt khi Precision và Recall không cân bằng Việc kết hợp cả hai chỉ số này thành một đại lượng duy nhất giúp F1-score cung cấp cái nhìn toàn diện hơn về khả năng phân loại của mô hình.
Độ chính xác là tỷ lệ dự đoán đúng trên tập dữ liệu kiểm tra, được coi là phương pháp đánh giá đơn giản và phổ biến nhất Công thức tính độ chính xác giúp xác định hiệu quả của mô hình dự đoán.
Độ chính xác (TP + TN + FP + FN) chỉ cung cấp cái nhìn tổng quan về hiệu suất của mô hình mà không phân biệt giữa các lớp phân loại Tuy nhiên, nó có thể bị ảnh hưởng bởi sự mất cân bằng dữ liệu, đặc biệt khi số lượng mẫu trong mỗi lớp không đồng đều.
Mặc dù phương pháp đánh giá dựa trên độ chính xác giúp xác định tỷ lệ phần trăm dữ liệu được phân loại đúng, nhưng nó cũng có nhược điểm là không cung cấp thông tin chi tiết về khả năng phân loại của từng lớp Điều này dẫn đến việc chúng ta không thể xác định lớp nào được phân loại chính xác nhất hoặc lớp nào thường bị nhầm lẫn với các lớp khác.
THIẾT KẾ GIAO DIỆN
Giao diện thân thiện với người dùng giúp dễ dàng chẩn đoán hình ảnh, được chia thành hai phần chính: FrontEnd và BackEnd Phần BackEnd sử dụng mô hình mạng CNN đã được huấn luyện, cùng với Django và Django REST Framework, trong khi FrontEnd là giao diện người dùng REST API được phát triển bằng React Hai phần này kết nối với nhau thông qua API Giao diện được xây dựng trên nền tảng Visual Studio Code, một công cụ biên tập mã nguồn miễn phí cho Windows, Linux và macOS do Microsoft phát triển.
The backend is developed using Django, and Visual Studio Code is utilized for clearer structure visualization Within the Python project, there is a manage.py file and a folder named after the project The manage.py file facilitates project interaction through various commands, such as creating an admin account, setting up the database, and running a virtual server.
To launch the REST API on localhost, open the terminal within your Django project and enter the command `python manage.py runserver` to start the virtual server, as illustrated in Figure 3.8.
Hình 3.8 Giao diện terminal khởi động sever ảo
Hình 3.9 dưới đây là kết quả sau khi mở trình duyệt truy cập vào localhost:8000
Hình 3.9 Giao diện hiển thị sau khi truy cập localhost thành công
Sau khi hoàn thành việc phát triển ứng dụng Django, chúng ta đã thiết lập mô hình bác sĩ và dữ liệu bệnh nhân Mô hình bác sĩ cho phép người dùng thực hiện đăng nhập và đăng ký trên trang web, trong khi mô hình bệnh nhân đại diện cho bảng cơ sở dữ liệu chứa thông tin chi tiết về bệnh nhân.
Hình 3.10 Giao diện xây dựng các API REST
Hình 3.11 Giao diện hiển thị API của mô hình bác sĩ
Hình 3.12 Giao diện hiển thị API của dữ liệu bệnh nhân 3.7.2 THIẾT KẾ FRONTEND
Giao diện sẽ được thiết kế bằng React, một thư viện JavaScript mạnh mẽ cho việc xây dựng giao diện người dùng Với tiện ích create-react-app, bạn có thể nhanh chóng tạo các dự án React mà không cần phải cấu hình Webpack, một trình gói module giúp gói các nội dung web như mã JavaScript, CSS và hình ảnh Thông thường, việc cấu hình Webpack yêu cầu nhiều tùy chọn khác nhau, nhưng với create-react-app, bạn không cần lo lắng về điều đó cho đến khi bạn muốn có nhiều quyền kiểm soát hơn Để bắt đầu, bạn chỉ cần sử dụng lệnh npx để tạo một dự án React mới.
THÁO ĐƯỜNG create-react-app frontend Tiếp theo, chuyển bên trong ứng dụng React và khởi động Sever, kết quả như Hình 3.13
Hình 3.13 Giao diện hiển thị khởi động React
Thành phần React là một phần quan trọng trong giao diện người dùng, được chia thành ba phần độc lập: trang chủ, chẩn đoán và danh sách bệnh nhân.
3.7.3 KẾT NỐI FRONTEND VÀ BACKEND
Hình 3.14 Giao tiếp giữa người dùng và sever
Khách hàng (Client) là máy tính của người dùng, nơi người dùng gửi yêu cầu (request) qua giao thức HTTP đến máy chủ (Server) Khi nhận được yêu cầu, server sẽ phân tích loại yêu cầu như GET, POST, DELETE hoặc PUT và sau đó phản hồi (response) lại cho máy của người dùng.
GET là phương thức phân trang dữ liệu sử dụng Django Paginator, cung cấp trang dữ liệu đầu tiên sau khi tuần tự hóa, số lượng khách hàng có sẵn, số lượng trang có sẵn, cùng với các liên kết đến trang trước và trang tiếp theo.
Tháo đường là một lớp tích hợp sẵn trong Django, cho phép phân trang danh sách dữ liệu thành các trang riêng biệt và cung cấp các phương thức để truy cập các mục trong từng trang.
Phương thức POST tuần tự hóa dữ liệu khách hàng và gọi phương thức save() của đối tượng serializer, sau đó trả về một đối tượng Response với mã trạng thái 201 Mỗi dạng xem cần khôi phục một đối tượng HttpResponse, trong khi phương thức save() lưu trữ dữ liệu đã được tuần tự hóa vào cơ sở dữ liệu.
Phương pháp PUT sẽ tạo ra một chuỗi tuần tự cho dữ liệu khách hàng mới, sau đó gọi phương thức save() của đối tượng serializer đã được tạo Cuối cùng, phương pháp này trả về một đối tượng phản hồi với thông tin khách hàng đã được cập nhật.
Phương thức DELETE sẽ kích hoạt phương thức delete() của đối tượng khách hàng để thực hiện việc xóa, sau đó trả về một đối tượng Phản hồi mà không chứa dữ liệu.
Hình 3.15 Lưu đồ chương trình chính chẩn đoán hình ảnh
Lưu đồ chương trình chính mô tả quy trình truy cập trang web của bác sĩ, bao gồm việc đăng nhập nếu đã có tài khoản hoặc đăng ký tài khoản mới Sau khi đăng nhập, bác sĩ sẽ nhập thông tin bệnh và chọn hình ảnh cần chẩn đoán; nếu chưa chọn ảnh, hệ thống sẽ yêu cầu chọn lại Sau khi lưu thông tin và hình ảnh bệnh nhân, bác sĩ sẽ truy cập trang danh sách bệnh nhân, nơi lưu trữ thông tin mới thêm Tại đây, có ba tác vụ chính: “Chi tiết” để xem thông tin chẩn đoán, “Cập nhật” để cập nhật hình ảnh và thông tin bệnh nhân, và “Xóa” để xóa tất cả thông tin của bệnh nhân khỏi danh sách.
Hình 3.16 Lưu đồ chương trình con chẩn đoán hình ảnh
FrontEnd và BackEnd được kết nối thông qua các API đã được phát triển, như thể hiện trong lưu đồ Hình 3.15 Việc sử dụng các API này là cần thiết để đảm bảo sự giao tiếp hiệu quả giữa hai phần của ứng dụng.
Vercel là một nền tảng phát triển web hiện đại, cho phép người dùng dễ dàng triển khai trang web Để bắt đầu, người dùng cần truy cập trang chủ Vercel và tạo tài khoản Sau khi đăng nhập, người dùng có thể tạo một dự án mới, nơi sẽ triển khai trang web của mình trên Vercel.
Bước tiếp theo cần làm là đẩy toàn bộ source code lên Github Cuối cùng , kết nối Github với Vercel, kết quả thành công như Hình 3.17
Hình 3.17 Kết quả sau khi tạo Vercel app