Để sử dụng tập đặc trƣng đƣợc trớch chọn ở trờn trong việc huấn luyện phõn lớp và nhận dạng, chỳng ta cần phải xõy dựng ba mỏy phõn lớp SVM.
- SVM1: phõn lớp đối với nhúm ký tự cú một 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 ă). Cỏc mỏy phõn lớp SVM1, SVM2, SVM3 đƣợc xõy dựng từ cỏc SVM nhị phõn.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Chƣơng 3 – CHƢƠNG TRèNH THỬ NGHIỆM 3.1. Giới thiệu về hệ nhận dạng dựng LIBSVM
LibSVM là một thƣ viện đơn giản dễ sử dụng, và hiệu quả cho SVM để phõn lớp (C-SVC, nu-SVC), hồi quy (epsilon-SVR, nu-SVR), ƣớc lƣợng phõn phối (one-class SVM) và hỗ trợ phõn lớp đa lớp (multi-class classification). Với mục đớch là cho phộp ngƣời sử dụng cú thể dễ dàng sử dụng SVM vào cỏc ứng dụng cụ thể của họ.
Hệ thực nghiệm đƣợc xõy dựng để thực hiện cụng việc chớnh là tiến hành nhận dạng một ảnh đầu vào chứa ký tự số từ 0 đến 9 hoặc ký tự hoa từ A đến Z và đƣa ra kết quả. Để hệ thống cú thể nhận dạng đƣợc theo nhƣ yờu cầu thỡ theo nhƣ lý thuyết đó trỡnh bày ở chƣơng trƣớc hệ thống cần phải trớch chọn đặc trƣng của từng chữ và đƣợc huấn luyện trƣớc. Sau khi đó tiến hành huấn luyện xong thỡ từ đõy ta đƣa ra mẫu thực nghiệm vào lỳc đú hệ thống phải nhận dạng đƣợc những ký tự đó đƣợc học hoặc cỏc ký tự gần với ký tự đó đƣợc học (nhƣng khụng phải ký tự nào đó đƣợc học là nhận dạng đỳng 100%).
Tiến trỡnh hệ thống cụ thể được mụ tả như sau:
- Tiền xử lý: ảnh sau khi quột vào thƣờng bị suy biến do chất lƣợng của thiết bị quột, do nguồn sỏng hay nhiễu vỡ thế cần phải cú bƣớc xử lý sơ bộ để tăng cƣờng và khụi phục ảnh để làm nổi bật một số đặc trƣng của ảnh nhƣ lọc nhiễu, quay ảnh,… Ngoài ra, xử lý sơ bộ cũng thực hiện chuyển từ ảnh màu về ảnh hai mức xỏm để phục vụ cho việc phõn vựng tỏch chữ.
- Chức năng trớch chọn đặc trƣng, huấn luyện: Đầu tiờn ta phải đọc dữ liệu học đầu vào từ cơ sở dữ liệu mà ta đó tạo ra. Khi dữ liệu đƣợc truyền vào mụ hỡnh SVM bờn trong phần huấn luyện, tại đõy cỏc thủ tục huấn luyện sẽ lƣu lại cỏc tham số huấn luyện đƣa vào.
- Chức năng nhận dạng: Ảnh đầu vào nhận dạng là một ảnh với cỡ tiờu chuẩn (27x27), ảnh sẽ đƣợc qua một vài bƣớc tiền xử lý (nếu cần thiết) sau đú đƣợc tƣơng tỏc với chức năng huấn luyện. Tại đõy cỏc giỏ trị ảnh vào đƣợc tớnh toỏn và đƣa ra quyết định đú là ký tự nào trong số cỏc ký tự đó đƣợc học, thực ra đú chớnh là quỏ trỡnh đoỏn xem ký tự đƣa vào giống ký tự nào nhất trong số cỏc ký tự đó đƣợc huấn luyện.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.2. Cỏc chức năng chớnh của hệ nhận dạng
Hỡnh 3.1. Cỏc bước cơ bản của quỏ trỡnh nhận dạng văn bản bằng mụ hỡnh SVM
- Ảnh đầu vào: cú đƣợc bằng mỏy quột ảnh (scanner) hoặc từ một nguồn nào đú. - Tiền xử lý:
+ Đầu vào: ảnh văn bản gốc + Đầu ra: ảnh của từng ký tự - Trớch chọn đặc trƣng, huấn luyện. - Nhận dạng ký tự bằng mụ hỡnh SVM. - Đầu ra: ký tự đƣợc nhận dạng.
3.3. Sử dụng libsvm-3.18
LIBSVM - A Library for Support Vector Machines (Version 3.18) chỳng ta cú thể tỡm thấy tại địa chỉ:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Trong libsvm-3.18 cú nhiều file phục vụ cho chƣơng trỡnh nhận dạng, trong đú cú hai file mà học viờn sử dụng trong luận văn này là svm-train.exe và svm- predict.exe.
Sau đõy là cỏch sử dụng LIBSVM:
Định dạng của file dữ liệu huấn luyện và file test là: <label> <index1>:<value1> <index2>:<value2> ... Trong đú:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
<label> là giỏ trị đớch của tập huấn luyện. Đối với việc phõn lớp, nú là một số nguyờn xỏc định một lớp. Đối với hồi qui, nú là một số thực bất kỳ.
<index> là một số nguyờn bắt đầu từ 1.
<value> là một số thực. Cỏc nhón trong file dữ liệu test chỉ đƣợc sử dụng để tớnh toỏn độ chớnh xỏc hoặc lỗi.
Ta cú thể tạo một file test cú tập data nhƣ sau :
File test đƣợc lƣu dƣới dạng text (*.t)
Trong đú: số 1 và 0 là <label>, cỏc số 2, 3, 4,5,6 là cỏc index, cỏc số 12, 123, 34, 17,...là cỏc value.
Vớ dụ: thực hiện huấn luyện và nhận dạng với tệp mnist.
Gừ “svm-train.exe mnist.train” thỡ chƣơng trỡnh sẽ đọc dữ liệu huấn luyện và xuất ra file mụ hỡnh “mnist.train.model”. Sau đú ta cú thể gừ “svm-predict.exe
mnist.test mnist.train.modeloutput.txt” để xem tỉ lệ phõn lớp trờn tập huấn luyện. File
output chứa giỏ trị dự đoỏn của mụ hỡnh.
Cú một số chương trỡnh ứng dụng trong Libsvm :
svm-scale: Đõy là một cụng cụ đối với việc xỏc định file dữ liệu vào.
svm-toy: Đõy là một giao diện đồ họa đơn giản thể hiện dữ liệu phõn tỏch SVM
trong mặt phẳng. Ta cú thể kớch vào cửa sổ để vẽ cỏc điểm dữ liệu. Sử dụng nỳt “change” để chọn lớp 1 hoặc 2, nỳt “load” để đọc dữ liệu từ một file, nỳt “save” để lƣu dữ liệu vào file, nỳt “run” để thu đƣợc một mụ hỡnh SVM và nỳt “clear” để xúa cửa sổ. Chỳ ý rằng, nỳt “load” và “save” chỉ ỏp dụng cho truờng hợp phõn lớp, khụng ỏp dụng cho trƣờng hợp hồi qui.
Sử dụng svm-train:
svm-train [options] train.txt tạo ra file train.txt.model để phục vụ cho việc dự đoỏn. Trong đú options là cỏc thành phần sau:
-s svm_type: kiểu của SVM (mặc định 0)
1 2:12 3:34 5: 74 6:22 0 5:85 4:94 6: 17 3:123
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/ 0 -- C-SVC 1 -- nu-SVC 2 -- one-class SVM 3 -- epsilon-SVR 4 -- nu-SVR
-t kernel_type: kiểu của hàm kernel (mặc định 2) 0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree 2 -- radial basis function: exp(-gamma*|u-v|^2) 3 -- sigmoid: tanh(gamma*u'*v + coef0)
-d degree: bậc của hàm kernel (mặc định 3)
-g gamma: giỏ trị gamma trong hàm kernel (mặc định 1/số đặc trƣng) -r coef0: giỏ trị coef0 trong kernel function (mặc định 0)
-c cost: tham số c của C-SVC, epsilon-SVR, and nu-SVR (mặc định 1) -n nu: tham số nu của nu-SVC và nu-SVR (mặc định 0.5)
-p epsilon: giỏ trị epsilon trong hàm của epsilon-SVR (mặc định 0.1) -m cachesize: kớch thƣớc cache bộ nhớ tớnh theo MB (mặc định 100) -e epsilon: thiết lập tiờu chuẩn cuối chấp nhận đƣợc (mặc định 0.001)
-wi weight: tham số C của lớp i tới trọng số weight*C trong C-SVC (mặc định 1) -v n: cho phộp tỏch ngẫu nhiờn dữ liệu thành n phần và tớnh toỏn độ chớnh xỏc cú hiệu lực của sự giao nhau cỏc phần.
Giỏ trị k trong tựy chọn -g nghĩa là số thuộc tớnh trong dữ liệu đầu vào. Tựy chọn -v phõn chia ngẫu nhiờn dữ liệu thành n phần.
Sử dụng svm-predict:
svm-predict [options] test_file train.txt.modeloutput_file
trong đú options là: 0 hoặc 1 (default 0);
model_file là file mụ hỡnh đƣợc sinh bởi svm-train.
test_file là file dữ liệu test mà ta muốn đỏnh giỏ.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Vớ dụ:
\windows\svm-train.exe -s 0 -c 1 -t 1 -g 1 -r 1 -d 3 data_file
Huấn luyện một lớp phõn loại với hàm kernel đa thức (u’v+1)^3 và C=1 Với cỏc tham số:
-s=0 cho ta biết loại SVM trong trƣờng hợp này là C-SVC -c=1 là tham số của C-SVC.
-t=1 cho ta biết hàm kernel là hàm đa thức với hàm đa thức tổng quỏt nhƣ sau: (gamma*u'*v + coef0)^degree.
-g=1 là gamma trong đa thức trờn. -r=1 là coef0 tong đa thức trờn. -d=3 cho biết bậc của đa thức là 3.
Khi đú svmtrain.exe sẽ tạo cho ta file data_file.model, sử dụng file này dựng lệnh \windows\svm-predict test_file data_file.model output_file để dự đoỏn kết quả nhận dạng và tỉ lệ lỗi.
3.4. Kết quả chạy thử nghiệm trờn tập dữ liệu libsvm
Để cú kết quả chạy thử nghiệm chỳng ta sử dụng hai cõu lệnh:
“\windows\svm-train [options] train.t” tạo ra file train.t.model để phục vụ cho việc dự đoỏn.
“\windows\svm-predict test.t train.t.model output.txt” để dự đoỏn độ chớnh xỏc ƣớc lƣợng lỗi.
Phần này tiến hành cài đặt thử nghiệm trờn cỏc bộ dữ liệu chữ số viết tay USPS và MNIST, cỏc tập dữ liệu đƣợc lấy từ trang web:
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
Đõy là cỏc bộ dữ liệu chuẩn đƣợc sử dụng để đỏnh giỏ hiệu quả của cỏc phƣơng phỏp nhận dạng chữ viết tay. Bộ dữ liệu USPS bao gồm 7291 mẫu dựng để huấn luyện và 2007 mẫu khỏc để nhận dạng, mỗi mẫu là một ảnh đa cấp xỏm kớch thƣớc 16x16. Bộ dữ liệu MNIST bao gồm 60.000 mẫu huấn luyện và 10.000 mẫu khỏc để nhận dạng, mỗi mẫu là một ảnh kớch thƣớc 28ì28 (hỡnh 3.2).
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
(a) Cỏc mẫu của tập USPS (b) Cỏc mẫu của tập MNIST
Hỡnh 3.2. Cỏc mẫu chữ số viết tay trớch từ tập cỏc tập dữ liệu USPS và MNIST.
3.4.1. Kết quả thực nghiệm đƣợc tiến hành trờn tập dữ liệu mnist Bảng kết quả khai thỏc tập dữ liệu mnist Bảng kết quả khai thỏc tập dữ liệu mnist
SVM type
Kernel type
Kernel
degree Gamma Coef0
Độ chớnh xỏc
(%) C-SVC Polynomial(t=1) 2 1 (def) 0 (def) 98.05(9805/10000)
C-SVC Polynomial 2 0.01 0 98.05(9805/10000) C-SVC Polynomial 2 0.1 0 98.05(9805/10000) C-SVC Polynomial 2 0.4 0 98.05(9805/10000) C-SVC Polynomial 2 0.7 0 98.05(9805/10000) C-SVC Polynomial 2 0.1 1 98.05(9805/10000) C-SVC Polynomial 2 0.1 2 98.05(9805/10000) C-SVC Polynomial 2 0.1 2 98.05(9805/10000) C-SVC Polynomial 2 1 5 98.05(9805/10000) C-SVC Polynomial 3 (def) 1 0 97.91(9791/10000) C-SVC Polynomial 4 1 0 97.37(9737/10000) C-SVC Polynomial 4 0.1 0 97.37(9737/10000) C-SVC Polynomial 5 1 0 96.65(9665/10000) C-SVC Polynomial 6 1 0 95.88(9588/10000) C-SVC Polynomial 7 1 0 94.73(9473/10000) C-SVC Polynomial 1 1 0 92.55(9255/10000)
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/ C-SVC Linear (t=0) 3 1 0 93.64(9364/10000) C-SVC Polynomial 1 1 0 92.55(9255/10000) C-SVC Polynomial 7 0.1 0 9.74(974/10000) C-SVC Polynomial 10 1 0 9.74(974/10000) C-SVC Polynomial 11 1 0 9.74(974/10000)
3.4.2. Kết quả thực nghiệm đƣợc tiến hành trờn tập dữ liệu usps Bảng kết quả khai thỏc tập dữ liệu usps Bảng kết quả khai thỏc tập dữ liệu usps
Svm
type Kernel type
Kernel degree
Gamma
in kernel Coef Độ chớnh xỏc(%)
C-SVC Linear (t=0) Def (3) Def Def (0) 93.0244(1867/2007) C-SVC Polynomial (t=1) 3 0.01 0 95.2666(1912/2007) C-SVC Polynomial (t=1) 2 0.01 0 94.6687(1900/2007) C-SVC Polynomial (t=1) 1 0.01 0 92.9248(1865/2007) C-SVC Polynomial (t=1) 3 1 1 95.2167(1911/2007) C-SVC Polynomial 3 1 0 95.2666(1912/2007) C-SVC Polynomial 3 0.1 1 95.1669(1910/2007) C-SVC Polynomial 3 2 0 95.2666(1912/2007) C-SVC Radial basis(t=2) 3 0.1 0 85.7(1720/2007) C-SVC Radial basis(t=2) 3 0.2 0 63.9263(1283/2007) C-SVC T=2 3 0.9 0 28.9985(582/2007) C-SVC T=2 3 0.01 0 94.9676(1906/2007) C-SVC T=2 3 1 0 28.6497(575/2007) C-SVC T=2 3 0.001 0 92.2272(1851/2007) C-SVC T=2 3 0.009 0 94.8181(1903/2007) C-SVC T=2 3 0.0001 0 86.7962(1742/2007) C-SVC T=2 3 0.09 0 87.2446(1751/2007) C-SVC Radial basic(t=2) 3 0.02 0 95.3164(1913/2007) C-SVC T=2 3 0.05 0 94.1704(1890/2007) C-SVC T=2 3 0.03 0 95.2167(1911/2007) C-SVC T=2 2 0.02 0 95.3164(1913/2007) C-SVC T=2 3 default 0 93.7718(1882/2007)
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.5. Chƣơng trỡnh nhận dạng.
3.5.1. Chức năng chƣơng trỡnh
Hỡnh 3.3. Giao diện chương trỡnh.
- Tiền xử lý (Convert Color Image to Black & white): Chuyển đổi ảnh từ ảnh màu sang ảnh nhị phõn và chuẩn húa kớch thƣớc ảnh với kớch cỡ 16x16. sang ảnh nhị phõn và chuẩn húa kớch thƣớc ảnh với kớch cỡ 16x16.
- Trớch chọn đặc trƣng (Convert BMP to Wavelet Haar): Sử dụng thuận toỏn Wavelet Haar để lấy đặc trƣng ảnh từ ảnh nhị phõn.
- Huấn luyện (Train SVM): Sử dụng SVM để tạo file mụ hỡnh sau khi huấn luyện từ file đặc trƣng đó thu đƣợc.
- Nhận dạng (Test SVM): Chọn file ảnh ký tự bất kỳ để nhận ký kự dạng từ file mụ hỡnh đó cú.
3.5.2. Chức năng Tiền xử lý:
- Chọn menu Convert Color Image to Black & White, xuất hiện hộp thoại:
Hỡnh 3.4. Hộp thoại tiền xử lý.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.5.3. Chức năng trớch chọn đặc trƣng
- Chọn menu Convert BMP to Wavelet Haar, xuất hiện hộp thoại:
Hỡnh 3.5. Hộp thoại trớch chọn đặc trưng.
Nỳt Convert thực hiện chức năng trớch chọn đặc trƣng từ file ảnh nhị phõn, vớ dụ nhƣ file cú tờn “Dac_trung.txt”.
3.5.4. Huấn luyện
Chọn menu Train SVM, xuất hiện hộp thoại yờu cầu chọn file chứa thụng tin đặc trƣng, mở file “Dac_trung.txt”.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Hỡnh 3.6. Hộp thoại lưu file mụ hỡnh huấn luyện.
Sau đú, yờu cầu nhập tờn file mụ hỡnh để huấn luyện, vớ dụ nhƣ “Huan_luyen.txt”
3.5.4. Nhận dạng
Chọn menu Test SVM, xuất hiện cửa sổ yờu cầu chọn file ảnh ký tự nhƣ hỡnh dƣới:
Hỡnh 3.7. Hộp thoại chọn file ảnh cần nhận dạng.
Tiếp theo, chọn file mụ hỡnh đó đƣợc huấn luyện, nhƣ file “Huan_luyen.txt”. Kết quả nhận dạng sẽ đƣa ra trong thụng bỏo nhƣ sau:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
KẾT LUẬN VÀ ĐỀ NGHỊ - Mục tiờu của luận văn đó đƣa ra:
+ Tỡm hiểu về nhận dạng chữ viết. + Tỡm hiểu cỏc phƣơng phỏp phõn lớp. + Nghiờn cứu phƣơng phỏp SVM.
+ Nghiờn cứu nhận dạng chữ viết tay hạn chế sử dụng mụ hỡnh SVM. + Thiết kế chƣơng trỡnh thực nghiệm nhận dạng chữ viết tay hạn chế.
- Kết quả luận văn đạt đƣợc:
Sau quỏ trỡnh nghiờn cứu, tỡm hiểu em đó hoàn thành luận văn với kết quả đạt đƣợc đỳng nhƣ mục tiờu đề ra là:
+ Hiểu rừ về cỏch nhận dạng chữ viết tay hạn chế. + Hiểu đƣợc mụ hỡnh phõn lớp SVM.
+ Biết ứng dụng mụ hỡnh SVM vào nhận dạng chữ viết tay.
+ Biết cỏch sử dụng phƣơng phỏp SVM và khai thỏc thƣ viện libsvm để huấn luyện, dự đoỏn tỷ lệ nhận dạng.
+ Thiết kế đƣợc chƣơng trỡnh nhận dạng từng ký viết tay khụng dấu hạn chế.
- Hƣớng phỏt triển tiếp theo của đề tài trong tƣơng lai:
+ Tiếp tục nghiờn cứu phƣơng phỏp SVM và ngụn ngữ lập trỡnh để phỏt triển thành phần mềm nhận dạng đƣợc chữ viết tay núi chung và viết tay tiếng Việt theo từng ký tự hoặc cả văn bản.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Phạm Anh Phƣơng, Ngụ Quốc Tạo, Lƣơng Chi Mai (20-21/05/2006), “Ứng dụng SVM cho bài toỏn phõn lớp nhận dạng”, Kỷ yếu Hội thảo khoa học Quốc gia lần thứ ba về nghiờn cứu, phỏt triển và ứng dụng Cụng nghệ thụng tin và Truyền thụng
(ICT.rda 06), nhà xuất bản Khoa học và Kỹ thuật Hà nội, tr. 393-400.
[2] Phạm Anh Phƣơng, Ngụ Quốc Tạo, Lƣơng Chi Mai (10-2008), “Trớch chọn đặc trƣng wavelet Haar kết hợp với SVM cho việc nhận dạng chữ viết tay tiếng Việt”, Tạp
chớ Cụng nghệ Thụng tin và Truyền thụng, ISSN 0866-7039, kỳ 3 (20), tr 36-42.
[3] Phạm Anh Phƣơng (2008), “Áp dụng một số chiến lƣợc SVM đa lớp cho bài toỏn nhận dạng chữ viết tay hạn chế”, Tạp chớ khoa học Đại học Huế, ISSN 1859-1388, (45), tr. 109-118.
Tiếng Anh
[4] Christopher J. C. Burges (1998), “A Tutorial on Support Vector Machines for Pattern Recognition”, Data Mining and Knowledge Discovery, ISSN:1384-5810, Vol. 2, (No. 2), pp. 121-167.
[5] Chih-Chung Chang and Chil-Jen Lin (2004), “LIBSVM: a Library for Support Vector Machines”, National Taiwan University.
[6] G. Vamvakas, B. Gatos, I. Pratikakis, N. Stamatopoulos, A. Roniotis and S.J. Perantonis (February 2007), "Hybrid Off-Line OCR for Isolated Handwritten Greek Characters", The Fourth IASTED International Conference on Signal Processing,
Pattern Recognition, and Applications (SPPRA 2007), ISBN: 978-0-88986-646-1,
Innsbruck, Austria, pp. 197-202.
[7] H. Bunke, M. Roth, E. G. Schukat-Talamazzani (1994), “Off-line Recognition of Cursive Script Produced by Cooperative Writer”, in Proc. 12th Int.Conf. Pattern Recognition, pp. 146-151, Jerusalem, Israel.
[8] H. Nishida (July 1995), “Structural Feature Extraction Using Multiple Bases”,
Computer Vision and Image Understanding, vol.62 no1, pp. 78-89.