Nguyễn Quang Anh Thời gian thực hiện: Từ ngày 08/03/2021 đến ngày 26/6/2021 Sinh viên thực hiện: Cao Minh Huy – 16520502 Nội dung đề tài: Mục tiêu: • Nghiên cứu, tìm hiểu các thuật
Trang 1TP HỒ CHÍ MINH, 2021
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
CAO MINH HUY
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU System supports Sign language recognition
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
CAO MINH HUY – 16520502
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU System supports Sign language recognition
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN QUANG ANH ThS NGUYỄN CÔNG HOAN
Trang 3THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 -Chủ tịch
2 -Thư ký
3 -Ủy viên
4 -Ủy viên
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
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 26 tháng 06 năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
HỆ THỐNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU
ThS Nguyễn Công Hoan
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 5Điểm từng sinh viên:
Cao Minh Huy: …/10
Người nhận xét
(Ký tên và ghi rõ họ tên)
ThS Nguyễn Công Hoan
Trang 6ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
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 26 tháng 06 năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luận:
HỆ THỐNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU
ThS Nguyễn Công Hoan
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 7Điểm từng sinh viên:
Cao Minh Huy: …/10
Người nhận xét
(Ký tên và ghi rõ họ tên)
ThS Phan Trung Hiếu
Trang 8LỜI CẢM ƠN
Sau hơn 4 năm học tập và rèn luyện tại Trường Đại Học Công Nghệ Thông Tin, được sự chỉ bảo và giảng dạy nhiệt tình của quý thầy cô, đặc biệt quý thầy cô trong khoa Công Nghệ Phần Mềm, em đã học tập được rất nhiều kiến thức bổ ích về lý thuyết và thực hành trong thời gian qua Trong khoảng thời gian thực hiện luận văn tốt nghiệp, em càng học hỏi thêm được nhiều kiến thức, kinh nghiệm để áp dụng và đã hoàn thành được luận văn tốt nghiệp Xin chân thành cảm ơn quý thầy cô Khoa Công Nghệ Phần mềm, đặc biệt
là thầy Nguyễn Quang Anh và thầy Nguyễn Công Hoan đã tận tình hướng dẫn
em hoàn thành luận văn tốt nghiệp này
Bên cạnh đó, một lần nữa xin cảm ơn nhóm các bạn cùng lớp làm khóa luận đã động viên, thảo luận và góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm để tiếp thêm động lực cho nhóm trong giai đoạn đầy khó khăn Ngoài ra, chúng em cũng cảm ơn các anh, chị, bạn bè và gia đình đã giúp
đỡ và tạo điều kiện cho chúng em hoàn tất luận văn này
Mặc dù đã rất cố gắng, tuy nhiên vì khả năng giới hạn nên vẫn không tránh khỏi những sai sót, em rất mong nhận được sự thông cảm và góp ý chân tình từ quý thầy cô và các bạn Một lần nữa xin được chân thành cảm ơn mọi người
Thành phố Hồ Chí Minh, tháng 7 năm 2021
CAO MINH HUY
Trang 9ĐHQG TP HỒ CHÍ MINH CỘNG HOÀ XÃ HỘI CHỦ NGHĨA
VIỆT NAM TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: HỆ THỐNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU
Cán bộ hướng dẫn:
- ThS Nguyễn Công Hoan
- TS Nguyễn Quang Anh
Thời gian thực hiện: Từ ngày 08/03/2021 đến ngày 26/6/2021
Sinh viên thực hiện:
Cao Minh Huy – 16520502
Nội dung đề tài:
Mục tiêu:
• Nghiên cứu, tìm hiểu các thuật toán, mô hình trong Deep Learning
• Nghiên cứu, tìm hiểu các model phục vụ máy học và nhận dạng hình ảnh
• Huấn luyện mô hình được lựa chọn để nhận dạng ngôn ngữ ký hiệu
• Xây dựng ứng dụng minh họa nhận diện ngôn ngữ ký hiệu
Phạm vi:
Mô hình đáp ứng nhận dạng ngôn ngữ ký hiệu bao gồm 24 ký tự theo chuẩn ASL trừ ký tự ‘J’ và ‘Z’
Đối tượng nghiên cứu:
• Tensorflow, OpenCV, Object-Detection API
• Các nền tảng và công cụ hỗ trợ việc thực hiện mô hình (Anaconda3)
Trang 10Phương pháp thực hiện:
Thực hiện đề tài theo các bước:
• Khảo sát đề tài
• Phân tích và nghiên cứu đề tài
• Thiết kế cơ bản các yêu cầu
• Nghiên cứu công nghệ để áp dụng
• Phát triển sản phẩm qua các giai đoạn
• Kiểm thử và hoàn thiện
Kết quả mong đợi:
• Phân tích, tìm hiểu rõ các công nghệ để thiết kế mô hình
• Thiết kế mô hình nhận diện ngôn ngữ ký hiệu từ các công nghệ tìm hiểu: Tensorflow, OpenCV, Object-Detection API của Tensorflow,…
• Triển khai mô hình nhận diện ngôn ngữ ký hiệu dựa trên đó
Trang 11Kế hoạch thực hiện:
thực hiện Phase 1: Khảo sát, nghiên cứu các công nghệ và thiết kế mô
hình
16 tuần (08/03/2021 – 3/5/2021)
1 Sprint 1: Tìm hiểu deep learning
1.1 – Deep Learning là gì?
– Neural network là gì?
– Lựa chọn vấn đề để giải quyết
Tuần 1 - 3 (08/03/2021 - 22/03/2021)
2 Sprint 2: Tìm hiểu các mô hình thực tế,
xác định các thành phần trong mô hình
2.1 – Tìm hiểu: Các mô hình nghiên cứu trên thị
trường, Tensorflow, OpenCV
Tuần 4 - 6 (23/03/2021 - 05/04/2021)
4 Sprint 4: Nghiên cứu nhận diện ngôn ngữ ký hiệu
4.1 Nghiên cứu và xây dựng công cụ nhận diện ngôn ngữ ký
hiệu
Tuần
12 - 16 (04/05/2021 – 31/05/2021)
Phase 2: Hoàn thiện và kiểm thử mô hình 4 tuần
Trang 12(01/06/2021 - 14/06/2021)
- Đánh giá
Tuần 18 - 20 (15/06/2021 - 26/06/2021)
Xác nhận của CBHD
(Ký tên và ghi rõ họ tên)
TP.HCM, ngày 26 tháng 06 năm
2021
(Ký tên và ghi rõ họ tên)
Cao Minh Huy
Trang 13MỤC LỤC
Mục lục
TÓM TẮT KHÓA LUẬN 1
MỞ ĐẦU 2
Lý do chọn đề tài: 2
Chương 1 TỔNG QUAN ĐỀ TÀI 3
1.1 Mục tiêu và phạm vi 3
1.1.1 Mục tiêu 3
1.1.2 Phạm vi 3
1.2 Nội dung thực hiện 3
Chương 2 DEEP LEARNING LÀ GÌ 4
2.1 Lịch sử hình thành 4
2.2 Deep Learning là gì? 5
2.3 Artificial Neural Network 7
2.4 Deep Neural Network 8
2.5 Loss Function 10
2.6 Activation Function 11
2.7 Gradient Descent 14
2.8 Convolutional Neural Network 15
Chương 3 CỞ SỞ LÝ THUYẾT 19
3.1 Anaconda 19
3.1.1 Jupyter Notebook 19
3.2 TensorFlow 21
Trang 143.2.1 Data Flow Graph 21
3.2.2 Data Flow Graphs trong TensorFlow 23
3.3 MobileNET 25
3.3.1 MobileNET là gì? 25
3.3.2 Kiến trúc mạng MobileNET? 25
3.3.2.1 Depthwise Separable Convolution 25
3.3.2.2 Kiến trúc MobileNET 28
3.3.2.3 So sánh MobileNET với các mô hình State of the art (SOTA) 30
3.4 Các mô hình nhận dạng hình ảnh 30
3.4.1 Một số khái niệm cơ bản 30
3.4.1.1 IoU (Intersection over Union) 30
3.4.1.2 Anchor box 32
3.4.1.3 Non Max Suppression (NMS) 33
3.4.1.4 Image Classfication, Image Localization và Object Detection 33
3.4.2 Một số mô hình nhận dạng hình ảnh 35
3.4.2.1 R-CNN (Regional Convolutional Neural Network) 35
3.4.2.2 Fast R-CNN 38
3.4.2.3 Faster R-CNN 40
3.4.2.4 YOLO (You Only Look Once) 42
Chương 4 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN NGÔN NGỮ KÝ HIỆU 46
Trang 154.1 Trình bày ý tưởng 46
4.2 Khái quát, tổng quan ý tưởng 47
4.3 Các Use case của đề tài 47
4.3.1 Input data 47
4.3.2 Phân tích dữ liệu 48
4.3.3 Train model 49
4.3.4 Thử nghiệm model 49
4.4 labelImg 50
4.5 Mô phông thực tế 50
4.5.1 Nguồn dữ liệu và mô tả tập dữ liệu 50
4.5.2 Dùng LabelImg để chú thích ảnh 51
4.5.3 Cài đặt môi trường và khởi tạo label-map 52
4.5.4 Điều chỉnh cấu hình model và train model 54
4.5.5 Load model và nhận diện trong thời gian thực 55
4.5.6 Đánh giá độ chính xác 56
4.5.7 Đưa model lên web thông qua TensorFlowJS 58
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 60
5.1 Kết quả đạt được 60
5.2 Nhận xét 60
5.2.1 Ưu điểm 60
5.2.2 Khuyết điểm 60
6.3 Hướng phát triển 61
TÀI LIỆU THAM KHẢO 62
Trang 17DANH MỤC HÌNH VẼ
Hình 2.1 Lịch sử ra đời của Deep Learning 04
Hình 2.2 Mối quan hệ giữa AL, ML và DL 05
Hình 2.3 Mô hình mạng ANN 07
Hình 2.4 Mô hình cấu trúc của mạng DNN 08
Hình 2.5 Hồi quy tuyến tính tìm đường thẳng tốt nhất đi qua một tập hợp các điểm đầu vào đã cho 09
Hình 2.6 Hồi quy phi tuyến thực hiện phân tách các giá trị đầu thành hai nhóm 10
Hình 2.7 Đồ thị hàm số Sigmoid 12
Hình 2.8 Đồ thị hàm số Tanh 12
Hình 2.9 a) Đồ thi hàm số ReLU, b) Đồ thị hàm số Leaky ReLu 13
Hình 2.10 Mô hình mô phỏng Gradient Descent 14
Hình 2.11 Ảnh hưởng của learning rate 15
Hình 2.12 Phép tính convolution với kích thước 3*3*3 16
Hình 2.13 Đặc điểm của khuôn mặt chó mèo được lọc ra từ CNN 16
Hình 2.14 Sau pooling layer (2*2) 17
Hình 2.15 Ví dụ mô hình CNN 18
Hình 3.1 Giao diện Anaconda Navigator 19
Hình 3.2 Trực quan hóa mô hình trong Jupyter Notebook 20
Hình 3.3 DFG cơ bản 22
Hình 3.4 DFG hoàn chỉnh 22
Hình 3.5 Cấu trúc một DFG trong Tensorflow 24
Hình 3.6 Depthwise Convolution 26
Hình 3.7 Pointwise Convolution 26
Hình 3.8 Kiến trúc tổng quát của MobileNET 28
Hình 3.9 Convolution truyền thống (trái) so với DSC (phải) 29
Hình 3.10 Kết quả so sánh giữa mô hình truyền thống và DSC 29
Trang 18Hình 3.11 So sánh với các mô hình State of the art 30
Hình 3.12 So sánh với các mô hình State of the art (2) 30
Hình 3.13 Công thức tính IoU 31
Hình 3.14 Nhận xét về hệ số IoU 32
Hình 3.15 Cách hoạt động của NMS 33
Hình 3.16 Image Localization 34
Hình 3.17 Object Detection 35
Hình 3.18 Cách hoạt động của Selective Search 36
Hình 3.19 Kết quả của thuật toán Selective Search 37
Hình 3.20 Kết quả của việc phân vùng quá nhiều 37
Hình 3.21 Quá trình thực hiện của R-CNN 38
Hình 3.22 Cấu trúc của Fast R-CNN 39
Hình 3.23 So sánh giữa Fast R-CNN với R-CNN 39
Hình 3.24 Cấu trúc của Faster R-CNN 40
Hình 3.25 So sánh tốc độ của Faster R-CNN với các mô hình khác 41
Hình 3.26 Kiến trúc của YOLO 42
Hình 3.27 Cách YOLO hoạt động 43
Hình 3.28 Kiến trúc của SSD 44
Hình 3.29 SSD sử dụng feature map có tỷ lệ khác nhau để nhận dạng 44
Hình 3.30 Cải thiện độ chính xác bằng tăng cường dữ liệu 45
Hình 4.1 Kiến trúc tổng quát của ứng dụng 46
Hình 4.2 Các use case của đề tài 47
Hình 4.3 Giao diện LabelImg 50
Hình 4.4 Chia các ảnh lấy được theo từng ký tự 50
Hình 4.5 Tạo dữ liệu đầu vào và lưu vào thư mục tương ứng 51
Hình 4.6 Chú thích ảnh ký hiệu A 51
Hình 4.7 Các file XML được tạo ra 52
Hình 4.8 Thông số bounding box của một file XML 52
Trang 19Hình 4.9 Khởi tạo đường dẫn 52
Hình 4.10 Khởi tạo label-map 53
Hình 4.11 Biến đổi file XMl thành TFRecord 54
Hình 4.12 Điều chỉnh cấu hình model 55
Hình 4.13 Các checkpoint được tạo ra sau khi train 55
Hình 4.14 Load checkpoint 55
Hình 4.15 Kết quả 56
Hình 4.16 Total loss của model 57
Hình 4.17 mAP của model 57
Hình 4.18 Model sau khi được chuyển sang TFJS 58
Hình 4.19 Model được host trên IBM Cloud 58
Hình 4.20 Hàm vẽ bounding box 59
Hình 4.21 Kết quả của web app 59
Trang 20DANH MỤC BẢNG
Trang 21Network
Trang 22TÓM TẮT KHÓA LUẬN
đề tài
ngôn ngữ ký hiệu
Trang 23Theo một số thống kê, 1 triệu người khiếm thính đang sử dụng Amercian Sign Language (ASL) – Ngôn ngữ ký hiệu chuẩn của Mỹ, là ngôn ngữ chính của họ Con
số đó lên tận 70 triệu trên toàn thế giới Bên cạnh đó, 98% trong số họ không được dạy về ngôn ngữ ký hiệu, 72% gia đình hạn chế giao tiếp bằng ngôn ngữ ký hiệu với người thân bị khiếm thính và 70% người khiếm thính không thể làm việc hoặc bị thất nghiệp Chính vì những con số này, các quốc gia đã có chính sách hỗ trợ những người khiếm thính Ở Việt Nam, nước ta đã có các chính sách hỗ trợ việc hòa nhập của người khuyết tật tái hòa nhập cộng đồng để có thể làm việc thông qua dự án INCLUDE của Tổ chức Lao động Quốc tế (ILO)
Từ trên, việc phát triển mô hình nhận dạng ngôn ngữ ký hiệu đã có nhiều công trình tiếp cận với các phương thức khác nhau như nhận dạng qua video stream, nhận dạng cử động hay nhận dạng từ thay vì từng ký hiệu với các mục đích như nghiên cứu hay hỗ trợ cuộc sống những người khiếm thính Thông qua kiến thức công nghệ học được, em cũng muốn đóng góp, hỗ trợ cho những người khiếm thính Tuy nhiên,
để tìm ra giải pháp hoàn hảo cho vấn đề giao tiếp hai phía giữa người khiếm thính với người bình thường vẫn còn là một thử thách lớn Em đã cố gắng triển khai một ứng dụng minh họa khả năng nhận diện bảng chữ cái của ngôn ngữ ký hiệu để giúp một phần nào đó về phía những người khiếm thính
Trang 24Chương 1 TỔNG QUAN ĐỀ TÀI
1.1 Mục tiêu và phạm vi
1.1.1 Mục tiêu
– Nghiên cứu, tìm hiểu các thuật toán, mô hình trong Deep Learning
– Nghiên cứu, tìm hiểu các model phục vụ máy học và nhận dạng hình ảnh – Huấn luyện mô hình được lựa chọn để nhận dạng ngôn ngữ ký hiệu
– Xây dựng ứng dụng minh họa nhận diện ngôn ngữ ký hiệu
1.1.2 Phạm vi
Mô hình đáp ứng nhận diện ngôn ngữ ký hiệu bao gồm 24 ký tự theo chuẩn ASL trừ ký tự ‘J’ và ‘Z’
1.2 Nội dung thực hiện
Mục tiêu của đề tài “Nghiên cứu hệ thống nhận diện ngôn ngữ ký hiệu”
– Tìm hiểu về máy học, các khái niệm và định nghĩa chuyên ngành
– Nghiên cứu các công nghệ để xây dựng mô hình
– Thiết kế mô hình nhận diện ngôn ngữ ký hiệu
– Tích hợp và triển khai
– Viết báo cáo
Trang 254
Chương 2 DEEP LEARNING LÀ GÌ
2.1 Lịch sử hình thành
Hình 2.1: Lịch sử ra đời của Deep Learning [1]
Trí tuệ nhân tạo (Artificial Intelligence – AI) luôn là một phần trong trí tưởng tượng của chúng ta và luôn là một chủ đề nóng hổi trong ngành nghiên cứu Việc nghiên cứu AI đã ra đời khi các nhà khoa học đã thống nhất tại hội nghị Dartmouth vào năm 1956 Nối tiếp sự ra đời của AI, máy học (Machine Learning – ML) ra đời và tới năm 2012, mọi chuyện thay đổi khi học sâu (Deep Learning – DL) được giới thiệu cùng với mạng nơ-ron nhân tạo (Artificial Neural Networks) Do ra đời sau, DL được củng cố các thuật toán được sử dụng trong ML để huấn luyện các model kết hợp với mạng nơ-ron được thiết kế lấy cảm hứng từ chính não con người chúng ta nhưng với các tầng lớp, liên kết và hướng lan truyền các dữ liệu Đồng thời, lúc này khái niệm Dữ liệu lớn (Big Data) cũng bùng nổ khiến DL ngày càng trở nên nổi bật và thành 1 phần thúc đẩy nghiên cứu khoa học vượt bậc trong ngành
AI [1]
Trang 262.2 Deep Learning là gì?
Học sâu (Deep Learning - DL) là một nhánh nhỏ của Machine Learning (ML) Đây là một lĩnh vực dựa trên việc học hỏi và cải thiện bản thân bằng cách áp dụng các thuật toán máy tính Trong khi ML sử dụng các khái niệm đơn giản hơn, DL hoạt động với các mạng thần kinh nhân tạo, được thiết kế để bắt chước cách con người suy nghĩ và học hỏi Cho đến gần đây, các mạng lưới thần kinh bị giới hạn bởi khả năng tính toán và do đó bị hạn chế về độ phức tạp Tuy nhiên, những tiến bộ trong khả năng khai thác, xử lý được Big Data (dữ liệu lớn) đã cho phép các mạng thần kinh lớn hơn, tinh vi hơn, cho phép máy tính quan sát, học hỏi và phản ứng với các tình huống phức tạp nhanh hơn con người Deep Learning giúp máy tính thực hiện các chức năng mà tưởng chừng như không thể vào 15 năm trước như: phân loại cả ngàn vật thể, nhận diện giọng nói và chữ viết con người, giao tiếp với con người, … Nó cũng có thể được sử dụng để giải quyết bất kỳ vấn đề nhận dạng mẫu nào và không cần phải có sự can thiệp của con người [2]
Hình 2.2: Mối quan hệ giữa AI, ML và DL
Trang 276
DL được kế thừa các thuật toán từ ML, và chúng được phân loại vào các nhóm chính như học có giám sát (Supervised Learning - SL), học không giám sát (Unsupervised Learning - UL) và học tăng cường (Reinforcement Learning - RL)
- Học có giám sát: là thuật toán dự đoán đầu ra của một dữ liệu mới dựa trên các cặp (dữ liệu, nhãn) đã biết từ trước Bắt đầu từ việc phân tích một tập dữ liệu đã được đào tạo, thuật toán SL tạo ra một hàm để dự đoán
về các giá trị đầu ra Thuật toán học tập dùng phương pháp so sánh đầu
ra của nó với đầu ra (hay nhãn) và tìm lỗi để sửa đổi mô hình cho phù hợp
- Học không giám sát: UL là cách học mà chúng ta chỉ truyền đầu vào nhưng cung cấp đầu ra tương ứng Từ đó, hệ thống sẽ khám phá dữ liệu
và đúc kết từ các bộ dữ liệu để mô tả các cấu trúc ẩn từ dữ liệu chưa được gắn nhãn
- Học tăng cường: Thay vì cung cấp cho máy tính các cặp đầu vào-đầu ra chính xác, RL giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được hiệu quả cao nhất Hành vi này sau đó được học và lặp lại lần sau khi cùng một vấn đề được đưa ra
Trang 282.3 Artificial Neural Network
Mạng thần kinh nhân tạo, hay mạng nơ-ron nhân tạo (Artificial Neural Network ANN) là một chuỗi các thuật toán được áp dụng để nhận ra các mối quan hệ cơ bản trong một tập hợp dữ liệu thông qua một quá trình mô phỏng cách thức hoạt động của
bộ não con người Các node, được mô phỏng theo chức năng của nơ-ron trong não
bộ, là nơi toàn bộ quá tính toán xảy ra Các giá trị kết hợp giữa đầu vào và trọng số sẽ được cộng lại và sau đó được chuyển qua một hàm được gọi là hàm kích hoạt (Activation Function), nhằm xác định xem tín hiệu đó có nên phát triển hơn nữa qua mạng hay không để ảnh hưởng đến kết quả cuối cùng hay không Các node liên kết với nhau tạo thành một hệ thống gồm các lớp mà có thể được gọi là các layer Một
tự lớp sau nhận giá trị output của lớp trước để tiến hành Trong quá trình tính toán này, dữ liệu được thực hiện theo một chiều từ đầu đến cuối Quá trình này được gọi
là mạng nơ-ron lan truyền thẳng (Feedforward Neural Network)
Hình 2.3: Mô hình mạng ANN
Trang 298
2.4 Deep Neural Network
DNN là một phiên bản của mạng ANN Điều để phân biệt hai loại mạng chính
là chiều sâu của chúng; nghĩa là, số lượng các lớp ẩn mà dữ liệu phải thông qua trong một quy trình nhận dạng mẫu Một mô hình DNN sẽ có một lớp đầu vào, một lớp đầu
ra và nhiều lớp ẩn nằm ở giữa tùy thuộc vào độ phức tạp của thuật toán Trong DNN, mỗi lớp huấn luyện trên một tập hợp các đặc tính riêng biệt dựa trên đầu ra lớp trước
đó Càng tiến sâu vào mạng lưới thần kinh, các đặc tính mà các node của mạng có thể nhận biết sẽ càng phức tạp, vì chúng tổng hợp và kết hợp lại các tính năng từ lớp trước
Hình 2.4: Mô hình cấu trúc của mạng DNN
Có hai thuật toán chính trong việc thể hiện mối quan hệ giữa các lớp liền kề là thuật toán hồi quy tuyến tính (Linear Regression) và hồi quy phi tuyến tính (Non-linear Regression hay còn được biết đến với tên khác là hồi quy logistic - Logistic Regression)
Thuật toán hồi quy tuyến tính là một loại máy học có giám sát rất cơ bản, cố gắng tìm đường thẳng tốt nhất có thể để mô tả xu hướng chính trong dữ liệu đào tạo
cơ bản Bắt đầu từ một số vị trí ngẫu nhiên, nó điều chỉnh / di chuyển đường thẳng cho đến khi tìm thấy vị trí cho tổng khoảng cách trung bình tối thiểu từ các điểm dữ
Trang 30liệu đến đường thẳng Ở dạng cơ bản, với một đầu vào x và một đầu ra y, mô hình của thuật toán này là công thức toán học cơ bản cho đường thẳng:
𝑦 = 𝑤 ∗ 𝑥 + 𝑏
và đào tạo để tìm ra trọng số w và độ lệch (còn gọi là bias) b
Hình 2.5: Hồi quy tuyến tính tìm đường thẳng tốt nhất đi qua một tập hợp các
điểm đầu vào đã cho Thuật toán hồi quy phi tuyến tính là thuật toán thuộc nhóm phân loại với ngõ ra được biểu diễn dưới dạng xác suất Thuật toán này được đặc trưng bởi hàm xác suất của một phương trình đường thẳng, chính là giá trị của thuật toán hồi quy tuyến tính Hàm xác suất này chính là hàm kích hoạt, kí hiệu là (.) Phương trình của thuật toán hồi quy phi tuyến được biểu diễn như sau:
𝑦 = 𝜎(𝑤 ∗ 𝑥 + 𝑏)
Trang 3110
Nguyên tắc cơ bản của hồi quy phi tuyến tính tương tự như hồi quy tuyến tính:
nó sử dụng phương pháp tối ưu hóa để tìm các giá trị trọng số và bias nhằm xác định được phương trình đường thẳng tối ưu nhất
Hình 2.6: Hồi quy phi tuyến thực hiện phân tách các giá trị đầu thành hai
nhóm
2.5 Loss Function
Hàm mất mát trả về một số thực không âm thể hiện sự chênh lệch giữa hai đại
lượng giá trị dự đoán 𝑦̂ và giá trị thực y Hàm mất mát giống như một hình thức để
bắt model đóng phạt mỗi lần nó dự đoán sai, và số mức phạt tỉ lệ thuận với độ trầm trọng của sai sót, vì vậy mục tiêu ở đây là giảm thiểu tổng mức phạt phải đóng Trong
DL, mục tiêu đó tương đương với việc tìm trọng số để hàm mất mát đạt giá trị nhỏ nhất Trong trường hợp lý tưởng 𝑦̂ = y, hàm mất mát sẽ trả về giá trị cực tiểu bằng 0 Các hàm mất mát có thể được phân thành hai loại chính tùy thuộc vào vấn đề
mà mạng đang xử lý, đó là mất mát hồi quy (tương đương với hồi quy tuyến tính) và mất mát phân loại (tương đương với hồi quy phi tuyến tính) Mất mát phân loại liên quan đến việc dự đoán đầu ra từ tập hợp các giá trị phân loại hữu hạn Mặt khác, mất mất hồi quy liên quan đến việc dự đoán một giá trị liên tục
Trang 322.6 Activation Function
Hàm kích hoạt (Activation Function) là hàm phi tuyến được áp dụng ở đầu ra của các node trong lớp ẩn của một mạng, và được sử dụng như dữ liệu đầu vào của lớp tiếp theo Hàm được sử dụng để gia tăng khả năng dự đoán của mạng nơ-ron, xác định tỉ lệ được truyền của dữ liệu giữa các lớp, và giúp mô hình học được các quan
hệ phi tuyến phức tạp tiềm ẩn trong dữ liệu
Sau đây sẽ là một số hàm kích hoạt thường được sử dụng:
▪ Sigmoid
Hàm Sigmoid là một hàm phi tuyến với ngõ vào là một số thực và cho kết quả nằm trong khoảng [0,1] Nếu ngõ vào là một số thực âm rất nhỏ thì sẽ cho ra giá trị tiệm cận với 0, ngược lại, nếu đầu vào là một số thực dương lớn sẽ cho đầu ra là một số tiệm cận với 1 Tuy nhiên, hàm sigmoid hầu như không thay đổi dự đoán cho các đầu vào rất cao hoặc rất thấp, cuối cùng dẫn đến mạng lưới thần kinh sẽ không cập nhật nữa, vấn đề này được gọi là độ dốc biến mất (Vanishing Gradient) Một nhược điểm khác đó là hàm Sigmoid không đối xứng qua 0 gây khó khăn trong việc hội tụ Công thức của hàm Sigmoid được biểu diễn như sau:
Trang 33Hình 2.8: Đồ thị hàm số Tanh
Trang 34▪ ReLU
Hàm ReLU có tốc độ hội tụ và tính toán nhanh hơn hẳn hai hàm trên Trong hàm này, các đầu ra cho giá trị vào dương có thể nằm trong khoảng từ 0 đến
vô cùng nhưng khi đầu vào bằng 0 hoặc giá trị âm, hàm này sẽ xuất ra 0 và
nó cản trở Backpropagation (BP) Vấn đề này được gọi là vấn đề ReLU chết (Dying ReLU) Công thức của hàm ReLU được viết như sau:
𝜎(𝑥) = 𝑚𝑎𝑥(0, 𝑥) Hàm Leaky ReLU được phát triển ngăn chặn sự cố ReLU chết và cho phép lan truyền ngược Khuyết điểm của Leaky ReLU là độ dốc được xác định trước thay vì để mạng lưới thần kinh tìm ra nó nên sẽ tiêu tốn nhiều tài nguyên máy tính khi thực hiện
Hình 2.9: a) Đồ thi hàm số ReLU, b) Đồ thị hàm số Leaky ReLu
▪ Softmax
Hàm Softmax bình thường hóa một giá trị đầu vào thành một vector các giá trị tuân theo phân phối xác suất có tổng cộng bằng 1 Các giá trị đầu vào có thể dương, âm, bằng 0 hoặc lớn hơn một, nhưng Softmax biến chúng thành giá trị giữa 0 và 1, để chúng có thể được hiểu là xác suất Nếu một trong các đầu vào nhỏ hoặc âm, softmax biến nó thành xác suất nhỏ và nếu đầu vào
Trang 35Mini-batch SDG, Adam, …
Hình 2.10: Mô hình mô phỏng Gradient Descent
Trang 36GD bị ảnh hưởng bởi learning rate do tác động trực tiếp lên tốc độ tìm được giá trị nhỏ nhất của hàm Nếu learning rate rất nhỏ thì dẫn đến việc mỗi lần hàm số giảm rất ít nên cần rất nhiều lần lặp và có thể không tìm được giá trị nhỏ nhất để hàm số Nếu learning rate rất lớn thì hàm tiến rất nhanh tới vị trí của giá trị nhỏ nhất Tuy nhiên, nó không bao giờ đạt được giá trị nhỏ nhất mà chỉ quẩn quanh ở gần đó thôi Hiện tượng này gọi là overshoot
Hình 2.11: Ảnh hưởng của learning rate
2.8 Convolutional Neural Network
Để xử lý một tấm ảnh màu 64x64 với các công cụ bình thường sẽ có thể gây khó khăn do số lượng node sinh ra và điều này còn tệ hơn khi xử lý tấm ảnh màu 512x512 Chính vì thế mạng nơ-ron tích chập (Convolutional Neural Network- CNN) được ra đời với việc sử dụng phép tính convolution để giải quyết các vấn đề về hình ảnh
Phép tính convolution trong convolutional layer cho phép chúng ta tìm ra những đặc trưng của hình ảnh thông qua thao tác với filter (hay còn được gọi là kernel) cho
ra tensor mới chứa các đặc trưng đã được lọc ra từ ảnh gốc Sau đó, các đầu ra của layer này sẽ đi qua một số layer khác để hoàn thiện một chu trình, khi xong sẽ lại được đưa qua một convolutional layer khác
Trang 3716
Hình 2.12: Phép tính convolution với kích thước 3*3*3
Chính vì thế khi sử dụng CNN, các layer càng về sau thì mức độ sàng lọc các đặc trưng của hình ảnh ngày càng chi tiết từ nhận dạng các hình tròn tới khuôn mặt của chó, mèo Điều này được thực hiện do việc kết hợp các đặc trưng từ các layer phía trên rồi tổng kết ra các đặc trưng phức tạp hơn
Hình 2.13: Đặc điểm của khuôn mặt chó mèo được lọc ra từ một CNN
Trang 38Cấu tạo của CNN ngoài convolutional layer, chúng ta còn có:
- Pooling layer: Layer này thường được dùng giữa các convolutional layer,
để giảm kích thước dữ liệu nhưng vẫn giữ các thuộc tính quan trọng Kích thước dữ liệu giảm giúp giảm việc tính toán trong model Có 2 loại pooling layer phổ biến là max pooling và average pooling
Hình 2.14: Sau pooling layer (2*2) [3]
- Fully connected layer: Sau khi ảnh được truyền qua nhiều convolutional player và pooling layer thì model đã học được tương đối các đặc điểm của ảnh (Ví dụ: mắt, mũi, mặt,…) thì layer này được dùng để liên kết các đặc điểm của ảnh để ra kết quả của model
- Local receptive field (trường cục bộ): Lớp này có nhiệm vụ tách lọc dữ liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất
Trang 3918
- Shared weights and bias (trong số chia sẻ): Lớp này giúp làm giảm tối đa lượng tham số trong mạng CNN [4]
Hình 2.15: Ví dụ mô hình CNN
Trang 40Hình 3.1: Giao diện Anaconda Navigator
3.1.1 Jupyter Notebook
Đi kèm với Anaconda, Jupyter Notebook là một công cụ hỗ trợ mạnh mẽ cho việc lập trình với các tính năng như đưa các thành phần phức tạp vào trong code như hình ảnh, video, biểu thức Jupyter Notebook còn cho phép người dùng bật nhiều template dưới định dạng ngôn ngữ khác nhau thông qua việc tạo kernel riêng cho mỗi template Ngoài ra, khả năng cho phép người dùng chạy từng khối code giúp việc