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 đ
thể xây dựng một ứng dụng
phát hiện chẩn đoán bệnh phổi. Sau qtrình sàng lọc tất ccác mô hình truy
ền
thống mô hình học sâu, cuối cùng chúng tôi xác định chọn 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 mắc bệnh phổi không. 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
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 kthuậ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ư 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 được áp dụng vào nhiều 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ử ngôn ngữ tự nhiên, lĩnh vực y khoa,... Hệ thống phát hiện phân loại bệnh phổi đã đ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 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 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 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 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. 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 nh (Computed Tomography). hình LDDNet được huấn luyện trên bộ dữ liệu đạ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, 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 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 tầng pooling như LeNet-5, nhưng ch thước lớn hơn sâu hơn, đồng thời sử dụng kỹ thuật Dropout để tránh overfitting 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 phân loại bệnh phổi. CNN thể xử ảnh với kích thước lớn chất lượng hình ảnh cao rất phù hợp với dữ liệu của chúng ta ảnh chụp X-quang. Ngoài ra, CNN còn 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 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 hình mạng truyền ngược (feedforward neural network) thì mỗi -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 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 ta đượ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 qucủ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 hàng trăm hàng nghìn filter như vậy kết hợp kết quả của chúng lại. Ngoài ra 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 gtrị qua các lớp filter dựa vào cách thức bạn thực hiện. 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 hình CNN hai khía cạnh cần quan tâm tính bất biến (Location Invariance) 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) phép co giãn (scaling). Tính kết hợp cục bcho 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. Đó do tại sao CNN cho ra 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 giá trị mỗi điểm ảnh một ô trong ma trận. Trong mô hình mạng ANN truyền thống thì chúng ta skế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 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 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 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 feature map, trọng số xác định các đặc trưng shared weight độ lệch xác định một feature map shared bias. Như vậy đơn giản nhất qua các bước trên chúng ta chỉ 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 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ẻ 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 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ố ợng nơ-ron giảm đi phân nửa. Trong một mạng CNN 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 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 dliệ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 hình, giảm thiểu hiện tượng overfitting cải thiện độ chính xác của 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 khởi tạo các generators cho tập huấn luyện tập kiểm tra, cho phép đọc dữ liệu ảnh từ thư mục 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 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 test với train_generator 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 ch sử dụng Sequential. 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 2 lớp Dense với hàm kích hoạt relu softmax. Model được xây dựng cụ thể như sau: - Lớp đầu tiên một Conv2D layer với 32 filter, kích thước kernel (3, 3) hàm kích hoạt là 'relu'. Input shape của layer này (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 một MaxPooling2D layer với kích thước pool (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ứ 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 số filter lần lượt 128 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 512 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 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 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 tên “Identifying Medical Diagnoses and Treatable Diseases by Image- Based Deep Learning” được đăng trên tạp chí khoa học Cell vào m 2018. https://data.mendeley.com/datasets/rscbjbr9sj/2 3.2. Huấn luyện hình đều được huấn luyện trên Google Colab. 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 hình của các bài toán con, chúng tôi sthự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, chcầ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 ron tích chập CNN phát hiện 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 học sâu. Đây sẽ là sở để các nghiên cứu về phân loại ảnh AI nói chung 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.