
CÔNG NGHỆ Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC ● Số 13.2023
128
KHOA H
ỌC
NGHIÊN CỨU MULTILAYER PERCEPTRON VÀ ỨNG DỤNG TRONG BÀI TOÁN PHÂN LOẠI BỆNH UNG THƯ PHỔI
RESEARCH OF MULTILAYER PERCEPTRON AND APPLICATION IN LUNG CANCER CLASSIFICATION PROBLEM Đỗ Tuấn Hưng1,*, Bùi Quang Minh1, Nguyễn Thị Cẩm Ngoan2 TÓM TẮT Trong bài báo này, chúng tôi đã tìm cách đ
ể có thể xây dựng một ứng dụng
phát hiện và chẩn đoán bệnh phổi. Sau quá trình sàng lọc tất cả các mô hình truy
ền
thống và mô hình học sâu, cuối cùng chúng tôi xác định chọn mô h
ình CNN. CNN
cho thấy hiệu suất tốt trong việc phân loại hình ảnh. Cụ thể ở đây là phân lo
ại ảnh
X-quang phổi, từ đó xác định xem bệnh nhân có mắc bệnh phổi không. Mô h
ình
có thể nhận được kết quả chính xác ở mức độ chấp nhận được và đã xác định th
ành
công đối tượng có bị bệnh không dựa vào mô hình đã đào tạo. Từ khóa: Chẩn đoán bệnh phổi; học sâu; CNN. ABSTRACT In this paper
, we have found a method to build an application for detecting
and diagnosing lung diseases. After screening all traditional models and deep
learning models, we finally determined the selection of CNN models. CNN
performs well in image classification. Spec
ifically, here is the classification of lung
X-rays to determine whether the subjects have lung diseases. M
odel able to
obtain accurate results to a certain extent and successfully identify subjects with
diseases based on the trained model. Keywords: Diagnosing lung diseases; deep learning; CNN. 1Lớp Kỹ thuật phần mềm 01 - K16, Khoa CNTT, Trường Đại học Công nghiệp Hà Nội2Khoa CNTT, Trường Đại học Công nghiệp Hà Nội *Email: dotuanhung41@gmail.com CHỮ VIẾT TẮT AI Artificial intelligence Trí tuệ nhân tạo CNN Convolutional Neural Networks Mạng nơ-ron tích chập AN N Artificial Neural Network
Mạng nơ-ron nhân tạo 1. GIỚI THIỆU Bài báo này trình bày việc sử dụng mô hình mạng neural học sâu (CNN) để phát hiện và chẩn đoán bệnh phổi. Mô hình này đã cho thấy hiệu suất tốt trong việc phân loại hình ảnh X-quang phổi và xác định được đối tượng có mắc bệnh phổi hay không. Việc sử dụng các kỹ thuật học sâu để nhận dạng ung thư phổi được coi là rất cần thiết vì số lượng người mắc bệnh ung thư và tử vong do căn bệnh này rất lớn trên toàn cầu. Cùng với sự phát triển của phần cứng mạnh mẽ cho phép tính toán hàng tỷ phép tính trong một giây, mạng CNN trở nên phổ biến hơn và được áp dụng vào nhiều lĩnh vực khác nhau của đời sống như lĩnh vực thị giác máy tính, lĩnh vực tự động nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên, lĩnh vực y khoa,... Hệ thống phát hiện và phân loại bệnh phổi đã và đang được phát triển bởi nhiều nhóm nghiên cứu từ nhiều nơi trên thế giới bởi lợi ích mà nó mang lại trong việc sàng lọc những người bị bệnh cũng như giảm áp lực cho các bác sĩ chuyên khoa. Đã có rất nhiều bài toán được ứng dụng trong hệ thống này, tuy nhiên hầu hết đều phát triển dựa trên bài toán nhận diện hình ảnh. Cho tới thời điểm hiện tại, các thuật toán nhận diện hình ảnh vẫn là một trong những thuật toán quan trọng nhất trong phân ngành thị giác máy tính (Computer Vision) bởi nó là tiền đề để giải quyết rất nhiều bài toán thực tế khác nhau. LDDNet (Lung Disease Diagnosis Net), Nghiên cứu này được thực hiện bởi nhóm nghiên cứu từ trường đại học Tsinghua, Trung Quốc và đã được công bố trên tạp chí khoa học BMC Medical Imaging vào năm 2021. Mô hình LDDNet là một kiến trúc mạng nơ-ron tích chập để phân loại các hình ảnh phổi được chụp bằng máy chụp cắt lớp vi tính (Computed Tomography). Mô hình LDDNet được huấn luyện trên bộ dữ liệu và đạt được kết quả ấn tượng với độ chính xác đạt trên 97% trong việc phân loại các hình ảnh phổi. Ngoài ra, mô hình LDDNet còn đạt được kết quả tốt trong việc phân loại các bệnh lý phổi khác nhau, với độ chính xác từ 90% đến hơn 99%. AlexNet là một kiến trúc mạng nơ-ron sâu được giới thiệu bởi Alex Krizhevsky, Ilya Sutskever và Geoffrey Hinton vào năm 2012 để giành chiến thắng trong cuộc thi nhận dạng ảnh ImageNet Large Scale Visual Recognition Challenge (ILSVRC) năm 2012. Kiến trúc của AlexNet cũng sử dụng các tầng tích chập và tầng pooling như LeNet-5, nhưng có kích thước lớn hơn và sâu hơn, đồng thời sử dụng kỹ thuật Dropout để tránh overfitting và sử dụng các kỹ thuật tăng cường dữ liệu (Data Augmentation) để tăng khả năng tổng quát hóa của mô hình.

SCIENCE - TECHNOLOGY Số 13.2023 ● Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC 129
2. PHƯƠNG PHÁP VÀ TƯ LIỆU CNN là thuật toán xử lý ảnh nên mục tiêu của mô hình là phát hiện và phân loại bệnh phổi. CNN có thể xử lý ảnh với kích thước lớn và chất lượng hình ảnh cao rất phù hợp với dữ liệu của chúng ta là ảnh chụp X-quang. Ngoài ra, CNN còn có thể được huấn luyện bằng GPU giúp tăng tốc độ huấn luyện lên rất nhiều lần, với lượng dữ liệu đầu vào lớn thì điều này rất hữu ích. 2.1. Kiến trúc mạng CNN Kiến trúc mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi nơ-ron đầu vào (input node) cho mỗi nơ-ron đầu ra trong các lớp tiếp theo. Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Còn trong mô hình CNN thì ngược lại. Các layer liên kết được với nhau thông qua cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi nơ-ron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của nơ-ron trước đó. Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Trong quá trình huấn luyện mạng (training) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNN sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh. Trong mô hình CNN có hai khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các góc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao CNN cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận biết các vật thể trong tự nhiên. Mạng CNN sử dụng 3 ý tưởng cơ bản: - Các trường tiếp nhận cục bộ (local receptive field) - Trọng số chia sẻ (shared weights) - Tổng hợp (pooling). 2.1.1. Trường tiếp nhận cục bộ (local receptive field) Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận. Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các nơron đầu vào vào tầng ảnh. Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các nơ-ron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số và mỗi nơ-ron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ. Hình 1. Mô tả một filter Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau: Bước 1: Tạo ra nơ-ron ẩn đầu tiên trong lớp ẩn 1. Hình 2. Tạo nơ-ron ẩn đầu tiên Bước 2: Dịch filter qua bên phải một cột sẽ tạo được nơ-ron ẩn thứ 2.

CÔNG NGHỆ Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC ● Số 13.2023
130
KHOA H
ỌC
Hình 3. Dịch trái tạo nơ-ron ẩn thứ hai Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trưng là shared weight và độ lệch xác định một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map. Hình 4. Feature map Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp. 2.1.2. Chia sẻ trọng số (shared weight and bias) Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào. Một convolutional layer bao gồm các feature map khác nhau. Mỗi một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN. 2.1.3. Lớp tổng hợp (pooling layer) Lớp pooling thường được sử dụng ngay sau lớp convolutional để đơn giản hóa thông tin đầu ra để giảm bớt số lượng nơ-ron. Hình 5. Mô tả pooling layer Thủ tục pooling phổ biến là Max pooling, thủ tục này chọn giá trị lớn nhất trong vùng đầu vào 2×2. Hình 6. Quá trình pooling Như vậy, qua lớp Max Pooling thì số lượng nơ-ron giảm đi phân nửa. Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau. Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất. Ngoài Max Pooling còn có L2 Pooling. Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các nơ- ron với số lượng tùy bài toán. Hình 7. Mô tả 1 mạng tích chập CNN. Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer). Lớp này nối mọi nơ-ron từ lớp max-pooled tới mọi nơ-ron của tầng ra. 2.1.4. Cách chọn tham số cho CNN Số các convolution layer: càng nhiều các convolution layer thì performance càng được cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách đáng kể. Filter size: thường filter theo size 5×5 hoặc 3×3 Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param tốt nhất. 2.2. Tăng cường dữ liệu trong CNN Để tăng cường dữ liệu chuẩn bị cho việc học sâu của mô hình CNN, chúng tôi sử dụng lớp ImageDataGenerator của thư viện Keras để tạo ra các phiên bản tăng cường của dữ liệu hình ảnh trong quá trình huấn luyện. Việc tăng cường dữ liệu như xoay, dịch chuyển, thu phóng, lật ngang,... giúp

SCIENCE - TECHNOLOGY Số 13.2023 ● Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC 131
tăng khả năng tổng quát hóa của mô hình, giảm thiểu hiện tượng overfitting và cải thiện độ chính xác của mô hình khi áp dụng vào dữ liệu mới. Đồng thời, chúng tôi cũng khai báo và khởi tạo các generators cho tập huấn luyện và tập kiểm tra, cho phép đọc dữ liệu ảnh từ thư mục và chia thành các batch để huấn luyện và đánh giá mô hình. 2.3. Phương pháp triển khai Để triển khai mô hình CNN để phân loại bệnh phổi từ ảnh X-quang. Đầu tiên chúng là sẽ cài đặt các thư viện như Tensorflow, OpenCV, NumPy, Pandas,… Sau đó, sử dụng ImageDataGenerator để tăng cường dữ liệu ảnh. Cụ thể, đoạn code tạo một ImageDataGenerator với các tham số như rotation_range, width_shift_range, height_shift_range, shear_range, zoom_range, horizontal_flip để tạo ra những biến thể mới từ các ảnh gốc. Tạo generator cho tập train và test với train_generator và test_generator. Các generator này sử dụng ImageDataGenerator đã tạo ở bước trước đó để tạo ra các ảnh mới và đưa chúng vào mô hình. Xây dựng mô hình CNN bằng cách sử dụng Sequential. Mô hình này bao gồm 4 lớp Conv2D với các kích thước khác nhau, 4 lớp MaxPooling2D và 2 lớp Dense với hàm kích hoạt relu và softmax. Model được xây dựng cụ thể như sau: - Lớp đầu tiên là một Conv2D layer với 32 filter, kích thước kernel là (3, 3) và hàm kích hoạt là 'relu'. Input shape của layer này là (224, 224, 3), tương ứng với kích thước của ảnh đầu vào (224x224) và số lượng kênh màu RGB (3). - Lớp thứ hai là một MaxPooling2D layer với kích thước pool là (2, 2). Layer này giúp giảm kích thước của feature map được tạo ra từ Conv2D layer trước đó, đồng thời giữ lại thông tin quan trọng của feature map. - Lớp thứ ba là một Conv2D layer với 64 filter, kích thước kernel là (3, 3) và hàm kích hoạt là 'relu'. - Lớp thứ tư là một MaxPooling2D layer với kích thước pool là (2, 2). - Lớp thứ năm và lớp thứ sáu tương tự như lớp thứ ba và lớp thứ tư, với Conv2D layers có số filter lần lượt là 128 và 128, và MaxPooling2D layers có kích thước pool là (2, 2). - Sau đó, ta áp dụng một Flatten layer để chuyển đổi feature map từ 3D sang 1D, để chuẩn bị cho việc kết nối với các fully connected layers. - Tiếp theo, ta áp dụng một Dropout layer với tỷ lệ dropout là 0.2 để giảm thiểu overfitting. - Sau đó, ta thêm hai fully connected layers với số lượng unit tương ứng là 512 và num_class (số lượng lớp) với hàm kích hoạt softmax. - Model này được tối ưu hóa bằng tối ưu hóa Adam, với hàm loss được sử dụng là Sparse Categorical Crossentropy. Sau đó, khởi chạy mô hình bằng cách sử dụng optimizer Adam, loss function SparseCategoricalCrossentropy và metrics accuracy, bắt đầu huấn luyện mô hình bằng cách sử dụng fit_generator và truyền vào train_generator với số lần lặp epochos = 100 và số bước mỗi trong mỗi lần lặp epocho = 30. Cuối cùng, ta lưu model bằng evaluate_generator. 3. THỰC NGHIỆM 3.1. Cơ sở dữ liệu Hiện nay có rất nhiều bộ dữ liệu về huấn luyện các tác vụ khác nhau liên quan đến đối tượng là con người, cụ thể ở đây là ảnh chụp X-quang phổi. Ở đây, chúng tôi dùng bộ dữ liệu được lấy từ nghiên cứu của Daniel Kermany, Kang Zhang, Michael Goldbaum có tên là “Identifying Medical Diagnoses and Treatable Diseases by Image- Based Deep Learning” được đăng trên tạp chí khoa học Cell vào năm 2018. https://data.mendeley.com/datasets/rscbjbr9sj/2 3.2. Huấn luyện Mô hình đều được huấn luyện trên Google Colab. Mô hình huấn luyện trên một tập dữ liệu chuẩn bị sẵn các file train, test, validation riêng. Thay đổi chu kỳ sau mỗi lần train để kiểm tra độ fit của mô hình. 3.3. Đánh giá trên tập thực nghiệm Sau nhiều lần huấn luyện thì hệ thống đã được nâng cao độ chính xác lên đến 86%. Hình 8. Độ chính xác của hệ thống 3.4. Triển khai hệ thống Sau khi đã hoàn thiện việc huấn luyện và thử nghiệm các mô hình của các bài toán con, chúng tôi sẽ thực hiện triển khai chạy hoàn chỉnh trên Google Colab. Yêu cầu về phần cứng, chỉ cần máy tính đáp ứng tác vụ văn phòng một cách mượt mà là được (CPU 2-4 nhân, GPU,…). Truyền vào một ảnh từ máy tính. Hình 9. Thêm ảnh vào hệ thống

CÔNG NGHỆ Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC ● Số 13.2023
132
KHOA H
ỌC
Sau đó bấm chạy để hệ thống chẩn đoán Hình 10. Kết quả sau khi mô hình 4. KẾT LUẬN Bài báo đã đưa ra một phương pháp sử dụng mạng nơ ron tích chập CNN phát hiện và phân loại bệnh phổi thông qua ảnh chụp X-quang phổi của bệnh nhân áp dụng các kiến thức về trí tuệ nhân tạo và học sâu. Đây sẽ là cơ sở để các nghiên cứu về phân loại ảnh và AI nói chung có thể được phát triển trong tương lai với những cải tiến về tốc độ và độ chính xác cao. TÀI LIỆU THAM KHẢO [1]. Nguyễn Phương Nga, Trần Hùng Cường, 2021. Giáo trình trí tuệ nhân tạo. NXB Thống kê. [2]. Hua Zhang, Jun Wei, Jianhua Li, Wei Yang, Dazhe Zhao, Shuai Wang, Yan Wang, Yun Liu, Jie Ren, Peng Zhang, 2021. LDDNet: A Deep Learning Framework for the Diagnosis of Infectious Lung Diseases. IEEE Transactions on Medical Imaging, 13. [3]. Yun Liu, Tianyi Zhou, Xiaohong Liu, Fengtong Wen, Haoxiang Li, Weifeng Liu, Shuo Li, Xiaodong Liu, Dinggang Shen, 2018. Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning. Proceedings of the National Academy of Sciences of the United States of America (PNAS), 11211-11216. [4]. Ali Abbasian Ardakani, Alireza Rajabzadeh Kanafi, U. Rajendra Acharya, Nazanin Khadem, Afshin Mohammadi, 2020. Application of deep learning technique to manage COVID-19 in routine clinical practice using CT images: Results of 10 convolutional neural networks. Computer Methods and Programs in Biomedicine, 105618. [5]. Prerna Singh, Vishal Sharma, Himanshu Madhu, 2018. Deep Learning-Based Classification of Lung Cancer Histopathology Images Using Convolutional Neural Networks. Journal of Healthcare Engineering, 12.

