Trang 2 LỜI CẢM ƠNChúng em xin cảm ơn các thầy cô, bạn bè đã hỗ trợ và giúp đỡ chúngem trong quá trình thực hiện bài tập lớn về chủ đề ‘Phân loại tổn thương dabằng mạng CNN’.Việc áp dụng
TỔNG QUAN VỀ ĐỀ TÀI VÀ CƠ SỞ LÝ THUYẾT
Giới thiệu về lý do chọn đề tài
Ung thư da là một trong những vấn đề sức khỏe nghiêm trọng trên toàn cầu, và việc phát hiện sớm ung thư da đóng vai trò quan trọng trong việc cải thiện tỷ lệ sống sót và kết quả điều trị Trong nỗ lực này, mô hình Convolutional Neural Network (CNN) đã được chứng minh là một công cụ mạnh mẽ và hiệu quả trong phát hiện ung thư da từ dữ liệu hình ảnh.
CNN có khả năng tự động học các đặc trưng và mô hình hoá thông qua quá trình huấn luyện trên dữ liệu Điều này cho phép nó tìm ra các mẫu và đặc trưng phức tạp trong ảnh da liễu mà có thể không dễ dàng nhận thấy bằng mắt thường Điểm mạnh này giúp CNN phân loại các ảnh da liễu một cách chính xác và hiệu quả, đồng thời giảm thiểu sự phụ thuộc vào kỹ thuật viên hoặc chuyên gia y tế.
Ung thư da thường được chẩn đoán dựa trên việc phân tích các biểu hiện hình ảnh trên da như màu sắc, hình dạng và kích thước của nốt ruồi hay khối u CNN có thể xử lý dữ liệu không gian này một cách hiệu quả bằng cách sử dụng các lớp tích chập để trích xuất các đặc trưng từ ảnh Điều này giúp nâng cao khả năng phát hiện các biểu hiện và đặc trưng quan trọng của ung thư da.
Hiệu suất tính toán và tốc độ xử lý được triển khai trên các hệ thống tính toán hiệu suất cao, cho phép xử lý nhanh chóng và chính xác hàng ngàn hoặc thậm chí hàng triệu ảnh da liễu trong việc xử lý lượng lớn dữ liệu hình ảnh và giảm thời gian đáng kể trong quá trình chẩn đoán và đánh giá ung thư da.
Phương pháp phát hiện ung thư da bằng CNN có tiềm năng ứng dụng rộng rãi trong thực tế Nó có thể được tích hợp vào các hệ thống y tế thông minh, ứng dụng di động hoặc thiết bị y tế di động để cung cấp hỗ trợ chẩn đoán và theo dõi từ xa cho bệnh nhân Việc phát hiện ung thư da sớm và xác định các vùng da đáng ngờ có thể giúp giảm tải cho hệ thống y tế và tăng cường khả năng chăm sóc sức khỏe cộng đồng.
Tổng quan về trí tuệ nhân tạo (Artificial intelligence)
Vào năm 1943, Warren McCulioch và Walter Pitts bắt đầu thực hiện nghiên cứu ba cơ sở lý thuyết cơ bản: Triết học cơ bản và chức năng của các neural thần kinh; phân tích các mệnh đề logic; lý thuyết dự đoán của Turing Các tác giả đã nghiên cứu đề xuất mô hình neural nhân tạo, mỗi neural đặc trưng bởi hai trạng thái “bật”, “tắt” và phát hiện mạng neural có khả năng học.
Vào đầu những năm 1980, những nghiên cứu thành công liên quan đến AI như các hệ chuyên gia (expert systems), một dạng của chương trình
AI mô phỏng tri thức và các kỹ năng phân tích của một hoặc nhiều chuyên gia con người AI được áp dụng trong logic, khai phá dữ liệu, chẩn đoán y học và nhiều lĩnh vực ứng dụng khác trong công nghiệp Sự thành công dựa vào nhiều yếu tố: Tăng khả năng tính toán của máy tính, tập trung giải quyết các bài toán con cụ thể, xây dựng các mối quan hệ giữa AI và các lĩnh vực khác giải quyết các bài toán tương tự và một sự chuyển giao mới của các nhà nghiên cứu cho các phương pháp toán học vững chắc và chuẩn khoa học chính xác.
Tổng quan về ảnh và một số kỹ thuật xử lý ảnh
1.3.1.1 Một số khái niệm cơ bản Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật Ảnh số bao gồm một tập hữu hạn các phần tử được biểu diễn bởi giá trị số Ảnh số có thể được biểu diễn dưới dạng ma trận hai chiều, mỗi phần tử của ảnh số gọi là điểm ảnh (pixel) Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giải càng cao thì càng thể hiện rõ nét các đặt điểm của tấm ảnh và càng làm cho tấm ảnh trở nên thực và sắc nét hơn.
Hình 1.1 Ảnh ký tự chữ A và ma trận số của vùng chọn Điểm ảnh: Điểm ảnh (Pixel) là một phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh Trong hình 1.1 mỗi điểm ảnh là một ô mang một giá trị số biểu thị mức xám từ 0 đến 255.
Mức xám của ảnh: Mức xám: Là kết quả của sự biến đổi tương ứng
1 giá trị độ sáng của 1 điểm ảnh với một giá trị nguyên dương Thông thường nó xác định trong [0, 255] tuỳ thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn Các thang giá trị mức xám thông thường: 2, 16, 32, 64,
128 Ảnh đa mức xám thường dùng là 256, như vậy mức xám thường xác định trong khoảng [0, 255] tùy thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn.
Hình 1.2 Ma trận số biểu thị mức xám của các điểm ảnh Độ phân giải của ảnh:Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị.
Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều.
Một số độ phân giải thông thường được sử dụng trong các thiết bị hiển thị và lĩnh vực xử lý ảnh như 640x480, 800x600, 1024x768 (HD), 192x1080 (full HD), 3840x2160 (UHD)[2].
1.3.1.2 Một số dạng ảnh Ảnh màu: thường là các ảnh chứa thông tin về đối tượng được biểu diễn dưới dạng màu sắc mà mắc thường có thể quan sát được Mỗi điểm ảnh có cấu trúc gồm nhiều kênh khác nhau, thông thường trong máy tính, nó biểu diễn 3 lớp màu cơ bản RGB (Red, Green, Blue)[2]. Ảnh đa mức xám:thường biểu diễn thông tin liên quan đến cường độ đa xám của đối tượng trong không gian mà không được thể hiện bởi màu sắc thực của nó[2]. Ảnh nhị phân: Giá trị xám của tất cả các điểm ảnh chỉ nhận giá trị 1 hoặc 0 như vậy mỗi điểm ảnh trong ảnh nhị phân được biểu diễn bởi 1 bit. Ảnh nhị phân thường được dùng để biểu diễn, phân biệt sự xuất hiện đối tượng và nền trong mỗi bước ảnh.
1.3.2 Một số kỹ thuật xử lý ảnh
Lược đồ ảnh là một đồ thị biểu diễn tần số xuất hiện của cường độ sáng điểm ảnh theo các mức hay nói cách khác lược đồ Histogram của một hình ảnh biểu diễn lược đồ về sự phân bố các mức cường độ xám của một bức ảnh.
1.3.2.2 Nhị phân hóa ảnh Để chuyển sang ảnh nhị phân trước tiên cần chuyển ảnh về dạng ảnh xám với các mức xám có giá trị từ 0 đến 255 dựa trên ba giá trị red, green, blue theo công thức: greycolor = r * 0.299 + g * 0.587 + b * 0.114
Sử dụng ngưỡng thích hợp để chuyển các điểm ảnh về dạng 0
(màu đen) hoặc 255 (màu trắng) theo nguyên tắc: g(x, y) = 1 nếu f(x, y) > T và g(x, y) = 0 nếu f(x, y) ≤ T
Trong đó: ˗ g(x, y) là giá trị kết quả tại điểm ảnh có tọa độ (x, y); ˗ f(x, y) là giá trị điểm ảnh (x, y)của ảnh cần xử lý; ˗ T là ngưỡng.
Trích chọn và biểu diễn đặc trưng hình ảnh
Màu sắc là một đặc trưng nổi bật và được sử dụng phổ biến nhất trong tìm kiếm ảnh theo nội dung Mỗi một điểm ảnh (thông tin màu sắc) có thể được biểu diễn như một điểm trong không gian màu sắc ba chiều Các không gian màu sắc thường dùng là: RGB, Munsell, CIE, HSV.
Kết cấu hay còn gọi là vân (texture) là một đối tượng dùng để phân hoạch ảnh ra thành những vùng được quan tâm và để phân lớp những vùng đó.
Vân cung cấp thông tin sự sắp xếp về mặt không gian của màu sắc và cường độ của một ảnh.
Hình dạng của một ảnh hay một vùng là một đặc trưng quan trọng trong việc xác định và phân biệt ảnh trong nhận dạng mẫu Mục tiêu chính của biểu diễn hình dạng trong nhận dạng mẫu là đo thuộc tính hình học của một đối tượng được dùng trong phân lớp, so sánh và nhận dạng đối tượng.
1.4.2 Một số phương pháp trích chọn đặc trưng đơn giản
1.4.2.1 Trích chọn đặc trưng ảnh dựa trên màu sắc
Lược đồ màu (Histogram): Là đại lượng đặc trưng cho phân bố màu cục bộ của ảnh Độ đo tính tương tự về màu sắc được tính bằng phần giao của
2 lược đồ màu ảnh truy vấn H(IQ) và ảnh trong cơ sở dữ liệu ảnh H(ID) Kết quả sẽ là một lược đồ màu thể hiện độ giống nhau giữa 2 ảnh trên Tuy nhiên vì lược đồ màu chỉ thể hiện tính phân bố màu toàn cục của ảnh mà không xét đến tính phân bố cục bộ của điểm ảnh nên có thể có 2 ảnh xem rất khác nhau nhưng lại có cùng lược đồ màu.
Vector liên kết màu (Color Coherence Vector): Là lược đồ tinh chế lược đồ màu, chia mỗi ô màu thành 2 nhóm điểm ảnh: nhóm liên kết màu (coherence pixels) và nhóm không liên kết màu (noncoherence pixels) Vector liên kết màu còn giúp giải quyết khuyết điểm về tính không duy nhất của lược đồ màu đối với ảnh Hai ảnh có thể có chung lược đồ màu nhưng khác nhau hoàn toàn, đây là khuyết điểm của lược đồ màu Nhưng với tìm kiếm theo đặc trưng vector liên kết màu thì nó sẽ giải quyết được khuyết điểm không duy nhất này.
1.4.2.2 Trích chọn đặc trưng ảnh dựa trên kết cấu ˗ Kết cấu hay còn gọi là vân (texture), là một đối tượng dùng để phân hoạch ảnh ra thành những vùng được quan tâm và để phân lớp những vùng đó.
Vân cung cấp thông tin sự sắp xếp về mặt không gian của màu sắc và cường độ của một ảnh Ví dụ cấu trúc của vân của một số loại lá cây. ˗ Ma trận đồng hiện (Co-occurrence Matrix): Ma trận đồng hiện là ma trận lưu trữ số lần xuất hiện của những cặp điểm ảnh trên một vùng đang xét. Các cặp điểm này được tính theo những quy luật cho trước. ˗ Phép biến đổi Wavelet: Vân thu được từ biến đổi wavelet được hầu hết các nghiên cứu công nhận là đặc trưng về vân tốt nhất cho việc phân đoạn ảnh Thuật toán tính ra các đặc trưng vân theo biến đổi Wavelet:
+ Tính biến đổi Wavelet trên toàn ảnh.
+ Ứng với mỗi vùng cần tính, ta tính được 3 thành phần ứng với các miền HL, LH và HH.
+ Khi áp dụng biến đổi wavelet ở những mức sâu hơn, ta sẽ có tương ứng 3xV thành phần ứng với V là chiều sâu của biến đổi Wavelet. ˗ Các đặc trưng lọc Gabor: Lọc Gabor được sử dụng rộng rãi để trích rút các đặc trưng ảnh, đặc biệt là các đặc trưng kết cấu Nó tối ưu về mặt cực tiểu hoá sự không chắc chắn chung trong miền không gian và miền tần số và thường được sử dụng như một hướng và tỷ lệ biên điều hướng và phát hiện đường Có nhiều cách tiếp cận đã được đề xuất để mô tả các kết cấu của các ảnh dựa trên các lọc Gabor. ˗ Các đặc trưng biến đổi sóng: Tương tự với lọc Gabor, biến đổi sóng cung cấp một cách tiếp cận đa độ phân giải đối với phân tích kết cấu và phân lớp Các biến đổi sóng phân rã một tín hiệu với một họ các hàm cơ sở ψmn(x) thu được thông qua dịch chuyển sự co giãn của sóng ψ(x) ψ(x) = 2 -1/2 ψ(2-mx - n)Hơn nữa, theo so sánh của các đặc trưng biến đổi sóng khác nhau, chọn riêng lọc sóng không là then chốt cho phân tích kết cấu.
1.4.2.3 Trích chọn đặc trưng ảnh dựa trên hình dạng
Trích chọn đặc trưng theo biên:
+ Lược đồ hệ số góc: Lược đồ gồm 73 phần tử trong đó: 72 phần tử đầu chứa số điểm ảnh có hệ số gốc từ 0 - 355 độ, các hệ số góc này cách nhau 5 độ Phần tử cuối chứa số phần tử không nằm trên biên cạnh.
+ Vector liên kết hệ số góc (Edge Direction Coherence Vector): Là lược đồ tinh chế lược đồ hệ số góc, chia mỗi ô chứa thành 2 nhóm điểm ảnh: Nhóm điểm liên kết hệ số góc (coherent pixels) và nhóm điểm không liên kết hệ số góc (non-coherence pixels) Một pixel trong một ô chứa được gọi là điểm liên kết hệ số góc (coherent) nếu nó thuộc vùng gồm các điểm thuộc cạnh có hệ số góc tương tự với kích thước lớn (thường vào khoảng 0.1% kích thước ảnh).
Hình 1.3 Vector liên kết hệ số góc và liên kết giữa các biên cạnh
+ Trích chọn đặc trưng theo vùng: Ảnh gồm tập hợp các vùng hay còn gọi là đoạn Đây là đặc trưng đặc biệt của ảnh Với đặc trưng vùng sẽ giúp cho chúng ta có thể giải quyết được một vấn đề lớn đang cản trở bước phát triển việc truy tìm ảnh dựa vào nội dung là dữ liệu nhập được mô phỏng gần gũi hơn với suy nghĩ của con người và ảnh tìm được có thể mang nội dung ngữ nghĩa rất khác so với ảnh truy vấn.
Các kỹ thuật học máy
1.5.1 Tổng quan về học máy
Học máy (Machine Learning) là một ngành khoa học nghiên cứu các thuật toán cho phép máy tính có thể học được các khái niệm (concept) Có hai loại phương pháp học máy chính:
Machine Learning được chia thành 3 nhánh chính: supervised learning (học có giám sát), unsupervised learning (học không có giám sát), và reinforcement learning (học tăng cường).
Học có giám sát được dùng trong trường hợp một thuộc tính (nhãn) có sẵn cho một tập dữ liệu nhất định (tập huấn luyện), nhưng thiếu và cần được dự đoán cho các trường hợp khác.
Học không có giám sát thì ngược lại, nó được sử dụng trong trường hợp khám phá các mối quan hệ tiềm ẩn trong một tập dữ liệu không được gán nhãn (các mục không được chỉ định trước).
Học tăng cường thì nằm giữa 2 loại trên, có một số hình thức phản hồi có sẵn cho mỗi bước tiên đoán hoặc hành động, nhưng không có nhãn chính xác hoặc thông báo lỗi.
Quá trình nhận dạng đối tượng được mô tả bằng sơ đồ tổng quát như sau:
Hình 1.4 Quá trình nhận dạng đối tượng
Linear Regression (Hồi quy tuyến tính) là một trong những thuật toán cơ bản và phổ biến nhất của Supervised Learning (Học có giám sát), trong đó đầu ra dự đoán là liên tục Thuật toán này thích hợp để dự đoán các giá trị đầu ra là các đại lượng liên tục như doanh số hay giá cả thay vì cố gắng phân loại chúng thành các đại lượng rời rạc như màu sắc và chất liệu của quần áo, hay xác định đối tượng trong một bức ảnh là mèo hay chó, …
Tổng quát hơn, trong supervised learning (học có giám sát), chúng ta có một bộ dữ liệu và bộ dữ liệu này gọi là training set (tập huấn luyện).
Giả sử chúng ta có bộ dữ liệu thống kê điểm giữa kỳ và điểm cuối kỳ trong Nhập môn lập trình Khi đó, với bài toán hồi quy đơn biến này, cần tìm ra một mô hình nhận vào input là điểm giữa kỳ và output ra dự đoán điểm cuối kỳ hợp lý nhất dựa trên mối quan hệ giữa hai cột điểm mà mô hình đó tìm được.
Hình 1.5 Bảng thống kê điểm kiểm tra giữa kỳ Để dễ dàng, ta sẽ thống nhất sử dụng một vài ký hiệu sau xuyên suốt bài viết này: ˗ m: Đại diện số lượng các training example (mẫu huấn luyện) Giả sử,chúng ta có 40 dòng điểm cuối kỳ khác nhau được thu thập dựa trên điểm giữa kỳ tương ứng Như vậy, ta có 40 mẫu huấn luyện và m bằng40. ˗ x: Để ký hiệu cácinput variable (biến đầu vào)cũng thường được gọi là các feature (đặc trưng) Trong hồi quy đa biến, x là một vector nhưng trong ví dụ này, x là số điểm đánh giá trong nửa học kỳ đầu – là một con số trong hồi quy đơn biến. ˗ y: Để ký hiệu các biến đầu ra hay các biến mục tiêu , ở đây là điểm cuối kỳ tương ứng. ˗ (x,y): đại diện mộtmẫu huấn luyện– training example. ˗ x(i),y(i): dùng để chỉ một mẫu huấn luyện cụ thể Giả sử, với i=3 tương ứng ta có điểm dữ liệu x(3),y(3) : Số điểm cuối kỳ của bạn có thể là bao nhiêu khi điểm giữa kỳ là 8.75? Dựa vào bảng số liệu trên, tại y(3), kết quả dự đoán đạt giá trị là 7.8.
Hình 1.6 Ví dụ về Linear Regression
Hồi quy logistic (Logistic regression) là kỹ thuật phân tích dữ liệu bằng toán học, nhằm tìm ra mối quan hệ giữa hai dữ liệu Sau đó, thông qua mối quan hệ đã tìm được, hồi quy logistic sẽ dự đoán giá trị của các dữ liệu đó dựa trên dữ liệu còn lại Dự đoán cho ra kết quả nhị phân, chẳng hạn như có hoặc không.
Phương trình hồi quy logistic: Vì kết quả là một xác suất nên biến phụ thuộc sẽ có giới hạn từ 0 đến 1 Trong hồi quy logistic, logit được tính bằng xác suất thành công chia cho xác suất thất bại Hàm hồi quy logistic có các công thức sau:
Logit(pi) = 1/(1+ exp(-pi)) ln(pi/(1-pi)) = Beta_0 + Beta_1*X_1 + … + B_k*K_k Trong đó: ˗ Logit(pi) là biến phụ thuộc ˗ x là biến độc lập ˗ Beta là hệ số rủi ro, thường được xác định bằng ước tính khả năng tối đa.
Tham số Beta được kiểm tra thông qua nhiều lần lặp lại Tất cả các lần lặp này tạo ra tham số tốt nhất Sau khi tìm thấy hệ số tối ưu, xác suất tính toán trên từng điều kiện, ghi lại và cộng lại để tạo ra xác suất dự đoán Xác suất nhỏ hơn ngưỡng xác định (ví dụ: 0,5) sẽ được phân loại = 0, trong khi xác suất lớn hơn 0,5 sẽ phân loại = 1.
Neural Network đọc tiếng việt là Mạng nơ-ron nhân tạo, đây là một chuỗi những thuật toán được đưa ra để tìm kiếm các mối quan hệ cơ bản trong tập hợp các dữ liệu Thông qua việc bắt bước cách thức hoạt động từ não bộ con người Nói cách khác, mạng nơ ron nhân tạo được xem là hệ thống của các tế bào thần kinh nhân tạo Đây thường có thể là hữu cơ hoặc nhân tạo về bản chất.
Neural Network có khả năng thích ứng được với mọi thay đổi từ đầu vào Do vậy, nó có thể đưa ra được mọi kết quả một cách tốt nhất có thể mà bạn không cần phải thiết kế lại những tiêu chí đầu ra Khái niệm này có nguồn gốc từ trí tuệ nhân tạo, đang nhanh chóng trở nên phổ biến hơn trong sự phát triển của những hệ thống giao dịch điện tử.
Mạng Neural Network là sự kết hợp của những tầng perceptron hay còn gọi là perceptron đa tầng Và mỗi một mạng Neural Network thường bao gồm
● Tầng input layer (tầng vào): Tầng này nằm bên trái cùng của mạng, thể hiện cho các đầu vào của mạng.
● Tầng output layer (tầng ra): Là tầng bên phải cùng và nó thể hiện cho những đầu ra của mạng.
● Tầng hidden layer (tầng ẩn): Tầng này nằm giữa tầng vào và tầng ra nó thể hiện cho quá trình suy luận logic của mạng.
*Lưu ý: Mỗi một Neural Network chỉ có duy nhất một tầng vào và 1 tầng ra nhưng lại có rất nhiều tầng ẩn
Với mạng Neural Network thì mỗi nút mạng là một sigmoid nơron nhưng chúng lại có hàm kích hoạt khác nhau Thực tế, người ta thường sử dụng có cùng loại với nhau để việc tính toán thuận lợi hơn Tại mỗi tầng, số lượng nút mạng có thể khác nhau còn tùy vào bài toán hoặc cách giải quyết.
Mạng neural sâu (DNN-Deep neural network) là một mạng neural nhân tạo với nhiều đơn vị lớp ẩn kết nối với nhau từ lớp đầu vào tới lớp đầu ra[2].
Giới thiệu về bộ dữ liệu
Bộ dữ liệu được sử dụng trong dự án này là “The HAM10000 dataset” được thu thập trên Kaggle[1] - một nền tảng trực tuyến cho cộng đồng Machine Learning (ML) và Khoa học dữ liệu, cho phép người dùng chia sẻ, tìm kiếm các bộ dữ liệu; tìm hiểu và xây dựng models, tương tác với những nhà khoa học và kỹ sư ML trên toàn thế giới Cụ thể dữ liệu bao gồm bộ sưu tập lớn hơn mười nghìn hình ảnh soi da về 7 loại tổn thương sắc tố da phổ biến.
Melanoma (Ung thư hắc tố da)
Benign keratosis-like lesions (dày sừng tổn thương lành tính)
Basal cell carcinoma (Ung thư biểu mô tế bào đáy)
Actinic keratoses (Bệnh dày sừng ánh sáng)
Hình 2.1 Một số ví dụ trong bộ dữ liệu
Trong bộ dữ liệu ngoài bao gồm về các hình ảnh được chia vào 2 folders “HAM10000_images_part_1” và “HAM10000_images_part_2” thì còn chứa một file “HAM10000_metadata.csv” chứa 10015 bản ghi và các thuộc tính: lesion_id (mã định danh tổn thương da), image_id (mã định danh cho từng loại ảnh), dx (loại tổn thương da), dx_type (loại định loại của tổn thương da), age (tuổi), sex (giới tính), localization (vị trí da bị tổn thương).
Hình 2.2 Các file dữ liệu
Hình 2.3 Một số bản ghi trong file ‘HAM10000_metadata.csv’
Mạng neural học sâu sử dụng trong nhận dạng
2.2.1 Giới thiệu về mô hình CNN
Mạng nơ-ron tích chập (CNN) là sự phát triển của MultilayerPerceptron (MLP) được thiết kế để xử lý dữ liệu hai chiều CNN được đưa vào loại Mạng nơ-ron sâu vì nó có độ sâu mạng cao và đã được áp dụng rộng rãi cho dữ liệu hình ảnh CNN có kiến trúc giống như mạng nơ-ron nói chung,các nơ-ron trong CNN có chức năng trọng số, sai lệch và kích hoạt Kiến trúcCNN của nhóm, bao gồm lớp tích chập với kích hoạt ReLU, lớp Max Pooling dưới dạng lớp trích xuất đặc trưng, và lớp Fully Connected với hàm kích hoạt softmax dưới dạng lớp phân loại.
Hình 2.4 Kiến trúc mạng CNN 2.2.2 Cấu trúc mô hình CNN
Trong lớp tích chập, quá trình tích chập là quá trình chính làm nền tảng cho CNN Lớp tích chập là lớp đầu tiên sẽ xử lý hình ảnh dưới dạng mô hình hệ thống đầu vào Hình ảnh sẽ được kết hợp với các bộ lọc để trích xuất các đặc trưng từ hình ảnh đầu vào được gọi là bản đồ đặc trưng (Feature map).
Hình 2.5 Ví dụ về lớp tích chập
ReLU (Rectified Linear Unit) là lớp kích hoạt trong CNN nhằm tăng giai đoạn huấn luyện trên mạng nơ-ron có ưu điểm giảm thiểu sai số Kích hoạt Rel-U làm cho tất cả các giá trị pixel bằng 0 khi hình ảnh pixel có giá trị nhỏ hơn 0.
Các lớp Pooling trong phương pháp CNN thường sẽ thường xuyên được chèn sau một số lớp tích chập, Lớp Pooling có một số ưu điểm, có thể giảm dần kích thước của khối lượng đầu ra trên Bản đồ đặc trưng (Feature map) để có thể kiểm soát overfitting [15] Lớp Pooling được sử dụng để giảm dữ liệu bằng cách sử dụng Max-Pooling để chọn giá trị lớn nhất trong nhóm điểm ảnh, trong khi Average-Pooling tìm giá trị trung bình.
Hình 2.7 Ví dụ về lớp Pooling
Lớp Fully Connected là lớp ở cuối kiến trúc được sử dụng trong perceptron đa lớp Lớp này sẽ kết nối tất cả các nơ-ron của lớp kích hoạt trước đó Trong giai đoạn này, tất cả các nơ-ron trong lớp đầu vào cần được chuyển đổi thành dữ liệu một chiều (quá trình làm phẳng) Sau đó, hàm kích hoạt softmax như một dạng khác của thuật toán hồi quy logistic có thể được sử dụng để phân loại nhiều hơn hai lớp.
Môi trường thực nghiệm và cài đặt các thư viện
2.3.1 Giới thiệu về môi trường colab
Google Colab, viết tắt của Google Colaboratory, là một môi trường phát triển và chia sẻ mã nguồn mở dựa trên trình duyệt, được cung cấp bởi Google Colab cho phép bạn viết và thực thi mã Python trong các trình duyệt web mà không cần cài đặt môi trường phát triển tích hợp (IDE) hoặc thực hiện cài đặt phần mềm trên máy tính cá nhân.
Một số điểm nổi bật về môi trường Google Colab:
+ Máy chủ ảo và tài nguyên mạnh mẽ: Colab cung cấp máy chủ ảo mạnh mẽ với GPU và TPU để thực thi mã Điều này rất hữu ích khi làm việc với các tác vụ liên quan đến học máy, xử lý ảnh, xử lý ngôn ngữ tự nhiên và nhiều lĩnh vực khác.
+ Jupyter Notebook: Colab sử dụng giao diện Jupyter Notebook, cho phép bạn tạo và chia sẻ tệp notebook chứa mã, văn bản, hình ảnh và đồ thị Giao diện notebook tương tác giúp bạn thực thi từng phần mã một và xem kết quả ngay lập tức.
+ Khả năng chia sẻ: Bạn có thể chia sẻ tệp notebook Colab với người khác để họ cùng xem và chỉnh sửa Điều này thuận tiện cho việc làm
+ Tích hợp với Google Drive: Colab tích hợp tốt với Google Drive, cho phép bạn lưu trữ và truy cập các tệp notebook và dữ liệu trên Google Drive của bạn.
+ Thư viện hỗ trợ: Colab được cài đặt sẵn với nhiều thư viện phổ biến như Numpy, Pandas, Matplotlib và TensorFlow, giúp bạn tiếp cận các công cụ phổ biến trong phân tích dữ liệu và học máy.
+ Kết nối liên tục: Bạn có thể kết nối Colab với GitHub để quản lý mã nguồn và dễ dàng làm việc với kho lưu trữ mã nguồn.
2.3.2 Các thư viện được sử dụng
Numpy : là một thư viện Python dùng để xử lý mảng đa chiều và thực hiện các phép toán số học, đại số tuyến tính và tính toán thống kê Nó cung cấp các công cụ mạnh mẽ và tối ưu để làm việc với dữ liệu số lượng lớn và phục vụ cho các lĩnh vực như phân tích dữ liệu, học máy và thị giác máy tính.
Matplotlib.pyplot : dùng để tạo và hiển thị đồ thị và biểu đồ Nó giúp bạn trực quan hóa dữ liệu và tùy chỉnh hình dạng, kiểu đồ thị theo ý muốn.
Scipy.io: được sử dụng để đọc và ghi dữ liệu từ và vào các tệp tin có định dạng khác nhau Nó hỗ trợ các chức năng để làm việc với các định dạng dữ liệu như MATLAB (.mat), WAV, NetCDF và nhiều định dạng khác.
Math : cung cấp các hàm toán học cơ bản để thực hiện các phép tính số học Nó bao gồm các hàm tính toán như căn bậc hai, lũy thừa, logarit, hàm lượng giác (sin, cos, tan), hàm tròn (ceil, floor), và nhiều hàm toán học khác.
Pandas : dùng để làm việc với dữ liệu dạng bảng và chuỗi thời gian.
Nó cung cấp các cấu trúc dữ liệu linh hoạt như DataFrame để quản lý và xử lý dữ liệu dễ dàng Pandas cho phép thao tác dữ liệu, lọc, sắp xếp, thống kê, và thực hiện các phép biến đổi dữ liệu phức tạp Nó cũng hỗ trợ việc đọc và ghi dữ liệu từ và vào các định dạng như CSV, Excel, SQL, và nhiều định dạng khác.
Seaborn : cung cấp các công cụ mạnh mẽ để tạo ra các biểu đồ và đồ thị thẩm mỹ và dễ đọc Seaborn giúp bạn khám phá và hiểu dữ liệu thông qua các biểu đồ như biểu đồ phân phối, biểu đồ tương quan, biểu đồ hộp, biểu đồ violin và nhiều loại biểu đồ khác Nó cung cấp một loạt các chủ đề màu sắc hấp dẫn và cho phép tùy chỉnh dễ dàng để tạo ra các biểu đồ chuyên nghiệp và hấp dẫn.
OS : để tương tác với hệ điều hành và thực hiện các hoạt động liên quan đến quản lý tệp tin và thư mục Nó cung cấp các hàm để thao tác với đường dẫn tập tin, kiểm tra sự tồn tại của tệp tin hoặc thư mục, tạo và xóa thư mục, thay đổi tên tệp tin, và nhiều hoạt động khác liên quan đến hệ thống tệp tin. Đồng thời, thư viện os còn cung cấp các hằng số và phương thức để truy cập các biến môi trường hệ thống.
Itertools : cung cấp các công cụ và hàm để tạo ra và làm việc với các chuỗi và tổ hợp các phần tử Nó cho phép bạn tạo ra các chuỗi số, hoán vị, kết hợp, và các vòng lặp không giới hạn từ các tập hợp dữ liệu khác nhau Thư viện này giúp tạo ra các vòng lặp và kết hợp dữ liệu một cách hiệu quả và tiết kiệm bộ nhớ, đồng thời cung cấp các công cụ để lặp qua, lọc và xử lý các phần tử trong chuỗi.
Keras : được sử dụng để xây dựng và huấn luyện các mô hình học sâu (deep learning) Nó cung cấp một giao diện dễ sử dụng và trực quan để tạo mô hình mạng nơ-ron, bao gồm các lớp nơ-ron, hàm kích hoạt, tối ưu hóa và các lớp mạng nơ-ron đặc biệt như mạng nơ-ron tích chập (CNN) và mạng nơ- ron hồi quy (RNN) Keras cũng cung cấp các công cụ để đánh giá và dự đoán trên mô hình đã được huấn luyện Nó được sử dụng rộng rãi trong lĩnh vực học sâu và phân tích dữ liệu.
THỰC NGHIỆM, KẾT QUẢ NGHIÊN CỨU
Trong bộ dữ liệu sử dụng có bao gồm các hình ảnh trùng lặp, những hình ảnh này có cùng một tổn thương nhưng ở một góc độ khác, thu phóng, v.v Giai đoạn làm sạch dữ liệu sẽ lọc và lược bỏ bớt những hình ảnh trùng lặp.
Hình 3.1 Đọc bộ dữ liệu
Từ số liệu thống kê được hiển thị ở phần cuối, chúng ta có thể thấy chỉ có 7470 id tổn thương duy nhất.
Thực hiện làm sạch dữ liệu:
Hình 3.2 Làm sạch dữ liệu Ở đây ta sử dụng phương thức drop_duplicates của đối tượng DataFrame trong thư viện Pandas Phương thức drop_duplicates được gọi trên DataFrame skin_df Phương thức này sẽ loại bỏ các hàng trùng lặp dựa trên các giá trị trong cột 'lesion_id' Nghĩa là nếu có nhiều hàng trong DataFrame có cùng giá trị trong cột 'lesion_id', thì chỉ có một hàng duy nhất được giữ lại, các hàng trùng lặp khác sẽ bị loại bỏ.
Hình 3.3 Kết quả làm sạch dữ liệu Đây là DataFrame mới chỉ chứa các hàng duy nhất dựa trên cột 'lesion_id'.
Sau khi lọc những hình ảnh trùng lặp, ta kiểm tra những giá trị còn thiếu bằng phương thức skin_df.isnull().sum().
Hình 3.4 Hiển thị giá trị còn thiếu
Phương thức isnull() trả về một DataFrame mới với cùng kích thước nhưng các ô có giá trị null sẽ được đánh dấu là True và các ô có giá trị khác đếm là 1) và False (được đếm là 0) trong từng cột, trả về tổng số lượng giá trị True trong mỗi cột Do đó, skin_df.isnull().sum() trả về một Series chứa số lượng giá trị null trong từng cột của DataFrame skin_df.
Dựa vào kết quả trên, ta thấy có 52 giá trị null trong cột ‘age’ Vì vậy, ta sẽ thay thế giá trị NA trong cột ‘age’ bằng giá trị trung bình của độ tuổi trong tập dữ liệu.
Phương thức fillna() được gọi trên cột 'age' Nó được sử dụng để điền các giá trị null trong cột bằng một giá trị được chỉ định Trong trường hợp này, giá trị được sử dụng để điền là giá trị trung bình của cột 'age', được tính bằng phương thức mean() Tham số inplace=True được sử dụng để thay đổi DataFrame gốc skin_df trực tiếp, thay vì trả về một DataFrame mới. Khi inplace=True, các giá trị null trong cột 'age' sẽ được thay thế bằng giá trị trung bình và DataFrame skin_df sẽ được cập nhật ngay lập tức.
Sau khi thay thế ta có kết quả như sau:
Hình 3.5 Kiểm tra những giá trị còn thiếu
3.2.1.Trực quan hóa sự phân bố của 7 loại tổn thương da khác nhau
Hình 3.6 Biểu đồ phân bố các loại tổn thương trong bộ dữ liệu
Mỗi loại tổn thương da được biểu thị bởi những màu sắc khác nhau. Trong đó:
+ Nốt ruồi hắc tố (Melanocytic nevi): xanh dương.
+ Chứng khô sừng quang hóa (Benign keratosis-like lesions): cam.
+ U ác tính (Melanoma): xanh lá.
+ Ung thư tế bào đáy (Basal cell carcinoma): tím.
+ Dày sừng quang hóa (Actinic keratoses): đỏ.
+ Tổn thương mạch máu (Vascular lesion): xanh dương.
+ U da lành tính (Dermatofibroma): cam.
Hình 3.7 Số lượng từng loại tổn thương
Có thể thấy rằng có sự mất cân bằng lớn về lớp, trong đó phần lớn các hình ảnh trong tập dữ liệu được chẩn đoán thuộc danh mục Melanocytic nevi [nv].
3.2.2 Trực quan hóa sự phân bổ của 4 loại xác thực kỹ thuật khác nhau (dx_type)
Hình 3.8 Biểu đồ phân bố kỹ thuật chẩn đoán
Qua biểu đồ, ta có thể thấy phần lớn việc xác nhận kỹ thuật được thực hiện thông qua ‘histo’ hoặc ‘follow-up’.
3.2.3 Trực quan hóa sự phân bố của những vị trí tổn thương da khác nhau (localization)
Hình 3.9 Biểu đồ phân bố vị trí tổn thương
Có thể thấy, lưng, chi dưới và thân mình là những vùng da bị tổn thương nặng nề.
3.2.4 Trực quan hóa sự phân bố tuổi (age)
Hình 3.10 Biểu đồ phân bố độ tuổi mắc bệnh
Phần lớn bệnh nhân bị tổn thương da nằm trong độ tuổi từ 35 đến 70.
3.2.5 Trực quan hóa sự phân bố giới tính (sex)
Hình 3.11 Biểu đồ phân bố giới tính
Có thể thấy, số lượng bệnh nhân nam và nữ gần như ngang nhau.
3.3.1 Thay đổi kích thước hình ảnh
Kích thước chiều rộng và chiều cao có thể là một vấn đề khi training các mô hình Machine Learning (ML) do có số lượng hình ảnh khổng lồ Để tăng tốc quá trình và đảm bảo mô hình ML hoạt động trơn tru, hình ảnh sẽ được thay đổi kích thước theo hệ số 0,25.
Khi in ra màn hình chiều rộng và chiều cao của hình ảnh đầu tiên trong cột "path" của DataFrame ‘skin_df’, ta thấy kích thước của ảnh khá lớn, điều này sẽ làm ảnh hướng tới tốc độ xử lý Ta thay đổi kích thước ảnh cho phù hợp hơn.
Hình 3.12 Giảm kích thước ảnh
Sau khi giảm kích thước của ảnh, chiều rộng, chiều dài được thay đổi nhỏ hơn 4 lần so với ảnh gốc.
Ta thực hiện thay đổi kích thước hình ảnh và thêm các giá trị pixel hình ảnh dưới dạng cột mới vào khung dữ liệu giao diện. skin_df['image'] = skin_df['path'].map(lambda x: np.asarray(Image.open(x).resize((int(width), int(height)))))
Cột mới trong DataFrame skin_df được tạo có tên là 'image' Giá trị của cột 'image' sẽ được tạo bằng cách đọc và chuyển đổi hình ảnh từ các đường dẫn có trong cột 'path'.
DataFrame mới sẽ có dạng:
Hình 3.13 Data Frame sau khi thay đổi kích thước ảnh
Kiểm tra phân bổ kích thước hình ảnh:
Hình 3.14 Kiểm tra phân bố kích thước ảnh 3.3.2 Một vài mẫu theo từng loại tổn thương da:
Hình 3.15 Tạo biểu đồ chứa một số mẫu Đoạn mã trên tạo một biểu đồ chứa các mẫu hình ảnh từ DataFrame skin_df dựa trên danh sách loại 'cell_type' Mỗi loại sẽ có một hàng trong biểu đồ, và mỗi hàng sẽ hiển thị một số lượng n_samples mẫu hình ảnh.
Kết quả là một biểu đồ chứa một số lượng n_samples mẫu hình ảnh từDataFrame skin_df được nhóm theo loại 'cell_type' Các mẫu hình ảnh được hiển thị dưới dạng lưới trong biểu đồ, với mỗi hàng tương ứng với một loại'cell_type'.
Hình 3.16 Một vài mẫu tổn thương da
3.4 Mã hóa one–hot Encoding
3.4.1 Tách Features và Target Để chuẩn bị dữ liệu cho việc huấn luyện mô hình học máy, nơi ta sử dụng các đặc trưng để dự đoán hoặc phân loại biến phụ thuộc, ta phải tách dữ liệu thành hai phần features và target. features chứa các đặc trưng (features) của các mẫu trong skin_df Đây là một DataFrame mới được tạo bằng cách loại bỏ cột 'cell_type_idx' từ
DataFrame gốc Điều này giúp xác định các biến độc lập (independent variables) mà chúng ta muốn sử dụng để dự đoán hoặc phân loại. target chứa chỉ số của loại 'cell_type' tương ứng với mỗi mẫu Đây là một Series mới được tạo bằng cách trích xuất cột 'cell_type_idx' từ DataFrame gốc Điều này giúp xác định biến phụ thuộc (dependent variable) mà chúng ta muốn dự đoán hoặc phân loại.
Mã hóa biến mục tiêu vào dạng one-hot encoding thường được sử dụng trong các bài toán phân loại đa lớp, nơi chúng ta muốn biểu diễn các lớp dưới dạng các vector nhị phân để đưa vào huấn luyện mô hình học máy Điều này giúp mô hình hiểu được sự tương quan giữa các lớp và tạo ra dự đoán phân loại cho các mẫu mới.
Hình 3.17 Target One-Hot Encoding