Một số vấn đề trong nhận diện chữ số viết tay
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.
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
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:
- mot_so_van_de_trong_nhan_dien_chu_so_viet_tay.pdf