TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ===== o0o ===== BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO Đề tài Tìm hiểu mạng CNN và ứng dụng nhận dạng ký tự chữ cái Hà Nội 08/2023 1 MỤC LỤC MỤC LỤ[.]
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN ===== o0o ===== BÀI TẬP LỚN MƠN: TRÍ TUỆ NHÂN TẠO Đề tài: Tìm hiểu mạng CNN ứng dụng nhận dạng ký tự chữ Hà Nội - 08/2023 MỤC LỤC MỤC LỤC .5 DANH MỤC HÌNH ẢNH DANH MỤC VIẾT TẮT LỜI MỞ ĐẦU CHƯƠNG I TÌM HIỂU CHUNG VỀ MẠNG NƠ RON CNN 10 1.1 Tổng quan mạng CNN 10 1.1.1 Khái niệm chung 10 1.1.2 Ưu điểm .11 1.1.3 Nhược điểm .11 1.2 Lớp tích chập – Convolution Layer 12 1.2.1 Khái niệm 12 1.2.2 Bộ Lọc (Filter Kernel) .12 1.2.3 Bước di chuyển (Stride) .13 1.2.4 Đệm (Padding) 14 1.3 Lớp gộp – Pooling Layer 14 1.3.1 Khái niệm 14 1.3.2 Max Pooling 14 1.3.3 Average Polling 14 1.3.4 Sum Pooling 14 1.4 Fully connected layer 15 1.4.1 Khái niệm 15 1.4.2 Cách hoạt động Fully Connected Layer 15 1.5 Các công cụ .15 1.5.1 Windows PowerShell .15 a Giới thiệu .15 b Tính .15 1.5.2 Visual Studio Code 16 a Giới thiệu .16 b Tính .16 1.5.3 b ResNet .16 Đặc điểm .16 a Giới thiệu .17 1.5.4 TensorFlow 17 a Giới thiệu 17 b Các option tải liệu vào TensorFlow 19 CHƯƠNG II ỨNG DỤNG CNN TRONG NHẬN DẠNG CHỮ CÁI .20 2.1 Giới thiệu toán .20 2.2 Tập liệu 20 2.3 Kaggle A-Z 20 2.4 MNIST 20 2.5 Các bước thực 21 2.5.1 Import thư viện cần thiết .21 2.5.2 Xây dựng trình phân tích cú pháp đối số .21 2.5.3 Xử lý liệu từ liệu A-Z MNIST .21 2.5.4 Khởi tạo biên dịch mạng lưới CNN 22 2.5.4.1 Sử dụng SGD (Stochastic Gradient Descent) tối ưu hóa với learning rate ‘INIT_LR’ 22 2.5.4.2 Xây dựng mơ hình ResNet 22 2.5.4.2.1 Phương thức residual_module 23 2.5.4.2.2 Phương thức Build 24 2.5.4.2.2.1 Định nghĩa hình dạng liệu đầu vào 25 2.5.4.2.2.2 Xây dựng lớp kiến trúc mạng ResNet 26 2.5.4.2.2.3 Các lớp xử lý cuối mơ hình mạng CNN 27 2.5.4.2.2.4 Phương thức khởi tạo mơ hình Keras 28 2.5.5 Trainning 28 2.5.6 Định nghĩa đánh giá liệu 28 2.5.7 Xây dựng biểu đồ lưu lịch sử training 29 2.5.8 Xây dựng chương trình nhận biết kí tự chữ 29 2.5.9 Kết chương trình 32 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 35 DANH MỤC HÌNH ẢNH Hình 1: Hình ảnh ma trận RGB 6x6x3 Hình 2: Tồn luồng CNN để xử lý hình ảnh đầu vào phân loại đối tượng dựa giá trị Hình 3: Hình ảnh tích chập khác áp dụng Kernel khác Hình 4: Lớp tích chập hoạt động với Stride Hình 5: Ví dụ TensorFlow Hình 6: Tập liệu “A-Z” Kaggle Hình 7: Tập liệu MNIST Hình 8: Import thư viện cần thiết Hình 9: Đoạn mã xây dựng phân tích đối số Hình 10: Đoạn mã xử lý liệu từ liệu A-Z MNIST Hình 11: Đoạn mã sử dụng SGD để tối ưu hóa mơ hình ResNet Hình 12: Xây dựng hàm residual_module Hình 13: Đoạn mã định nghĩa hình dạng liệu đầu vào Hình 14: Vịng lặp số lượng giai đoạn ResNet Hình 15: Đoạn mã áp dụng lớp chuẩn hóa batch Hình 16: Đoạn mã tạo mơ hình Keras Hình 17: Đoạn mã huấn luyện Hình 18: Đoạn mã định nghĩa đánh giá liệu Hình 19: Đoạn mã xây dựng biểu đồ lưu lịch sử training Hình 20: Đoạn mã xây dựng chương trình nhận biết chữ Hình 21: Đoạn mã xây dựng chương trình nhận biết chữ Hình 22: Kết chương trình Hình 23: Kết chương trình 10 11 13 14 18 20 21 21 21 22 22 23 25 26 27 28 28 29 29 30 31 32 33 DANH MỤC VIẾT TẮT TT 10 Ký hiệu chữ viết tắt CNN H D W VS Code ResNet API ML MNIST SGD Chữ viết đầy đủ Convolutional Neural Network Height Depth Width Visual Studio Code Residual Network Application Programming Interface Machine Learning Modified National Institute of Standards and Technology Stochastic Gradient Descent LỜI MỞ ĐẦU Để hoàn thành báo cáo này, chúng em nhận nhiều hướng dẫn từ phía thầy khoa Sự giảng dạy chu đáo, tận tình giúp đỡ nhiệt tình từ thầy giúp chúng em hiểu nhiều vấn đề hoàn thành báo cáo tốt Chúng em tỏ lòng biết ơn sâu sắc với cô Lê Thị Thuỷ, người cô tận tình hướng dẫn giúp đỡ, bảo nhóm em suốt q trình nghiên cứu đề tài hoàn thành báo cáo Sau khoảng thời gian cô Lê Thị Thủy đưa đề tài, chúng em nỗ lực cố gắng việc tìm hiểu đề tài Các bạn nhóm cộng chăm giúp đỡ lẫn báo cáo hoàn hảo đến thời điểm Một lần nhóm em xin cảm ơn giảng viên Lê Thị Thủy, bạn lớp tập thể nhóm làm việc hoàn thành tốt báo cáo Chúng em xin chân thành cảm ơn! CHƯƠNG I TÌM HIỂU CHUNG VỀ MẠNG NƠ RON CNN Deep learning đời từ tảng ý tưởng lĩnh vực machine learning neural network tồn từ thập kỷ 1940 1950 Tuy nhiên, khái niệm "deep learning" hiểu ngày hình thành phát triển mạnh mẽ năm gần Deep learning phần trường machine learning (học máy), tập trung vào việc xây dựng huấn luyện mạng nơ-ron nhân tạo sâu (deep neural networks) để thực nhiệm vụ phân loại, dự đoán xử lý liệu phức tạp Deep learning tạo cách mạng nhiều lĩnh vực thị giác máy tính, xử lý ngơn ngữ tự nhiên, nhiều ứng dụng khác Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) mơ hình Deep Learning tiên tiến Nó giúp cho xây dựng hệ thống thông minh với độ xác cao CNN sử dụng nhiều toán nhận dạng object ảnh Để tìm hiểu thuật tốn sử dụng rộng rãi cho việc nhận dạng (detection), tìm hiểu thuật tốn 1.1 Tổng quan mạng CNN 1.1.1 Khái niệm chung - Trong mạng neural, mơ hình mạng neural tích chập (CNN) mơ hình để nhận dạng phân loại hình ảnh Trong đó, xác định đối tượng nhận dạng khuôn mặt số lĩnh vực mà CNN sử dụng rộng rãi - CNN phân loại hình ảnh cách lấy hình ảnh đầu vào, xử lý phân loại theo hạng mục định (Ví dụ: Chó, Mèo, Hổ, ) Máy tính coi hình ảnh đầu vào mảng pixel phụ thuộc vào độ phân giải hình ảnh Dựa độ phân giải hình ảnh, máy tính thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày) Hình 1: Hình ảnh ma trận RGB 6x6x3 - Về kỹ thuật, mơ hình CNN để training kiểm tra, hình ảnh đầu vào chuyển qua loạt lớp tích chập với lọc (Kernals), tổng hợp lại lớp kết nối đầy đủ (Full Connected) áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất Hình 2: Tồn luồng CNN để xử lý hình ảnh đầu vào phân loại đối tượng dựa giá trị 1.1.2 Ưu điểm -Trích xuất đặc trưng tự động: CNN tự động học cách trích xuất đặc trưng quan trọng từ liệu ảnh mà không cần phải xác định rõ ràng đặc trưng cụ thể Điều giúp giảm thiểu công việc thủ công tốn thời gian để thiết lập đặc trưng thủ công - Xử lý liệu không gian: CNN thiết kế đặc biệt để xử lý liệu không gian ảnh âm Các lớp tích chập gộp cho phép hiệu việc trích xuất thơng tin từ cấu trúc khơng gian - Phân loại nhận dạng tốt: CNN đạt hiệu suất ấn tượng nhiệm vụ phân loại nhận dạng Điều bao gồm nhận biết khn mặt, phân loại đối tượng, dự đốn từ ảnh, nhiều nhiệm vụ khác - Tích hợp thơng tin cục bộ: Các lớp tích chập CNN cho phép mạng tập trung vào việc xử lý thông tin cục phần nhỏ liệu ảnh Điều giúp mạng nhận biết đặc trưng cục tạo biểu diễn chất lượng cao - Khả học tập sâu: CNN thiết kế với nhiều lớp kích thước khác nhau, cho phép học đặc trưng ngày phức tạp sâu Điều giúp mạng học biểu diễn tổng hợp trừu tượng từ liệu ảnh - Hiệu suất cao: Các mơ hình CNN tiên tiến có khả đạt hiệu suất cao thách thức thi nhận dạng hình ảnh (ImageNet) ứng dụng thực tiễn xe tự hành 1.1.3 Nhược điểm - Số lượng tham số tài ngun tính tốn: Các mạng CNN tiên tiến thường có hàng triệu chí hàng tỷ tham số Điều địi hỏi tài ngun tính toán lớn để huấn luyện triển khai, đặc biệt thiết bị có tài nguyên hạn chế điện thoại di động - Overfitting: Trong mạng CNN lớn, có nguy mơ hình bị overfitting, tức mơ hình học q nhiều từ liệu huấn luyện khơng tổng qt hóa tốt liệu Điều dẫn đến hiệu suất liệu khơng nhìn thấy trước - Dữ liệu huấn luyện hạn chế: Mạng CNN yêu cầu lượng lớn liệu huấn luyện để học hiệu Nếu liệu không đủ đa dạng không đại diện, mơ hình khơng học biểu diễn tổng quát - Chuẩn bị liệu: Trước áp dụng CNN, liệu thường cần phải chuẩn bị tiền xử lý cách cẩn thận, bao gồm việc thay đổi kích thước ảnh, chuẩn hóa liệu loại bỏ nhiễu - Khả biểu diễn không tốt cho liệu không gian tương đối dài: Mạng CNN hiệu biểu diễn thông tin thứ tự tương quan không gian dài hơn, chẳng hạn dãy thời gian dài 1.2 Lớp tích chập – Convolution Layer 1.2.1 Khái niệm Lớp tích chập (Convolutional Layer) phần quan trọng mạng nơ-ron tích chập (Convolutional Neural Network - CNN) Lớp tích chập chịu trách nhiệm cho việc tìm trích xuất đặc trưng cục từ liệu đầu vào, thường hình ảnh, cách áp dụng phép tích chập 1.2.2 Bộ Lọc (Filter Kernel) Đây ma trận nhỏ chứa trọng số áp dụng lên vùng cục liệu đầu vào (ví dụ: hình ảnh) Bộ lọc ma trận có kích thước nhỏ, chẳng hạn 3x3 5x5 Hình 3: Hình ảnh tích chập khác áp dụng Kernel khác 1.2.3 Bước di chuyển (Stride) Stride số pixel thay đổi ma trận đầu vào Khi stride ta di chuyển kernel pixel Khi stride ta di chuyển kernel pixel tiếp tục Hình lớp tích chập hoạt động với stride 10 Hình 7: Tập liệu MNIST 2.5 Các bước thực 2.5.1 Import thư viện cần thiết Hình 8: Import thư viện cần thiết 2.5.2 Xây dựng trình phân tích cú pháp đối số Hình 9: Đoạn mã xây dựng phân tích đối số 2.5.3 Xử lý liệu từ liệu A-Z MNIST 18 Hình 10: Đoạn mã xử lý liệu từ liệu A-Z MNIST 2.5.4 Khởi tạo biên dịch mạng lưới CNN 2.5.4.1 Sử dụng SGD (Stochastic Gradient Descent) tối ưu hóa với learning rate ‘INIT_LR’ Hình 11: Đoạn mã sử dụng SGD để tối ưu hóa mơ hình ResNet 2.5.4.2 Xây dựng mơ hình ResNet 19 Ý tưởng đằng sau ResNet sử dụng kết nối dư thừa, kết nối bỏ qua, phép mạng học hàm dư thừa Điều giúp giải vấn đề biến gradient cho phép đào tạo mạng sâu Lớp ResNet với hai phương thức tĩnh: residual_module build Phương thức residual_module định nghĩa mô-đun dư thừa nhất, bao gồm nhiều lớp tích chập với chuẩn hóa batch kích hoạt ReLU Phương thức build xây dựng tồn mơ hình ResNet cách xếp chồng nhiều mô-đun dư thừa lên 2.5.4.2.1 Phương thức residual_module Hình 12: Xây dựng hàm residual_module Hàm residual_module, phần kiến trúc ResNet Hàm nhận nhiều đối số, bao gồm data, đầu vào cho mô-đun dư thừa, K, số lượng lọc lớp tích chập, stride, 20