Một số vấn đề trong nhận diện chữ số viết tay

TÓM TẮT: Nhận diện chữ số viết tay (Handwritten Digit Recognition) là một kỹ thuật ứng

dụng các thuật toán máy học dùng để nhận diện và phân lớp chữ số viết tay dưới dạng

hình ảnh. Một số thuật toán máy học phổ biến hiện nay bao gồm K Nearest Neighbors

(KNN), Support Vector Machine (SVM), Stochastic Gradient Descent, Artificial Neuron

Network (ANN), Hidden Markov Model (HMM) Trong phạm vi nghiên cứu, tác giả chỉ

đề cập các vấn đề liên quan đến độ chính xác của một số thuật toán đã thực nghiệm.

Từ khóa: nhận diện chữ số viết tay, histogram các gradient định hướng, tập dữ liệu

MNIST, thư viện OpenCv

pdf 9 trang phuongnguyen 1640
Bạn đang xem tài liệu "Một số vấn đề trong nhận diện chữ số viết tay", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Một số vấn đề trong nhận diện chữ số viết tay

Một số vấn đề trong nhận diện chữ số viết tay
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thu Nguyệt Minh và tgk 
66 
MỘT SỐ VẤN ĐỀ TRONG NHẬN DIỆN CHỮ SỐ VIẾT TAY 
SOME ISSUES IN HANDWRITTEN DIGIT RECOGNITION 
NGUYỄN THU NGUYỆT MINH , TRÀ VĂN ĐỒNG và NGUYỄN ANH TUẤN 
TÓM TẮT: Nhận diện chữ số viết tay (Handwritten Digit Recognition) là một kỹ thuật ứng 
dụng các thuật toán máy học dùng để nhận diện và phân lớp chữ số viết tay dưới dạng 
hình ảnh. Một số thuật toán máy học phổ biến hiện nay bao gồm K Nearest Neighbors 
(KNN), Support Vector Machine (SVM), Stochastic Gradient Descent, Artificial Neuron 
Network (ANN), Hidden Markov Model (HMM) Trong phạm vi nghiên cứu, tác giả chỉ 
đề cập các vấn đề liên quan đến độ chính xác của một số thuật toán đã thực nghiệm. 
Từ khóa: nhận diện chữ số viết tay, histogram các gradient định hướng, tập dữ liệu 
MNIST, thư viện OpenCv. 
ABSTRACT: Handwritten digit recognition is a technique that using machine learning 
algorithms for recognizing and classifying handwritten digits in form of an image. Some 
algorithms are popularly used in such tasks that consist of K nearest neighbors (KNN), 
support vector machine (SVM), stochastic gradient descent, artificial neuron network 
(ANN), Hidden Markov Model (HMM) and so on. In this paper, we discuss some issues 
that affected on the precision of implemented algorithms in our application. 
Key words: Handwritten digit recognition, Histogram of Oriented Gradients, MNIST, 
OpenCv. 
 ThS. Trường Đại học Văn Lang, Email: nguyenthunguyetminh@vanlanguni.edu.vn 
 ThS. Trường Trung Cấp Kinh tế Kỹ thuật Quận 12, Email: trvdong@gmail.com 
 ThS. Trường Nhân lực Quốc tế, Email: ttuannguyenn@gmail.com 
1. DỮ LIỆU HUẤN LUYỆN 
1.1. Mnist 
Dữ liệu gồm 70.000 mẫu chữ số viết 
tay, mỗi mẫu là một ảnh grayscale kích 
thước 28x28. Gồm: 
Chữ số Số mẫu 
0 6.903 
1 7.877 
2 6.990 
3 7.141 
4 6.824 
5 6.313 
6 6.876 
7 7.293 
8 6.825 
9 6.958 
Hình 1. Minh họa một số mẫu chữ số được trích ra 
từ tập dữ liệu MNIST 
1.2. Opencv-digits 
Dữ liệu là một ảnh grayscale chứa 
5.000 mẫu chữ số viết tay, mỗi mẫu là một 
ảnh kích thước 20x20, mỗi chữ số viết tay 
gồm 500 mẫu. 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 05/2017 
67 
Hình 2 cho thấy, tập dữ liệu Opencv-
digits là một ma trận 50x100, mỗi phần tử 
trong ma trận là một ảnh 20x20, mỗi chữ số 
chiếm 5 dòng, 100 cột. 
Hình 2. Tập dữ liệu Opencv-digits 
1.3. Semeion (uci) 
Tập dữ liệu nhị phân gồm 1593 mẫu, 
mỗi mẫu gồm 256 thuộc tính, có thể được 
biểu diễn dưới dạng một ảnh 16x16. 
Hình 3. một số mẫu ảnh chữ số viết tay trong tập dữ liệu Semeion (UCI) 
2. ĐẶC TRƯNG 
Đặc trưng là các thuộc tính của đối 
tượng được sử dụng trong máy học để huấn 
luyện, nhận diện, phân lớp hoặc dự báo. 
Trong nhận diện chữ số viết tay, các đặc 
trưng thường được sử dụng bao gồm: 
2.1. Đặc trưng thô (Raw features) 
Là giá trị của các pixels trong ảnh. Đặc 
trưng thô được biểu diễn dưới dạng một 
mảng, các phần tử trong mảng là giá trị 
RGB của mỗi pixel ảnh. Hình 4 minh họa 
cho mảng đặc trưng thô của một ảnh chữ số 
viết tay. 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thu Nguyệt Minh và tgk 
68 
Hình 4. Một phần mảng đặc trưng thô (trái) của ảnh chữ số 9 (phải) 
2.2. Đặc trưng hog (Histogram of 
Oriented Gradients features) 
Là một vector mô tả đặc trưng của một 
đối tượng. Hog chỉ biểu diễn những thông 
tin hữu ích (đặc trưng) của một hình ảnh 
bằng cách loại bỏ những thông tin thừa có 
thể gây nhiễu. Vấn đề là thế nào là “thông 
tin hữu ích”? Giả sử chúng ta muốn tìm nút 
áo trong một ảnh. Nút áo có hình tròn, đôi 
khi do góc chụp có thể cho nút áo có hình 
ellipse. Nút áo thường có một số lỗ để khâu 
vào áo. Nếu chỉ đơn thuần chỉ dựa vào hình 
học để phát hiện nút áo trong một ảnh có 
thể nhầm lẫn với các đối tượng khác có 
cùng dạng hình học với nút áo. Các lỗ trong 
nút áo sẽ là “thông tin hữu ích” để phân 
biệt giữa một cái nút áo với các đối tượng 
khác có cùng dạng hình học. Trong Hog, 
đặc trưng được rút ra từ ảnh là sự phân bố 
các gradient của các pixels. 
Gradient của mỗi pixel gồm 2 đại 
lượng: mật độ màu (cường độ gradient) và 
hướng gradient. Đối với ảnh màu có nhiều 
channel, cường độ gradient của mỗi pixel là 
giá trị cường độ gradient lớn nhất trong số 
các channel tại pixel đó. Hướng gradient tại 
mỗi pixel là hướng có cường độ gradient 
tăng lớn nhất. Hình 5 minh họa gradient tại 
mỗi pixel, trong đó mũi tên xanh biểu diễn 
hướng gradient, màu sáng tối tượng trưng 
cho cường độ gradient. 
Hình 5. Hai đại lượng gradient của mỗi pixel trong 
ảnh 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 05/2017 
69 
Các bước tính Hog: 
Bước 1: Tiền xử lý ảnh: Xác định vùng cần 
tính Hog; Cắt vùng ảnh cần quan tâm; Điều 
chỉnh kích thước. 
1 
Hình 6. Tiền xử lý ảnh: cắt vùng quan tâm và điều 
chỉnh kích thước 
Bước 2: Tính toán ảnh gradient 
Dùng bộ lọc Sobel (Sobel filter) với 2 
kernel [ ] và [
] để tính xấp xỉ 
gradient theo chiều x (gx) và chiều y (gy) ở 
mỗi pixel. Sau đó, tính cường độ gradient 
và hướng gradient (quy ra góc) theo các 
công thức sau: 
 √ (Công thức 2.1) 
 (Công thức 2.2) 
Hình 7. Ảnh trái: ảnh gradient theo chiều x. Ảnh 
giữa: ảnh gradient theo chiều y. Ảnh phải: ảnh 
cường độ gradient 
Bước 3: Tính Histogram các gradient 
trong các cell 8x8: Chia ảnh thành các cell 
8x8. Đối với ảnh màu, nếu mỗi pixel có 3 
giá trị màu, thì mỗi cell 8x8 pixel sẽ có 
8x8x3 = 192 giá trị. Nếu dùng gradient, 
mỗi cell 8x8 chỉ có 8x8x2 = 128 giá trị. 128 
giá trị này lại được biểu diễn bằng một 
vector 9 bins (9 số) tương ứng với 9 góc 0, 
20, 40, 60, 160 tượng trưng cho hướng 
gradient. Như vậy nếu biểu diễn một ảnh 
bằng gradient sẽ giảm được số dữ liệu cần 
tính toán. 
Hình 8. Chia ảnh thành nhiều cell 8x8 và tính các 
đại lượng gradient cho các cell này 
Hình 9. Histogram gradients 
Hình 9 minh họa cách biểu diễn 
histogram các gradients dựa trên cường độ 
và hướng gradient các pixels trong một cell 
8x8. Pixel ở vị trí a11 (khoanh tròn xanh 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thu Nguyệt Minh và tgk 
70 
dương) có giá trị góc  = 80 (hướng 
gradient), giá trị cường độ gradient g = 2, ta 
đưa giá trị g = 2 vào bin80 trong vector 
histogram. Pixel ở vị trí a14 (khoanh tròn 
đỏ) có giá trị góc  = 10, giá trị cường độ 
gradient g = 4, 10 nằm giữa bin0 và bin 20, 
khoảng cách từ 0 10 = 10, tỉ lệ 10/20 = 
0.5, khoảng cách từ 10 20 = 10, tỉ lệ 
10/20 = 0.5 nên giá trị cường độ gradient g 
= 4 phân bố đều cho hai bin 0 và bin 20, 
mỗi bin có giá trị 4x0.5 = 2. Pixel ở vị trí 
a76 (khoanh tròn xanh lá) có giá trị góc  = 
165, cường độ gradient g = 85. Trong 
histogram 9 bins góc 0
0
 ~ 180
0
 nên góc 
165
0
 nằm giữa bin160 và bin0, khoảng cách 
từ 160 165 = 5, tỉ lệ 5/20 = 0.25, khoảng 
cách từ 165 180 (~0) = 15, tỉ lệ 15/20 = 
0.75. Do khoảng cách từ 165 160 gần 
hơn nên trọng số phân bố vào bin160 sẽ là 
0.75, trọng số phân bố vào bin0 sẽ là 0.25. 
Bin160 sẽ nhận giá trị 85x0.75 = 63.75, 
bin0 nhận giá trị 85x0.25 = 21.25. Ở bước 
trước bin0 đã có giá trị là 2, nên bin0 sẽ có 
giá trị là 2 + 21.25 = 23.25. 
Lần lượt tính cho tất cả các ô trong cell 
trên, chúng ta được biểu đồ histogram như 
sau: 
Hình 10. Biểu đồ histogram 
Bước 4: Chuẩn hóa khối 16x16: Gradient 
của một ảnh rất nhạy cảm với các vùng có 
ánh sáng chồng lấn nhất là ảnh thiếu sáng, 
do đó để giảm độ ảnh hưởng của yếu tố ánh 
sáng lên gradient (đồng nghĩa với giảm 
nhiễu) ta cần chuẩn hóa gradient. Xét một 
ví dụ về chuẩn hóa như sau: giả sử một 
pixel có giá trị màu RGB là [128, 64, 32]. 
Chiều dài vector trên sẽ là: 
√ , vector 
được chuẩn hóa L2 sẽ là 
[
] [ ] 
Trong bước này, thay vì chuẩn hóa 
vector histogram của từng cell 8x8, chúng 
ta sẽ chuẩn hóa vector histogram cho từng 
khối 16x16, mỗi khối sẽ có 4 cell 8x8, tức 
sẽ có sự chồng lấn giữa các khối. Một cell 
8x8 có vector histogram kích thước 9x1, do 
đó một khối 16x16 sẽ có vector histogram 
kích thước 36x1. 
Lần lượt trượt cửa sổ 16x16 và tính 
vector histogram cho từng khối từ trái sang 
phải và từ trên xuống dưới, mỗi bước trượt 
8 pixel cho đến khi hết hình. 
Hình 11 minh họa một bước trượt cửa 
sổ khối 16x16. 
Hình 11. Cửa sổ trượt 16x16 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 05/2017 
71 
Tính vector đặc trưng HOG 
Gộp tất cả vector 36x1 vào thành một 
vector lớn hơn có kích thước: Có 7 vị trí 
cửa sổ trượt theo chiều ngang và 15 vị trí 
cửa sổ trượt theo chiều dọc, tổng cộng có 
7x15 = 105 vị trí; Mỗi khối 16x16 được 
biểu diễn bằng một vector 36x1, nếu gộp 
105 vector 36x1 vào thành một vector lớn 
hơn sẽ được vector có kích thước 36x105 = 
3780x1. 
Hình 12. Biểu diễn vector Hog của các cell 8x8 
Hình 12 minh họa biểu diễn vector đặc 
trưng Hog 9x1 đã được chuẩn hóa của các 
cell 8x8. Nhận thấy quanh vùng thân và 
chân của vận động viên, hướng chủ đạo của 
các vector xoay bao quanh vùng này. 
3. KẾT QUẢ MỘT SỐ THỰC NGHIỆM 
3.1. Thực nghiệm kiểm tra độ chính xác 
thuật toán 
Thực nghiệm 1: Thuật toán: KNN; Dữ 
liệu: Opencv-digits. 50% dữ liệu được dùng 
làm tập huấn luyện, 50% dữ liệu được dùng 
làm tập test; Đặc trưng: đặc trưng thô; Kết 
quả: độ chính xác 91.76%. 
Thực nghiệm 2: Thuật toán: KNN; Dữ 
liệu: Opencv-digits. 50% dữ liệu được dùng 
làm tập huấn luyện, 50% dữ liệu được dùng 
làm tập test; Đặc trưng: đặc trưng Hog; Kết 
quả: độ chính xác 92.88%. 
Thực nghiệm 3: Thuật toán: SVM; Dữ 
liệu: Opencv-digits. 50% dữ liệu được dùng 
làm tập huấn luyện, 50% dữ liệu được dùng 
làm tập test; Đặc trưng: đặc trưng thô; Kết 
quả: độ chính xác 90.44%. 
Thực nghiệm 4: Thuật toán: SVM; Dữ 
liệu: Opencv-digits. 50% dữ liệu được dùng 
làm tập huấn luyện, 50% dữ liệu được dùng 
làm tập test; Đặc trưng: đặc trưng Hog; Kết 
quả: độ chính xác 93.8%. 
3.2. Ứng dụng nhận diện số báo danh 
trên phiếu trả lời trắc nghiệm 
Trên Phiếu trả lời trắc nghiệm, phần 
ghi thông tin số báo danh của thí sinh gồm 
2 phần: phần đánh số báo danh bằng cách 
tô các chấm tròn trên các chữ số và phần 
ghi số báo danh bằng tay. Hình 13 minh 
họa một mẫu Phiếu trả lời trắc nghiệm. 
Hình 13. Mẫu Phiếu trả lời trắc nghiệm 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thu Nguyệt Minh và tgk 
72 
Mục đích xây dựng ứng dụng là nhằm 
loại bỏ các Phiếu trả lời trắc nghiệm không 
hợp lệ do số báo danh được ghi bằng 
phương pháp chấm tròn không khớp với số 
báo danh được ghi bằng cách viết tay. 
Dữ liệu: Tập dữ liệu MNIST; Đặc trưng: 
Đặc trưng HOG; Thuật toán: Thuật toán 
máy học: SVM, thuật toán triển khai ứng 
dụng: Thuật toán 3.1 
Thuật toán 3.1: Input: ảnh scan Phiếu trả 
lời trắc nghiệm; Output: tập các số báo 
danh đã được nhận diện: 1). rois = các chữ 
số báo danh viết tay trên Phiếu trả lời trắc 
nghiệm; 2). for each roi in rois; 3). Chuyển 
roi sang ảnh grayscale; 4). Xác định các 
vùng contour trong roi; 5). Loại các 
contour nhiễu, chỉ lấy contour có diện tích 
lớn nhất; 6). Scaling contour dựa trên kích 
thước contour; 7). Resize contour 28x28; 
8). Tính vector Hog cho contour; 9). Nhận 
diện contour bằng thuật toán SVM; 10). 
end for. 
3.2.4. Một số kết quả 
Hình 14. Một số kết quả thực nghiệm 
3.2.5. Phân tích một số nguyên nhân ảnh 
hưởng đến kết quả. 
Sự khác biệt về hình dáng chữ viết của 
người Việt Nam và người phương Tây 
Ví dụ, trong dữ liệu Opencv, đa số số 1 
thường được viết chỉ bằng một nét đi xuống 
, người Việt Nam thường có cách viết số 
1 có chân và một nét đi lên trước khi bắt 
đầu nét đi xuống . Theo thống kê trong 
bộ dữ liệu Opencv, số chiếm tỉ lệ 
479/500, số chiếm tỉ lệ 21/500. Một 
trường hợp khác là số 7, trong khi số 
chiếm 435/500, số chỉ chiếm 65/500. 
Chữ viết nguệch ngoạc, cách điệu 
Ví dụ: , 
Quá trình xác định contour chưa chính 
xác: Contour hiểu một cách đơn giản là 
đường nối dọc theo biên tất cả các điểm 
liên tục cùng màu và cùng cường độ. Hình 
15 minh họa kết quả xác định contour số 
báo danh của một Phiếu trả lời trắc nghiệm. 
Đường viền xanh trong ảnh trên là contour 
các chữ số xác định được, ảnh bên dưới là 
contour đã được cắt ra và chuyển sang ảnh 
grayscale. Một số chữ số sau khi được lấy 
ra từ kết quả xác định contour đã bị mất 
một số nét ở biên. 
Hình 15. Kết quả cắt chữ số từ contour 
Nét chữ không đều: Nét chữ khi viết 
không đều nhất là ở các nét cuối. Nét 
không đều dẫn đến kết quả chuyển sang 
ảnh grayscale bị mất một số nét hoặc nét 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 05/2017 
73 
đậm nhạt khác nhau. Hình 16 minh họa kết 
quả chuyển sang ảnh grayscale của một số 
chữ số có nét không đều. 
Hình 16. Ảnh grayscale nét chữ không đều 
Hình 17 cho thấy, số 9 có nét không 
đều ở trên dễ nhận diện thành số 0 hơn là 
nhận diện số 9. 
Hình 17. Ảnh phóng to so sánh chữ số 9 nhận được 
từ contour (trái) và một mẫu chữ số 0 và 9 từ bộ dữ 
liệu MNIST (phải) 
4. KẾT LUẬN 
Nhận diện chữ số viết tay là một tiến 
trình phụ thuộc vào nhiều nhóm yếu tố như: 
Nhóm yếu tố kỹ thuật: Thuật toán máy 
học; Thuật toán xử lý ảnh. 
Nhóm yếu tố phi kỹ thuật: Chất lượng 
dữ liệu phục vụ cho máy học; Chất lượng 
mẫu cần nhận diện. 
Ứng dụng nhận diện chữ số báo danh 
đòi hỏi độ chính xác 100% là một bài toán 
khó. Có thể nâng cao độ chính xác ứng 
dụng thông qua nhóm yếu tố kỹ thuật như: 
điều chỉnh các tham số thuật toán, cải tiến 
thuật toán hoặc phát triển các thuật toán 
mới. 
Đối với nhóm yếu tố phi kỹ thuật, có 
thể cải thiện như: Dữ liệu phục vụ máy 
học: ngoài các bộ dữ liệu đã nêu ở trên, có 
thể bổ sung hoặc xây dựng bộ dữ liệu riêng 
phù hợp với hình dáng chữ số viết tay của 
người Việt Nam; Đối với việc cải thiện chất 
lượng mẫu cần nhận diện có thể: sử dụng 
viết chì chất lượng cao dùng để viết số báo 
danh; Phiếu trả lời trắc nghiệm không được 
nhăn dễ làm mất nét ở các nếp nhăn,
TÀI LIỆU THAM KHẢO 
1. Reza Ebrahimzadeh, Mahdi Jampour (2014), Efficient Handwritten Digit Recognition 
based on Histogram of Oriented Gradients and SVM, International Journal of Computer 
Applications (0975 – 8887) Volume 104 – No.9. 
2. Grace Tsai (2010), Histogram of Oriented Gradients, University of Michigan. 
3. Navneet Dalal, Bill Triggs (2005), Histograms of Oriented Gradients for Human 
Detection, IEEE Computer Society Conference on Computer Vision and Pattern 
Recognition. 
4. MNIST, Handwritten Digits database of New York University , 
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thu Nguyệt Minh và tgk 
74 
5. Histogram of Oriented Gradients, https://www.learnopencv.com/histogram-of-oriented-
gradients. 
6. OCR of Hand-written Data using kNN, 
tutroals.readthedocs.io/en/latest/py_tutorials/py_ml/py_knn/py_knn_opencv/py_knn_open
cv.html. 
7. OCR of Hand-written Data using SVM, 
tutroals.readthedocs.io/en/latest/py_tutorials/py_ml/py_svm/py_svm_opencv/py_svm_ope
ncv.html#svm-opencv. 
Ngày nhận bài: 25/04/2017. Ngày biên tập xong: 8/8/2017. Duyệt đăng: 20/8/2017 

File đính kèm:

  • pdfmot_so_van_de_trong_nhan_dien_chu_so_viet_tay.pdf