Tư tưởng chính của phương pháp này là biến một bức ảnh từ độ phân giải cao về ảnh có độ phân giải thấp hơn nhưng lại mang nhiều thông tin hơn cho quá trình nhận dạng hơn (bằng phép nhân chập và thu nhỏ ảnh). Phương pháp này đạt hiệu quả cao cho việc trích đặc trưng chữ viết tay là bởi vì nhờ thao tác nhân chập nó làm nổi bật lên được các đường nét, hình dạng, các giao điểm... của ký tự viết tay. Hơn nữa các đặc trưng của nó ít bị thay đổi bởi các phép dịch ảnh và phép biến dạng bóp méo ảnh (distortion).
1) Kiến trúc mạng
Ta giả thiết ảnh đầu vào có kích thước 29x29, dưới đây là kiến trúc mạng để lấy đặc trưng:
+Bước 1: Đầu tiên ta sử dụng 5 mặt nạ nhân chập khác nhau kích thước 5x5 thực hiện thao tác nhân chập lên ảnh gốc, sau khi nhân chập ta thực hiện phép thu nhỏ ảnh đi 2 lần. Vì quá trình nhân chập không tác động lên những điểm biên nên sau một phép nhân chập và thu nhỏ thì kích thước mới của ảnh sẽ là (n-3)/2 (n là kích thước ảnh ban đầu).
+Bước 3: với mỗi ảnh ở lớp thứ 3 ta lại dùng 2 mặt nạ nhân chập khác nhau kích thước 5x5 thực hiện nhân chập ta thu được 100 ảnh kích thước 1x1. Ta xem đây chính là 100 đặc trưng của ảnh gốc ban đầu.
Hình 23: Quá trình trích chọn đặc trưng sử dụng mạng Neural nhân chập
Hình 24: Minh họa quá trình lấy đặc trưng bằng mạng Neuron nhân chập
2) Huấn luyện mạng
Quá trình huấn luyện mạng Neural nhân chập là quá trình xác định các hệ số của các mặt nạ nhân chập. Để làm được điều này người ta xem kiến trúc ở hình 23 như là một mạng Neural tuyến tính truyền thẳng nhiều tầng sau đó thêm bộ phân lớp tuyến tính vào sau, rồi người ta huấn luyện mạng bằng phương pháp lan truyền ngược (chi tiết xem thêm [8,16]). 2.4 THỰC NGHIỆM Input Lớp 2 Lớp 3 Đặc trưng Input 29x29 5x13x13 50x5x5 100x1x1 Convolution+ Subsampling Convolution+ Subsampling Convolution
2.4.1 Kết quả
Dưới đây xin giới thiệu giới thiệu kết quả thực nghiệm so sánh hiệu suất của các phương pháp trích chọn đặc trưng chữ viết đã nêu ở trên. Ở tôi đây sử dụng bộ dữ liệu MNIST để thực hiện huấn luyện và kiểm tra. Bộ dữ liệu gồm 60000 dữ liệu huấn luyện, và 10000 dữ liệu kiểm tra, một dữ liệu là một bức ảnh kích thước 28x28 của một ký tự chữ số Arap. Tôi sử dụng bộ phân lớp là mạng Neural RBF với các phương pháp huấn luyện là: phương pháp huấn luyện 2-pha HDH, 1-pha+giả nghịch đảo, 2- pha + giả nghịch đảo.
Cấu hình máy tiến hành thực nghiệm: HĐH Windows XP Professional, CPU Intel Core 2 Duo E6300 1.86GHz, RAM 2G.
Dưới đây là bảng kết quả thực nghiệm:
Bảng 2: Kết quả so sánh hiệu suất của các phương pháp trích chọn đặc trưng
2.4.2 Nhận xét
Từ bảng số liệu trên ta thấy ta thấy ưu điểm vượt trội của phương pháp trích đặc trưng sử dụng mạng Neural nhân chập(Convolution), ta thấy ở cả 3 phương pháp huấn luyện mạng đều cho kết quả nhận dạng chính xác trên 99.1%. Phương pháp huấn luyện mạng HDH có thời gian huấn luyện mạng nhanh hơn nhưng có độ chính xác nhận dạng kém hơn phương pháp huấn luyện mạng 2 pha + giả nghịch đảo. Chú ý thời gian huấn Phương pháp trích chọn đặc trưng Phương pháp huấn luyện mạng Thời gian huấn luyện mạng(phút) Số lần nhận dạng sai trên bộ dữ liệu kiểm tra Độ chính xác(%) DCT+PCA 2 pha HDH 15.59 834 91.66% Legendre 2 pha HDH 8.94 818 91.82% Convolution 2 pha HDH 10.73 82 99.18%
DCT+PCA 1 pha+giả nghịch đảo 15.56 1633 83.67%
Legendre 1 pha+giả nghịch đảo 12.45 1713 82.87%
Convolution 1 pha+giả nghịch đảo 11.34 96 99.14%
DCT+PCA 2 pha+giả nghịch đảo 25.00 354 96.46%
Legendre 2 pha+giả nghịch đảo 15.51 500 95%
CHƯƠNG 3
CÁC PHƯƠNG PHÁP CẢI THIỆN HIỆU SUẤT CỦA MẠNG NEURAL RBF
Nội dung chương này gồm có:
3.1 Các phương pháp cải thiệu hiệu suất của mạng Neural RBF 3.2 Thực nghiệm 3.2 Thực nghiệm 3.2 Thực nghiệm
3.1 CÁC PHƯƠNG PHÁP CẢI THIỆU HIỆU SUẤT CỦA MẠNG NEURAL RBF
Dưới đây là nội dung một số phương pháp nhằm cải thiện hiệu suất của mạng Neural RBF trong vấn đề nhận dạng chữ viết tay. Cải thiện hiệu suất ở đây có nghĩa là làm sao để tăng được chất lượng nhận dạng cũng như làm giảm được thời gian huấn luyện mạng và chi phí cài đặt mạng.
3.1.1 Tăng tập dữ liệu huấn luyện
Ta thấy rằng trong bài toán phân lớp dữ liệu huấn luyện đóng vai trò rất quan trọng, nó ảnh hưởng trực tiếp đến chất lượng phân lớp, tập dữ liệu huấn luyện càng lớn thì chất lượng phân lớp càng cao. Tuy nhiên để tạo ra một tập dữ liệu tốt thì mất rất nhiều chi phí do đa phần việc tạo tập dữ liệu huấn luyện là phải làm thủ công. Vì vậy nếu có một cách nào đó làm tăng số lượng dữ liệu cho tập dữ liệu huấn luyện thì sẽ làm cho kết quả nhận dạng sẽ tốt hơn và chi phí cũng giảm đáng kể. Việc tăng số lượng tập dữ liệu phải đảm bảo được chất lượng và tính tự nhiên vốn có của nó, cũng như việc trích chọn đặc trưng thì việc tăng số lượng tập dữ liệu huấn luyện không có cách tổng quát đủ tốt, phải tùy vào bài toán cụ thể. Dưới đây tôi giới thiệu phương pháp tăng tập dữ liệu huấn luyện cho bài toán nhận dạng chữ viết tay bằng các biến phép biến đổi hình học.
a) Biến đổi Elastic
Phép biến đổi ảnh này thực ra người ta dùng một ma trận mặt nạ dạng vector với ý nghĩa là điểm nào trên ảnh gốc trùng với điểm gốc của một vector nào đấy thì sẽ bị dịch chuyển đến điểm ngọn của vector tương ứng.
Hình 21: Ma trận vector cho phép biến đổi Elastic
Hình 22: Ví dụ về phép biến đổi Elastic
Hình 22 là ví dụ về phép biến đổi elastic, ta thấy rằng từ ảnh gốc bên trái sau 2 phép biến đổi elastic ta được thêm 2 ảnh khác cho dữ liệu đầu vào, bằng trực quan ta thấy rằng dữ liệu này rất đảm bảo chất lượng. Ngoài phép biến đổi Elastic người ta còn dùng kết hợp các phép biến đổi affine như: dịch ảnh, xoay ảnh, hay phóng to thu nhỏ… để cho được dữ liệu mới. Tuy nhiên phép biến đổi Elastic vẫn thông dụng hơn trong bài toán nhận dạng chữ viết tay do dữ liệu nó sinh ra đảm bảo chất lượng hơn và việc cài đặt thuật toán cũng như thời gian chạy của nó là rất nhanh.
3.1.2 Phương pháp học tập hợp
Học tập hợp là các phương pháp học mà hàm mục tiêu được học bằng cách huấn luyện một số bộ học độc lập sau đó kết hợp chúng lại với nhau. Có thể mô hình toán học bằng công thức sau: hF h h( ,1 2,...,hn) trong đó h có thể coi là phương pháp học tập hợp, h h1, 2,...,hn là các bộ học độc lập, F là một cách kết hợp nào đấy.
Như vậy với phương pháp học tập hợp chúng ta phải giải quyết 2 vấn đề:
+Thứ nhất: làm sao để tạo ra được các bộ học độc lập, độc lập ở đây có nghĩa là các bộ học phải có các phương pháp huấn luyện khác nhau, hay phải có các bộ dữ liệu huấn luyện khác nhau.
Vấn đề thứ hai thường được giải quyết bằng cách kết hợp tuyến tính các bộ học lại với nhau tức là: 1 n i i i h w h
trong đó các trọng số wi được nhận giá trị lớn nếu bộ hi được đánh giá là tin cậy hơn các bộ học khác, ngược lại với các bộ học hi không đáng tin cậy thì ta cho trọng số wi tương ứng có giá trị nhỏ.
Để giải quyết vấn đề thứ nhất có nhiều phương pháp để tiếp cận, xin giới thiệu 2 phương pháp thường được hay dùng đó là phương pháp: bagging và boosting.
+Bagging(Bootstrap aggregating)
Có thể tóm tắt phương pháp như sau: Giả sử ta có một bộ dữ liệu huấn luyện D gồm có
n dữ liệu, phương pháp bagging sinh M bộ dữ liệu huấn luyện Di D có số lượng '
n n, các bộ học hi được huấn luyện bằng bộ dữ liệu Di tương ứng. Sau đó các bộ học được kết hợp bằng cách sau: 1 M i i i h w h với wi 1 ; i 1..M M +Boosting
Tư tưởng chính của thuật toán như sau: Giả sử ta có bộ dữ liệu huấn luyện D, ta đánh trọng số cho các dữ liệu trong tập dữ liệu huấn luyện, đầu tiên các trọng số được gán bằng nhau. Tại mỗi bước thứ t của thuật toán, ta chọn bộ dữ liệu Dt D sao cho các dữ liệu trong bộ dữ liệu Dt là những dữ liệu được đánh trọng số cao nhất, sau đó ta huấn luyện bộ học ht bằng bộ dữ liệu Dt. Sau khi huấn luyện xong ta dùng bộ học ht để thẩm định lại tập dữ liệu D những dữ liệu nào bị phân lớp sai thì ta tăng trọng số của nó lên 1, những dữ liệu phân lớp đúng ta giảm trọng số của nó đi 1. Lặp lại T lần như thế ta được T bộ học độc lập, ta có thể gán trọng số các bộ học này theo số lượng mà nó phân lớp đúng.
3.1.2.1 Phương pháp học tập hợp cải tiến
Phương pháp này lấy tư tưởng chính của phương pháp học tập hợp như đã nêu ở trên, chỉ khác là kết quả của đầu ra cuối cùng không phải là tổ hợp tuyến tính của các bộ học mà đầu ra của các bộ học lại được huấn luyện một lần nữa cho kết quả cao hơn (nghĩa là ta tổ hợp phi tuyến tính các bộ học với nhau, thông qua mạng Neural RBF). Dưới đây là kiến trúc tổng thể của phương pháp học tập hợp cải tiến để giải quyết cho bài nhận dạng chữ số viết tay:
Hình 23: Kiến trúc của phương pháp học tập hợp cải tiến
Ở đây tôi sử dụng các phương pháp trích chọn đặc trưng đơn giản có tốc độ tính toán nhanh (PCA, LEGENDRE, SUBSAMPLING-thu nhỏ ảnh) để tạo ra các bộ học khác nhau. Sau khi huấn luyện chúng qua mạng neural RBF tôi lại tổng hợp các đầu ra của các mạng Neural này và huấn luyện chúng lại một lần nữa bằng mạng Neural RBF. Phương pháp này tận dụng tối đa ưu điểm của mạng Neural RBF đó là thời gian huấn luyện mạng rất nhanh, trong khi để có một mạng có chất lượng tốt phương pháp mạng Neural nhân chập phải mất nhiều giờ thậm chí là nhiều ngày huấn luyện mạng để trích chọn giá trị đặc trưng thì với phương pháp này chỉ mất hơn một 1h để huấn luyện mạng và trích đặc trưng cho bộ dữ liệu MNIST.
3.1.3 Phương pháp tăng tốc độ nhận dạng
Ở 2 phương pháp nêu trên tôi chỉ mới đề cấp đến vấn đề làm tăng độ chính xác nhận dạng cũng như làm làm giảm thời gian huấn luyện mà chưa đề cập đến vấn đề làm giảm thời gian nhận dạng của mạng. Đây là vấn đề then chốt trong các ứng dụng, vì thực ra quá trình huấn luyện thông thường được chạy ít hơn nhiều lần so với quá trình thực hiện nhận dạng (quá trình đưa dữ liệu đầu vào để cho mạng tính toán). Thời gian nhận dạng = thời gian trích chọn đặc trưng + thời gian tính toán trong mạng, như vậy việc tăng hiệu suất nhận dạng thông qua việc tinh chỉnh quá trình trích chọn đặc trưng sẽ làm cho thời gian trích chọn đặc trưng tăng lên đồng nghĩa với thời gian nhận dạng cũng tăng. Nói tóm lại là việc làm tăng hiệu suất nhận dạng và tăng tốc độ huấn luyện mạng thì sẽ dẫn đến việc làm tăng thời gian nhận dạng. Dưới đây tôi xin giới thiệu một phương pháp khá hay để vừa nâng cao tốc độ nhận dạng nhưng lại không giảm độ chính xác nhận đó là phương pháp Bộ phân nhận dạng ba lớp (chi tiết ở [13]).
IN PU T SUB SAM PLIN G DCT+ PCA LEGE NDRE RBF RBF RBF RBF O U T PU T
3.1.3.1 Phương pháp bộ nhận dạng ba lớp
Có thể tóm tắt phương pháp này như sau: người ta tạo ra ba bộ phân lớp có đặc điểm như sau:
+Bộ phân lớp thứ nhất sử dụng phương pháp trích chọn đặc trưng đơn giản lấy ít đặc trưng và sử dụng mạng Neural có kiến trúc rất đơn giản để thực hiện nhận dạng tất nhiên là bộ phân lớp này sẽ có tốc độ nhận dạng rất nhanh nhưng lại có hiệu suất nhận dạng kém.
+Bộ phân lớp thứ 2 ta sẽ lấy nhiều đặc trưng hơn bộ phân lớp trên đồng thời kiến trúc của mạng Neural nhận dạng cũng phức tạp hơn bộ phân lớp thứ nhất như vậy bộ phân lớp này sẽ có tốc độ nhận dạng chậm hơn nhưng bù lại lại có hiệu suất nhận dạng tốt hơn bộ thứ nhất.
+Bộ phân lớp thứ 3 ta sẽ kết hợp giữa cách trích chọn đặc trưng tốt nhất và bộ phân lớp có kiến trúc phức tạp để đảm bảo được hiệu suất nhận dạng cao tất nhiên là có thời gian nhận dạng chậm.
Sau khi đã xây dựng được ba bộ phân lớp như trên quá trình nhận dạng được xử lý như sau: dữ liệu đầu vào được đưa vào bộ phân lớp thứ nhất sau khi thực hiện nhận dạng nếu kết quả nhận dạng không bị nghi ngờ là sai thì ta chọn đó là kết quả nhận dạng cuối cùng, nếu không thì ta lại đưa dữ liệu đầu vào cho bộ phân lớp thứ 2 xử lý. Sau khi xử lý ở bộ phân lớp thứ 2 nếu kết quả nhận là tốt thì ta xác nhận kết quả nhận dạng này còn không ta lại chuyển dữ liệu đầu vào cho bộ phân lớp cuối cùng. Tất nhiên là với phương pháp này ta phải có thuật toán tốt để xác định độ nhập nhằng của kết quả nhận dạng. Hình 24: Kiến trúc của bộ nhận dạng ba lớp INPUT Bộ nhận phân lớp thứ nhất OUTPUT Nhập nhằng? Bộ nhận phân lớp thứ 2 Nhập nhằng? Bộ nhận phân lớp thứ 3 yes yes no no
Ta thấy với kiến trúc như trên thì phần lớn quá trình xử nhận dạng rơi vào bộ phân lớp thứ nhất (vì dựa vào kết quả thực nghiệm cho dù là bộ phân lớp tồi như cũng rất dễ dàng để đạt được độ chính xác nhận dạng > 70%). Xác xuất để việc nhận dạng xử lý trên bộ nhận dạng thứ 2 sẽ thấp và càng thấp hơn đối với bộ nhận dạng thứ ba. Hiển nhiên ta thấy rằng kiến trúc này sẽ có thời gian nhận dạng nhanh hơn nhiều so với cách chỉ sử dụng bộ phân lớp thứ 3 và cũng có độ chính xác tốt hơn nhiều so với cách chỉ sử dụng bộ phân lớp thứ nhất (xem chi tiết [13]).
3.2 THỰC NGHIỆM
Biều đồ dưới đây so sánh hiệu suất của phương pháp học tập hợp cải tiến so với các phương pháp thông thường. Ở đây sử dụng bộ dữ liệu MNIST cho quá trình huấn luyện và kiểm tra.
90 91 92 95 94.5 95 97.75 99.3 84 86 88 90 92 94 96 98 100 1 2 3 4 5 6 7 8 8 8 8 8 18 13 63 1020 0 200 400 600 800 1000 1200 1 2 3 4 5 6 7 8
Hình 25: Biểu đồ so sánh độ chính xác nhận dạng và thời gian huấn luyện của các phương pháp huấn luyện khác nhau
Ta thấy rằng phương pháp mạng Neural nhân chập vẫn cho độ chính xác nhận dạng là tốt nhất, song thời gian huấn luyện mạng của nó là quá lớn. Phương pháp học tập hợp cải tiến cho kết quả nhận dạng là khá cao trong khi thời gian huấn luyện của nó thấp hơn nhiều lần so với phương pháp mang Neural nhân chập.
1,2,3,4. Subsambling 5. PCA 6.Legedre 7.Học tập hợp cải tiến 8. Mạng Neural nhân chập
CHƯƠNG 4
GIỚI THIỆU CHƯƠNG TRÌNH NHẬN DẠNG CHỮ SỐ VIẾT TAY VÀ TỔNG KẾT
Nội dung chương này gồm có:
4.1 Giới thiệu chương trình nhận dạng chữ viết tay 4.2 Tổng kết và phương hướng phát triển của đề tài
4.1 GIỚI THIỆU CHƯƠNG TRÌNH NHẬN DẠNG CHỮ SỐ VIẾT TAY
Dưới đây tôi xin giới thiệu chương trình ứng dụng nhận dạng chữ viết tay mà tôi đã