TỔNG QUAN
Bệnh ngoài da hiện nay phổ biến ở động vật, con người và thực vật, chủ yếu do vi khuẩn hoặc nhiễm trùng gây ra Các bệnh như rụng tóc, giun đũa, nhiễm trùng nấm men, đốm nâu và dị ứng có thể gây ảnh hưởng nghiêm trọng đến da và lan rộng theo thời gian Việc phát hiện sớm các bệnh này là rất cần thiết để kiểm soát sự lây lan, đặc biệt ở những nước có khí hậu nóng ẩm như Việt Nam Mặc dù không nguy hiểm đến tính mạng, bệnh ngoài da ảnh hưởng trực tiếp đến thẩm mỹ, gây mất tự tin, khó khăn trong sinh hoạt và cảm giác khó chịu Hầu hết các bệnh da liễu có khả năng lây lan từ người này sang người khác, do đó, việc kiểm soát bệnh ở giai đoạn đầu là rất quan trọng, đòi hỏi sự thăm khám và chẩn đoán từ các bác sĩ tại cơ sở y tế Tuy nhiên, để đưa ra kết quả chính xác, bác sĩ cần thực hiện nhiều xét nghiệm, điều này dẫn đến tình trạng quá tải tại một số bệnh viện tuyến trung ương.
Trong những năm gần đây, lĩnh vực xử lý ảnh đã có nhiều tiến bộ, đặc biệt trong nhận dạng và phân loại hình ảnh Việc phân tích hình ảnh từ dữ liệu thu được từ các cảm biến như camera và webcam đã trở thành một xu hướng mạnh mẽ Trong y tế, các bức ảnh về da sau khi được xử lý cung cấp nhiều thông tin quan trọng, vượt xa khả năng nhận diện của con người, và hỗ trợ hiệu quả cho các chuẩn đoán lâm sàng.
Việc ứng dụng kỹ thuật xử lý ảnh trong việc phát hiện và phân loại các bệnh da liễu phổ biến giúp giảm đáng kể khối lượng công việc và nâng cao độ chính xác trong kết luận Nghiên cứu về nhận dạng bệnh ngoài da từ hình ảnh kỹ thuật số đang thu hút sự quan tâm lớn từ các nhà nghiên cứu Một khảo sát về các phương pháp chẩn đoán bệnh ngoài da dựa trên kỹ thuật xử lý ảnh đã được trình bày, trong đó có phương pháp đối chiếu kết quả đặc trưng với hình ảnh phân tích thông qua chuyển đổi mẫu dựa trên kết cấu và hình thái.
Mục tiêu của luận văn là phát triển một hệ thống xử lý hình ảnh sử dụng mạng nơron tích chập nhằm phát hiện và phân loại các bệnh da ở người Hệ thống này hứa hẹn mang lại kết quả nhanh chóng hơn so với các phương pháp truyền thống hiện có.
Nhiệm vụ và giới hạn
- Thu thập tập ảnh mẫu về các loại bệnh da người
- Tiền xử lý ảnh (lọc ảnh dùng tích chập, định lại kích cỡ ảnh, chuẩn hóa ảnh)
- Trình bày cơ sở lý thuyết về các thuật toán phân loại bệnh da người
- Thực hiện huấn luyện và phân loại bệnh da người sử dụng mạng Nơ-ron tích chập
- Viết code cho mô phỏng thuật toán trên phần mềm Visual Studio Code
- Kiểm tra và hiệu chỉnh độ chính xác của phần mềm mô phỏng với ảnh mẫu
- Viết luận văn, trình bày kết quả đạt được
- Dựa trên kết quả đạt được đưa ra phương hướng phát triển tiếp theo cho luận văn
Hiện nay, có nhiều loại bệnh da phổ biến, nhưng bài viết này chỉ tập trung vào một số bệnh cụ thể như ung thư tế bào (Basal cell carcinoma), viêm màng sừng (Benign keratosis), u da lành tính (Dermatofibroma), nốt ruồi hắc tố (Melanocytic nevus) và ung thư tế bào hắc tố (Melanoma).
Dữ liệu cho luận văn này được lấy từ tập dữ liệu ISIC 2018, và hiện tại chưa thu thập được hình ảnh bệnh da từ các bệnh viện, cơ sở y tế, cũng như ảnh chụp trực tiếp từ điện thoại hoặc trên Internet.
Phương pháp nghiên cứu Để thực hiện nghiên cứu luận văn này, cần phải kết hợp hai phương pháp sau:
Phương pháp nghiên cứu lý thuyết bao gồm việc tìm hiểu và tham khảo các tài liệu liên quan đến xử lý ảnh từ các tạp chí khoa học, hội nghị chuyên môn, cũng như các bài báo của IEEE và Springer Đồng thời, nghiên cứu các công cụ, hàm, câu lệnh và ngôn ngữ lập trình Python cũng là một phần quan trọng trong quá trình này.
Phương pháp mô phỏng sử dụng kỹ thuật xử lý hình ảnh để xây dựng công cụ chuẩn đoán Quá trình mô phỏng được thực hiện bằng cách lập trình ngôn ngữ Python trong môi trường ứng dụng Visual Studio Code.
Luận văn được trình bày thành 05 chương:
Lĩnh vực nghiên cứu đóng vai trò quan trọng trong việc phát triển kiến thức và giải quyết các vấn đề thực tiễn Việc hiểu rõ tầm quan trọng của lĩnh vực này sẽ giúp người thực hiện đề tài xác định các mục tiêu rõ ràng và nhiệm vụ cụ thể, từ đó nâng cao hiệu quả nghiên cứu.
CƠ SỞ LÝ THUYẾT
Trình bày các bệnh ngoài da thường gặp, giới thiệu cơ sở lý thuyết của các thuật toán, các phương pháp phân loại bệnh da người
Chương 3: Mạng tích chập cho nhận dạng bệnh da
Mô hình tổng quát phân loại bệnh da người sử dụng mạng Nơron tích chập được giới thiệu nhằm cải thiện độ chính xác trong chẩn đoán Bài viết trình bày quy trình thu thập mẫu ảnh bệnh da, đồng thời áp dụng phương pháp phân loại bệnh da bằng Separable Convolutions, giúp tối ưu hóa hiệu suất phân loại và giảm thiểu thời gian xử lý.
Chương 4: Kết quả và thảo luận
Trình bày và đánh giá các kết quả thu được thông qua phần mềm Visual Studio Code
Chương 5: Kết luận và hướng phát triển
Trình bày những phương pháp, nội dung đã thực hiện được, nêu ra hướng phát triển tiếp theo cho luận văn để đạt được hiệu quả tốt hơn
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT Các bệnh ngoài da thường gặp
Hiện nay, bệnh ngoài da ngày càng trở nên phổ biến trong cuộc sống hàng ngày của chúng ta Nhiều nguyên nhân gây ra tình trạng này, bao gồm việc vệ sinh không đúng cách, môi trường sống ẩm thấp và bụi bẩn, nguồn nước sinh hoạt không đạt tiêu chuẩn, cũng như chế độ ăn uống quá nhiều dầu mỡ.
Khí hậu nóng ẩm tại Việt Nam khiến da dễ tiết mồ hôi và bám bụi, dẫn đến nguy cơ nhiễm khuẩn và ngứa ngáy Thêm vào đó, chế độ ăn uống không đảm bảo vệ sinh có thể khiến cơ thể tiếp xúc với nhiều hóa chất độc hại Điều này đã gia tăng tỷ lệ mắc các bệnh về da, bao gồm ung thư tế bào, viêm màng sừng và ung thư tế bào hắc tố.
Hình 2.1 Một số loại da bị bệnh
(a) Da bình thường; (b) Da mắc bệnh mụn rộp; (c) Da mắc bệnh viêm da; (d) Da mắc bệnh vảy nến
Phương pháp phân tích thành phần chính
Phân tích thành phần chính (PCA) là một phương pháp phổ biến trong phân tích dữ liệu, giúp trích xuất các đặc trưng cơ bản đại diện cho tập dữ liệu PCA cho phép mô tả tập dữ liệu trong không gian n chiều và chuyển đổi nó thành không gian k chiều (với k (1x1x3x256).
Vậy với CNN truyền thống thực hiện tích chập 256 kernel 5x5x3 trên 8x8 điểm của ảnh đầu vào, nghĩa là 256x3x5x5x8x8=1,228,800 phép nhân
Trong quá trình tính toán, tích chập theo chiều sâu sử dụng 3 bộ kernel kích thước 5x5x1, mỗi bộ dịch chuyển 8x8 lần, dẫn đến tổng cộng 4,800 phép nhân (3x5x5x1x8x8) Đồng thời, tích chập hướng sử dụng 256 bộ kernel kích thước 1x1x3, cũng dịch chuyển 8x8 lần, tạo ra 1,152 phép nhân (256x1x1x3x8x8) Khi cộng cả hai loại tích chập lại, tổng số phép nhân cần thiết là 53,952.
Mô hình mạng với 53,952 thông số rõ ràng nhẹ hơn rất nhiều so với 1,228,800 thông số, giúp nó thực hiện các phép toán nhanh hơn đáng kể.
Tích chập thông thường thực hiện 256 lần biến đổi ảnh đầu vào, mỗi lần sử dụng phép nhân 5x5x3x8x8H00 Ngược lại, tích chập theo chiều sâu chỉ cần biến đổi ảnh đầu vào một lần duy nhất và sau đó kéo dài kết quả này lên 256 kênh Việc giảm số lần biến đổi này giúp tăng tốc độ tính toán của mạng một cách đáng kể.
Xây dựng mạng CNN
Giả sử ta có ảnh đầu vào mạng CNN như sau:
Hình 3.5 Ảnh đầu vào mạng CNN
Kernel sẽ di chuyển trên ảnh đầu vào, tạo ra một ma trận lớp tích chập Các giá trị pixel trong ma trận được tô sáng sẽ được nhân với các giá trị pixel tương ứng của kernel, và sau đó tính trung bình để thu được kết quả.
Hình 3.6 Tích chập lần 1 ảnh đầu vào với kernel
Làm tương tự với stride = 1, sẽ có các giá trị tích chập tiếp theo:
Hình 3.7 Tích chập lần 2 ảnh đầu vào với kernel 1
Tính tương tự cho đến hết ảnh đầu vào thu được giá trị tích chập sau:
0 0 0.11 0.11 0 -0.11 0.11 0.11 0 0 0.11 -0.11 0.22 0.11 Hình 3.8 Giá trị tích chập ảnh đầu vào với kernel 1
3.3.2 Bộ tuyến tính được tinh chỉnh
Bộ tuyến tính được tinh chỉnh (ReLU) đã trở thành một công cụ phổ biến trong việc huấn luyện các mạng nơ-ron trong những năm gần đây ReLU hoạt động bằng cách lọc các giá trị âm, giúp cải thiện hiệu suất của mạng nơ-ron trong các tác vụ học máy.
Công thức của hàm kích hoạt ReLU (Rectified Linear Unit) cho giá trị đầu vào nhỏ hơn 0 là 0, cho phép nó hoạt động hiệu quả hơn so với các hàm kích hoạt như Sigmoid và Tanh Một số ưu điểm nổi bật của ReLU bao gồm khả năng giảm thiểu vấn đề biến mất gradient và tốc độ tính toán nhanh hơn, giúp cải thiện hiệu suất của mô hình học sâu.
ReLU có tốc độ hội tụ nhanh gấp 6 lần so với Tanh, nhờ vào việc không bị bão hòa ở hai đầu như Sigmoid và Tanh (Krizhevsky et al.) Điều này giúp cải thiện hiệu suất trong quá trình huấn luyện mô hình.
ReLU có ưu điểm vượt trội về tốc độ tính toán so với Tanh và Sigmoid, vì Tanh và Sigmoid sử dụng hàm exp và công thức phức tạp hơn, dẫn đến chi phí tính toán cao hơn.
- Tuy nhiên ReLU cũng có một nhược điểm: Với các node có giá trị nhỏ hơn
Khi sử dụng hàm kích hoạt ReLU, hiện tượng "Dying ReLU" có thể xảy ra khi các node trở thành 0, dẫn đến việc không có thông tin cho bước kích hoạt tuyến tính ở lớp tiếp theo Điều này khiến cho các hệ số tương ứng từ các node này không được cập nhật qua quá trình gradient descent Để khắc phục vấn đề này, hàm kích hoạt Leaky ReLU đã được phát triển.
- Khi learning rate lớn, các trọng số (weights) có thể thay đổi theo cách làm tất cả neuron dừng việc cập nhật f(x) = max(0, 𝑥) (3.2)
Hình 3.9 Đồ thị hàm ReLu
Lớp ReLu có mục đích thiết lập ngưỡng cho ảnh, với giá trị ngưỡng là 0, nhằm loại bỏ các giá trị âm không cần thiết, từ đó giảm thiểu ảnh hưởng đến các tính toán ở các lớp tiếp theo Hàm kích hoạt phi tuyến được mô tả trong (3.2) Khi áp dụng lớp kích hoạt phi tuyến vào ví dụ trong hình 3.8, chúng ta sẽ nhận được kết quả tương ứng.
Hình 3.10 Kết quả sau khi áp dụng hàm kích hoạt phi tuyến
3.3.3 Lớp lấy mẫu lớn nhất
Lớp lấy mẫu lớn nhất giúp giảm chiều không gian đầu vào và giảm độ phức tạp tính toán của mô hình, đồng thời kiểm soát hiện tượng overfitting Lớp này có nhiều hình thức khác nhau tùy thuộc vào yêu cầu của bài toán, nhưng thường được sử dụng để giữ lại các chi tiết quan trọng, cụ thể là các pixel có giá trị lớn nhất.
Lớp lấy mẫu lớn nhất trong mạng CNN có nhiệm vụ lấy giá trị lớn nhất từ vùng đầu vào, với ngõ ra được ký hiệu là ykij và phần tử tại vị trí (p,q) được biểu diễn bằng xkpq Việc này giúp giảm số lượng nơ-ron xuống một nửa và mỗi bản đồ đặc trưng khác nhau sẽ có lớp lấy mẫu tương ứng.
22 Áp dụng lớp lấy mẫu lớn nhất vào ví dụ hình 3.10 thu được:
Hình 3.11 Kết quả sau khi qua lớp lấy mẫu lớn nhất lần 1
Thực hiện lớp lấy mẫu lớn nhất thêm một lần nữa nhằm giảm chiều cũng như giảm độ phức tạp của mạng CNN
0.22 0.22 0.22 0.22 b Đầu ra Hình 3.12 Kết quả sau khi thực hiện lớp lấy mẫu lớn nhất
3.3.4 Lớp kết nối đầy đủ
Sau khi ảnh được xử lý qua nhiều lớp tích chập và lớp lấy mẫu, model sẽ học được các đặc điểm quan trọng của ảnh Tensor ngõ ra từ lớp cuối cùng có kích thước H*W*D sẽ được chuyển đổi thành một vector kích thước (H*W*D) Tiếp theo, các lớp fully connected sẽ được sử dụng để kết hợp các đặc điểm này nhằm tạo ra output cho model.
Cập nhật trọng số ngõ ra:
Cập nhật trọng số giữa ngõ vào và các nốt ẩn:
Hàm mục tiêu (Loss funtion) là hàm Mean Square Error (MSE):
Hàm Softmax là một trong những hàm kinh điển trong học máy, được sử dụng để phân loại đối tượng dựa trên vector đặc trưng đã được tính toán từ các lớp trước Hàm này tạo ra số lớp nơ-ron tương ứng với số bệnh đầu vào mà bài toán yêu cầu.
Chúng ta cần xây dựng một mô hình xác suất cho mỗi đầu vào x, sao cho xác suất thuộc về lớp i được biểu diễn bằng ai Để đảm bảo ai dương và tổng các ai bằng 1, chúng ta cần xem xét mối quan hệ giữa các giá trị zi và từ đó tính toán ai Thêm vào đó, một điều kiện tự nhiên là giá trị zi = wiTx càng lớn thì xác suất dữ liệu thuộc lớp i càng cao Cuối cùng, điều kiện tổng các ai bằng 1 có thể được đảm bảo thông qua các phương pháp tính toán phù hợp.
Với mọi i =1,2, ,C Lúc này, ta có thể giả sử rằng:
Trong đó, P(y=i|x;W) được hiểu là xác suất để một điểm dữ liệu x rơi vào class thứ i nếu biết tham số mô hình (ma trận trọng số) là W
Hình 3.13 Mô hình Softmax Regression dưới dạng mạng nơ-ron
Tập dữ liệu
Dữ liệu được tải xuống từ trang web www.isic-archive.com, nơi cung cấp một cơ sở dữ liệu đã được kiểm nghiệm và ứng dụng rộng rãi trong nhiều nghiên cứu khoa học Việc sử dụng cơ sở dữ liệu có sẵn thay vì thu thập dữ liệu thực tế giúp tiết kiệm thời gian và nguồn lực, đồng thời đảm bảo tính chính xác và độ tin cậy của thông tin.
- Các hình ảnh trong database đã được chuẩn hóa
- Việc thu thập dữ liệu thực tế rất khó khăn (thiếu chính xác, nhiễu) đối với sinh viên không thuộc ngành y
Bộ dữ liệu bao gồm 10.000 mẫu ảnh bệnh da, được phân loại thành 7 bệnh cơ bản: ung thư tế bào (Basal cell carcinoma), viêm màng sừng (Benign keratosis), u da lành tính (Dermatofibroma), nốt ruồi hắc tố (Melanocytic nevus), ung thư tế bào hắc tố (Melanoma), dày sừng quang hóa (Actinic keratosis) và u máu (Vascular lesion) Tất cả ảnh trong bộ dữ liệu được lưu dưới định dạng JPEG với kích thước 600x450 pixels.
Trong nghiên cứu nhận dạng bệnh da bằng mạng nơ-ron tích chập (CNN), tác giả đã lựa chọn 5 loại bệnh để phân loại, bao gồm ung thư tế bào (Basal cell carcinoma), viêm màng sừng (Benign keratosis), u da lành tính (Dermatofibroma), nốt ruồi hắc tố (Melanocytic nevus) và ung thư tế bào hắc tố (Melanoma) Mỗi loại bệnh được hỗ trợ bởi hơn 200 hình ảnh, tổng cộng khoảng hơn 1000 hình ảnh cho cả 5 loại bệnh.
Tiền xử lý dữ liệu
Lọc ảnh là một kỹ thuật quan trọng trong xử lý ảnh và ứng dụng thị giác máy tính, với nhiều bộ lọc phổ biến như Sobel, Scharr, Prewitt và log Những bộ lọc này giúp cải thiện chất lượng hình ảnh và trích xuất các đặc trưng cần thiết cho các nhiệm vụ phân tích hình ảnh.
25 laplacian Mỗi một bộ lọc có những đặc tính riêng, tùy vào mục đích sử dụng mà lựa chọn bộ lọc hợp lý
Lọc ảnh là ứng dụng quan trọng trong mạng nơ-ron tích chập, giúp làm nổi bật các chi tiết đặc trưng của hình ảnh Kết quả đầu ra của lớp lọc này được tạo ra thông qua quá trình tích chập giữa bộ lọc và dữ liệu đầu vào.
Trong lớp tích chập, việc áp dụng nhiều bộ lọc giúp nâng cao hiệu quả trích đặc trưng Các bộ lọc trong mạng nơ-ron được khởi tạo ngẫu nhiên và điều chỉnh thông qua quá trình lan truyền ngược Sau mỗi vòng huấn luyện, giá trị trong các bộ lọc sẽ được cập nhật để tối ưu hóa độ chính xác của mạng.
Giả sử bộ lọc hk có kích thước m x n tích chập với ảnh đầu vào f(x,y) và cho ngõ ra w(x,y) với công thức sau:
Với f(𝑥,𝑦) ảnh vào, h(s,t) bộ lọc và w(x,y) ảnh ngõ ra
Hình 3.14 Tích chập ngõ vào và cửa sổ lọc
3.5.2 Định lại kích cỡ ảnh
Khi giữ nguyên kích thước vật lý, ảnh sẽ sắc nét và chi tiết hơn với độ phân giải cao Tuy nhiên, dung lượng ảnh lớn có thể làm chậm quá trình xử lý Để cải thiện tốc độ xử lý, chúng ta có thể điều chỉnh kích thước ảnh mà không ảnh hưởng đến kết quả cuối cùng.
26 a Ảnh gốc b Ảnh sau xử lý
Hình 3.15 Ảnh sau khi định lại kích cỡ ảnh
3.5.3 Chuẩn hóa ảnh Đối với các dữ liệu hình ảnh thông thường, giá trị pixel là các số nguyên có giá trị từ 0 đến 255 Nếu các giá trị đầu vào này lớn thì sẽ dẫn đến mạng CNN hoạt động không tối ưu, không đáp ứng được các yêu cầu về thời gian thực Do đó cần phải chuẩn hóa các giá trị pixel sao cho mỗi pixel có giá trị từ 0 đến 1 để giúp mạng CNN hoạt động tốt hơn mà vẫn đảm bảo các bức ảnh được hiển thị như thông thường Để làm được điều này bằng cách chia tất cả giá trị pixel cho giá trị lớn nhất đó là 255.