HCM, ngày tháng 06 năm 2022 LỊCH TRÌNH THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP Họ tên sinh viên 1: Ngô Quang Khải Họ tên sinh viên 2: Huỳnh Văn Pháp Tên đề tài: Ứng dụng mô hình Vision Transfor
Trang 1Tp.Hồ Chí Minh, tháng 6/2022
HUỲNH VĂN PHÁP
S K L 0 0 8 9 0 6
GVHD: TS NGUYỄN MẠNH HÙNG SVTH: NGÔ QUANG KHẢI
ỨNG DỤNG MÔ HÌNH VISION TRANSFORMER TRONG
PHÂN LOẠI DỮ LIỆU BỆNH PHỔI
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
TRANSFORMER TRONG PHÂN
LOẠI DỮ LIỆU BỆNH PHỔI
GVHD: TS Nguyễn Mạnh Hùng SVTH1: Ngô Quang Khải
MSSV1: 18129026 SVTH2: Huỳnh Văn Pháp MSSV2: 18129041
Trang 3BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
GVHD: TS Nguyễn Mạnh Hùng SVTH1: Ngô Quang Khải
MSSV1: 18129026 SVTH2: Huỳnh Văn Pháp MSSV2: 18129041
TP Hồ Chí Minh – 06/2022
Trang 4TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH
KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
NAM Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP
Họ tên sinh viên: Ngô Quang Khải MSSV: 18129026
Chuyên ngành: Kỹ thuật Y Sinh Mã ngành: 7520212D
I TÊN ĐỀ TÀI: ỨNG DỤNG MÔ HÌNH VISION TRANSFORMER TRONG
II NHIỆM VỤ
1 Các số liệu ban đầu:
-Tập dữ liệu X-quang ngực:ChestXpert, Chest14và VinDr-CXR
-Các mô hình Vision Transformer:ViT-B16, ViT-L16, ViT-S16, R50+ViT-B16
-Cácbiến thể mô hình ResNet: ResNet18, ResNet34, ResNet50
-Các cơ chếdiễn giải mô hình: Grad-CAM, Attention Map
-Ngôn ngữlập trình: Python, HTML, CSS
-Thưviện hỗtrợxây dựng web API: Flask python
-Cơ sởdữliệu: SQLite, tương tác thông qua công cụ SQLAlchemy
-Công nghệđóng gói và triển khaiứng dụng: Docker
2 Nội dung thực hiện:
-Tìm hiểu lý thuyết về các mô hình phân loại
- Nghiên cứu các tập dữ liệu Chest14, ChestExpert,VinDR-CXR và tạo tập dữ liệu
phù hợp với đềtài
-Tiến hành các thí nghiệm huấn luyện mô hình ViT
-Đánh giá kết quả các thí nghiệmbằngphương pháp định tính và định lượng
-Xây dựng web API cho ứng dụng mô hình phân loại bệnh phổi
Trang 5- Chạy thử nghiệm, kiểm tra và hiệu chỉnh hệ thống
- Đóng gói và triển khai ứng dụng với Docker
- Viết báo cáo thực hiện
- Bảo vệ luận văn
III NGÀY GIAO NHIỆM VỤ: 25/02/2022
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 21/06/2022
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Ts Nguyễn Mạnh Hùng
Trang 6TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH
KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
NAM Độc lập - Tự do - Hạnh phúc
Tp HCM, ngày tháng 06 năm 2022
LỊCH TRÌNH THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP
Họ tên sinh viên 1: Ngô Quang Khải
Họ tên sinh viên 2: Huỳnh Văn Pháp
Tên đề tài: Ứng dụng mô hình Vision Transformer trong phân loại dữ liệu bệnh phổi
Tuần/ngày Nội dung Xác nhận
GVHD
Tuần 1
(28/02 – 06/03)
Gặp GVHD để nghe phổ biến yêu cầu làm đồ
án, tiến hành chọn đề tài và viết đề cương tóm tắt yêu cầu đề tài đã chọn
Trang 7bệnh nhân
Tuần 10
(09/05 – 15/05)
Hoàn thiện các chức năng chính của ứng dụng:
chức năng đăng ký bệnh nhân, chức năng dự đoán của mô hình, chức năng gửi email và tin nhắn SMS
Trang 8LỜI CAM ĐOAN
Đề tài này do nhóm tìm hiểu, thực hiện dựa trên một số tài liệu và kết quả nghiên cứu đã được công bố với sự hướng dẫn của thầy Nguyễn Mạnh Hùng và không sao chép
từ tài liệu hay công trình đã có trước đó
Người thực hiện đề tài
Ngô Quang Khải – Huỳnh Văn Pháp
Trang 9
LỜI CẢM ƠN
Trải qua suốt quá trình nghiên cứu và thực hiện đề tài, từ những buổi đầu chủng
bị kiến thức nền tảng đến khi hoàn thành đề tài, nhóm đã nhận được rất nhiều sự hỗ trợ, hướng dẫn tận tình từ Thầy Nguyễn Mạnh Hùng – Giảng viên bộ môn Điện tử công nghiệp - Y sinh Những góp ý, thảo luận, cùng những kinh nghiệm quý báu mà Thầy chia sẽ đã giúp cho đề tài của nhóm ngày càng hoàn thiện hơn, chúng em cảm thấy rất trân quý Chúng em xin gửi lời cảm ơn sâu sắc đến Thầy
Nhóm xin gửi lời cảm ơn đến các Thầy Cô khoa Điện - Điện tử vì những kiến thức nền móng mà thầy cô đã truyền đạt để chúng em có thể đi đến chặn hành trình hiện tại
Chúng em cảm ơn Nhà trường, khoa và bộ môn đã có những kế hoạch tổ cho sinh viên thực hiện đề tài tốt nghiệp đúng hạn mặc dù những trở ngại trong khoảng thời gian dịch bệnh Đặc biệt cảm ơn Thầy Nguyễn Thanh Hải, Trưởng bộ môn Điện tử công nghiệp - Y sinh, đã luôn đồng hành và tận tâm dẫn dắt chúng em trong ngành học thú vị này
Xin gửi lời cảm đến gia đình, những người thân đã luôn quan tâm, động viên và ủng hộ chúng em trong suốt con đường học tập
Cuối cùng nhóm không quên gửi lời cảm ơn đến các bạn lớp 181290 đã đồng hành, trao đổi kiến thức và giúp đỡ lẫn nhau trong quá trình học
Mặc dù đề tài đã hoàn thành theo những nội dung đề ra, nhưng vì vốn kiến thức còn hạn chế nên đề tài có thể khó tránh khỏi những thiếu sót Nhóm mong nhận được những góp ý từ quý Thầy Cô và người đọc để cải thiện đề tài tốt hơn
Xin chân thành cảm ơn!
Người thực hiện đề tài
Ngô Quang Khải – Huỳnh Văn Pháp
Trang 10MỤC LỤC
NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP i
LỊCH TRÌNH THỰC HIỆN KHÓA LUẬN TỐT NGHIỆP iii
LỜI CAM ĐOAN v
LỜI CẢM ƠN vi
MỤC LỤC vii
LIỆT KÊ HÌNH VẼ x
LIỆT KÊ BẢNG xiii
DANH MỤC TỪ VIẾT TẮT xiv
TÓM TẮT xvi
Chương 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU 3
1.3 NỘI DUNG NGHIÊN CỨU 4
1.4 GIỚI HẠN 4
1.5 BỐCỤC 5
Chương 2 CƠ SỞ LÝ THUYẾT 6
2.1 GIỚI THIỆUẢNH X-QUANG 6
2.1.1Ảnh số 6
2.1.2Ảnh X-quang 7
2.2 GIỚI THIỆU PHẦN MỀM 8
2.2.1 Ngôn ngữlập trình Python 8
2.2.2 Thư viện Pytorch 9
2.3 GIỚI THIỆU MẠNG NƠ-RON NHÂN TẠO 11
2.3.1 Hàm kích hoạt 12
Trang 112.3.2 Gradient descent 13
2.3.3 Hàm tổn thất 14
2.4 CÁC MÔ HÌNH PHÂN LOẠI DỰA TRÊN CNN 15
2.4.1 Mạng LeNet 15
2.4.2 Mạng AlexNet 17
2.4.3 Mạng VGG 19
2.4.4 Mạng GoogLeNet 20
2.4.5 Mạng ResNet 22
2.4.6 Giới thiệu kỹ thuật Grad-CAM 24
2.5 MÔ HÌNH PHÂN LOẠI DỰA TRÊN TRANSFORMER 26
2.5.1 Kiến trúc Transformer trong xử lý ngôn ngữ tự nhiên 26
2.5.2 Mô hình Vision Transformer 29
2.5.3 Giới thiệu kỹ thuật Attention Map 34
2.6 GIỚI THIỆU VỀ API 35
2.6.1 Khái quát về API 35
2.6.2 Thư viện Flask 36
2.6.3 Cơ sở dữ liệu SQLite và công cụ tương tác SQLAlchemy 37
2.7 GIỚI THIỆU VỀ DOCKER 38
Chương 3 THÍ NGHIỆM HUẤN LUYỆN VÀ DÁNH GIÁ MÔ HÌNH 40
3.1 TỔNG QUAN VỀ PHƯƠNG PHÁP 40
3.2 TỔ CHỨC DỮ LIỆU 43
3.3 MÔ HÌNH SỬ DỤNG 45
3.4 PHƯƠNG PHÁP ĐÁNH GIÁ 48
Chương 4 THI CÔNG HỆ THỐNG 51
4.1 TỔNG QUAN VỀ HỆ THỐNG 51
4.2 XÂY DỰNG WEB API 52
Trang 124.3 TRIỂN KHAI ỨNG DỤNG VỚI DOCKER 57
Chương 5 KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ 60
5.1 KẾT QUẢ 60
5.1.1 Kết quả đánh giá định lượng của mô hình 60
5.1.2 Khả năng diễn giải mô hình 63
5.1.3 Kết quả triển khai ứng dụng 64
5.2 NHẬN XÉT ĐÁNH GIÁ 71
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 73
6.1 KẾT LUẬN 73
6.2 HƯỚNG PHÁT TRIỂN 73
TÀI LIỆU THAM KHẢO 75
PHỤ LỤC 78
Trang 13LIỆT KÊ HÌNH VẼ
Hình 1.1: Sự xuất hiện đồng thời nhiều loại bệnh trong tập dữ liệu VinDr-CXR [9] 2
Hình 2.1: Ví dụ về ảnh màu RGB 6
Hình 2.2: Ví dụ về ảnh xám 7
Hình 2.3: Ảnh chụp X-quang vùng ngực 8
Hình 2.4: Mô tả các bước của một quá trình huấn luyện mô hình trên Pytorch 10
Hình 2.5: Mạng nơ-ron nhân tạo 11
Hình 2.6: Đồ thị hàm Sigmoid 12
Hình 2.7: Đồ thị hàm ReLU 12
Hình 2.8: Vai trò của việc chọn learning rate 13
Hình 2.9: Đồ thị Hàm log(x) 14
Hình 2.10: Mô tả kiến trúc mạng LeNet-5 được thiết kế để xác định các chữ số viết tay trong tập dữ liệu MNIST 15
Hình 2.11: Chi tiết các thành phần tham số của mô hình LeNet 16
Hình 2.12: Mô tả kiến trúc mạng AlexNet 17
Hình 2.13: Chi tiết các thành phần tham số của mô hình AlexNet 18
Hình 2.14: Ý tưởng xây dựng mạng VGG sử dụng các khối VGG block gồm các tầng tích chập được xếp chồng 19
Hình 2.15: Mô tả kiến trúc mô hình VGG-16 20
Hình 2.16: Cấu trúc khối Inception 21
Hình 2.17: Cấu trúc mạng GoogLeNet 22
Hình 2.18: Kết nối tắt được sử dụng trong ResNet 23
Hình 2.19: Mô tả kiến trúc ResNet (ResNet-18) 24
Hình 2.20: Tổng quan về hoạt động của Grad-CAM 25
Hình 2.21: Kiến rúc Transformer [11] 27
Hình 2.22: Mô tả cách tính ma trận attention 28
Hình 2.23: Mô tả Multi - Head Attention 29
Hình 2.24: Mô tả kiến trúc của mô hình ViT [12] 30
Hình 2.25: Hình ảnh được chia nhỏ thành các patch nhỏ có kích thước cố định 31
Hình 2.26: Làm phẳng các patch thành chuỗi các vectors (hình minh họa 9 patch) 31
Hình 2.27: Mô tả cơ chế Attention trong Vision Transformer 32
Trang 14Hình 2.28: Định nghĩa về khối Multi-self attention trong Vision Transformer 33
Hình 2.29: Attention map của [CLS] giữa các lớp khác nhau 34
Hình 2.30: Mô tả về cách hoạt của giao thức API 35
Hình 2.31: Hoạt động của API REST 36
Hình 2.32: Logo của framework Flask Python 36
Hình 2.33: Phương thức thao tác với database bằng kỹ thuật ORM 38
Hình 2.34: Các thành phần cơ bản của Docker 39
Hình 3.1: Tổng quan về phương pháp 43
Hình 3.2: Biểu đồ phân phối dữ liệu lựa chọn từ tập dữ liệu VinDr-CXR 44
Hình 3.3: Cấu trúc tổ chức tập dữ liệu thí nghiệm 45
Hình 3.4: Kiến trúc mạng của Resnet-18 46
Hình 3.5: Kiến trúc mạng của Resnet-34 47
Hình 3.6: Sự thay đổi của Resnet-50 (phải) so với các phiên bản trước đó (trái) 48
Hình 3.7: Kiến trúc mạng của Resnet-50 48
Hình 3.8: Grad-CAM và attention map trên tập dữ liệu ong và kiến 49
Hình 4.1: Mô tả cách hoạt động của model API 51
Hình 4.2: Tổng quan về hệ thống 52
Hình 4.3: Sơ đồ tổng quan về các chức năng của ứng dụng web 53
Hình 4.4: Cấu trúc và các thành phần của dự án trên phần mềm Pycharm 54
Hình 4.5: Minh họa các hàm tiện ích được định nghĩa trong file utils 54
Hình 4.6: Tạo Database 55
Hình 4.7: Thiết lập gmail và SMS, trong đó account_sid và auth_token sẽ được cung cấp bởi dịch vụ Twilio 56
Hình 4.8: Tạo các giao diện trang web bằng HTML, CSS 56
Hình 4.9: Nội dung Dockerfile 58
Hình 4.10: Giao diện repositories của DockerHub 58
Hình 5.1: Diễn giải mô hình với nhiều vùng tổn thương 63
Hình 5.2: Diễn giải mô hình với vùng tổn thương đơn lẻ 64
Hình 5.3: Giao diện trang chủ (Home) của ứng dụng web trên trình duyệt máy tính 65 Hình 5.4: Giao diện đăng ký thông tin bệnh nhân 65
Hình 5.5: Giao diện dữ liệu bệnh nhân 66
Trang 15Hình 5.7: Giao diện kết quả hiển thị Attention map 67
Hình 5.8: Giao diện hiển thị dự đoán của mô hình và kết luận của bác sĩ 68
Hình 5.9: Giao diện xem lại ảnh và thông tin bệnh nhân 68
Hình 5.10: Giao diện gửi thông báo chẩn đoán cho bệnh nhân 69
Hình 5.11: Kết quả thông báo qua Email (trái) và tin nhắn SMS (phải) 69
Hình 5.12: Docker Images ứng dụng 70
Hình 5.13: Image đã được đưa lên Dockerhub thành công 70
Hình 5.14: Quá trình Pull Image về một máy tính khác cần triển khai ứng dụng 70
Hình 5.15: Docker Image được Pull thành công về máy tính từ Docker Hub 71
Hình 5.16: Kết quả khởi chạy thành công ứng dụng khi triển khai trên một máy tính khác 71
Trang 16LIỆT KÊ BẢNG
Bảng 1.1: So sánh tập dữ liệu hình ảnh thông thường và tập dữ liệu hình ảnh y tế 2
Bảng 3.1: Tập dữ liệu CheXpert bao gồm 14 loại bệnh được gắn nhãn [7] 40
Bảng 3.2: Bảng thông kê tập dữ liệu VinDr-CXR [9] 42
Bảng 3.3: Class bệnh lựa chọn trong tập VinDr_CXR 44
Bảng 3.4: Các cấu trúc backbone ViT 46
Bảng 5.1: Ảnh hưởng của kích thước hình ảnh 60
Bảng 5.2: So sánh backbone 61
Bảng 5.3: Kết quả có và không có tập dữ liệu pre-trained 62
Bảng 5.4: Kết quả trên tập dữ liệu backbone CNN 63
Trang 174 API Application Programming Interface
5 AtteMap Attention Map
7 CNN Convolutional Neural Network
8 CSS Cascading Style Sheets
10 DICOM Digital Imaging and Communications in Medicine
11 GAP Global Average Pooling
13 Grad-CAM Gradient-weighted Class Activation Mapping
14 HTML Hypertext Markup Language
15 HTTP HyperText Transfer Protocol
22 MNIST Modified National Institute of Standards and Technology
23 MSA Multi-Head Self-attention
24 NIH National Institutes of Health
25 NLP Natural Language Processing
26 ORM Object Relational Mapping
27 PACS Picture Archiving and Communication Systems
28 ReLU Rectified Linear Unit
Trang 1829 ResNet Residual Network
30 REST Representational State Transfer
31 RPC Remote Procedure Call
32 SMS Short Message Service
33 SOAP Simple Object Access Protocol
34 SQL Structured Query Language
35 SVM Support Vector Machine
Trang 19
TÓM TẮT
Trong lĩnh vực thịgiác máy tính, các kiến trúcdựa trên Transformer gần đây đã
cạnh tranh với các kiến trúc truyền thống dựa trên CNN trong nhiều tác vụ Sự thànhcông của cáckiến trúcdựa trên Transformerlà nhờvàocácpre-trained model được huấnluyện trên cáctậpdữliệu khổng lồ Tuy nhiên, yêu cầu này có thểkhông được đápứngtrong cácứng dụng hìnhảnh y tế.Bởisovớitậpdữliệu ImageNet 21K,tậpdữliệu hìnhảnh y tếrất hạn chế Do đó,trong đềtài này, nhómkhám phá hiệu suất củamô hìnhViT(Vision Transformer)trong việc phân loại hình ảnh y tế bằng cách sử dụng hai tập dữliệu lớn vềảnh y tếlà ChestXpert và Chest14đểtinh chỉnh trên một mô hình pre-trainedImageNet nhằmtạora một mô hìnhpre-trainedViT mới Sau đótiếp tụctinh chỉnhmôhìnhtrên tâp dữ liệu VinDR-XCR Bên cạnh đó, nhóm cũng tiến hành các thí nghiệmđánh giáảnh hưởng của các yếu tố như kích thước ảnh, loại backbone, nhằm chọn ranhững tham sốphù hợp cho quá trình huấn luyện mô hình phân loại Các kỹthuật diễngiải mô hình cũng được sửdụng đểđánh giá khảnăng của ViT so với các mô hình dựa trênCNN trong việc giảiquyết sự cùng xuất hiện của nhiều bệnh trong một hìnhảnh Kết quảtừcác thí nghiệm toàn diện cho thấy rằng phương pháp đềxuất tốt hơn
một chút so với các phương pháp dựa trên tích chập thông thường vềđộ chính xác củaphân loại Tuynhiên, về khảnăng diễn giải mô hình, các mô hình dựa trên ViT có thể
xửlý sựđồng xuất hiện của nhiều bệnh trong một hìnhảnh y tế
Nhóm cũng tiến hành xây dựngứng dụng web đơn giản cho mô hình phân loại
bệnh phổi đã huấn luyện Ứng dụng bao gồm các chức năng như đăng ký và lưu trữthông tin bệnh nhân, đưa ra các dự đoán bệnh cho ảnh đầu vào, gửi thông tin kết quảchẩn đoán của bác sĩ cho bệnh nhân qua email hoặc sốđiện thoại đã đăng ký.Ứng dụng
có giao diện đơn giản và dễsử dụng,ứng dụng chỉcó vai trò đưa ra dựđoán đểhỗ trợbác sĩ và hoàn toàn không có khảnăng thay thếbác sĩ đểđưa ra kết luận
Trang 20Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Phân loại bệnh vùng phổi dựa trên ảnh chụp y tế để khám chữa bệnh là một công việc đặc thù và thiết yếu của bác sĩ trong lĩnh vực phân tích và chẩn đoán hình ảnh y khoa Trong những năm gần đây, khi lĩnh vực trí tuệ nhân tạo đã có những bước tiến rất mạnh mẽ và được ứng dụng có hiệu quả vào nhiều lĩnh vực trong đời sống thì việc ứng dụng các mô hình học sâu vào giải quyết các bài toán phân loại ảnh y tế cũng trở thành một hướng nghiên cứu quan trọng [1] Nếu một mô hình AI có khả năng thực hiện tốt công việc phân loại trên hình ảnh y tế thì kết quả mang lại sẽ rất có ý nghĩa, chẳng hạn như hỗ trợ các bác sĩ trong việc chẩn đoán để tiết kiệm thời gian, tránh bỏ sót bệnh cũng như hỗ trợ cho các nghiên cứu sâu hơn
Theo như tìm hiểu của nhóm, hiện nay đã có nhiều đề tài nghiên cứu áp dụng học sâu để phân loại bệnh trên hình ảnh y tế và đạt được một số kết quả nhất định, một trong
số đó là Đồ Án Tốt Nghiệp của nhóm Ngô Thị Anh Thư và Phạm Thiên Vương với đề tài “Ứng dụng xử lý ảnh và AI để nhận biết bệnh viêm phổi ở trẻ em” [2] Tiếp theo là
Đồ Án Tốt Nghiệp của nhóm Võ Kiều Phương và Nguyễn Nhật Uyên với đề tài “Ứng dụng Deep Learning và Radiomics trong quá trình chẩn đoán ung thư phổi” [3] Hai đề tài trên đã xây dựng thành công mô hình chẩn đoán bệnh ở vùng phổi dựa trên mạng nơ-ron tích chập kết hợp với kiến trúc U-Net cho việc phân đoạn
Không giống với các ứng dụng trong những lĩnh vực thông thường, các mô hình
AI trong y tế đòi hỏi độ phức tạp tính toán cao hơn do các đặc trưng về độ phân giải của hình ảnh y tế cũng như các hạn chế về kích thước tập dữ liệu Để các mô hình học sâu
có thể phát huy thế mạnh, cần chuẩn bị dữ liệu cẩn thận và đủ nhiều Theo các công bố trong những năm gần đây, một số bộ dữ liệu về hình ảnh y tế đã được xuất bản nhằm đáp ứng cho các mục đích nghiên cứu Tuy nhiên, so với bộ dữ liệu ảnh thông thường,
bộ dữ liệu hình ảnh y tế khá nhỏ Bảng 1.1 cho thấy sự so sánh giữa tập dữ liệu hình ảnh thông thường và tập dữ liệu hình ảnh y tế Có thể thấy rằng tập dữ liệu hình ảnh y tế nhỏ hơn tập dữ liệu hình ảnh thông thường về số lượng mẫu và số nhãn
Trang 21Tập dữ liệu hình ảnh thông thường Tập dữ liệu hình ảnh y tế Tập dữ liệu Số nhãn/ Số ảnh Tập dữ liệu Số nhãn/ Số ảnh
Hình 1.1: Sự xuất hiện đồng thời nhiều loại bệnh trong tập dữ liệu VinDr-CXR [9].
Gần đây, các cơ chếAttentionđược áp dụng rất thành công đểnắm bắt các mối
quan hệtầm xatronglĩnh vựcXửlý ngôn ngữtựnhiên Cơ chếnày cũng được mởrộng
Bảng 1.1: So sánh tập dữ liệu hình ảnh thông thường và tập dữ liệu hình ảnh y tế.
Ngoài ra,một thách thức lớn của ảnh y tếlà trong một hình ảnh có thểcó nhiều
loại bệnh cùng xuất hiện (hình 1.1), một căn bệnh có thểlà nguyên nhân tìm ẩn gây racác tổn thương khác Các phương pháp truyền thống dựa trên kiến trúc CNN[10]được
sử dụng cho bài toán phân loại ảnh y tế chủ yếu phân loại ảnh theo từng loại bệnh vàchưa hướng vào giải quyết sự cùng xuất hiện của nhiều loại bệnh Đểgiải quyết tháchthức này mô hình AIcầnkhảnăngquan tâm đếnsựphụthuộc phạm vi dài (long rangedependency) bằng cách phát hiện các mối quan hệ trên diện rộng giữa các vùng bệnhnằmởcácvịtrícách xa nhau
Trang 22sang các lĩnh vực thị giác máy tính như phân loại hoặc phát hiện đối tượng và thu được những kết quả đầy hứa hẹn Với các đặc điểm mạnh mẽ dựa trên kiến trúc Transformer
[11], ViT (Vision Transformer) được giới thiệu trong bài báo “An image is worth 16x16
words: Transformers for image recognition at scale” [12] là một kỹ thuật mới có khả
năng giải quyết thách thức trên Thêm vào đó, các nghiên cứu cũng đã chỉ ra rằng, một kiến trúc ViT phải được huấn luyện trên một tập dữ liệu lớn, sau đó mô hình này sẽ được tinh chỉnh trên một tập dữ liệu mục tiêu nhỏ hơn Trong điều kiện này, phương pháp Vision Transformer sẽ tốt hơn các phương pháp truyền thống dựa trên CNN
Bên cạnh chức năng phân loại, một trong những yêu cầu quan trọng khi ứng dụng
mô hình AI vào thực tiễn, đặc biệt trong lĩnh vực y tế, là khả năng diễn giải cơ chế ra quyết định của mô hình Đây là một kỹ thuật quan trọng để đánh giá mức độ tin cậy đối với kết quả mà mô hình đưa ra Thông thường kỹ thuật Grad-CAM [13] sẽ được sử dụng
để diễn giải quy trình ra quyết định của các mô hình dựa trên CNN ViT cũng có kỹ thuật diễn giải cơ chế ra quyết định riêng, đó là kỹ thuật Attention Map
Với những thông tin tìm hiểu trên cùng với kiến được trang bị, nhóm kiến nghị
thực hiện đề tài “Ứng dụng mô hình Vision Transformer trong phân loại dữ liệu bệnh
phổi” Mô hình ViT sẽ được tinh chỉnh trên các bộ dữ liệu ảnh y tế nổi tiếng, sau đó,
mô hình đích được tinh chỉnh lại trên tập dữ liệu mục tiêu “VinDr-CXR” [9] có kích thước nhỏ hơn để cải thiện hiệu suất của ViT trong việc phân loại ảnh y tế Đồng thời nhóm cũng kiểm tra khả năng xử lý sự đồng xuất hiện của nhiều bệnh trong một hình ảnh y tế thông qua cơ chế diễn giải mô hình của ViT Cuối cùng, nhóm xây dựng một ứng dụng web thông qua giao thức API để ứng dụng mô hình phân loại bệnh phổi hỗ trợ bác sĩ phân tích và chẩn đoán bệnh
1.2 MỤC TIÊU
Mục tiêu nhóm đề ra trong đề tài này là cải thiện hiệu suất phân loại của mô hình Vision Transformer trên tập dữ liệu ảnh X-quang ngực VinDr-CXR và diễn giải các cơ chế ra quyết định của mô hình Hơn nữa nhóm sẽ dùng công cụ Flask để xây dựng một ứng dụng web sử dụng mô hình phân loại đã huấn luyện nhằm hỗ trợ bác sĩ trong việc chẩn đoán Ứng sẽ được đóng gói và triển khai dễ dàng trên các máy tính khác nhau bằng công nghệ Docker
Trang 231.3 NỘI DUNG NGHIÊN CỨU
Trong quá trình thực hiện đề tài, nhóm tập trung giải quyết và hoàn thành những nội dung chính sau:
Nội dung 1: Tìm hiểu lý thuyết về các mô hình phân loại
Nội dung 2: Nghiên cứu các tập dữ liệu Chest14, ChestExpert, VinDR-CXR và
tạo tập dữ liệu phù hợp với đề tài
Nội dung 3: Tiến hành các thí nghiệm huấn luyện mô hình ViT
Nội dung 4: Đánh giá kết quả các thí nghiệm dựa trên các phương pháp đánh giá
định tính và định lượng
Nội dung 5: Xây dựng web API cho ứng dụng mô hình phân loại bênh phổi
Nội dung 6: Chạy thử nghiệm, kiểm tra và hiệu chỉnh hệ thống
Nội dung 7: Đóng gói và triển khai ứng dụng với Docker
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
ViT- Mô hình chỉ được huấn luyện để phân loại trên ảnh X-quang phổi, tư thế chụp
PA (ảnh chụp thẳng sau – trước) và chỉ phân loại tốt trên 10 nhãn tương ứng với
Trang 241.5 BỐ CỤC
Bố cục của đề tài bao gồm 6 chương sau:
Chương 1: Tổng quan
Chương này tập trung giới thiệu khái quát về đề tài, mục tiêu, nội dung, giới hạn
và bố cục chung của đề tài
Chương 2: Cơ sở lý thuyết
Chương này cung cấp những kiến thức về ảnh y tế, các nền tảng về phần mềm hỗ trợ, mạng nơ-ron, quá trình phát triển của mạng nơ-ron tích chập qua các giai đoạn, những nghiên cứu về kiến trúc Transformer, nguyên lý của kiến trúc Vision Transformer trong phân loại ảnh, các kỹ thuật diễn giải mô hình, giới thiệu về API và Docker
Chương 3: Thí nghiệm huấn luyện và đánh giá mô hình phân loại
Chương này đề xuất phương pháp tổ chức dữ liệu cho quá trình huấn luyện, xây dựng các thí nghiệm để huấn luyện và đánh giá mô hình, cung cấp các mô hình sử dụng
và nêu ra các phương thức đánh giá thí nghiệm
Chương 4: Triển khai ứng dụng
Chương này mô tả cách xây dựng ứng dụng web API dùng Flask, các bươc đóng gói và triển khai ứng dụng bằng Docker
Chương 5: Kết quả - nhận xét - đánh giá
Chương này trình bày các kết quả đạt được từ các thí nghiệm, khả năng diễn giải của mô hình và kết quả của ứng dụng đã triển khai Đồng thời đưa ra các nhận xét, đánh
giá đối với các kết quả này
Chương 6: Kết luận và hướng phát triển
Chương này đưa ra kết luận tổng kết cho đề tài và đưa ra một số đề xuất mang tính xây dựng
Trang 25Chương 2 CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU ẢNH X-QUANG
2.1.1 Ảnh số
Trong xử lý ảnh, mỗi ảnh được xem là một ma trận các điểm ảnh gọi là pixel Mỗi pixel diễn tả màu sắc nhất định tại một tọa độ duy nhất trong ảnh Bằng các phương pháp đo lường thống kê ta có thể biến đổi ảnh thành ảnh khác tương tự ảnh gốc Có hai dạng ảnh quan trọng trong các ứng dụng xử lý ảnh là ảnh màu và ảnh xám [14]
Một ảnh màu (ví dụ minh họa như hình 2.1) thường được tạo thành từ nhiều pixel
mà trong đó mỗi pixel được biểu diễn bởi ba giá trị tương ứng với các mức trong các kênh màu đỏ (Red), xanh lá (Green) và xanh dương (Blue) tại một vị trí cụ thể Các kênh màu Red, Green và Blue là những màu cơ bản mà từ đó có thẻ tạo ra các màu khác nhau bằng phương pháp pha trộn Với việc chuẩn hóa 256 mức cho từng kênh màu chính, từ
đó có thể thấy một pixel màu có thể biểu điễn được một trong 256 * 256 * 256
Trang 26Chụpảnh y tếlà kỹthuật và quy trình chụpảnh bên trong cơ thểđểphân tích
lâm sàng và can thiệp y tế, cũng như thểhiện trực quan chức năng của một số cơ quan hoặc mô Hìnhảnh y tếtìm cách diễn giải các cấu trúc bên trong bịche giấu bởi da và xương, cũng như đểchẩn đoán và điều trịbệnh Hìnhảnh y tếcũng thiết lập một cơ sở
dữliệu vềgiải phẫu và sinh lý học bình thường đểcó thểxác định các bất thường[15] Ảnh chụp X-quang ra đời sớm nhất và đóng vai trò quang trọng trongchẩn đoán
hìnhảnh y tế Kỹthuật này sửdụng khảnăng xuyên thấu của tia X và mức độhập thụcủacác mô đểthu được hình chiếu của các cơ quan trong cơ thể.Ảnh X-quang được sửdụng đểxác định loại và mức độgãy xương cũng như đểphát hiện những thay đổi bệnh
lýởphổi
Ảnh X-quang (như hình2.3) thường được lưu trữdưới định dạng DICOM [16]
DICOM (Digital Imaging and Communications in Medicine) là tiêu chuẩn để truyềnthông và quản lý thông tin hìnhảnh y tếvà dữliệu liên quan DICOM được sửdụng phổbiến nhất đểlưu trữvà truyền hìnhảnh y tếcho phép tích hợp các thiết bịhìnhảnh y tếnhư máy quét, máy chủ, máy trạm, máy in, phần cứng mạng, hệthống lưu trữvà truyềnhìnhảnh (PACS) từ nhiều nhà sản xuất DICOM nhóm thông tin thành các tập dữliệu
Ví dụ: một tệpảnh X-quang phổi có thểchứa ID bệnh nhân trong tệp, do đó, hình ảnh
Trang 27không bao giờ có thể bị tách rời khỏi thông tin này do nhầm lẫn Đối tượng dữ liệu DICOM bao gồm một số thuộc tính, bao gồm các mục như tên, ID, và cũng có một thuộc tính đặc biệt chứa dữ liệu pixel hình ảnh Để thuận tiện cho quá trình huấn luyện
mô hình ta thường chuyển định dạng ảnh y tế về các định dạng ảnh thông thường, quá trình này được thực hiện trong bước chuẩn bị bộ dữ liệu
Hình 2.3: Ảnh chụp X-quang vùng ngực.
Python là một ngôn ngữkhá cũ được tạo ra bởi Guido Van Rossum Thiết kếbắt
đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991.Python 2.0 được phát hành vào tháng 10 năm 2000, với nhiều tính năng mới Python3.0, được phát hành vào tháng 12 năm 2008, với nhiều tính năng chính của nó được hỗtrợcho Python 2.6.x và 2.7.x Các bản phát hành của Python 3 bao gồm tiện ích, tựđộnghóa việc dịch mã Python 2 sang Python 3 Python là một ngôn ngữlập trình đa mô hình.Lập trình hướng đối tượng và lập trình có cấu trúc được hỗtrợ đầy đủ[17]
Python là ngôn ngữ có nhiều tính năng được sử dụng phổ biến rộng rãi trong
nhiều lĩnh vực đặc biệt là trong AI và học máy Những Lý do giúp Python được sửdụngphổbiếnnhất trong các dựán Học máy và dựán AI bao gồm:
Trang 28 Tính đơn giản và nhất quán
Cho phép truy cập vào các thư viện và framework tuyệt vời cho AI và học máy
2.2.2 Thư viện Pytorch
PyTorch là một framework học máy mã nguồn mở dựa trên thư viện Torch được
sử dụng cho các ứng dụng như thị giác máy tính và xử lý ngôn ngữ tự nhiên, chủ yếu được phát triển bởi Meta AI Mặc dù giao diện Python được trau chuốt hơn và là trọng tâm phát triển chính, PyTorch cũng có giao diện C ++ [18] Pytorch tập trung vào 2 khả năng chính:
Một sự thay thế cho bộ thư viện numpy để tận dụng sức mạnh tính toán của GPU
Một platform Deep learning phục vụ trong nghiên cứu, mang lại sự linh hoạt
và tốc độ
Một trong những cốt lõi của Pytorch là tensor Tensor là một mảng đa chiều tương
tự như mảng numpy nhưng có thể hoạt động trên GPU, điều này giúp tăng đáng kể hiệu suất hệ thống Pytorch cung cấp nhiều mô-đun hỗ trợ cho mô hình học sâu Các mô-đun này được tổ chức theo một workflow giúp cho việc triển khai sử dụng thuận tiện Theo hình 2.4, Pytorch có thể cung cấp các hỗ trợ cho một quá trình huấn luyện mô hình với các bước:
Bước 1: Tổ chức dữ liệu và tải dữ liệu vào mô hình huấn luyện Pytorch cung cấp
Trang 29mô-đun “torch.utils.data” để hỗ trợ việc này Hai thư viện chính trong mô-đun này là Dataset và Dataloader Dataset sử dụng kiểu dữ liệu Tensor để tổ chức tùy chỉnh bộ dữ liệu, Dataloader sử dụng để tải bộ dữ liệu cho quá trình huấn luyện và kiểm tra
Bước 2: Khởi tạo mô hình Ta có thể sử dụng mô hình có sẵn hoặc có thể tự tạo một mô hình cho ứng dụng của mình Pytorch cung cấp mô-đun “torch.nn” có đầy đủ các lớp để tạo nên mạng nơ-ron như lớp “fully connected”, “convolution”, các hàm kích hoạt và các hàm tổn thất
Bước 3: Tiến hành huấn luyện mô hình Sau khi đã có tập dữ liệu và mô hình cần
có kỹ thuật cập nhật trọng số và bias để tiến hành tiến hành huấn luyện, kỹ thuật này có trong mô-đun “torch.optim” Đặc biệt Pytorch còn hỗ trợ tính gradient tự động trong quá trình huấn luyện bằng mô-đun “torch.autograd”
Bước 4: Chạy đánh giá mô hình
Bước 5, 6: Sau khi kết quả mô hình đạt như mong muốn có thể lưu trữ để triển khai Pytorch cung cấp mô-đun “torch.hub” hỗ trợ lưu trữ công khai mô hình trên github
để phục vụ nghiên cứu Mô-đun “torch.onnx” hoặc “torch.jit” cung cấp khả năng chuyển đổi mô hình sang các định dạng khác để dàng triển khai ứng dụng
Hình 2.4: Mô tả các bước của một quá trình huấn luyện mô hình trên Pytorch.
Trang 302.3 GIỚI THIỆU MẠNG NƠ-RON NHÂN TẠO
Mạng nơ-ron nhân tạo [19] dựa trên một tập hợp các đơn vị hoặc nút được kết nối được gọi là tế bào thần kinh nhân tạo, mô hình hóa tương tự các tế bào thần kinh trong não sinh học (hình 2.5) Mỗi kết nối giống như khớp thần kinh trong não sinh học
có thể truyền tín hiệu đến các tế bào thần kinh khác Một tế bào nơ-ron nhân tạo nhận tín hiệu sau đó xử lý chúng và có thể phát tín hiệu cho các nơ-ron thần kinh kết nối với
nó "Tín hiệu" tại một kết nối là một số thực và đầu ra của mỗi nơ-ron được tính bằng một số hàm phi tuyến tính của tổng các đầu vào của nó Các kết nối được gọi là các cạnh Các tế bào thần kinh và các cạnh thường có trọng số điều chỉnh khi quá trình học tập diễn ra Trọng số làm tăng hoặc giảm cường độ của tín hiệu tại một kết nối Nơ-ron thần kinh có thể có ngưỡng sao cho tín hiệu chỉ được gửi đi khi tín hiệu tổng hợp vượt qua ngưỡng đó Thông thường, các tế bào thần kinh được tập hợp thành các lớp Các lớp khác nhau có thể thực hiện các phép biến đổi khác nhau trên các đầu vào của chúng Tín hiệu đi từ lớp đầu tiên (lớp input), đến lớp cuối cùng (lớp output), có thể sau khi đi qua các lớp nhiều lần gọi là lan truyền thuận Mỗi nơ-ron sẽ nhận tất cả đầu vào từ nơ-ron ở lớp trước đó và sử dụng một hàm kích hoạt để tính toán đầu ra Mỗi mạng nơ-ron
sẽ có hàm mất mát để so sánh với kỳ vọng của mạng, để tối ưu hàm giải thuật lan truyền ngược để tính đạo hàm của hàm này
Hình 2.5: Mạng nơ-ron nhân tạo.
Trang 31Hàm kích hoạt có chức năng đưa ra quyết định cuối cùng của mạng tức output.
Có hai loại hàm kích hoạt là hàm phi tuyến tính và hàm phi tuyến Hàm tuyến tính biểudiễn toán học là một đường thẳng tức là output sẽkhông đượcgiới hạn trong một phạm
vi cụ thể Hàm phi tuyến có phạm vi giới hạn xác định nên được áp dụng nhiều vào quyết định của mạng nơ-ron Một sốhàm phi tuyến phổbiến:
Hàm Sigmoidlà một hàm phi tuyến với đầu vào là các sốthực và cho kết quả nằm trong khoảng [0,1] và được xem là xác xuất trong một sốbài toán Trong hàm Sigmoid, một sựthay đổi nhỏtrong input dẫn đến một kết quảoutput ko mấy thay đổi Vì vậy, nó đem lại một đầu ra "mượt" hơn và liên tục hơn so với input Công thức𝑦 =1/(1+𝑒−𝑥)và đạo hàm𝑦′ =𝑦∗(1−𝑦)
Trang 322.3.2 Gradient descent
Thuật toán Gradient descent [20] là thuật toán tìm giá trị nhỏ nhất của hàm thông qua tính đạo hàm Gradient descent và các biến thể của nó là một kỹ thuật dược sử dụng rộng rãi để tối ưa hóa hàm tổn thất của mạng rơ-ron nhân tạo Giả sử ta có hàm tổn thất
của mạng nơ-ron là L(W) Ý tưởng chính của phương pháp này là khởi tạo một giá trị
trọng số 𝑊𝑖𝑛𝑡 ngẫu nhiên, sau đó một quá trình lặp sẽ được tiến hành để tìm các trọng
số W mới sao cho giá trị của hàm tổn thất sẽ ngày càng nhỏ hơn Phương trình thể hiện
quá trình học để giảm giá trị hàm mục tiêu được thể hiện trong phương trình 2.1 Quá trình lặp sẽ được tiến hành cho tới khi hàm mục tiêu hội tụ So với việc giải đạo hàm truyền thống, phương pháp Gradient Descent được sử dụng rộng rãi hơn vì việc tính đạo hàm cho hàm mục tiêu sẽ phức tạp trong một số tình huống cụ thể
𝑊 = 𝑊 − 𝑎𝑙𝑝ℎ𝑎𝜕𝐿
Hình 2.8: Vai trò của việc chọn learning rate.
Trong công thức 2.1 hệsố alpha là tốc độhọc (learning rate), thường được chọn
là 0,1 Tuy nhiên hệsốnày phải được lựa chọn cẩn thận trong mỗi bộdữliệu khác nhauchứkhông cứng nhắc Việc chọn hệsốlearning rate sẽdẫn tới một trong sốcác trườnghợp sau đây Nếu learning rate nhỏ, mỗi lần hàm sốgiảm rất ít nên cần rất nhiều lần cậpnhập trọng sốđểhàm mục tiêu đạt giá trịnhỏnhất Nếu learning rate hợp lý, sau một sốlần lặp vừa phải thì hàm sẽ đạt giá trị đủ nhỏ Nếu learning rate quá lớn, sẽ gây hiệntượng overshoot và không bao giờđạt được giá trịnhỏnhất của hàmnhư được minh họatrong hình2.8
Trang 332.3.3 Hàm tổn thất
Trong các hàm tổn thất (loss function), Cross-entropy loss [21] là một trong những hàm tổn thất quan trọng nhất được sử dụng trong quá trình huấn luyện mạng nơ-ron từ các mạng máy học truyền thống đến các mạng học sâu Trong quá trình huấn luyện các bài toán học có giám sát, mô hình học cách ánh xạ đầu vào với đầu ra xác suất thực tế và điều chỉnh dần các trọng số của mô hình trong suốt giai đoạn huấn luyện để các dự đoán tiến gần hơn đến giá trị mong đợi (ground truth)
Entropy của một biến ngẫu nhiên X là mức độ không chắc chắn vốn có trong kết quả có thể có của các biến Entropy có thể được xác định bằng toán học sử dụng phân phối xác suất được ký hiệu là H với công thức 2.2, trong đó p (x )là phân phối xác xuất,
X là biến ngẫu nhiên:
Cross-entropy lossđược sửdụng tính toán mức sai khác giữa các phân phối xác
xuất giúp tối hóa quá trình huấn luyện mô hình phân loại, đặc biệt là trong các tác vụphân loại nhiều lớp (multi-classification) Mục đích là giảm thiểu mức tổn thất, tức làgiá trịcủaloss càngnhỏ càng tốt Một mô hình hoàn hảo có cross-entropy loss bằng 0
Trang 34Hàm Cross-entropy loss được định nghĩa một cách tổng quát theo công thức toán học 2.3:
n là số classes phân loại
2.4 CÁC MÔ HÌNH PHÂN LOẠI DỰA TRÊN CNN 2.4.1 Mạng LeNet
Hình 2.10: Mô tả kiến trúc mạng LeNet-5 được thiết kế để xác định các chữ số viết tay
trong tập dữ liệu MNIST.
LeNet được xem là mạng nơ-ron cổ điển được giới thiệu bởi Yann LeCun và
cộng sựtrongứng dụngnhận dạngcác chữsốviết tayđược công bốnăm 1998 và đượcgọi là LeNet-5[22].Đây cũng là kiến trúc áp dụng mạng nơ-ron tích chập 2 chiều được
Trang 35khối các tầng tích chập (Convolutional layers) và khối các tầng kết nối đầy đủ (Fully connected layers) Tuy nhiên mô hình đã có hiệu suất tốt hơn so với các thuật toán machine learning truyền thống khác dùng trong phân loại chữ số viết tay như SVM, KNN
Các hình ảnh đầu vào có kích thước 32 x 32 x 1 và số layers tương đối ít, vậy nên
mô hình chỉ có khoảng 60 nghìn tham số Thành phần của khối tích chập được tạo nên
từ việc xếp chồng các khối nhỏ gồm lớp tích chập và lớp gộp trung bình Pooling Layer) theo sau Lớp tích chập giúp phát hiện các đặc trưng không gian trong ảnh như các đường cạnh và các bộ phận của đối tượng Lớp gộp trung bình nhằm mục đích giảm chiều dữ liệu mà không làm thay đổi các đặc trưng quan trọng, còn được gọi
(Average-là Sub-Sampling Layer Tuy nhiên mô hình rất khó hội tụ nên Average-Pooling Layer thường được thay thế bằng Max-Pooling Các mẫu ở đầu ra của khối tích chập sẽ được làm phẳng (flatten) trước khi chuyển sang khối kết nối đầy đủ, để biến đổi đầu vào 4D thành đầu vào 2D tương thích với các tầng kết nối đầy đủ Cuối cùng là các lớp kết nối đầy đủ
Hình 2.11: Chi tiết các thành phần tham số của mô hình LeNet.
Trang 36LeNet có nhược điểm là mạng còn khá đơn giản và việc sử dụng hàm sigmoid (hay tanh) ở mỗi convolution layer không thuận lợi cho việc tính toán, mô hình hội tụ chậm
2.4.2 Mạng AlexNet
Được phát triển dựa trên ý tưởng của LeNet, AlexNet là mạng CNN được đặt theo tên của Alex Krizhevsky, tác giả của bài báo đột phá dành chiến thắng cách biệt trong cuộc thi phân loại ImageNet ILSVRC được giới thiệu vào năm 2012 [23]
Cấu trúc của AlexNet tương tự như LeNet, nhưng sử dụng nhiều tầng tích chập hơn với số lượng các tham số lớn hơn (lên tới 60 triệu tham số) để phù hợp với tập dữ liệu ImageNet có kích thước lớn AlexNet đã phá vỡ những hoài nghi rằng các đặc trưng được học từ mô hình sẽ không tốt bằng các đặc trưng được tạo thủ công
Hình 2.12: Mô tả kiến trúc mạng AlexNet.
Các điểm cải tiến trong kiến trúc AlexNet đã tạo nên những khác biệt đáng kể về
hiệu suất so với LeNet:
AlexNet nhận đầu vào có kích thước lớn hơn, mạng sâu hơn nhiều so với LeNet với tám tầng gồm: năm tầng tích chập, hai tầng ẩn kết nối đầy đủ, và một tầng
Sửdụng hàm kích hoạt ReLU(Rectified Linear Unit)thay cho sigmoid giúp cho tính toán tốc độ nhanhhơn, dễ dàng và vẫnđảm bảo được tính phi tuyến (non-
Trang 37 Sử dụng các cửa sổ kernel với kích thước giảm dần qua các layers để phù hợp với kích thước của đặc trưng
Áp dụng local normalization để chuẩn hóa các layer giúp mô hình hội tụ nhanh hơn
Kiểm soát năng lực của tầng kết nối đầy đủ bằng cách áp dụng dropout layer giúp giảm số lượng liên kết neural và kiểm soát overfitting
Kích thước đầu ra giảm dần qua các layers nhưng độ sâu tăng dần qua từng kernel
Hình 2.13: Chi tiết các thành phần tham số của mô hình AlexNet.
Trang 382.4.3 Mạng VGG
VGG (Visual Geometry Group) là mô hình học sâu được đề xuất bởi K
Simonyan and A Zisserman năm 2014 trong bài báo “Very Deep Convolutional
Networks for Large-Scale Image Recognition” [24] Mô hình có hiệu suất vượt trội mô
hình trước đó là AlexNet trên tập dữ liệu ImageNet VGG được phát triển theo hướng tăng độ sâu của mạng CNN nhằm tăng hiệu suất của mô hình Ý tưởng sử dụng các khối (block) lần đầu được sử dụng trong mạng VGG để làm tăng độ sâu của mạng
Hình 2.14: Ý tưởng xây dựng mạng VGG sử dụng các khối VGG block gồm các tầng
tích chập được xếp chồng.
Kiến trúc VGG có nhiều biến thể khác nhau vềđộ sâu (số layers) VGG-16 sâu
hơn so với AlexNet và số lượng tham số lên tới 138 triệu tham số, ngoài ra còn mộtphiên bản của VGG là VGG-19 tăng cường thêm 3 layersvề độsâu
VGG vẫn được xây dựng dựa trên các tính năng thiết yếu của CNN nhưng có
những điểm cải tiến trong cấu trúc:
Đầu vào (input):kích thướchìnhảnh đầu vàolà224 × 224
Trang 39 Convolutional Layers: Các lớp tích chập của VGG sử dụng kernel có kích
thước nhỏ 3 × 3 Các bộ lọc tích chập (filters) kích thước 1 × 1 hoạt động như một phép biến đổi tuyến tính của đầu vào Hàm kích hoạt ReLU được kế thừa như ở AlexNet giúp giảm thời gian huấn luyện Bước sải tích chập (stride) được đặt là 1 pixel nhằm giữ nguyên độ phân giải không gian sau khi tính tích chập
Hidden Layers: Tất cả các lớp ẩn trong mạng đều sử dụng ReLU VGG
thường không sử dụng Chuẩn hóa phản hồi cục bộ (LRN) vì nó làm tăng mức tiêu thụ bộ nhớ và thời gian huấn luyện, ngoài ra nó cũng không cải thiện độ chính xác tổng thể
Fully-Connected Layers: có 3 lớp kết nối đầy đủ Trong đó, hai lớp đầu tiên
mỗi lớp có 4096 kênh và lớp thứ ba có 1000 kênh, 1 kênh tương ứng với 1 class
Hình 2.15: Mô tả kiến trúc mô hình VGG-16.
2.4.4 Mạng GoogLeNet
Mạng GoogLeNet [25] ra đời năm 2014 là sự kết hợp những ưu điểm của mô
hình Network-in-Network và mô hình chứa các khối lặp lại để giải quyết vấn đề kíchthước mô hình Mạng này cho thấyđôi khi kết hợp các bộlọc có kích thước khác nhau
có thểmang lại hiệu quả
Trang 40Khối tích chập cơ bản của GoogleNet được gọi là Inception Ý tưởng chính của kiến trúc Inception dựa trên việc tìm ra cách một cấu trúc thưa cục bộ tối ưu trong mạng thị giác tích chập có thể được xấp xỉ và được bao phủ bởi các thành phần dày đặc sẵn
có Cấu trúc khối inception bao gồm bốn nhánh song song với nhau Ba nhánh đầu sử dụng các tầng tích chập với kích thước cửa sổ trượt lần lượt là 1×1, 3×3, và 5×5 để trích xuất thông tin từ các vùng không gian có kích thước khác nhau Hai nhánh giữa thực hiện phép tích chập 1×1 trên dữ liệu đầu vào để giảm số kênh đầu vào, từ đó giảm độ phức tạp của mô hình Nhánh thứ tư sử dụng một tầng gộp cực đại kích thước 3×3, theo sau là một tầng tích chập 1×1 để thay đổi số lượng kênh Cả bốn nhánh sử dụng phần đệm phù hợp để đầu vào và đầu ra của khối có cùng chiều cao và chiều rộng Cuối cùng, các đầu ra của mỗi nhánh sẽ được nối lại theo chiều kênh để tạo thành đầu ra của cả khối Các tham số thường được tinh chỉnh của khối Inception là số lượng kênh đầu ra mỗi tầng
Hình 2.16: Cấu trúc khối Inception.
Ưu điểm của cấu trúc này là những chi tiếtởcác mức độkhác nhau sẽđược nhận
diện hiệu quảbằng các bộlọc khác nhau Đồng thời, ta có thể phân bổsốlượng tham sốkhác nhau cho những vùng có phạm vi khác nhau
Mô hình GoogLeNet sửdụng tổng cộng 9 khối inception và tầng gộp trung bình
toàn cục xếp chồng lên nhau Phép gộp cực đại giữa các khốiinception có tác dụng làmgiảm kích thước chiều Phần đầu tiên của GoogleNet giống AlexNet và LeNet, có cáckhối xếp chồng lên nhau kếthừa từthiết kếcủa VGG và phép gộp trung bình toàn cụcgiúp tránh phải sửdụng nhiều tầng kết nối đầy đủliên tiếpởcuối