Trong quá trình thực hiện đề tài, nhóm tuân thủ đúng nguyên tắc và tiêu chuẩn đạo đức, nhóm đã tôn trọng quyền riêng tư và bảo mật của bất kỳ dữ liệu liên quan đến bệnh nhân hoặc thông t
TỔNG QUAN
Đặt vấn đề
Bệnh ung thư là một trong những loại bệnh rất nguy hiểm và rất khó chữa trị Nguyên nhân gây ung thư vú hiện vẫn chưa được xác định rõ ràng Tuy nhiên, nhiều nghiên cứu cho rằng sự biến đổi gen BRCA1 hoặc BRCA2, ô nhiễm môi trường, tia phóng xạ, hóa chất trong thực phẩm, thói quen hút thuốc lá và những vấn đề khác có thể làm tăng nguy cơ mắc bệnh ung thư vú
Trong các bệnh ung thư thì Ung Thư Vú (UTV) thường xuất hiện rất nhiều ở phụ nữ, nhất là phụ nữ tầm sau 40 tuổi Hiện nay, có khoảng 18,1 triệu người bị ung thư trên toàn cầu, trong đó có khoảng 9,5 triệu người chết mỗi năm Riêng tại Việt Nam, theo thống kê có khoảng 164.671 mắc bệnh và khoảng 114.871 người tử vong [1] UTV là một trong những bệnh ung thư chiếm tỷ lệ cao thứ 3 (9.2%) sau ung thư gan và phổi Riêng đối với UTV ở phụ nữ chiếm 15.229 trong tổng số 73.849 ca ung thư của giới nữ theo thống kê GLOBOCAN năm 2018 Rõ ràng UTV cho thấy rất nguy hiểm, do vậy việc chẩn đoán được sớm thì cơ hội chữa trị khỏi là rất cao Cụ thể, nếu phát hiện sớm ở giai đoạn đầu thì việc chữa trị sẽ khỏi chiếm 80%, còn giai đoạn 2 thì chiếm khoảng 60% khả năng chữa khỏi
Với tỷ lệ UTV cao với phụ nữ như hiện nay [1], việc phát hiện sớm và biết được loại bệnh ung thư để chữa trị là rất quan trọng bởi việc chữa trị dễ dàng hơn và cơ hội chữa khỏi cao hơn Ngoài việc quan tâm đến những biểu hiện trong cuộc sống thì việc tầm soát thường xuyên để phát hiện sớm là rất quan trọng Tuy nhiên, người dân vì nhiều lý do khác nhau mà việc tầm soát thường xuyên, 1-2 lần năm, là không nhiều Hơn nữa, có thể do thiết bị, công nghệ hay nguyên nhân nào khác mà có thể tầm soát lần đầu không thể nhận biết được, cho đến khi bệnh có biểu hiện để bác sỹ nhận biết thì bệnh đã nặng và dẫn đến khó chữa trị khỏi Do vậy, việc dùng công nghệ, nhất là trí tuệ nhân tạo (Artificial Intelligence - AI), để hỗ trợ bác sĩ sớm phát hiện cũng như kiến nghị những vấn đề liên quan ung thư cho bác sĩ để chữa trị kịp thời là rất quan trọng.
Mục tiêu và giới hạn
1.2.1 Mục tiêu Đề tài “Chẩn đoán bệnh Ung thư vú dựa trên ảnh X-quang sử dụng mạng học sâu” với mục tiêu Phát triển một hệ thống chẩn đoán bệnh ung thư vú thông qua hình ảnh dựa trên trí tuệ nhân tạo (AI) với dữ liệu lớn ảnh X-quang và thiết kế hệ thống website để hỗ trợ bác sĩ trong chẩn đoán bệnh ung thư vú
Các thông số giới hạn của đề tài bao gồm:
- Chỉ sử dụng ảnh X-quang vú (Mammography)
- Sử dụng các nguồn ảnh có sẵn như MIAS, DDSM, VinDoctor
- Mô hình chỉ được huấn luyện và thực nghiệm trên các mô hình huấn luyện trước: Resnet-152, EfficientNet-V2, DenseNet201, VGG-16
- Vẫn chưa áp dụng vào thực tiễn
Nội dung thực hiện
Trong quá trình thực hiện Đồ án tốt nghiệp, nhóm tập trung giải quyết và hoàn thành được những nội dung sau:
● Nội dung 1: Tìm và sàng lọc tập ảnh dùng cho huấn luyện và thử nghiệm hệ thống
● Nội dung 2: Tìm hiểu nguyên lý về trí tuệ nhân tạo và mạng học sâu
● Nội dung 3: Tìm hiểu về tiền xử lý ảnh
● Nội dung 4: Tìm hiểu quá trình huấn luyện và tinh chỉnh mạng học sâu
● Nội dung 5: Thực hiện huấn luyện và tinh chỉnh mạng học sâu trên tập ảnh đã chuẩn bị
● Nội dung 8: Viết báo cáo thực hiện
● Nội dung 9: Bảo vệ luận văn
CƠ SỞ LÝ THUYẾT
Ung thư vú
Ung thư vú là bệnh lý mà nơi các tế bào vú phát triển không kiểm soát được Các loại ung thư vú phổ biến nhất là ung thư biểu mô ống tuyến và ung thư vú biểu mô tiểu thùy Trong ung thư vú biểu mô ống tuyến, các tế bào ung thư được hình thành từ tế bào của các ống tuyến sản xuất sữa Trong ung thư biểu mô tiểu thùy, các tế bào ung thư sẽ phát triển từ tiểu thùy và vào các bộ phận khác của mô vú Các triệu chứng phổ biến của ung thư vú có thể bao gồm thay đổi kích thước hoặc hình dạng vú, thay đổi da như mẩn đỏ và có thể xuất hiện cả viên nang.
Giới thiệu Deep Learning
Deep Learning là một lĩnh vực trí tuệ nhân tạo tập trung vào việc xây dựng và sử dụng mạng nơ-ron nhân tạo để huấn luyện các mô hình máy học sâu dựa trên dữ liệu, bao gồm cả ảnh, văn bản, âm thanh, và nhiều loại dữ liệu khác để giải quyết những vấn đề cụ thể
Deep Learning sử dụng mạng nơ ron tích chập (Convolutional Neural Network - CNN) để xử lý và phân tích dữ liệu ảnh Mạng CNN là một mô hình kiến trúc mạng nơ-ron đặc biệt được thiết kế nhầm để nhận diện và trích xuất đặc trưng của ảnh Một mạng CNN bao gồm các lớp tích chập (Convolution layer), các hàm kích hoạt (Activation function), các lớp tổng hợp (Pooling) và tất cả các lớp trên được xếp chồng lên nhau và cuối cùng là các lớp kết nối đầy đủ (fully connected layers)
Các lớp tích chập có chức năng chính học các đặc trưng của ảnh như góc, cạnh, màu sắc, cũng như những đặc trưng phức tạp Bằng việc sử dụng ảnh (input) nhân với Filter tham stride bằng 1 (1 điểm ảnh) và di chuyển toàn bộ bề mặt ảnh khi đó tầng tích chập có khả năng học những đặc trưng ảnh ở bất kỳ vị trí nào, điều này có nghĩa cho dù ảnh có bị thay đổi ở bất kỳ góc độ nào thì lớp tích chập vẫn phát hiện được những đặc trưng này [10]
Hàm kích hoạt đóng vai trò quan trọng tương tự như tỷ lệ truyền xung qua axon của neuron thần kinh, giúp xác định đầu ra của nơ-ron trong mạng tích chập.
Hàm Sigmoid có chức năng chính là chuyển đổi một số thực thành một giá trị nằm trong khoảng từ 0 đến 1 Khi đầu vào là một số thực âm rất nhỏ, đầu ra của hàm Sigmoid sẽ tiến gần đến giá trị 0 Ngược lại, nếu đầu vào là một số thực dương lớn, đầu ra của hàm Sigmoid sẽ tiến gần đến giá trị 1 [11]
Hàm Tanh có chức năng tương tự hàm Sigmoid nhưng nó chuyển thành một giá trị trong khoảng từ -1 đến 1 và nó bảo hoà ở hai đầu
Hàm Relu đang được sử dụng phổ biến trong các huấn luyện mạng neuron trong những năm gần đây:
+ ReLU có tốc độ hội tụ nhanh gấp 6 lần Tanh
+ ReLU có tốc độ tính toán nhanh hơn so với hàm Sigmoid và Tanh, vì không có các phép tính exponentiation phức tạp
+ 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
Hình 2.3: Công thức của các phương pháp đánh giá [10]
Các lớp tổng hợp (Pool Layer) thực thi sau hàm kích hoạt và chức năng chính của nó là giúp giảm kích thước và giữ lại thông tin quan trọng của ảnh vì nó được đơn giản hóa thông tin đầu ra và giảm bớt số lượng neuron
Hình 2.4: Ảnh sau khi qua lớp pooling
Cuối cùng là các lớp đầy đủ trong mô hình CNN có chức năng chính chuyển các ma trận từ tầng tổng hợp (Pool Layer) thành các vector và sau đó được tính xác suất để đưa ra tỷ lệ bệnh cao nhất
Trong thực tế để huấn luyện được mô hình Deep Learning trong việc phân loại bệnh Ung Thư Vú phải đòi hỏi nhiều yếu tố: cần phải cung cấp một tập dữ liệu lớn kết hợp với việc tinh chỉnh các thông số huấn luyện một cách chính xác và có một GPU đủ mạnh để có thể huấn luyện để cho ra hiệu suất tốt nhất.
Transfer Learning
Transfer Learning là một phương thức của Machine Learning mà trong đó ta sử dụng lại các mô hình đã huấn luyện trước (mô hình huấn luyện trước) điển hình như Resnet, VGG, DenseNet của Pytorch để áp dụng vào các mô hình huấn luyện nhỏ hơn mà vẫn kế thừa được các ưu điểm, tính năng từ các mô hình đã được huấn luyện (mô hình huấn luyện trước)
Thay vì phải huấn luyện lại một mô hình từ các tập dữ liệu lớn và tinh chỉnh các thông số sao cho hợp lý thì Transfer Learning giúp ta sử dụng lại các mô hình đã có sẵn, giúp tiết kiệm thời gian và công sức [12] Ở đề tài này, nhóm sử dụng tiến hành huấn luyện các mô hình huấn luyện trước này trên tập dữ liệu đã được chọn và khảo sát xem những mô hình huấn luyện trước này có thực sự phù hợp với đề tài và kết quả đầu ra có được như kì vọng là có độ chính xác khoảng hơn 90% Ý tưởng của Transfer Learning của nhóm là ban đầu sử dụng các tập dữ liệu lớn làm cơ sở cho mô hình và sau đó sẽ chuyển dần sang các hình ảnh chụp X- quang tuyến vú để trích xuất các dữ liệu cho mô hình học Bằng cách tinh chỉnh chỉ tối đa ba lớp cuối cùng, nhóm sẽ kiểm tra xem liệu việc học tập chuyển giao (Transfer Learning) các lớp trích xuất tính năng imagenet có hiệu quả với hình ảnh chụp quang tuyến vú hay không và thử nghiệm nhiều Mô hình huấn luyện trước khác nhau Từ đó, nhóm đánh giá về kết quả mô hình.
Tập dữ liệu
2.4.1 Khảo sát tập dữ liệu
Theo như yêu cầu của đề tài và để có thể huấn luyện ra mô hình tốt nhất phải đòi hỏi có một tập dữ liệu lớn là một điều rất quan trọng và đáp ứng các yêu cầu sau:
● Tập dữ liệu phải lớn, đầy đủ bệnh yêu cầu
● Tập dữ liệu cần phải phổ biến và đầy đủ
● Có ROI Mask để hỗ trợ khoanh vùng bệnh dùng để đánh giá và khoanh vùng bệnh
Hiện nay, các tập dữ liệu đủ đáp ứng yêu cầu bài toán và sử dụng rộng rãi phổ biến trên thế giới chẳng hạn như: VinDR-Mammo, MIAS, InBreast, DDSM
❖ Tập VinDR-Mammo: là một tập dữ liệu lớn được phát triển bởi VinAI chuyên chụp về bệnh ung thư vú, được thu thập từ năm 2018 đến 2020 được lưu trữ trong hệ thống truyền thông với hơn 2.000 kết quả kiểm tra chụp X- quang tuyến vú đưa ra hơn 5.000 hình ảnh DICOM [13]
Dữ liệu MIAS là tập hợp hình ảnh chụp X-quang vú được thu thập từ nhiều bệnh viện tại Vương quốc Anh Với dung lượng lên tới 2,3GB, bộ dữ liệu này bao gồm những hình ảnh chất lượng cao, được tuyển chọn và kiểm tra kỹ lưỡng để đảm bảo sự đa dạng và đại diện cho các trường hợp lâm sàng thực tế.
❖ Tập InBreast: là một cơ sở dữ liệu được thu tập tại bệnh viện đại học (Centro Hospitalar de S João [CHSJ], Trung tâm vú, Porto) với sự cho phép của Ủy ban bảo vệ dữ liệu quốc gia Bồ Đào Nha Cơ sở dữ liệu này bao gồm có 115 trường hợp và có hơn 410 hình ảnh, điểm mạnh của cơ sở dữ liệu này là hoàn toàn dựa trên thực tế và được chụp bằng ảnh chụp X-quang kỹ thuật số [15]
❖ Tập DDSM: là cơ sở dữ liệu kỹ thuật số để sàng lọc các nhũ ảnh của Đại Học Nam Florida và được hổ trợ từ Chương trình Nghiên cứu Ung thư Vú của Bộ Tư lệnh Nghiên cứu Y tế và Trang thiết bị Quân đội Hoa Kỳ Có hơn
2620 trường hợp với số lượng hình ảnh lên đến 230,9GB và được chia thành các bệnh: normal, cancer, benign [16] Vì dữ liệu của tập DDSM quá lớn và không sử dụng hết tất cả các dữ liệu trong nó nên vì thế nó được chia nhỏ ra thành: CBIS-DDSM và Mini-DDSM
❖ CBIS-DDSM: là tập dữ liệu con và được kế thừa từ cơ sở dữ liệu DDSM với dung tích 163.6GB hình ảnh DICOM được chụp X-quang kỹ thuật số của hơn 1.566 trường hợp [17]
Mini-DDSM là tập dữ liệu con hoàn chỉnh gồm các hình ảnh định dạng JPEG với dung lượng 5GB, bao gồm đầy đủ các thuộc tính và thông tin từ DDSM Đặc biệt, tập dữ liệu này miễn phí sử dụng.
Bảng 2.1: Bảng số liệu chi tiết các tập dữ liệu
Dataset Release Year Samples ImageLevel Labels
2.4.2 Cơ sở dữ liệu Mini-DDSM Ở đề tài này nhóm quyết định sử dụng tập dữ liệu Mini-DDSM vì nó đáp ứng hết tất cả các yêu cầu đặt ra Đây là tập dữ liệu được hỗ trợ từ Chương trình Nghiên cứu Ung thư Vú của Bộ Tư lệnh Nghiên cứu Y tế và Trang thiết bị Quân đội Hoa
Kỳ và được sàng lọc bởi Đại Học Nam Florida, hoàn toàn chuyển đổi số hoá thành những hình ảnh dưới dạng JPEG phù hợp với các ngôn ngữ lập trình hiện nay như C++, Python, Java,
Tập dữ liệu Mini-DDSM đang dần phổ biến và được sử dụng rộng rãi trong việc phát triển giải pháp, giải quyết các vấn đề liên quan đến bệnh Ung Thư Vú của ngành học máy và học sâu Nhờ vào nó được cho phép sử dụng miễn phí và phù hợp với các ngôn ngữ lập trình hiện nay, nên hầu như các nhà phát triển và nghiên cứu đều sử dụng tập dữ liệu này làm cơ sở dữ liệu chính cho các đề tài nghiên cứu.
Các số liệu báo cáo của Mini-DDSM như sau:
❖ Số lượng bệnh: tập dữ liệu này giống tập dữ liệu lớn DDSM đều có 3 bệnh lý khác nhau như Benign, Cancer, Normal
❖ Số lượng ảnh: Tập dữ liệu có 7.808 nhũ ảnh kỹ thuật số và được chia chi tiết như sau:
Bảng 2.2: Số lượng các nhãn
Các mô hình phân loại dựa trên mô hình CNN
VGG16 là một trong những mô hình của VGG (Visual Geometry Group) còn gọi là VGGNet VGG16 là một mô hình mạng thần kinh nơ-ron tích chập, có tổng cộng 16 lớp layer Mô hình VGG16 có thể đạt độ chính xác lên đến 92,7% trong ImageNet [19]
VGG16 có 3 lớp kết nối đầy đủ (Fully Connected Layer) và 13 lớp tích chập (Convolutions Layer) với các bộ lọc nhỏ kích thước 3x3 và bước nhảy (stride) bằng
1 tạo nên nét đặc trưng của kết trúc VGG
Hình 2.5: Cấu trúc CNN của VGG [19]
Hình ảnh đầu vào của VGG có kích thước 224x224 được đi qua các bộ lọc nhỏ kích thước 3x3, khi đó các đặc trưng của hình ảnh được mô hình lưu lại Sau mỗi lớp tích chập, VGG16 sử dụng các hàm kích hoạt Relu (Activation Function) để tuyến tính đầu ra sao cho phù hợp với đầu vào Lớp tổng hợp (pooling layer) được áp dụng sau mỗi lớp tích chập điều này giúp giảm kích thước và số lượng Neuron của Feature maps được tạo ra bởi các lớp tích chập (Convolution Layer) [19] và số lượng bộ lọc trong mỗi lớp tổng hợp tăng từ 64 đến 128,256 và cuối cùng là 516 lớp layer Cuối cùng, lớp kết nối đầy đủ (Fully Connected layers) có 3 lớp: 2 lớp đầu tiên mỗi lớp có 4095 kênh và lớp thứ 3 có 1000 kênh
Cấu hình của VGG16 là một điểm đặc biệt, cụ thể sự lặp đi lặp 5 lần của khối tích chập và khối tổng hợp Điều này giúp VGG16 nhận biết và học các đặc điểm của hình ảnh (Input đầu vào) một cách chi tiết và dễ dàng
Hình 2.6: Cấu hình của VGG16 [20]
Resnet-152 thuộc mạng Resnet (Residual Network), là một mạng kiến trúc CNN được thiết kế với hàng trăm lớp và có khả năng khắc phục hiện tượng Vanishing Gradient dẫn tới quá trình học tập không tốt [21] Resnet-152 là mạng thần kinh nơ-ron tích chập 152 lớp (150 lớp tích chập, 1 lớp Maxpool và 1 lớp Average Pool) và hoàn toàn phát triển dựa trên kiến trúc Resnet ban đầu là Resnet-
ResNet-152 đạt độ chính xác cao khi được huấn luyện trước nhờ khả năng biểu thị và trích xuất đặc trưng hình ảnh vượt trội so với các mạng ResNet khác Kiến trúc của nó có nhiều lớp tích chập hơn so với các mô hình ResNet khác, cho phép học tập hiệu quả hơn các đặc trưng của hình ảnh đầu vào.
Hình 2.7: Cấu hình của Resnet-152.
Kiến trúc Resnet-152 bao gồm các thành phần sau:
● Conv1: Kích thước 7x7 Kernel Convolution với stride là 2
● Conv2_x: là lớp tổng hợp (Pooling layer) với stride là 2 và 9 lớp filter (3x3,64)
Hình 2.8: Cấu trúc của Resnet [22]
Resnet-152 là một kiến trúc dày đặc, hơn 152 lớp layer cho phép mô hình có thể học được các chi tiết đặc trưng của nhũ ảnh (Input đầu vào) Nhờ vào đó mà mô hình có khả năng tiếp cận và học hỏi rất nhanh trong việc chẩn đoán bệnh Ung Thư Vú với độ chính xác cao
Với việc sử dụng lại mô hình huấn luyện trước (transfer learning) đã được huấn luyện trên tập dữ liệu lớn ImageNet cho phép mô hình học được các đặc trưng cơ bản của hình ảnh nhanh chóng Sau đó ta có thể tinh chỉnh lại trên tập dữ liệu
Mini-DDSM giúp mô hình cải thiện lại độ chính xác và khả năng chẩn đoán của mô hình [12]
EfficientNet-V2 là thuộc mạng kiến trúc mạng nơ-ron sâu (Deep neural network) của họ EfficientNet, được phát triển nhầm mục đích cải thiện hiệu suất và hiệu quả tính toán cao trong việc xử lý ảnh
EfficientNet-V2 được xây dựng theo một phương pháp chia tỷ lệ đồng đều tất cả các kích thước về độ sâu và độ rộng, độ phân giải Điều này có nghĩa là EfficientNet-V2 sẽ thực hiện việc cân bằng giữa hiệu suất và tính toán tài nguyên, nó giúp đỡ mô hình trong việc tổng hợp thông tin tốt trong khi vẫn duy trì hiệu suất cao và tiết kiệm tài nguyên tính toán [12]
Hình 2.9: Cấu trúc của Efficient_V2[23]
EfficientNet-V2 thực sự hữu ích về sự cân bằng giữa độ hiệu quả và độ chính xác trong học sâu, bằng cách điều chỉnh tỷ lệ độ rộng, độ sâu và độ phân giải linh động và giúp cho mô hình có thể thích ứng với các hạn chế phần cứng khác nhau [23]
Densenet-201 là một kiến trúc mạng nơ-ron tích chập (CNN) được phát triển để thực hiện các nhiệm vụ nhận diện hình ảnh và phân loại Điểm đặc biệt của
DenseNet là cách mà nó kết nối các lớp nơ-ron trong quá trình học, trong đó các đầu ra của các lớp trước được nối trực tiếp vào đầu vào của các lớp sau thay vì thực hiện phép cộng như ResNet
Mô hình này giúp tăng cường độ sâu của mạng và chia sẻ thông tin hiệu quả, giúp cải thiện hiệu suất với số lượng tham số ít hơn so với một số kiến trúc khác Densenet-201 được biết đến với độ chính xác cao trên bộ dữ liệu ImageNet, điều này cho thấy hiệu quả của nó trong việc thực hiện các nhiệm vụ nhận diện và phân loại ảnh [24]
Mẫu DenseNet-201 rất thích hợp cho các tác vụ phân loại và nhận dạng hình ảnh vì độ chính xác cao của nó Trong hầu hết các trường hợp, DenseNet-201 được sử dụng phổ biến cho các tác vụ phân loại, giúp nâng cao hiệu quả và độ tin cậy của hệ thống.
Phương pháp đánh giá Confusion Matrix
Confusion Matrix là một phương pháp đánh giá kết quả dự đoán của mô hình với nhãn thực tế bằng cách tính chỉ số của độ chính xác và độ bao quát của tất cả trường hợp và dựa vào tỷ số đó ta đánh giá độ tin cậy của mô hình Từ đó ta có thể điều chỉnh và cải thiện lại hiệu suất của mô hình
Một Confusion Matrix gồm 4 chỉ số sau:
● TP (True Positive): Số lượng dự đoán chính xác của mô hình (dự đoán đúng người bệnh)
● TN (True Negative): Số lượng dự đoán chính xác một cách gián tiếp của mô hình 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 của mô hình là khi dự đoán sai hoàn toàn về kết quả của bệnh nhân
● FN (False Negative): Số lượng các dự đoán sai lệch một cách gián tiếp Là khi mô hình dự đoán bệnh nhân không bị ung thư nhưng người đó bị ung thư [25]
Ngoài ra, có 4 thông số cần quan tâm đến là các thuật ngữ như: TPR, TNR, FPR, FNR là đại diện cho các chỉ số đánh giá hiệu suất của mô hình được tính theo công thức sau:
Các yếu tố chính của Confusion Matrix bao gồm True Positive (TP), True Negative (TN), False Positive (FP), và False Negative (FN) đóng vai trò vô cùng quan trọng trong việc đánh giá độ chính xác và độ tin cậy của mô hình Dựa vào các giá trị chỉ số này, ta có thể tính toán được Accuracy, Sensitivity (Recall), Specificity, và Precision và đánh giá độ chính xác và độ tin cậy của mô hình
Độ chính xác là tỷ lệ giữa dự đoán đúng (chuẩn dương tính và chuẩn âm tính) và tổng số mẫu.
Độ nhạy (Recall) đo lường khả năng của mô hình trong việc phát hiện đúng các trường hợp thực sự mắc bệnh (True Positive) Độ nhạy được tính bằng tỷ lệ giữa số lượng dự đoán đúng (True Positive) và tổng số trường hợp thực sự mắc bệnh (True Positive + False Negative).
● Specificity (Độ đặc hiệu): Tỷ lệ giữa số lượng True Negative và tổng số thực sự là Negative (True Negative + False Positive), tức là tỷ lệ những người không mắc bệnh và được xác định chính xác (True Negative) so với tổng số người không mắc bệnh (True Negative + False Positive) Đây là phương pháp đánh giá khả năng của mô hình loại trừ đúng các trường hợp Negative
● Precision (Độ chính xác của Positive): Tỷ lệ giữa số lượng True Positive và tổng số dự đoán là Positive (True Positive + False Positive) Đây là phương pháp đo lường khả năng của mô hình khi dự đoán Positive là chính xác
● F1-Score là một phương pháp được kết hợp từ hai phương pháp Precision và Recall, điều này giúp cho F1-Score kế thừa hai đặc trưng của Recall và Precision và giúp cho mô hình cân bằng được độ chính xác và thu hồi hiệu quả, khiến cho mô hình này phù hợp với hầu hết các đề tài [26]
Giới thiệu về Web
Ở trong đề tài này, nhóm xây dựng một Website đơn giản để cho người dùng dễ dàng tiếp cận và khai thác hết tính năng có sẵn Tiêu chuẩn để xây dựng một Website hoàn chỉnh có cấu trúc như sau: FrontEnd, BackEnd và API
Giao diện FrontEnd đóng vai trò là cầu nối giữa người dùng và website, cho phép tương tác trực tiếp với hệ thống thông qua các thành phần hiển thị như giao diện, hình ảnh và nút bấm Được xây dựng bằng các ngôn ngữ HTML, CSS, JavaScript, FrontEnd có khả năng thu thập dữ liệu tương tác của người dùng và gửi tín hiệu đến BackEnd để xử lý theo các quy tắc lập trình đã định sẵn.
BackEnd là một phần của ứng dụng xây dựng Website, đảm bảo hoạt động trơn tru và xử lý dữ liệu được truyền từ FontEnd thông qua tương tác của người dùng BackEnd được xây dựng bằng các ngôn ngữ lập trình (như Node.js, Python, Java, PHP) là phần mà người dùng không nhìn thấy và chịu trách nhiệm xử lý dữ liệu, cơ sở dữ liệu, logic xử lý của Website
ReactJS là một thư viện JavaScript mã nguồn mở được thiết kế bởi Facebook với mục tiêu tạo ra những giao diện người dùng (UI) ứng dụng web mượt mà, nhanh chóng, hiệu quả, dễ thực hiện, khả năng mở rộng và độ tối ưu cao Các tính năng hay sức mạnh của ReactJS xuất phát từ việc nó tập trung vào các thành phần hiển thị riêng lẻ (các Component) của ứng dụng Đây được xem là điểm nổi bật của ReactJS so với các thư viện khác Do đó khi sử dụng ReactJS, các Developer sẽ thao tác trực tiếp với các thành phần thay vì làm việc trên toàn bộ ứng dụng Bên cạnh đó, với việc các Component hoạt động độc lập và có khả năng tái sử dụng giúp tăng hiệu quả và sự linh hoạt khi lập trình
Trang web được xây dựng từ các thành phần cơ bản là Tài liệu HTML Trình duyệt đọc Tài liệu này để hiển thị nội dung của chúng lên màn hình Khi thực hiện quá trình này, trình duyệt sẽ tạo ra Đối tượng Tài liệu.
DOM (Document Object Model) là một cây biểu diễn cấu trúc của trang web Các nhà phát triển có thể sử dụng JavaScript để thay đổi nội dung động của DOM.
Hình 2.12: Chi tiết về cây cấu trúc trong DOM [27]
Như đã đề cập, để tăng tốc quá trình phát triển và hạn chế các bug có thể xảy ra trong quá trình thực hiện ReactJS đã cung cấp cho chúng ta khả năng tái sử dụng code (Reusable Code) dựa trên hai thành phần chính, bao gồm:
❖ Redux: Vì trong một ReactJS không có các module chuyên dụng để xử lý dữ liệu nên nó được thiết lập một cách độc lập bằng việc chia nhỏ view thành các thành phần khác nhau giúp chúng liên kết chặt chẽ với nhau tốt hơn Sự liên kết và các mối quan hệ giữa các component trong ReactJS cần được quan tâm đặc biệt bởi chỉ có một luồng dữ liệu duy nhất là luồng dữ liệu từ cha sang con Vì vậy sự ra đời của Redux như một thư viện JavaScript có tác dụng tạo ra một lớp quản lý mọi trạng thái của ứng dụng Hay nói cách khác, Redux là một Predictable State Management Tool (công cụ quản lý cao cấp) cho các ứng dụng [28]
Hình 2.13: Cách hoạt động của Redux [28]
❖ Virtual DOM: Khi dữ liệu của Component thay đổi ReactJS cần phải vẽ lại (Re-render) giao diện Thay vì tạo ra thay đổi trực tiếp vào toàn bộ mô hình DOM của trình duyệt, nó tạo ra sự thay đổi trên một mô hình DOM ảo (Virtual DOM) Sau đó so sánh sự thay đổi giữa hai mô hình DOM, khi đó chỉ cần cập nhật lại các giá trị thay đổi cho DOM của trình duyệt Cách tiếp cận này mang lại hiệu quả về hiệu năng cho ứng dụng [29]
Như vậy có thể nói Virtual DOM vừa đóng vai trò là một model đồng thời có cả vai trò là một view Do đó khi một nhân tố bị thay đổi sẽ kéo theo nhân tố kia cũng thay đổi [30]
Hình 2.14: Hoạt động của Virtual DOM [29]
Với những điểm mà ReactJS thể hiện, chúng ta có thể thấy đây là một thư viện mạnh mẽ linh hoạt và phù hợp với việc sử dụng lập trình giao diện trình duyệt Đây cũng là lý do ReactJS được lựa chọn để xây dựng phần FrontEnd của đề tài
Firebase là nền tảng phát triển ứng dụng web của Google Đây cũng là dịch vụ cơ sở dữ liệu trên nền tảng đám mây, hoạt động trên hệ thống máy chủ mạnh mẽ của Google.
Firebase cung cấp các cơ sở dữ liệu giúp cho việc lập trình các ứng dụng trở nên nhanh và thuận tiện hơn Các Developer có thể dễ dàng lập trình bằng cách đơn giản hoá các thao tác với nguồn cơ sở dữ liệu sẵn có
Hình 2.15: Giới thiệu Firebase Với việc bắt đầu từ nền tảng này là sự kết hợp giữa Cloud với hệ thống máy chủ của Google, Firebase tập trung chính cho 2 đối tượng là:
● Develop & test your app: phát triển và thử nghiệm các ứng dụng được thiết kế
● Grow & engage your audience: phân tích dữ liệu và tối ưu hóa trải nghiệm với người dùng [32]
Dựa trên những nền tảng trên, Firebase cung cấp cho người dùng những chức năng như:
● Firebase realtime database: là cơ sở dữ liệu thời gian thực, Not Only Structured Query Language (NoSQL) được lưu trữ đám mây cho phép lưu trữ và đồng bộ dữ liệu
XÂY DỰNG MÔ HÌNH HUẤN LUYỆN
Giới thiệu
Theo như đã đề cập ở cơ sở lý thuyết, đề tài sử dụng phương pháp học tập chuyển giao (Transfer Learning) để huấn luyện cho mô hình chẩn đoán bệnh Ung Thư Vú Thông qua những lợi ích của phương pháp học tập chuyển giao, đề tài sẽ dựa vào những mô hình huấn luyện trước như: VGG-16, Resnet-152, Efficient-V2 để cho ra kết quả tốt nhất Ngoài ra, đề tài vẫn áp dụng các trọng số và kiến trúc của mô hình đã được huấn luyện và tiếp tục tiến hành huấn luyện lại mô hình với tập dữ liệu Mini-DDSM.
Sơ đồ khối
Đề tài sử dụng phương pháp học tập chuyển giao (Transfer Learning) để huấn luyện cho mô hình chẩn đoán bệnh Ung Thư Vú và quy trình thực hiện được tổng quát như hình (3.1)
Hình 3.1 Sơ đồ khối mô hình phân loại bệnh Khối đầu vào: Nhận các nhũ ảnh làm đầu vào được cung cấp từ tập dữ liệu Mini-DDSM để làm cơ sở dữ liệu và tiến hành bước kế tiếp là tiền xử lý dữ liệu
Khối tiền xử lý: Thực hiện xử lý dữ liệu đầu vào để đưa vào quá trình huấn luyện bao gồm: thay đổi kích thước ảnh, chuẩn hóa dữ liệu, áp dụng các phép biến đổi, trích xuất đặc trưng
Khối huấn luyện: Áp dụng phương pháp Transfer Learning bằng cách sử dụng các mô hình đã huấn luyện trước để huấn luyện cho mô hình và cho ra các tham số tốt nhất của mô hình
Khối đầu ra: Đưa ra kết quả tốt nhất sau khi huấn luyện thành công của mô hình, dựa vào kết quả đó để đánh giá mô hình tốt hay xấu và có thể tiến hành huấn luyện lại nếu kết quả không hài lòng.
Chia dữ liệu
Toàn bộ dữ liệu được sử dụng trong đề tài này được tổng hợp chi tiết dưới bảng sau:
Bảng 3.1: Chi tiết toàn bộ dữ liệu
Label Số Lượng Tỷ lệ
Nhìn vào bảng số liệu, ta thấy số lượng của các nhãn được chia tỷ lệ chênh lệch không quá nhiều, cụ thể nhãn “Benign” có số lượng 2685 mẫu chiếm 34,4% và nhãn “Cancer” có số lượng 2716 mẫu chiếm 34,7%, cuối cùng là nhãn “Normal” có số lượng 2408 chiếm 30,9% Điều này có nghĩa là số lượng mẫu chênh lệch không quá nhiều và không ảnh hưởng nhiều đến quá trình huấn luyện mô hình Tiếp theo ta thành 2 tập dữ liệu là tập huấn luyện (Train) để huấn luyện và tập xác thực (Validation) để đánh giá hiệu suất huấn luyện của mô hình Việc chia dữ liệu này được thực hiện cụ thể như sau:
Bảng 3.2: Chi tiết số lượng train và vaid
Label Số Lượng Tỷ lệ
Nhìn vào bảng số liệu, ta thấy tỷ lệ chia hai tập lệnh Train và Vaid có sự chênh lệch rất lớn, số lượng mẫu trong tập Train gấp 4 lần tập Vaid Đây là chủ đích của nhóm nhằm mục đích muốn mô hình có thể học được nhiều đặc tính của nhũ ảnh trong tập Train để mô hình có hiệu suất và độ chính xác cao.
Chuẩn hóa dữ liệu
Theo như cơ sở lý thuyết ở chương 2, đề tài này sử dụng học tập chuyển giao để huấn luyện cho mô hình chẩn đoán bệnh Ung Thư Vú Dựa vào trang Pytorch nơi cung cấp các trọng số và các mô hình huấn luyện trước, để huấn luyện được mô hình ta phải chuẩn hóa hình ảnh để mô hình có thể học và cho ra kết quả tốt nhất
Chuẩn hoá dữ liệu là quá trình chuyển đổi dữ liệu đầu vào của mô hình để phù hợp với yêu cầu của mô hình huấn luyện Cụ thể, chuẩn hoá dữ liệu thường bao gồm việc chuyển đổi định dạng dữ liệu, thực hiện các biến đổi như chuẩn hóa, cắt ảnh, xoay ảnh, và các phép biến đổi khác để tối ưu hóa dữ liệu đầu vào cho quá trình huấn luyện mô hình
Hình 3.2: Dữ liệu sau khi chuẩn hoá Chuẩn hoá dữ liệu giúp cho mô hình có thể tiếp cận và học tập tốt các nhũ ảnh ở nhiều góc độ tốt hơn, làm cho mô hình hoạt động trơn tru vì tất cả các hình ảnh đều được đồng hoá cùng một kích thước.
Tinh chỉnh mô hình
Đề tài này sử dụng phương pháp học tập chuyển giao và sử dụng các mô hình đã được huấn luyện trước như: VGG-16, Resnet-152, Efficient-V2 đã được huấn luyện trên tập dữ liệu lớn (ImgeNet) và từ đó có khả năng trích xuất các đặc trưng của hình ảnh
Hình 3.3: Transfer learning Trước khi huấn luyện mô hình sử dụng phương pháp học tập chuyển giao, các trọng số huấn luyện của các mô hình huấn luyện trước vẫn được sử dụng, vì hầu hết các trọng số huấn luyện này đã được nghiên cứu và cung cấp cho người dùng để cho ra kết quả tốt nhất Tuy nhiên, số lượng đầu ra của mỗi mô hình huấn luyện trước hoàn toàn khác nhau và khác với đầu ra của mô hình chẩn đoán bệnh Ung Thư Vú nên vì thế ta sẽ thay đổi đầu ra của các mô hình huấn luyện trước sao cho phù hợp với mô hình
Hình 3.4: Các Mô hình huấn luyện trước Mục tiêu đặt ra của đề tài là huấn luyện mô hình chẩn đoán 3 loại bệnh Ung Thư Vú là benign, cancer, normal nên vì thế ta thay đổi đầu ra của các mô hình huấn luyện trước trong lớp FC sao cho phù hợp, cụ thể như sau:
Kiến trúc VGG-16 là một mạng lưới dày đặc và sử dụng bộ lọc tích chập kích thước nhỏ và được trình bày cụ thể theo hình 3.5
Hình 3.5 Sơ đồ khối của VGG-16
Bằng việc thay đổi lớp FC3 trong mô hình đã được huấn luyện trước VGG-
16 cho phù hợp với đề tài có 3 bệnh tương ứng với 3 đầu ra, kết quả đầu ra được hiển thị ở hình 3.6
Hình 3.6 Mô hình VGG-16 sau khi thay đổi FC
Kiến trúc Resnet-152 là một mạng Resnet đặc biệt được thiết kế để tối ưu hóa thông số Các chi tiết về kiến trúc này được mô tả trong Hình 3.7 và Hình 3.8.
Hình 3.7: Sơ đồ khối của Resnet-152
Thay đổi lớp FC trong mô hình Resnet-152 để tiến hành huấn luyện để cho ra thông số phù hợp với yêu cầu đề tài
Hình 3.8 Mô hình Resnet-152 sau khi thay đổi FC
EfficientNet_V2 là một phần của họ mô hình EfficientNet, được tạo ra để giải quyết bài toán tăng tốc huấn luyện và nâng cao hiệu suất tham số Mặc dù có kích thước nhỏ hơn nhưng vẫn duy trì hiệu suất cao, như biểu diễn trực quan trong Hình 3.9.
Mô hình EfficientNet_V2 có cấu trúc sơ đồ khối như hình 3.9 Để phù hợp với yêu cầu nghiên cứu, lớp FC trong mô hình này đã được thay đổi và huấn luyện lại để tạo ra thông số phù hợp.
Hình 3.10 Mô hình EfficientNet_V2 sau khi thay đổi FC
Mô hình DenseNet-201 là một mạng mô hình mạng tích chập có ưu điểm nổi bật như số lượng tham số ít, hiệu suất cao, kiến trúc mạng dày đặc …
Hình 3.11: Sơ đồ khối của DenseNet-201 Để đạt được mục tiêu của đề tài, ta thay đổi lớp FC của mô hình huấn luyện trước Densenet-201 bằng 3 để thoả yêu cầu bài toán là phân loại 3 labels: Normal, Benign, Cancer
Hình 3.12: Mô hình DenseNet-201 sau khi thay đổi lớp FC
Các mô hình huấn luyện trước đã được áp dụng phương pháp học tập Transfer Learning, điều này giúp cho mô hình phân loại chẩn đoán bệnh Ung Thư Vú có thể kế thừa hầu hết các tính năng và đặc điểm cho mô hình huấn luyện trước Vì vậy giúp giảm thời gian tinh chỉnh huấn luyện và tính toán các thông số, độ tin cậy của mô hình được tăng đáng kể Ngoài ra, vì áp dụng phương pháp Transfer Learning nên mô hình có khả năng chiết suất và học tập vượt trội
CrossEntropyLoss là một hàm mất mát được sử dụng phổ biến trong quá trình huấn luyện mô hình phân loại hình ảnh Nó được sử dụng để tính toán mất mát cross-entropy giữa các mức logits đầu ra và nhãn tương ứng Nó là một phần quan trọng của quá trình tối ưu hóa mô hình để đạt được dự đoán phân loại chính xác
-logL({𝑦 (𝑛) , {ŷ (𝑛) }) = ∑ [ − ∑ 𝑦 𝑛 𝑖 𝑖 𝑙𝑜𝑔ŷ 𝑖 (𝑛) ] = ∑ 𝐻(𝑦 𝑛 (𝑛) , ŷ (𝑛) ) (3.1) Trong đề tài này, ta sử dụng hàm CrossEntropyLoss để đánh giá sự tương đồng giữa các mức logic đầu ra của hình ảnh và nhãn tương ứng để cho ra tên bệnh Đây là một phần quan trọng trong việc dự đoán loại bệnh của mô hình.
Quy trình huấn luyện mô hình
Để tiến hành huấn luyện một mô hình chẩn đoán bệnh, việc đầu tiên ta có một tập dữ liệu tương ứng với các yêu cầu cho đề tài Sau đó tiến hành bước tiền xử lý dữ liệu, tuỳ vào tập dataset mà ta dùng ngôn ngữ lập trình để phân loại theo tên các mẫu và biến đổi dữ liệu sao cho phù hợp với từng mô hình huấn luyện trước Tiếp theo ta thực hiện việc Data Transform để chuyển đổi định dạng dữ liệu và chuẩn hoá hình ảnh sao cho phù hợp với mô hình huấn luyện trước Cuối cùng là tinh chỉnh lớp cuối cùng để có được đầu ra là 3 lớp điều này đảm bảo cho mô hình phân loại đúng với 3 bệnh mà mục tiêu đề tài đặt ra
Sau khi tinh chỉnh xong mô hình, ta tiến hành xác định các tham số của các mô hình huấn luyện trước để cho ra kết quả tốt nhất Việc này bao gồm tinh chỉnh các thông số Optimizer, Learning rate, batch size, epochs sao cho phù hợp với cho quá trình huấn luyện
Sau khi huấn luyện được mô hình, ta tiến hành đánh giá xem hiệu suất và độ chính xác của mô hình có thực sự đáng tin cậy hay không Thông qua các phương pháp mà nhóm đã đề cập ở chương 2, từ đó đánh giá mô hình và điều chỉnh lại mô hình nếu cần thiết
Bước kiểm tra mô hình là điều cần thiết, sử dụng các tập kiểm tra để đảm bảo rằng mô hình có hoạt động tốt trên dữ liệu mới, cuối cùng là triển khai mô hình và áp dụng vào các dự đoán thực tế.
Mô hình thực nghiệm
Tiến hành thay đổi lớp FC của các mô hình tiền huấn luyện VGG-16, Resnet-152, DenseNet-201, Efficient_V2 và thử nghiệm trên tập dữ liệu Mini-DDSM Mô hình được huấn luyện với batch_size 4, num_workers 4 và learning rate xác định sẵn.
=0.001, momentum =0.9 với số epochs là 20 và dữ liệu đầu vào đã được chuẩn hoá theo các kích thước phù hợp với từng mô hình huấn luyện trước để cho ra kết quả tối ưu nhất có thể của mô hình Kết quả được thực nghiệm và tinh chỉnh nhiều lần với mục đích cho ra độ chính xác cao nhất
Kết quả thực nghiệm được ghi nhận cụ thể như sau :
Bảng 3.3: Đánh giá hiệu suất VGG-16
Nhận xét: Đối với VGG-16 các số liệu của mô hình được như sau:
● Biểu đồ Accuracy cho thấy: Độ chính xác của toàn tập Val là 0,64
● Biểu đồ Loss cho thấy: Tỉ số giữa Train_loss và Val_loss lần lượt là 0.6502 và 0.6490
● Confusion Matrix cho thấy : Số lượng đoán sai của các từng labels cụ thể là Normal là 36, Benign là 276, Cancer là 164
Dựa vào kết quả thống kê, mô hình VGG-16 thể hiện độ chính xác thấp và tỷ lệ dự đoán nhầm nhãn cao, đặc biệt là nhầm lẫn giữa các nhãn Benign và Cancer với tỷ lệ lên tới 86% Do đó, mô hình VGG-16 không phù hợp với mục đích dự đoán vì độ chính xác kém.
Bảng 3.4: Đánh giá hiệu suất Resnet-152
Nhận xét: Đối với Resnet-152 các số liệu của mô hình được như sau:
● Biểu đồ Accuracy cho thấy: Độ chính xác của toàn tập Val là 0,7
● Biểu đồ Loss cho thấy: Tỉ số giữa Train_loss và Val_loss lần lượt là 0.84 và 0.83
● Confusion Matrix cho thấy : Số lượng đoán sai của các từng labels cụ thể là Normal là 70, Benign là 235, Cancer là 202
Dựa vào các số đã được thống kê ở trên, thì mô hình Resnet-152 cho ra độ chính xác trung bình và tỷ lệ dự đoán sai của các nhãn rất cao đặc biệt tỷ lệ dự đoán sai của 2 nhãn Benign và Cancer chiếm tỉ lệ 86% Từ đó kết luận rằng mô hình Resnet-152 không phù hợp với đề tài
Bảng 3.5: Đánh giá hiệu suất Efficient_V2
Nhận xét: Đối với Efficient_V2 các số liệu của mô hình được như sau:
● Biểu đồ Accuracy cho thấy: Độ chính xác của toàn tập Val là 0,708
● Biểu đồ Loss cho thấy: Tỉ số giữa Train_loss và Val_loss lần lượt là 0.85 và 0.83
● Confusion Matrix cho thấy : Số lượng đoán sai của các từng labels cụ thể là Normal là 56, Benign là 273, Cancer là 164
Dựa vào các số đã được thống kê ở trên, thì mô hình Efficient_V2 cho ra độ chính xác trung bình và tỷ lệ dự đoán sai của các nhãn rất cao đặc biệt tỉ lệ dự đoán sai của 2 nhãn Benign và Cancer chiếm tỉ lệ 88% Từ đó kết luận rằng mô hình Efficient_V2 không phù hợp với đề tài
Bảng 3.6: Đánh giá hiệu suất DenseNet-201
Nhận xét: Đối với DenseNet-201 các số liệu của mô hình được như sau:
● Biểu đồ Accuracy cho thấy: Độ chính xác của toàn tập Val là 0,82
● Biểu đồ Loss cho thấy: Tỉ số giữa Train_loss và Val_loss lần lượt là 0,5662 và 0,7312
● Confusion Matrix cho thấy : Số lượng đoán sai của các từng labels cụ thể là Normal là 47, Benign là 122, Cancer là 112
Dựa vào các số đã được thống kê ở trên, thì mô hình DenseNet-201 cho ra độ chính xác trung bình và tỷ lệ dự đoán sai của các nhãn rất cao đặc biệt tỉ lệ đự đoán sai của 2 nhãn Begin và Cancer chiếm tỉ lệ 83% Từ đó kết luận rằng mô hình DenseNet-201 phù hợp với đề tài vì cho ra độ chính xác cao nhất là 0,82 và dựa vào đó, ta dùng mô hình huấn luyện trước DenseNet-201 là mô hình chính cho toàn đề tài.
THI CÔNG HỆ THỐNG
Tổng quan về hệ thống
Về việc xây dựng một ứng dụng chẩn đoán bệnh X-quang vú bằng mô hình
AI, các hệ thống thường được xây dựng dưới dạng ứng dụng Desktop hoặc trang web tĩnh, nhằm hỗ trợ các bác sĩ và chuyên viên y tế trong việc chẩn đoán bệnh dựa trên hình ảnh X-quang Bên cạnh đó, với mục tiêu phát triển một sản phẩm ứng dụng chẩn đoán bệnh X-quang vú đáng tin cậy và dễ dàng trong quá trình quản lý và phát triển, đề tài nhận thấy cần thiết phải xây dựng một trang web với hệ thống bao gồm phần FrontEnd, BackEnd và cơ sở dữ liệu Đồng thời phải thực hiện được tính năng chuẩn đoán theo yêu cầu đề tài.
Sơ đồ hệ thống Website
Ứng dụng được thiết kế để đáp ứng nhu cầu của mọi đối tượng người dùng, cho phép họ dễ dàng chẩn đoán trực tiếp trên nền tảng mà không cần thêm bất kỳ thao tác nào Điều này tạo điều kiện thuận lợi, nhanh chóng và dễ dàng trong việc truyền đạt kết quả chẩn đoán đến người dùng.
Việc xây dựng ứng dụng theo đúng tiêu chuẩn và tiếp cận tối ưu các nền tảng phát triển ứng dụng web là vô cùng cần thiết để đảm bảo hiệu suất và trải nghiệm người dùng
Hình 4.1 Sơ đồ hệ thống Website
Do đó, đề tài xây dựng một kiến trúc hệ thống như hình (4.1) bao gồm những thành phần sau:
● FrontEnd: Phần FrontEnd của ứng dụng được xây dựng bằng ReactJS Nó cung cấp giao diện giúp người dùng tương tác với ứng dụng Người dùng có thể tải lên hình ảnh X-quang vú của mình và thực hiện yêu cầu chẩn đoán Kết quả dự đoán và hình ảnh sẽ được hiển thị cho người dùng
● BackEnd: Phần BackEnd của ứng dụng được xây dựng bằng Pycharm
BackEnd chứa API nhằm thực hiện chức năng của ứng dụng web, bao gồm xử lý yêu cầu để lấy dữ liệu và tương tác với model API để trả về kết quả dự đoán.
● Model API: Được xây dựng bằng thư viện Flask của Python Model API chứa mô hình AI đã được huấn luyện để phân loại hình ảnh X-quang vú Khi nhận được yêu cầu từ phía BackEnd, model API thực hiện quá trình dự đoán và trả về kết quả dự đoán
● Cơ sở dữ liệu: Sử dụng Firebase Database, một cơ sở dữ liệu dùng để lưu trữ cũng như truy xuất những tệp hình ảnh của ứng dụng
Hình 4.2 Giao diện ứng dụng
Sau khi hoàn thành thiết kế và xây dựng hệ thống, tiến hành kết nối các thành phần của hệ thống và triển khai ứng dụng.
Lưu đồ giải thuật
Hình 4.3: lưu đồ giải thuật Sau khi người dùng khởi động ứng dụng từ máy tính, một giao diện web sẽ được hiển thị lên màn hình Từ đây, người dùng có thể thao tác với chương trình thông qua các nút chức năng Chức năng củ - “Home”: có chức năng đưa người dùng quay về trang chủ Khi nhấn nút “Home” người dùng sẽ được đưa về giao diện trang chủ của ứng dụng
- “About”: có chức năng đưa người dùng đến trang thông tin Khi nhấn nút
“About” người dùng sẽ được đưa đến giao diện trang thông tin về bệnh ung thư vú của ứng dụng
- “Detect”: đưa người dùng đến trang chẩn đoán Khi nhấn nút “Detect” người dùng sẽ được đưa đến giao diện chẩn đoán của ứng dụng
- “Get Started”: đưa người dùng đến trang chẩn đoán Khi nhấn nút “Get Started” người dùng sẽ được đưa đến giao diện chẩn đoán của ứng dụng Tuy nhiên, nút này chỉ xuất hiện ở giao diện trang chủ
- “Load Img”: chọn ảnh cần chần đoán Khi nhấn vào vùng chứa dòng chữ
“Browse folder here”, cửa số desktop xuất hiện cho phép người dùng chọn ảnh cần chẩn đoán
- “Check”: tiến hành chẩn đoán Khi nhấn nút “Check” ảnh cần chẩn đoán sẽ được tải lên Firebase, đồng thời thực hiện API chẩn đoán ảnh và hiển thị kết quả chẩn đoán ảnh lên màn hình
- “Reset”: xoá thông tin Khi nhấn nút “Reset” mọi thông tin sẽ bị xoá bao gồm ảnh và kết quả chẩn đoán các nút sẽ được mổ tả ở đây:
Thi công FrontEnd
Phần giao diện được thiết kế bằng thư viện React JS phổ biến để xây dựng giao diện người dùng trực quan và tương thích đa nền tảng Yêu cầu đề tài là triển khai giao diện người dùng với các thuộc tính đảm bảo tính trực quan, tương thích và tuân thủ nguyên tắc thiết kế.
● Tính thẩm mỹ và sử dụng dễ dàng: Giao diện ứng dụng dành cho người dùng cần phải trực quan, bố cục hợp lý đồng thời đảm bảo việc đơn giản khi thực hiện các thao tác trong quá trình sử dụng Các thành phần của giao diện, nút nhấn, label, v.v nên được sắp xếp một cách logic, rõ ràng Bên cạnh đó phải đảm bảo màu sắc, kích thước của các đơn vị được hiển thị một cách hài hoà và dễ nhìn Giao diện cũng cần có khả năng đáp ứng để hiển thị lên các thiết bị, màn hình khác nhau
● Thông qua API để tương tác với BackEnd: Giao diện cần thông qua các API để tương tác với BackEnd trong việc gửi và nhận yêu cầu từ người dùng Các yêu cầu được sử dụng bao gồm việc gửi hình ảnh X-quang và nhận kết quả trả về Giao diện cần triển khai chức năng gọi API tương ứng và xử lý phản hồi mà BackEnd trả về
● Sử dụng Firebase – Storage trong truyền dữ liệu: Giao diện ứng dụng cần cung cấp dữ liệu dữ liệu để hệ thống có thể xử lý để từ đó trả về kết quả Trong ứng dụng này, dữ liệu cần cùng cấp là các file ảnh mà người dùng cần chẩn đoán, chúng được lưu trữ ở Storage trong Firebase, để từ đó thông qua API BackEnd có thể lấy về xử lý.
Thi công BackEnd
BackEnd đóng vai trò quan trọng trong việc thực hiện các chức năng chính của hệ thống Đề tài sẽ xây dựng BackEnd bằng việc sử dụng Pycharm và các khái niệm như tạo API, kết nối với Firebase, sử dụng module để tạo nên chương trình thực hiện các chức năng theo yêu cầu của đề tài
Hình 4.4: Giao diện Folder và thư viện cần dùng của BackEnd
Chương trình "main.py" nằm trong thư mục "BackEnd" đóng vai trò là chương trình chính của BackEnd Thư mục này không chỉ chứa chương trình này mà còn bao gồm các module và thư viện tạo nên môi trường hoạt động cho nó.
Để truy cập dữ liệu hình ảnh được lưu trữ trên Firebase Storage, BackEnd cần lấy tệp ".json" từ Service Accounts nhằm thiết lập kết nối Sau khi thiết lập kết nối, dữ liệu có thể được truy xuất thông qua các thuộc tính được cung cấp.
Hình 4.5: Kết nối BackEnd với cơ sở dữ liệu Firebase
Vì để được nhất quán với những cơ sở dữ liệu dùng để train module Thì sau khi lấy file ảnh, các dữ liệu này cần được transform trước khi đưa vào module AI
Từ đó module sẽ cho ra kết quả chính xác nhất
Ngoài ra, với việc BackEnd là nơi thực hiện các yêu cầu từ người dùng Yêu cầu BackEnd cũng được chạy đồng bộ với FrontEnd Do đó cần một thiết lập về địa chỉ localhost Trong ứng dụng này địa chỉ sẽ là “http://localhost/9000” thông qua API giao tiếp với FrontEnd
Hình 4.6: Thiết lập địa chỉ Http://Localhost/9000
Kết nối FrontEnd với BackEnd
Như đã trình bày thì bất kì một chương trình nào nếu muốn liên kết giữa FrontEnd và BackEnd đề phải thông qua việc sử dụng các API tương ứng với các tính năng đã được lập trình cho trước đó
Hình 4.7: Mối liên hệ giữa FrontEnd và BackEnd [36]
Model API của ứng dụng sẽ được xây dựng bằng thư viện Flask của Python Model API sẽ có nhiệm vụ tạo ra một API, API này sẽ thực hiện chức năng nhận tên file ảnh cần được chẩn đoán, tiền xử lý Sau đó đọc mô hình đã được huấn luyện sẵn (tệp ".pth"), tiến hành dự đoán và đưa ra kết quả Khi FrontEnd gửi yêu cầu dự đoán qua API "/predict" thì BackEnd sẽ gọi API của model API này và tiến hành dự đoán BackEnd sẽ nhận kết quả trả về từ model API và trả về cho FrontEnd và hiển thị cho người dùng
Như vậy, khi có yêu cầu, một lệnh Post được gửi qua BackEnd thông qua API đã thiết lập Với nội dung đính kèm là tên của file ảnh dữ liệu Sau khi nhận được thông báo từ model API, BackEnd sẽ lấy ảnh về và thực hiện chẩn đoán Sau cùng kết quả sẽ được trả về “res.data.predict_result” và hiển thị lên màn hình người dùng
Hình 4.8: Sơ đồ nguyên lý về hệ thống của ứng dụng
Hướng dẫn sử dụng Website
Bước đầu tiên, cần phải “run” chương trình “BackEnd” để khởi động http://localhost:9000/predict Sau đó, người dùng khởi chạy chương trình
“FrontEnd” để hiển thị ứng dụng lên màn hình và thực hiện các bước sau
● Gõ “npm start” trong cửa sổ terminal để khởi động FrontEnd hình (4.7)
Hình 4.9: Hình khởi động FrontEnd
● Khi đó, chương trình sẽ được khởi động trên trình duyệt với đường dẫn http://localhost:3000/ Lúc này, trên màn hình là trang giao diện của phần mềm (trang “home”) hình (4.8)
Hình 4.10: Hình giao diện chương trình ứng dụng
● Sau khi đưa đến trang Home, người dùng nhấn vào “Get Started” hoặc
“Detect” để được chuyển tới trang chẩn đoán hình (4.9) Tại đây, để việc chuẩn đoán được thực hiện, đầu tiên người dùng cần phải chọn ảnh Bằng cách nhấn vào “Browser folder here” Khi đó, trên màn hình ứng dụng một cửa sổ desktop hiện lên cho phép người dùng chọn ảnh
Hình 4.11: Giao diện chọn ảnh chẩn đoán
● Sau khi chọn, ảnh sẽ được hiển thị trên màn hình, lúc này nhấn vào “Check” để thực hiện chuẩn đoán Nếu ảnh chưa được tải mà nhấn thì sẽ xuất hiện thông báo yêu cầu đợi việc tải ảnh hoàn tất “Waiting for loading Image and click Check again” hình (4.10)
Khi tải ảnh chưa hoàn tất, bạn cần đợi ảnh tải lên hoàn tất rồi nhấn lại "Check" Sau khi nhận được yêu cầu, chương trình sẽ thực hiện chuẩn đoán và hiển thị kết quả.
Hình 4.13: Kết quả chẩn đoán
Sau khi có kết quả hoặc muốn kiểm tra ảnh khác thì nhấn vào “Reset” để quay về giao diện chẩn đoán.
KẾT QUẢ VÀ NHẬN XÉT, ĐÁNH GIÁ MÔ HÌNH
Tổng kết
Sau khi tiến hành huấn luyện mô hình chẩn đoán bệnh Ung Thư Vú với 3 loại bệnh, nhóm đã thu tập và tổng hợp các số liệu Accuracy của từng mô hình huấn luyện trước Dựa vào đó, tiến hành khảo sát và đánh giá xem mô hình huấn luyện trước nào phù hợp nhất tới tập dữ liệu Mini-DDSM cũng như là mô hình huấn luyện trước nào tốt nhất trong việc huấn luyện mô hình chẩn đoán bệnh Ung Thư
Bảng 5.1: Tổng hợp các tỷ số accuracy
Dựa vào bảng số liệu ta thấy Accuracy của mô hình huấn luyện trước DenseNet-201 có chỉ số cao nhất (0,8201) so với 3 model còn lại: VGG-16 (0.646607), Resnet-152 (0.704225) và EfficientNet-V2(0.7003)
Hình 5.1: Các mô hình đã huấn luyện Đây là kết quả thực nghiệm của mô hình huấn luyện chẩn đoán bệnh Ung Thư
Vú và kết quả này vẫn chưa được tốt so với những gì mà nhóm mong đợi Kết quả này sau nhiều lần thử nghiệm, và độ chính xác (Accuracy) cao nhất mà mô hình huấn luyện chẩn đoán bệnh Ung Thư Vú đạt được từ mô hình huấn luyện trước DenseNet-201cao nhất là 82,01% Điều này chứng tỏ tập dữ liệu Mini-DDSM vẫn chưa hỗ trợ tốt nhất cho mô hình huấn luyện chẩn đoán bệnh Ung Thư Vú, vì có thể mô hình huấn luyện theo phương thức Transfer Learning sẽ rất khó nhận biết nhũ ảnh vì hầu hết các hình ảnh khối u lành tính và hình ảnh khối u ác tính, sự phân biệt đó không rõ ràng, có thể do chúng quá giống nhau để mô hình chúng tôi nhận ra
Để đánh giá chính xác mô hình huấn luyện chẩn đoán bệnh ung thư vú, nhóm nghiên cứu đã sử dụng các phương pháp: Confusion Matrix, Accuracy, Recall, Precision và F1-Score Các phương pháp này đóng vai trò là cơ sở chủ đạo để đánh giá khả năng dự đoán chính xác của mô hình huấn luyện.
❖ Đánh giá theo các phương pháp Accuracy, Recall, Precision và F1-Score Để thực hiện cho việc đánh giá này, nhóm sẽ sử dụng thư viện Scikit-learn, một thư viện phổ biến dành cho các thuật toán học máy, được phát triển trên ngôn ngữ lập trình Python Scikit-learn cung cấp các phương pháp đánh giá trên và việc triển khai hoàn toàn bằng Python vô cùng dễ dàng và hiệu quả Ở đề tài, nhóm sử dụng mô hình huấn luyện trước (DenseNet-201) đã được áp dụng cho mô hình huấn luyện chẩn đoán bệnh Ung Thư Vú đã được tham số hoá, vì nó cho ra kết quả có độ chính xác (Accuracy) cao nhất trong những mô hình huấn luyện trước khác, và dùng nó là mô hình chính cho toàn đề tài
Hình 5.2: Hình biểu đồ độ chính xác của mô hình huấn luyện Đây là quá trình huấn luyện mô hình của đề tài “Chẩn Đoán Bệnh Ung Thư Vú Dựa Trên Ảnh X-quang Sử Dụng Mạng Học Sâu” và áp dụng mô hình huấn luyện trước (DenseNet-201) với độ chính xác cao nhất (Accuracy) là 82,01% và độ chính xác của tập huấn luyện (Train accuracy) là 98,77% biểu diễn bởi đường màu xanh Đường màu cam biểu diễn độ chính xác của tập kiểm chứng (Validation accuracy) là 82,01%
Hình 5.3: Biểu đồ đánh giá mô hình Dựa vào biểu đồ (5.3), ta thấy hiệu suất của các phương pháp đánh giá mô hình huấn luyện chẩn đoán bệnh Ung Thư Vú đều ở mức trung bình: Accuracy (82,01%), Recall (82,22%), F1_score (82,18%), Precision (82,15%) Có thể do mô hình huấn luyện chẩn đoán bệnh Ung Thư Vú vẫn còn đơn giản, chiết suất và phân loại riêng biệt từng loại bệnh chưa cao nên kéo theo hiệu suất đánh giá của các phương pháp ở mức trung bình
❖ Đánh giá theo phương pháp Confusion Matrix:
Confusion Matrix là phương pháp giúp ta có thể hiểu rõ chi tiết hiệu suất dự đoán bệnh của mô hình, điều này được thể hiện rõ ở hình (5.4)
Hình 5.4: Đánh giá confusion matrix Dựa vào hình (5.4), ta thấy số lượng dự đoán labels đúng và sai của từng bệnh cụ thể:
● Normal (0) số lượng bệnh dự đoán đúng là 457 labels và dự đoán sai 42 labels (30 labels là labels Benign, 12 labels là labels Cancer)
● Benign (1) số lượng bệnh dự đoán đúng là 419 labels và dự đoán sai 129 labels (29 labels là labels Normal, 100 labels là labels Cancer)
● Cancer (2) số lượng bệnh dự đoán đúng là 405 labels và dự đoán sai 110 labels (18 labels là labels Normal, 92 labels là labels Benign)
Ta thấy số lượng dự đoán sai của tổng mô hình là 281 labels trong đó dự đoán sai từng bệnh liên tục tăng (42