3.2.1. Đặt vấn đề Toàn bộ tập ký tự tiếng Việt có tất cả 99 ký tự, bao gồm: các chữ số {0,...,9}, các ký tự không dấu {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y} và các ký tự có dấu {Ă, Â, À, Ả, Ã, Á, Ạ, Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ề, Ể, Ễ, Ế, Ệ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ơ, Ò, Ỏ, Õ, Ó, Ọ, Ồ, Ổ, Ỗ, Ố, Ộ, Ờ, Ở, Ỡ, Ớ, Ợ, Ư, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỵ}. Bài toán chúng tôi đặt ra ở đây là xây dựng một mô hình nhận dạng chữ Việt viết tay rời rạc. Bài toán này được xem như một ứng dụng với quy mô lớn. Khi giải bài toán này sẽ vấp phải một số vấn đề sau:
0Để đảm bảo độ chính xác cho hệ thống nhận dạng, mỗi lớp phải có một số lượng mẫu đủ lớn để huấn luyện.
0Bùng nổ số lớp (99 lớp). Nếu sử dụng chiến lược OVO cho bài toán phân lớp thì hệ thống phải xây dựng 4851 máy phân lớp SVM nhị phân. Điều này sẽ làm cho hệ thống huấn luyện và nhận dạng rất chậm, khó có thể đáp ứng được cho các ứng dụng thời gian thực, thậm chí không đủ không gian nhớ để hệ thống huấn luyện do số véc tơ tựa sinh ra lớn hơn rất nhiều lần so với tổng số lượng mẫu tham gia huấn luyện.
0Bộ ký tự tiếng Việt có nhiều ký tự với hình dáng rất giống nhau, chỉ khác nhau chút ít về phần dấu. Do đó rất khó để phân biệt đối với chữ viết tay, điều này dẫn đến độ chính xác của hệ thống nhận dạng không cao.
Trong phần tiếp theo, luận án sẽ đề xuất một mô hình hiệu quả cho bài toán nhận dạng chữ Việt viết tay rời rạc.
3.2.2. Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc
Phần này sẽ trình bày chi tiết kiến trúc của mô hình nhận dạng chữ Việt viết tay rời rạc. Trên cơ sở các thành phần liên thông của ảnh, mô hình này phân tập ký tự tiếng Việt thành ba nhóm và tách các ký tự có dấu thành các phần rời nhau. Sau đó xây dựng các máy phân lớp SVM để nhận dạng cho từng phần chữ và phần dấu, cuối cùng ghép nối các kết quả nhận dạng của các phần chữ và dấu để có kết quả nhận dạng cuối cùng (hình 3.6).
3.2.2.1. Tiền xử lý
Mục đích của giai đoạn tiền xử lý nhằm tăng độ chính xác của hệ thống nhận dạng. Ảnh quét vào thường hay bị nhiễu, các loại nhiễu phổ biến là nhiễu đốm và nhiễu vệt (hình 3.7). Để khử nhiễu đốm, sử dụng các bộ lọc trung bình và lọc trung vị là hiệu quả nhất, còn đối với các nhiễu vệt thì sử dụng phương pháp khử các vùng liên thông nhỏ tỏ ra hữu hiệu hơn.
Hình 3.6. Kiến trúc của hệ nhận dạng chữ viết tay tiếng Việt
(a) Nhiễu đốm (b) Nhiễu vệt dài
Hình 3.7. Một số nhiễu thường gặp khi quét ảnh
Để thuận tiện cho việc xử lý sau này, ảnh đầu vào được biến đổi từ ảnh đa cấp xám thành ảnh nhị phân.
Chuẩn hóa ảnh theo vùng liên thông
Chuẩn hóa ảnh nhằm mục đích tạo điều kiện thuận tiện cho công đoạn tách ảnh thành từng phần chữ và dấu.
Bước 1: Xác định các vùng liên thông trên ảnh (Hình 3.8).
Bước 2: Sắp xếp các vùng liên thông theo thứ tự từ trên xuống (hình 3.8b).
(a) (b)
Hình 3.8. Chuẩn hóa ảnh: (a) Ảnh gốc, (b) Xác định các vùng liên thông và đánh thứ tự các vùng liên thông.
Bước 3:
(a) (b) (c)
Hình 3.9. Chuẩn hóa các vùng liên thông.
- Nếu ảnh chỉ có 1 vùng liên thông: Chuẩn hóa ảnh về kích thước chuẩn 16×16 (hình 3.9a).
- Nếu ảnh có 2 vùng liên thông: Gọi S(i) là diện tích vùng liên thông thứ i. Nếu S(1)>S(2) thì dấu của phần liên thông 2 là dấu nặng (.) và chỉ cần chuẩn hóa vùng liên thông 1 về kích thước chuẩn 16×16.
Ngược lại: Tách ảnh thành 2 phần: phần chữ và phần dấu. Chuẩn hóa phần chữ về kích thước chuẩn 16×16 và phần dấu về kích thước chuẩn 8×8 (hình 3.9b). - Nếu ảnh có 3 vùng liên thông:
Nếu S(3) = Min{S(i)} thì dấu của phần liên thông này là dấu nặng (.). Do đó chỉ cần chuẩn hóa thành phần liên thông 1 về kích thước chuẩn 8×8 và thành phần liên thông 2 về kích thước chuẩn 16×16.
Ngược lại: Tách ảnh thành 3 phần từ các vùng liên thông. Chuẩn hóa các vùng liên thông 1 và 2 về kích thước chuẩn 8×8 và chuẩn hóa vùng liên thông 3 về kích thước chuẩn 16×16 (hình 3.9c).
3.2.2.2. Phân nhóm sơ bộ
Dựa vào số thành phần liên thông để tách bộ ký tự tiếng Việt thành 3 nhóm: Nhóm 1: Nhóm có 1 vùng liên thông {A, B, C, D, Đ, E, G, H, I, K, L, M, N,
O, P, Q, R, S, T, U, V, X, Y, Ơ, Ư}.
Nhóm 2: Nhóm có 2 vùng liên thông {Ă, Â, À, Ả, Ã, Á, Ạ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ò, Ỏ, Õ, Ó, Ọ, Ờ, Ở, Ỡ, Ớ, Ợ, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỵ}.
Nhóm 3: Nhóm có 3 vùng liên thông { Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ề, Ể, Ễ, Ế, Ệ, Ồ, Ổ, Ỗ, Ố, Ộ}
Với cách phân nhóm này thì các máy phân lớp SVM được xây dựng cho từng nhóm đều rất khả thi. Đối với nhóm 2 và 3, mặc dù số lớp rất lớn nhưng tất cả đều xuất phát từ các nguyên âm {A, E, I, O, U, Y} và các dấu {/, \, ?, ~, ^, ∨} (sắc, huyền, hỏi, ngã, dấu ô và dấu ă). Vì vậy đối với hai nhóm này, chỉ cần xây dựng một máy phân lớp SVM cho các nguyên âm và một máy cho các dấu là đủ, sau khi có kết quả nhận dạng thì kết nối chúng với nhau để có kết quả nhận dạng cuối cùng. Còn đối với nhóm 1, tuy số lớp hơi nhiều nhưng hoàn toàn có thể xử lý được trong một máy tính cá nhân thông thường.
Vì vậy, việc phân nhóm sơ bộ này sẽ khắc phục được sự bùng nổ số lớp, giúp cho việc giải bài toán nhận dạng chữ Việt viết tay rời rạc có thể thực hiện được trên các máy tính cá nhân.
3.2.2.3. Trích chọn đặc trưng
Trong thực nghiệm, luận án cài đặt thử nghiệm trên hai loại đặc trưng:
Kết hợp các đặc trưng thống kê (ZPC - Zones, Projection histograms và Contour profiles): Với phần chữ, chúng tôi chọn kích thước ảnh 16×16, như vậy mỗi véc tơ đầu vào có tất cả : 64 + 94 + 64 = 222 đặc trưng, còn phần dấu với kích thước ảnh 8×8 thì véc tơ đầu vào sẽ có 16 + 46 +32 = 94 đặc trưng.
Đặc trưng wavelet Haar: Với phần chữ, chúng tôi chọn kích thước ảnh 16×16, như vậy mỗi véc tơ đầu vào có tất cả : 1 + 3 + 4×3 + 4×4×3 + 4×4×4×3 = 256 đặc trưng, còn phần dấu với kích thước ảnh 8×8 thì véc tơ đầu vào có 64 đặc trưng.
3.2.2.4. Xây dựng các máy phân lớp SVM
Với việc phân nhóm sơ bộ như trên, chỉ cần xây dựng 3 máy phân lớp SVM, sử dụng một trong hai loại đặc trưng để huấn luyện phân lớp và nhận dạng.
SVM1: Máy phân lớp đối với nhóm ký tự có 1 vùng liên thông {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Ơ, Ư}.
SVM2: đối với các ký tự có dấu thì phần chữ đều là các nguyên âm, vì vậy máy này chỉ phân lớp các nguyên âm {A, E, I, O, U, Y}.
SVM3: phân lớp các dấu {/, \, ?, ~, ^, ∨} (sắc, huyền, hỏi, ngã, dấu ô, dấu ă).
3.2.3. Kết quả thực nghiệm
Dữ liệu chữ viết tay tiếng Việt được thu thập từ 655 người viết khác nhau, đối tượng chủ yếu là sinh viên. Mỗi người viết khoảng 200 chữ in hoa, các ký tự được viết rời rạc. Chúng tôi chọn lọc ra 52485 mẫu để tiến hành thực nghiệm, trong đó có 20925 mẫu ký tự không dấu, 2485 mẫu các dấu tiếng Việt, phần còn lại là các
mẫu ký tự có dấu. Trong 20925 mẫu chữ không dấu, chúng tôi sử dụng 13782 mẫu để huấn luyện, phần còn lại phục vụ cho việc nhận dạng (hình 3.10).
Hình 3.10. Các mẫu trích từ tập ký tự viết tay tiếng Việt.
Ba tập dữ liệu sau đây được xây dựng để phục vụ cho việc huấn luyện 3 máy phân lớp SVM:
• TrainData1: Tập các dấu tiếng Việt {/, \, ?, ~, ^, ∨}, với 2485 mẫu.
• TrainData2: Tập các chữ cái nguyên âm tiếng Việt {A, E, I, O, U, Y}, với 4128 mẫu được lấy ra từ 13782 mẫu chữ không dấu.
• TrainData3: Tập các chữ cái tiếng Việt không dấu {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Ơ, Ư}, với 13782 mẫu.
Tập dữ liệu phục vụ cho việc nhận dạng (test) bao gồm 36218 mẫu, trong đó có 7143 mẫu chữ không dấu và 29075 mẫu chữ có dấu. Để thuận lợi cho việc đánh giá độ chính xác đối với từng nhóm ký tự theo vùng liên thông, 5 tập dữ liệu được xây dựng để phục vụ cho việc nhận dạng, các tập dữ liệu này phân bố như sau:
• TestData1: Tập các ký tự tiếng Việt có 1 vùng liên thông, với 7143 mẫu.
• TestData2: Tập các nguyên âm tiếng Việt, với 1500 mẫu được trích ra từ 7143 mẫu của TestData1.
• TestData4: Tập các ký tự tiếng Việt có 3 vùng liên thông, với 12219 mẫu.
• TestData5 = TestData1 ∪ TestData3 ∪ TestData4.
Bảng 3.2. Kết quả nhận dạng trên các tập dữ liệu tiếng Việt viết tay rời rạc. Độ chính xác Tập mẫu Số mẫu ZPC wavelet Haar TestData1 7143 84.3% 82.2% TestData2 1500 99.7% 99.6% TestData3 16856 92.2% 90.7% TestData4 12219 91.6% 87.8% TestData5 36218 90.5% 88.1%
Kết quả thực nghiệm ở bảng 1 cho thấy tập TestData2 cho độ chính xác cao hơn nhiều so với tập TestData1. Do tập TestData2 chỉ chứa 6 nguyên âm với các hình dáng rất khác nhau nên ít bị nhầm lẫn, trong khi đó tập TestData 1 lại phải phân biệt quá nhiều chữ cái với hình dáng tương tự nhau ({B,Đ},{C,G},{U,Ư,V},...) nên rất dể bị nhầm lẫn, vì vậy mà độ chính xác không cao. Có thể do công đoạn tách dấu và ghép dấu chưa được tốt nên các tập TestData3 và TestData4 đạt độ chính xác không cao bằng tập TestData 2. Kết quả nhận dạng cuối cùng ở tập TestData5 cho thấy việc sử dụng các tập đặc trưng được lựa chọn kết hợp với SVM vào bài toán nhận dạng chữ Việt viết tay rời rạc đạt độ chính xác tương đối cao.
3.3. CẢI TIẾN TỐC ĐỘ NHẬN DẠNG CHỮ VIỆT VIẾT TAY RỜI RẠC
Trong phần này, các đặc trưng của các véc tơ đầu vào sẽ được rút gọn và áp dụng phương pháp tập thu gọn [84] để giảm thiểu tối đa số véc tơ tựa của các SVM nhị phân nhằm cải tiến tốc độ nhận dạng.
3.3.1. Rút gọn số chiều của các véc tơ đặc trưng
Phần này tìm cách rút gọn số chiều của tập đặc trưng ZPC. Thay vì lấy toàn bộ các đặc trưng, đối với mỗi dòng, cột hoặc đường chéo của ảnh, chỉ lấy xen kẻ các
đặc trưng để giảm đi một nửa đặc trưng của véc tơ đầu vào. Như vậy đối với ảnh kích thước 16×16, véc tơ đầu vào chỉ còn lại 111 đặc trưng, còn đối với ảnh kích thước 8×8, véc tơđầu vào chỉ còn lại 47 đặc trưng.
3.3.2. Cải tiến tốc độ của các máy phân lớp SVM
Phần này áp dụng phương pháp tập thu gọn theo hướng tiếp cận của Burges (1996) [84] nhằm tăng tốc độ nhận dạng của các máy phân lớp SVM nhị phân. Quá trình thu gọn các véc tơ tựa được thực hiện bằng cách lựa chọn hai véc tơ tựa gần nhất của cùng một lớp và thay thế chúng bằng một véc tơ mới cho tới khi có được tập véc tơ thu gọn tương đương với tập các véc tơ tựa ban đầu. Tập thu gọn có một số tính chất sau đây:
Các véc tơ thu gọn xuất hiện trong hàm quyết định phân lớp SVM cũng có chức năng tương đương như các véc tơ tựa xuất hiện trong hàm quyết định phân lớp của SVM gốc, tuy nhiên chúng không phải là các véc tơ tựa. Vì vậy chúng không nhất thiết phải nằm trên lề phân cách của siêu phẳng tối ưu. Khác với các véc tơ tựa, các véc tơ thu gọn không phải là các mẫu huấn
luyện. Chúng được tính toán để thay thế cho các véc tơ tựa của SVM gốc đã được huấn luyện.
Phương pháp tập thu gọn có thể áp dụng được ở bất kỳ ứng dụng nào có sử dụng phương pháp phân lớp SVM.
Phương pháp tập thu gọn có thể trình bày tóm tắt như sau:
3.3.2.1. Phương pháp tập thu gọn
Đối với bài toán phân lớp nhị phân, luật quyết định SVM được cho bởi công thức: 1 ( , ) SV N i i i y sign K x x b = ⎛ = ⎜ α ⎝∑ + ⎟⎠⎞ (3.1)
trong đó αi là các trọng số của các véc tơ tựa xi, x là véc tơ đầu vào cần phân lớp,
K(x,xi) là một hàm nhân trong không gian đặc trưng, b là độ lệch của siêu phẳng so với gốc tọa độ và NSV là số véc tơ tựa.
Ý tưởng chính của phương pháp tập thu gọn là tìm số nhỏ nhất NZ<NSV, và tập thu gọn tương ứng {(zi, βi)}, i=1...NZ sao cho ρ = |Ψ’ - Ψ| đạt cực tiểu, tức là tìm cách xấp xỉ véc tơ chuẩn Ψ của siêu phẳng tối ưu gốc bởi véc tơ chuẩn Ψ’ của siêu phẳng tối ưu theo tập thu gọn sao cho sai số vềđộ chính xác phân lớp của SVM đạt cực tiểu, trong đó: 1 ( ) SV N i i i x = Ψ =∑α Φ và 1 ' Z ( N ) j j j z = Ψ =∑β Φ với NZ < NSV, zi∈RD, βi∈ R.
Như vậy, để phân lớp một mẫu x, (3.1) được thay bởi
1 ( , ) Z N i i i y sign K x z b = ⎛ = ⎜ β ⎝∑ + ⎟⎠⎞ j (3.2)
trong đó NZ < NSV, và tập thu gọn tương ứng là {(zi,βi)}i=1,...,Nz.
Phương pháp xây dựng tập thu gọn (Burges, 1996) bắt đầu bằng cách thay thế Ψ với ảnh của một véc tơđầu vào và trọng số tương ứng của nó (z1, β1), sau đó lặp lại việc tìm (zm+1, βm+1) sao cho ảnh của nó xấp xỉ với các véc tơΨm (Ψ0= Ψ): 1 1 ( ) ( ) SV N m m i i j i j x z = = Ψ =∑α Φ −∑β Φ (3.3)
Trong nhiều trường hợp không thể tìm ra chính xác zm và βmđể Ψm=0 thì zm là các véc tơ sao cho 2 1 1 1 1 ( ) ( ) ( ) ( ) SV m m m N m i i j j m m i j z x z z − − = = ρ = Ψ −β Φ ⎛ ⎞ = ⎜ α Φ − β Φ ⎟− β Φ ⎝∑ ∑ ⎠ (3.4) đạt cực tiểu.
Trong trường hợp tổng quát, có thể dùng các kỹ thuật tối ưu không ràng buộc để cực tiểu hóa ρ. Hạn chế của các phương pháp này là chúng có thể mắc phải một số cực tiểu địa phương của hàm ρ. Để ngăn chặn tình huống cực tiểu địa phương, việc tìm kiếm mỗi véc tơ mới buộc phải lặp lại nhiều lần các giá trị khởi tạo khác nhau.
Có nhiều kỹ thuật để xây dựng tập thu gọn. Phần này sử dụng phương pháp Bottom-Up của Nguyễn Đức Dũng và Hồ Tú Bảo [20] để tìm tập thu gọn. Ý tưởng chính của phương pháp Bottom-Up là thay thế hai véc tơ tựa gần nhất thuộc về cùng một lớp bởi một véc tơ mới cho đến khi ρ=|ψ’-ψ| đạt cực tiểu. Thông qua việc phân tích mối quan hệ giữa các véc tơ trong không gian đầu vào và không gian đặc trưng, phương pháp này tạo ra các véc tơ mới bằng cách tìm điểm cực đại duy nhất của hàm một biến trong khoảng (0,1) mà không cần phải tìm cực tiểu của một hàm nhiều biến với các giá trị cực tiểu địa phương trong các phương pháp tập thu gọn trước đây.
3.3.2.2. Phương pháp Bottom – Up