CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 1. Giới thiệu bài toán nhận dạng chữ viết tay Nhận dạng chữ viết tay là một bài toán quan trọng trong lĩnh vực trí tuệ nhân tạo (AI) và thị giác máy tính. Nó liên quan đến việc phân tích và xác định các ký tự hoặc số được viết tay trên hình ảnh đầu vào. Mục tiêu là phát triển một hệ thống tự động có khả năng nhận dạng chính xác các ký tự viết tay mà không cần sự can thiệp của con người.
Thách thức của bài toán: • Sự đa dạng trong cách viết của mỗi người. • Chất lượng hình ảnh có thể bị ảnh hưởng bởi độ nhiễu, ánh sáng hoặc độ phân giải. • Hình dạng chữ viết tay không đồng nhất, phụ thuộc vào phong cách cá nhân. Vai trò của nhận dạng chữ viết tay trong các ứng dụng thực tế Nhận dạng chữ viết tay có ứng dụng rộng rãi trong nhiều lĩnh vực, góp phần tự động hóa các quy trình thủ công.
Một số ứng dụng phổ biến bao gồm: • Ngân hàng: Nhận dạng số trên phiếu gửi tiền, séc hoặc mã số tài khoản. • Bưu chính: Tự động đọc mã bưu điện, địa chỉ trên bưu phẩm. • Giáo dục: Xử lý phiếu trắc nghiệm hoặc chấm điểm tự động từ các bài kiểm tra viết tay. • Hệ thống nhận dạng thông minh: Áp dụng trong các thiết bị đầu vào như máy tính bảng hoặc điện thoại, hỗ trợ chuyển đổi chữ viết tay thành văn bản số.
Giới thiệu dataset MNIST Dataset MNIST (Modified National Institute of Standards and Technology) là một tập dữ liệu tiêu chuẩn trong lĩnh vực học máy, thường được sử dụng để kiểm tra và đánh giá hiệu quả của các mô hình nhận dạng chữ viết tay. Đặc điểm của dataset MNIST: • Quy mô dữ liệu: Tổng cộng có 70.000 hình ảnh, được chia thành: o 60.000 hình ảnh cho tập huấn luyện (training set).000 hình ảnh cho tập kiểm tra (test set). • Định dạng hình ảnh: o Hình ảnh đen trắng kích thước 28x28 pixel. o Giá trị của mỗi pixel nằm trong khoảng từ 0 (đen hoàn toàn) đến 255 (trắng hoàn toàn).
o Hình ảnh được tiền xử lý để cân chỉnh kích thước và tập trung số viết tay vào vùng trung tâm. • Nhãn (labels): Mỗi hình ảnh tương ứng với một chữ số từ 0 đến 9, giúp mô hình học cách phân loại đúng chữ số. Dataset MNIST là lựa chọn lý tưởng cho các bài toán học máy vì: • Dữ liệu đã được chuẩn hóa, dễ sử dụng và không yêu cầu xử lý phức tạp. • Là tiêu chuẩn để so sánh các mô hình và thuật toán khác nhau.
Mục tiêu của bài tập Bài tập này nhằm xây dựng một mô hình dựa trên mạng nơ-ron tích chập (Convolutional Neural Network - CNN) để giải quyết bài toán nhận dạng chữ viết tay trên dataset MNIST. Các mục tiêu cụ thể: 1. Xây dựng mô hình CNN o Thiết kế kiến trúc CNN phù hợp để nhận dạng chính xác chữ số viết tay. o Huấn luyện mô hình trên tập dữ liệu MNIST để tối ưu hóa khả năng phân loại.
Đánh giá hiệu quả của mô hình o Sử dụng các chỉ số đánh giá để kiểm tra hiệu suất mô hình: ▪ Độ chính xác (Accuracy): Phần trăm số lần mô hình dự đoán đúng so với tổng số dự đoán. ▪ Độ nhạy (Sensitivity): Khả năng mô hình nhận diện đúng các chữ số thực sự có trong ảnh. 8 ▪ Độ đặc hiệu (Specificity): Mức độ mô hình không nhận nhầm các chữ số khác nhau. Ứng dụng thực tế o Tích hợp mô hình vào một hệ thống đơn giản, kiểm thử khả năng dự đoán chữ viết tay trên dữ liệu mới (ví dụ: chữ viết do người dùng tạo ra).
Giới thiệu về CNN (Convolutional Neural Network) 1. Khái niệm về CNN và ứng dụng trong xử lý hình ảnh • CNN là một loại mạng nơ-ron chuyên biệt để xử lý dữ liệu dạng hình ảnh, âm thanh hoặc video. • CNN có khả năng học các đặc trưng quan trọng từ hình ảnh thông qua các tầng chập (Convolutional Layers) và tầng gộp (Pooling Layers). • Ứng dụng: o Phân loại hình ảnh (Image Classification).
o Nhận diện đối tượng (Object Detection). o Phân đoạn ảnh (Image Segmentation). o Các lĩnh vực như thị giác máy tính (Computer Vision), xe tự hành, thương mại điện tử. Các thành phần chính của CNN CNN được xây dựng từ nhiều lớp khác nhau, mỗi lớp thực hiện một nhiệm vụ cụ thể trong quá trình trích xuất và xử lý đặc trưng từ dữ liệu đầu vào.
Cấu trúc điển hình của CNN bao gồm bốn loại lớp chính: Convolutional Layer, Activation Layer, Pooling Layer, và Fully Connected Layer. Mỗi lớp có vai trò cụ thể và cùng nhau tạo thành một mạng CNN mạnh mẽ. Hình 1: Cấu trúc của mô hình CNN 1. Lớp tích chập (Convolutional Layer) Lớp tích chập là nền tảng cốt lõi của CNN, chịu trách nhiệm trích xuất các đặc trưng từ hình ảnh đầu vào.
Bộ lọc (filter) sẽ trượt qua ảnh và tính toán phép tích chập giữa ảnh 10 và bộ lọc đó. Công thức của phép tích chập hai chiều: Trong đó: • X: Ma trận đầu vào biểu diễn hình ảnh. • K: Ma trận kernel (bộ lọc). • Y[i,j]: Giá trị đầu ra tại vị trí (i,j) sau khi thực hiện phép tích chập.
Lớp kích hoạt (Activation Function) Sau khi thực hiện phép tích chập, dữ liệu sẽ đi qua lớp kích hoạt để thêm tính phi tuyến vào mô hình. Hàm kích hoạt phổ biến nhất là ReLU (Rectified Linear Unit): ReLU(x)=max(0,x) ReLU giúp loại bỏ các giá trị âm trong đầu ra của phép tích chập, giữ lại các giá trị dương và giúp tăng tốc quá trình huấn luyện. Lớp gộp (Pooling Layer) Lớp gộp có nhiệm vụ giảm kích thước không gian của bản đồ đặc trưng, giúp giảm số lượng tham số và tính toán trong mạng. Lớp gộp còn làm cho mô hình bền vững hơn với các phép biến đổi như dịch chuyển hoặc xoay ảnh.
Phổ biến nhất là Max Pooling, với công thức: Y[i,j]=max(X[i:i+f,j:j+f]) Trong đó f là kích thước của cửa sổ gộp. Lớp dồn đầy (Fully Connected Layer) Sau khi đi qua nhiều lớp tích chập và gộp, các bản đồ đặc trưng sẽ được làm phẳng thành một vector một chiều và đưa vào các lớp hoàn toàn kết nối. Lớp này sử dụng hàm kích hoạt softmax cho các bài toán phân loại đa lớp: 11 Trong đó: • zi: Đầu ra của nơ-ron tại lớp fully connected. • n: Số lớp phân loại đầu ra.
Backpropagation Quá trình huấn luyện CNN sử dụng thuật toán lan truyền ngược để tối ưu hóa các tham số bằng cách giảm thiểu hàm mất mát (loss function). Hàm mất mát phổ biến cho bài toán phân loại là cross-entropy: 1. Tóm tắt quy trình xây dựng CNN • Kết hợp các lớp trên trong một kiến trúc CNN hoàn chỉnh: 1. Lớp tích chập: Trích xuất đặc trưng.
Lớp kích hoạt: Đưa phi tuyến tính vào mạng. Lớp gộp: Giảm kích thước không gian. Lớp dồn đầy: Tích hợp thông tin và đưa ra dự đoán. Các khái niệm chính trong CNN 1.
Stride Stride là bước nhảy của cửa sổ tích chập khi nó di chuyển qua ảnh đầu vào. Giá trị stride quyết định tốc độ di chuyển của cửa sổ. Nếu stride bằng 1, cửa sổ tích chập sẽ di chuyển từng bước một qua các pixel, còn nếu stride bằng 2, cửa sổ sẽ di chuyển cách 2 pixel một lần. Hình 2 Sơ đồ mô tả Stride 12 Giá trị stride càng lớn, kích thước của đầu ra sẽ nhỏ hơn vì cửa sổ tích chập sẽ bỏ qua nhiều pixel hơn.
Điều này có thể làm giảm độ phân giải của đầu ra, nhưng đồng thời giảm thiểu khối lượng tính toán. Padding Padding là kỹ thuật thêm các pixel giả (thường là giá trị 0, gọi là zero padding) xung quanh biên của ảnh đầu vào. Điều này giúp duy trì kích thước đầu ra sau khi tích chập. Hình 3 Sơ đồ mô tả Padding Trong nhiều trường hợp, người ta thêm padding để kích thước đầu ra của lớp tích chập không bị giảm.
Ví dụ, nếu không có padding, mỗi lần tích chập có thể làm giảm kích thước không gian của ảnh đầu ra. Filters (Kernels) Filters hay còn gọi là kernels là các ma trận nhỏ được áp dụng lên ảnh đầu vào trong quá trình tích chập. Các bộ lọc này thực hiện việc quét qua toàn bộ ảnh đầu vào, tính toán các giá trị mới dựa trên phép nhân tích chập giữa bộ lọc và các phần tương ứng của ảnh. Sơ đồ Filter Mỗi bộ lọc sẽ phát hiện các đặc trưng cụ thể, chẳng hạn như cạnh, đường nét, hoặc chi tiết phức tạp hơn ở các lớp sâu.
Mỗi lớp tích chập trong mạng CNN có thể sử dụng nhiều bộ lọc để phát hiện nhiều đặc trưng khác nhau. Feature Maps Feature Maps (Bản đồ đặc trưng) là kết quả đầu ra của một lớp tích chập sau khi áp dụng các bộ lọc lên ảnh đầu vào. Đây là nơi lưu trữ các đặc trưng đã được phát hiện bởi các bộ lọc trong quá trình tích chập. Feature maps thể hiện sự hiện diện của các đặc trưng (như cạnh, góc) trong một bức ảnh tại các vị trí không gian khác nhau.
Các feature maps càng sâu trong mạng CNN thì chứa các đặc trưng càng phức tạp, trừu tượng hơn. Mô hình kiến trúc đề xuất 2. Cấu trúc tổng quan của mô hình CNN Kiến trúc tổng quát: • Đầu vào: Hình ảnh grayscale kích thước 28×28. • Các thành phần chính: 1.
Lớp tích chập (Convolutional Layers): Trích xuất đặc trưng từ hình ảnh. Lớp gộp (Pooling Layers): Giảm kích thước không gian, giảm số lượng tham số và tính toán. Dropout Layers: Loại bỏ một số nơ-ron ngẫu nhiên để giảm hiện tượng overfitting. Lớp dồn đầy (Fully Connected Layers): Dự đoán nhãn của hình ảnh thông qua hàm softmax.
Cấu trúc đề xuất: 1. Lớp 1: o Tích chập 3×3, đầu ra 32 kênh. o Kích hoạt ReLU. Lớp 2: o Tích chập 3×3, đầu ra 64 kênh.
o Kích hoạt ReLU. o Dropout (tỉ lệ p=0. Lớp 3: o Fully Connected Layer 1: 128 nơ-ron, kích hoạt ReLU. o Dropout (tỉ lệ p=0.
o Kích hoạt Softmax để tính xác suất các lớp. Giải thích vai trò của từng thành phần 1. Lớp tích chập (Convolutional Layers): o Trích xuất các đặc trưng cục bộ từ hình ảnh, ví dụ: cạnh, góc, mẫu hình. o Các bộ lọc (filter/kernel) giúp phát hiện đặc trưng ở nhiều cấp độ trừu tượng khác nhau.
Lớp gộp (Pooling Layers): o Giảm kích thước không gian của đặc trưng mà vẫn giữ lại thông tin quan trọng. o MaxPooling giúp tập trung vào các đặc trưng mạnh nhất trong vùng ảnh. Dropout Layers: o Loại bỏ ngẫu nhiên một số nơ-ron trong quá trình huấn luyện để tránh overfitting. Lớp dồn đầy (Fully Connected Layers): o Tích hợp toàn bộ thông tin đặc trưng đã học để đưa ra dự đoán cuối cùng.
o Softmax chuyển đổi đầu ra thành xác suất để phân loại.