Nhận dạng số viết tay sử dụng thuộc tính hog kết hợp với support vector machine

Nhận dạng chữ số viết tay là một bài toán khó nhưng có rất nhiều ứng dụng

trong thực tế. Nhận dạng chữ số viết tay có thể ứng dụng trong nhận dạng số báo danh

tự động, nhận dạng câu trả lời trắc nghiệm tự động, Mục tiêu của bài báo là nghiên cứu

về thuộc tính trích chọn đặc trưng HOG và thuật toán học máy SVM, đồng thời sử dụng

SVM với thuộc tính HOG trong nhận dạng chữ số viết tay cho bài toán nhận dạng số báo

danh tự động.

pdf 13 trang dienloan 9640
Bạn đang xem tài liệu "Nhận dạng số viết tay sử dụng thuộc tính hog kết hợp với support vector machine", để 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: Nhận dạng số viết tay sử dụng thuộc tính hog kết hợp với support vector machine

Nhận dạng số viết tay sử dụng thuộc tính hog kết hợp với support vector machine
15TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
NHẬN DẠNG SỐ VIẾT TAY SỬ DỤNG 
THUỘC TÍNH HOG KẾT HỢP VỚI 
SUPPORT VECTOR MACHINE
MCS HOG FEATURES AND SUPPORT VECTOR MACHINE 
BASED HANDWRITTEN DIGIT RECOGINITION SYSTEM 
Đỗ Thị Thanh Nga
Trường Đại học Công nghệ và Quản lý Hữu Nghị
Email: thanhngait94@gmail.com
Nguyễn Vân Anh
Trường Đại học Kinh Doanh và Công Nghệ Hà Nội
Email: vnvananhcomputer@gmail.com
Ngày tòa soạn nhận được bài báo: 28/11/2018
Ngày phản biện đánh giá: 18/12/2018
Ngày bài báo được duyệt đăng: 28/12/2018 
Tóm tắt: Nhận dạng chữ số viết tay là một bài toán khó nhưng có rất nhiều ứng dụng 
trong thực tế. Nhận dạng chữ số viết tay có thể ứng dụng trong nhận dạng số báo danh 
tự động, nhận dạng câu trả lời trắc nghiệm tự động, Mục tiêu của bài báo là nghiên cứu 
về thuộc tính trích chọn đặc trưng HOG và thuật toán học máy SVM, đồng thời sử dụng 
SVM với thuộc tính HOG trong nhận dạng chữ số viết tay cho bài toán nhận dạng số báo 
danh tự động.
Từ khóa: 
Summary: Handwriting digit recognition is a difficult problem but there are many 
practical applications. Handwritten alphanumeric identification can be applied in automatic 
attendance check, automatic multiple choice test answer identification, etc. The objective 
of the paper is to study the attribute HOG features and SVM, while using SVM with HOG 
attribute in hand writeen digit identification for automatic attendance check.
Keywords: HOG, SVM, MNIST
16 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
I. TỔNG QUAN NHẬN DẠNG CHỮ SỐ
Nhận dạng chữ số là đề tài thu hút rất nhiều nhà nghiên cứu quan tâm. Nhận dạng chữ số 
được chia thành 2 loại: Nhận dạng chữ số in và nhận dạng chữ số viết tay. Và trong bài báo này 
ta sẽ chỉ tìm hiểu về nhận dạng chữ số viết tay.
Các bước trong nhận dạng chữ số
Bước 1: Tiền xử lý
Bước này sẽ giúp tăng độ chính xác cho hệ thống nhận dạng. Vì trong quá trình quét ảnh 
sẽ gặp các loại nhiễu, kích thước ảnh không đồng nhất hoặc ảnh thiếu ánh sáng trong quá trình 
chụp.
Bước 2: Tách các chữ số 
Ở bước này sẽ tiến hành tách từng riêng từng ký tự để phục vụ nhận dạng. Vì chỉ khi tách 
riêng từng ký tự đơn ra khỏi một tổng thể lớn thì hệ thống mới dễ dàng phân lớp và nhận dạng.
Bước 3: Trích rút đặc trưng
Đặc trưng của ảnh là những đặc điểm riêng biệt giúp phân biệt ảnh này với ảnh khác. Và để 
giảm độ phức tạp và tăng độ chính xác của thuật toán thì đòi hỏi các đặc trưng được trích chọn 
rút gọn nhưng vẫn đảm bảo đủ thông tin đối tượng. Từ những tiêu chí trên ta phải tập hợp được 
đặc trưng riêng cho từng lớp để phân biệt các lớp với nhau.
Bước 4: Huấn luyện và Nhận dạng
• Huấn luyện
Dữ liệu huấn luyện sau khi qua các khâu tiền xử lý và trích chọn đặc trưng sẽ được đưa vào 
huấn luyện. Sau khi kết thúc quá trình huấn luyện, hệ thống sẽ lưu lại giá trị các tham số của 
hàm quyết định phân lớp để phục vụ cho việc nhận dạng sau này. Quá trình huấn luyện tiêu tốn 
khá nhiều thời gian. Tốc độ huấn luyện nhanh hay chậm còn tùy thuộc vào từng thuật toán huấn 
luyện, chiến lược và số lượng mẫu tham gia huấn luyện.
• Nhận dạng
Để nhận dạng thì có rất nhiều các phương pháp khác nhau, mỗi phương pháp đều có những 
đặc điểm riêng. 
Từ bộ dữ liệu đã được huấn luyện kết hợp với các thuật toán phân lớp dữ liệu ta sẽ đưa ra 
được kết quả nhận dạng.
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG
Histogram of Oriented Gradients là một bộ vector mô tả đặc trưng của đối tượng. Nó trích 
rút những thông tin đặc trưng hữu ích bằng cách loại bỏ những thông tin dư thừa gây nhiễu với 
mục đích để phát hiện đối tượng. 
Bài toán tính toán HOG gồm 5 bước:
17TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bước 1: Tiền xử lý
Đầu tiên ta phải xác định được đối tượng cần quan tâm, sau đó sẽ cắt và điều chỉnh kích 
thước ảnh về cùng một kích thước cho trước (Tùy vào từng bài toán mà ta đưa ra tỉ lệ kích thước 
cụ thể)
Ở đây ta lấy bài toán nhận dạng người để làm ví dụ:
Từ một bức ảnh tổng thể có kích thước ban đầu 720x475 ta tiến hành cắt đối tượng cần quan 
tâm về kích thước 64x128 (tỉ lệ 1:2)
Để nhận dạng thì có rất nhiều các phương pháp 
khác nhau, mỗi phương pháp đều có những đặc điểm 
riêng. 
Từ bộ dữ liệu đã được huấn luyện kết hợp với 
các thuật toán phân lớp dữ liệu ta sẽ đưa ra được kết 
quả nhận dạng. 
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG 
Histogram of Oriented Gradients là một bộ 
vector mô tả đặc trưng của đối tượng. Nó trích rút 
những thông tin đặc trưng hữu ích bằng cách loại bỏ 
những thông tin dư thừa gây nhiễu với mục đích để 
phát hiện đối tượng. 
Bài toán tính toán HOG gồm 5 bước: 
Bước 1: Tiền xử lý 
Đầu tiên ta phải xác định được đối tượng cần 
quan tâm, sau đó sẽ cắt và điều chỉnh kích thước ảnh 
về cùng một kích thước cho trước (Tùy vào từng bài 
toán mà ta đưa ra tỉ lệ kích thước cụ thể) 
Ở đây ta lấy bài toán nhận dạng người để làm ví 
dụ: 
Từ một bức ảnh tổng thể có kích thước ban đầu 
720x475 ta tiến hành cắt đối tượng cần quan tâm về 
kích thước 64x128 (tỉ lệ 1:2) 
Hình 2.1. Điều chỉnh và phân tách ảnh. 
Bước 2: Tính toán Gradient của các hình ảnh 
Đầu tiên các gradient chiều ngang và chiều 
thẳng. Sau đó, chúng ta sẽ tính toán biểu đồ của các 
gradient. Điều này sẽ thực hiện được dựa trên hệ 
thống các nhân (kernels) sau: 
Điều này tính được bằng cách sử dụng toán tử 
Sobel trong OpenCV với lõi kích cỡ là 1. 
# Read image 
im = cv2.imread (‘bolt.png’) 
im = np.float32 (im) / 255.0 
# Calculate gradient 
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1) 
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, ksize =1) 
Tiếp theo chúng ta sẽ tìm được độ lớn và hướng 
của gradien bằng công thức sau: 
𝑔𝑔 = √𝑔𝑔𝑥𝑥2 + 𝑔𝑔𝑦𝑦2 
𝜃𝜃 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
𝑔𝑔𝑦𝑦
𝑔𝑔𝑥𝑥
Kết quả sau khi tính toán gradient chúng ta sẽ có 
như sau: 
Sobel theo chiều x Sobel theo chiều y Cường độ gradient 
Hình 2.2. Phân tích ảnh bằng gradient 
Bước 3: Tính toán biểu đồ các Gradient trong một 
cells 8x8 
Chia ảnh thành các ô có kích thước 8x8 pixel. 
Với mỗi thành phần nhỏ trong ô ảnh màu sẽ chứa 
8x8x3= 192 giá trị pixel. Còn với Gradient thì phần 
nhỏ đó chỉ chưa 8x8x2=128 giá trị pixel vì trong 
Gradient chỉ chứa 2 giá trị là độ lớn và hướng. 
Và để việc biểu diễn trở lên gọn hơn ta sẽ biểu 
diễn 128 giá trị đó trên một biểu đồ có 9 hướng tượng 
trưng cho hướng của gradient. Nó tương ứng với 9 
góc 0, 20,40,,160. 
Ví dụ với hình ảnh nhỏ 8 x 8 chúng ta sẽ nhận 
được vẻ bên ngoài của gradient. 
Ở giữa: Một hình nhỏ RGB và trình bày các 
gradient bằng cách sử dụng mũi tên. 
Để nhận dạng thì có rất nhiều các phương pháp 
khác nhau, mỗi phương pháp đều có những đặc điểm 
iêng. 
Từ bộ dữ liệu đã được huấn luyện kết hợp với 
các thuật toán phân lớp dữ liệu ta sẽ đưa ra được kết 
quả nhận dạng. 
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG 
Histogram of Oriented Gradients là một bộ 
vector mô tả đặc trưng của đối tượng. Nó trích rút 
những thông tin đặc trưng hữu ích bằng cách loại bỏ 
những hô tin dư thừa gây nhiễu với mục đích để 
phát hiện đối tượng. 
Bài toán tính toán HOG gồm 5 bước: 
Bước 1: Tiền xử lý 
Đầu tiên ta phải xác định được đối tượng cần 
quan tâm, sau đó sẽ cắt và điều chỉnh kích thước ảnh 
về cùng một kích thước cho trước (Tùy vào từng bài 
toán mà ta đưa ra tỉ lệ kích thước cụ thể) 
Ở đây ta lấy bài toán nhận dạng người để làm ví 
dụ: 
Từ một bức ảnh tổng thể có kích thước ban đầu 
720x475 ta tiến hành cắt đối tượng cần quan tâm về 
kích thướ 64x128 (tỉ lệ 1:2) 
Hình 2.1. Điều chỉnh và phân tách ảnh. 
Bước 2: Tính toán Gradient của các hình ảnh 
Đầu tiên các gradient chiều ngang và chiều 
thẳng. Sau đó, chúng ta sẽ tính toán biểu đồ của các 
gradient. Điều này sẽ thực hiện được dựa trên hệ 
thống các nhân (kernels) sau: 
Điều này tính được bằng cách sử dụng toán tử 
Sobel trong OpenCV với lõi kích cỡ là 1. 
# Read image 
im = cv2.imread (‘bolt.png’) 
im = np.float32 (im) / 255.0 
# Calculate gradient 
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1) 
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, ksize =1) 
Tiếp theo chúng ta sẽ tìm được độ lớn và hướng 
của gradien bằng công thức sau: 
𝑔𝑔 = √𝑔𝑔𝑥𝑥2 + 𝑔𝑔𝑦𝑦2 
𝜃𝜃 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
𝑔𝑔𝑦𝑦
𝑔𝑔𝑥𝑥
Kết quả sau khi tính toán gradient chúng ta sẽ có 
như sau: 
Sobel theo chiều x Sobel theo chiều y Cường độ gradient 
Hình 2.2. Phân tích ảnh bằng gradient 
Bước 3: Tính toán biểu đồ các Gradient trong một 
cells 8x8 
Chia ảnh thành các ô có kích thước 8x8 pixel. 
Với mỗi thành phần nhỏ trong ô ảnh màu sẽ chứa 
8x8x3= 192 giá trị pixel. Còn với Gradient thì phần 
nhỏ đó chỉ chưa 8x8x2=128 giá trị pixel vì trong 
Gradient chỉ chứa 2 giá trị là độ lớn và hướng. 
Và để việc biểu diễn trở lên gọn hơn ta sẽ biểu 
diễn 128 giá trị đó trên một biểu đồ có 9 hướng tượng 
trưng cho hướ g của gradient. Nó tương ứng với 9 
góc 0, 20,40,,160. 
Ví dụ với hình ảnh nhỏ 8 x 8 chúng ta sẽ nhận 
được vẻ bên ngoài của gradient. 
Ở giữa: Một hình nhỏ RGB và trình bày các 
gradient bằng cách sử dụng mũi tên. 
Hình 2.1. Điều chỉnh và phân tá h ảnh
Bước 2: Tính toán Gradient của các hình ảnh 
Đầu tiên các gradient chiều ngang và chiều thẳng. Sau đó, chúng ta sẽ tính toán biểu đồ của 
các gradient. Điều này sẽ thực hiện được dựa trên hệ thống các nhân (kernels) sau:
Điều này tính được bằng cách sử dụng toán tử 
Sobel trong OpenCV với lõi kích cỡ là 1.
# Read image
im = cv2.imread (‘bolt.png’)
im = np.float32 (im) / 255.0
# Calculate gradient
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1)
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, ksize =1)
Tiếp theo chúng ta sẽ tì được độ lớn và hướng của gradien bằng công thức sau:
g= √(g_x^2+g_y^2 )
18 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
θ=arctan g_y/g_x 
Kết quả sau khi tính toán gradient chúng ta sẽ có như sau:
Để nhận dạng thì có rất nhiều các phương pháp 
khác nhau, mỗi phương pháp đều có những đặc điểm 
riêng. 
Từ bộ dữ liệu đã được huấn luyện kết hợp với 
các thuật toán phân lớp dữ liệu ta sẽ đưa ra được kết 
quả nhận dạng. 
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG 
Histogram of Oriented Gradients là một bộ 
vector mô tả đặc trưng của đối tượng. Nó trích rút 
những thông tin đặc trưng hữu ích bằng cách loại bỏ 
những thông tin dư thừa gây nhiễu với mục đích để 
phát hiện đối tượng. 
Bài toán tính toán HOG gồm 5 bước: 
Bước 1: Tiền xử lý 
Đầu tiên ta phải xác định được đối tượng cần 
quan tâm, sau đó sẽ cắt và điều chỉnh kích thước ảnh 
về cùng một kích thước cho trước (Tùy vào từng bài 
toán mà ta đưa ra tỉ lệ kích thước cụ thể) 
Ở đây ta lấy bài toán nhận dạng người để làm ví 
dụ: 
Từ một bức ảnh tổng thể có kích thước ban đầu 
720x475 ta tiến hành cắt đối tượng cần quan tâm về 
kích thước 64x128 (tỉ lệ 1:2) 
Hình 2.1. Điều chỉnh và phân tách ảnh. 
Bước 2: Tính toán Gradient của các hình ảnh 
Đầu tiên các gradient chiều ngang và chiều 
thẳng. Sau đó, chúng ta sẽ tính toán biểu đồ của các 
gradient. Điều này sẽ thực hiện được dựa trên hệ 
thống các nhân (kernels) sau: 
Điều này tính được bằng cách sử dụng toán tử 
Sobel trong OpenCV với lõi kích cỡ là 1. 
# Read image 
im = cv2.imread (‘bolt.png’) 
im = np.float32 (im) / 255.0 
# Calculate gradient 
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1) 
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, ksize =1) 
Tiếp theo chúng ta sẽ tìm được độ lớn và hướng 
của gradien bằng công thức sau: 
𝑔𝑔 = √𝑔𝑔𝑥𝑥2 + 𝑔𝑔𝑦𝑦2 
𝜃𝜃 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
𝑔𝑔𝑦𝑦
𝑔𝑔𝑥𝑥
Kết quả sau khi tính toán gradient chúng ta sẽ có 
như sau: 
Sobel theo chiều x Sobel theo chiều y Cường độ gradient 
Hình 2.2. Phân tích ảnh bằng gradient 
Bước 3: Tính toán biểu đồ các Gradient trong một 
cells 8x8 
Chia ảnh thành các ô có kích thước 8x8 pixel. 
Với mỗi thành phần nhỏ trong ô ảnh màu sẽ chứa 
8x8x3= 192 giá trị pixel. Còn với Gradient thì phần 
nhỏ đó chỉ chưa 8x8x2=128 giá trị pixel vì trong 
Gradient chỉ chứa 2 giá trị là độ lớn và hướng. 
Và để việc biểu diễn trở lên gọn hơn ta sẽ biểu 
diễn 128 giá trị đó trên một biểu đồ có 9 hướng tượng 
trưng cho hướng của gradient. Nó tương ứng với 9 
góc 0, 20,40,,160. 
Ví dụ với hình ảnh nhỏ 8 x 8 chúng ta sẽ nhận 
được vẻ bên ngoài của gradient. 
Ở giữa: Một hình nhỏ RGB và trình bày các 
gradient bằng cách sử dụng mũi tên. 
Để nhận dạng thì có rất nhiều các phương pháp 
khác nhau, mỗi phương pháp đều có những đặc điểm 
riêng. 
Từ bộ dữ liệu đã được huấn luyện kết hợp với 
các thuật toán phân lớp dữ liệu ta sẽ đưa ra được kết 
quả nhận dạng. 
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG 
Histogram of Oriented Gradients là một bộ 
vector mô tả đặc trưng của đối tượng. Nó trích rút 
những thông tin đặc trưng hữu ích bằng cách loại bỏ 
những thông tin dư thừa gây nhiễu với mục đích để 
phát hiện đối tượng. 
Bài toán tính toán HOG gồm 5 bước: 
Bước 1: Tiền xử lý 
Đầu tiên ta phải xác định được đối tượng cần 
quan tâm, sau đó sẽ cắt và điều chỉnh kích thước ảnh 
về cùng một kích thước cho trước (Tùy vào từng bài 
toán mà ta đưa ra tỉ lệ kích thước cụ thể) 
Ở đây ta lấy bài toán nhận dạng người để làm ví 
dụ: 
Từ một bức ảnh tổng thể có kích thước ban đầu 
720x475 ta tiến hành cắt đối tượng cần quan tâm về 
kích thước 64x128 (tỉ lệ 1:2) 
Hình 2.1. Điều chỉnh và phân tách ảnh. 
Bước 2: Tính toán Gradient của các hình ảnh 
Đầu tiên các gradient chiều ngang và chiều 
thẳng. Sau đó, chúng ta sẽ tính toán biểu đồ của các 
gradient. Điều này sẽ thực hiện được dựa trên hệ 
thống các nhân (kernels) sau: 
Điều này tính được bằng cách sử dụng toán tử 
Sobel trong OpenCV với lõi kích cỡ là 1. 
# Read image 
im = cv2.imread (‘bolt.png’) 
im = np.float32 (im) / 255.0 
# Calculate gradient 
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1) 
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, ksize =1) 
Tiếp theo chúng ta sẽ tìm được độ lớn và hướng 
của gradien bằng công thức sau: 
𝑔𝑔 = √𝑔𝑔𝑥𝑥2 + 𝑔𝑔𝑦𝑦2 
𝜃𝜃 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
𝑔𝑔𝑦𝑦
𝑔𝑔𝑥𝑥
Kết quả sau khi tính toán gradient chúng ta sẽ có 
như sau: 
Sobel theo chiều x Sobel theo chiều y Cường độ gradient 
Hình 2.2. Phân tích ảnh bằng gradient 
Bước 3: Tính toán biểu đồ các Gradient trong một 
cells 8x8 
Chia ảnh thành các ô có kích thước 8x8 pixel. 
Với mỗi thành phần nhỏ trong ô ảnh màu sẽ chứa 
8x8x3= 192 giá trị pixel. Còn với Gradient thì phần 
nhỏ đó chỉ chưa 8x8x2=128 giá trị pixel vì trong 
Gradient chỉ chứa 2 giá trị là độ lớn và hướng. 
Và để việc biểu diễn trở lên gọn hơn ta sẽ biểu 
diễn 128 giá trị đó trên một biểu đồ có 9 hướng tượng 
trưng cho hướng của gradient. Nó tương ứng với 9 
góc 0, 20,40,,160. 
Ví dụ với hình ảnh nhỏ 8 x 8 chúng ta sẽ nhận 
được vẻ bên ngoài của gradient. 
Ở giữa: Một hình nhỏ RGB và trình bày các 
gradient bằng cách sử dụng mũi tên. 
Hình 2.2. Phân tích ảnh bằng gr ient
Bước 3: Tính toán biểu đồ các Gradient trong một cells 8x8
Chia ảnh thành các ô có kích thước 8x8 pixel. Với mỗi thành phần nhỏ trong ô ảnh màu sẽ 
chứa 8x8x3= 192 giá trị pixel. Còn với Gradient thì phần nhỏ đó chỉ chưa 8x ... ng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viết tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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 ây. 
 Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
 Tiếp theo, điều chỉnh lại kích thước ảnh và 
chuyển ảnh về ảnh đen trắng. 
Hình 3.5. Ảnh sau khi chuyển sang đen trắng 
Sau khi đã chuẩn hóa kích thước và khử nhiễu, 
thực hiện xác định viền của từng đối tượng: 
Hình 3.6. Ảnh sau khi được xác định viền 
Loại bỏ các viền nhiễu bằng cách chỉ lấy những 
viền có diện tích lớn nhất. 
Hình 3.7. Ảnh sau khi loại bỏ viền nhiễu 
Sau khi đã tách được các ký tự ở bước trên, tiến 
hành chuẩn hóa kích thước đường viền bằng 28x28. 
Từ đó, tính vetor đặc trưng của từng đối tượng vừa 
được chuẩn hóa bằng thuộc tính HOG. 
Sau khi mẫu dữ liệu đã qua các bước tiền xử lý 
và trích chọn đặc trưng, dựa vào giá trị các tham số 
thu được khi huấn luyện ta sẽ sử dụng thuật toán 
SVM để xem xem vector đó thuộc về lớp nào. Kết 
quả trả về là một số thực tương ứng với nhãn mà ta 
đã huấn luyện, có 10 nhãn tương ứng với các số từ 0 - 
9. 
4. Kết quả sau khi nhận dạng 
Một số kết quả tốt 
Một số kết quả chưa được tốt 
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST 
với thuật toán SVM: 
Dữ liệu huấn luyện 50.000 
Dữ liệu test 20.000 
Thời gian 
huấn 
luyện (s) 
Thời 
gian 
Test (s) 
Độ chính 
xác_Training 
(%) 
Độ chính 
xác_Test 
(%) 
Lần 1 
235.94 0.46 97.74 96.84 
Lần 2 
221.90 0.48 97.71 96.88 
Lần 3 
214.33 0.49 97.77 96.64 
Lần 4 
220.53 0.46 97.63 96.81 
Lần 5 
217.38 0.49 97.79 96.68 
Trung bình 
222.012 0.48 97.73 96.77 
Bảng kết quả thực nghiệm trên tập dữ liệu số báo 
danh viết tay với SVM 
Chữ 
số 
Số 
lượng 
Số 
lượng 
tách 
sai 
Số 
lượng 
tách 
đúng 
KQ 
đúng 
KQ 
sai 
Tỉ lệ 
% 
đúng 
Tỉ lệ 
% sai 
0 165 1 164 164 0 100 0 
1 85 20 65 40 25 61.54 38.46 
2 105 0 105 101 4 96.19 3.81 
3 105 0 105 100 5 95.24 4.76 
4 85 0 85 55 30 64.71 35.29 
5 85 2 83 83 0 100 0 
6 55 0 55 50 5 90.91 9.09 
7 75 0 75 56 19 74.67 25.33 
8 75 1 74 72 2 97.30 2.70 
9 65 0 65 49 16 75.38 24.62 
Tổng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viết tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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. 
 Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
 Tiếp theo, điều chỉnh lại kích thước ảnh và 
chuyển ảnh về ảnh đen trắng. 
Hình 3.5. Ảnh sau khi chuyển sang đen trắng 
Sau khi đã chuẩn hóa kích thước và khử nhiễu, 
thực hiện xác định viền của từng đối tượng: 
Hình 3.6. Ảnh sau khi được xác định viền 
Loại bỏ các viền nhiễu bằng cách chỉ lấy những 
viền có diện tích lớn nhất. 
Hình 3.7. Ảnh sau khi loại bỏ viền nhiễu 
Sau khi đã tách được các ký tự ở bước trên, tiến 
hành chuẩn hóa kích thước đường viền bằng 28x28. 
Từ đó, tính vetor đặc trưng của từng đối tượng vừa 
được chuẩn hóa bằng thuộc tính HOG. 
Sau khi mẫu dữ liệu đã qua các bước tiền xử lý 
và trích chọn đặc trưng, dựa vào giá trị các tham số 
thu được khi huấn luyện ta sẽ sử dụng thuật toán 
SVM để xem xem vector đó thuộc về lớp nào. Kết 
quả trả về là một số thực tương ứng với nhãn mà ta 
đã huấn luyện, có 10 nhãn tương ứng với các số từ 0 - 
9. 
4. Kết quả sau khi nhận dạng 
Một số kết quả tốt 
Một số kết quả chưa được tốt 
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST 
với thuật toán SVM: 
Dữ liệu huấn luyện 50.000 
Dữ liệu test 20.000 
Thời gian 
h ấn 
luyện (s) 
Thời 
gian 
Test (s) 
Độ chính 
xác_Training 
(%) 
Độ chính 
xác_Test 
(%) 
Lần 1 
235.94 0.46 97.74 96.84 
Lần 2 
221.90 0.48 97.71 96.88 
Lần 3 
214.33 0.49 97.77 96.64 
Lần 4 
220.53 0.46 97.63 96.81 
Lần 5 
217.38 0.49 97.79 96.68 
Trung bình 
222.012 0.48 97.73 96.77 
Bảng kết quả thực nghiệm trên tập dữ liệu số báo 
danh viết tay với SVM 
Chữ 
số 
Số 
lượng 
Số 
lượng 
tách 
sai 
Số 
lượng 
tách 
đúng 
KQ 
đúng 
KQ 
sai 
Tỉ lệ 
% 
đúng 
Tỉ lệ 
% sai 
0 165 1 164 164 0 100 0 
1 85 20 65 40 25 61.54 38.46 
2 105 0 105 101 4 96.19 3.81 
3 105 0 105 100 5 95.24 4.76 
4 85 0 85 55 30 64.71 35.29 
5 85 2 83 83 0 100 0 
6 55 0 55 50 5 90.91 9.09 
7 75 0 75 56 19 74.67 25.33 
8 75 1 74 72 2 97.30 2.70 
9 65 0 65 49 16 75.38 24.62 
Tổng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viết tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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. 
 Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
 Tiếp theo, điều chỉnh lại kích thước ảnh và 
chuyển ảnh về ảnh đen trắng. 
Hình 3.5. Ảnh sau khi chuyển sang đen trắng 
Sau khi đã chuẩn hóa kích thước và khử nhiễu, 
thực hiện xác định viền của từng đối tượng: 
Hình 3.6. Ảnh sau khi được xác định viền 
Loại bỏ các viền nhiễu bằng cách chỉ lấy những 
viền có diện tích lớn nhất. 
Hình 3.7. Ảnh sau khi loại bỏ viền nhiễu 
Sau khi đã tách được các ký tự ở bước trên, tiến 
hành chuẩn hóa kích thước đường viền bằng 28x28. 
Từ đó, tính vetor đặc trưng của từng đối tượng vừa 
được chuẩn hóa bằng thuộc tính HOG. 
Sau khi mẫu dữ liệu đã qua các bước tiền xử lý 
và trích chọn đặc trưng, dựa vào giá trị các tham số 
thu được khi huấn luyện ta sẽ sử dụng thuật toán 
SVM để xem xem vector đó thuộc về lớp nào. Kết 
quả trả về là một số thực tương ứng với nhãn mà ta 
đã huấn luyện, có 10 nhãn tương ứng với các số từ 0 - 
9. 
4. Kết quả sau khi nhận dạng 
Một số kết quả tốt 
Một số kết quả chưa được tốt 
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST 
với thuật toá SVM: 
Dữ liệu huấn luyện 50.000 
Dữ liệu test 20.000 
Thời gian 
huấn 
l yện (s) 
Thời 
gian 
Test (s) 
Độ chính 
xác_Training 
(%) 
Độ chính 
xác_Test 
(%) 
Lần 1 
235.94 0.46 97.74 96.84 
Lần 2 
221.90 0.48 97.71 96.88 
Lần 3 
214.33 0.49 97.77 96.64 
Lần 4 
220.53 0.46 97.63 96.81 
Lần 5 
217.38 0.49 97.79 96.68 
Trung bình 
222.012 0.48 97.73 96.77 
Bảng kết quả t ực nghiệm trên tập dữ liệu số báo 
danh viết tay với SVM 
Chữ 
số 
Số 
lượng 
Số 
lượng 
tách 
sai 
Số 
lượng 
tách 
đúng 
KQ 
đúng 
KQ 
sai 
Tỉ lệ 
% 
đúng 
Tỉ lệ 
% sai 
0 165 1 164 164 0 100 0 
1 85 20 65 40 25 61.54 38.46 
2 105 0 105 101 4 96.19 3.81 
3 105 0 105 100 5 95.24 4.76 
4 85 0 85 55 30 64.71 35.29 
5 85 2 83 83 0 100 0 
6 55 0 55 50 5 90.91 9.09 
7 75 0 75 56 19 74.67 25.33 
8 75 1 74 72 2 97.30 2.70 
9 65 0 65 49 16 75.38 24.62 
Tổng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viết tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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. 
 Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
26 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST với thuật toán SVM:
Bảng kết quả thực nghiệm trên tập dữ liệu số báo danh viết tay với SVM
 Tiếp theo, điều chỉnh lại kích thước ảnh và 
chuyển ảnh về ảnh đen trắng. 
Hình 3.5. Ảnh sau khi chuyển sang đen trắng 
Sau khi đã chuẩn hóa kích thước và khử nhiễu, 
thực hiện xác định viền của từng đối tượng: 
Hình 3.6. Ảnh sau khi được xác định viền 
Loại bỏ các viền nhiễu bằng cách chỉ lấy những 
viền có diện tích lớn nhất. 
Hình 3.7. Ảnh sau khi loại bỏ viền nhiễu 
Sau khi đã tách được các ký tự ở bước trên, tiến 
hành chuẩn hóa kích thước đường viền bằng 28x28. 
Từ đó, tính vetor đặc trưng của từng đối tượng vừa 
được chuẩn hóa bằng thuộc tính HOG. 
Sau khi mẫu dữ liệu đã qua các bước tiền xử lý 
và trích chọn đặc trưng, dựa vào giá trị các tham số 
thu được khi huấn luyện ta sẽ sử dụng thuật toán 
SVM để xem xem vector đó thuộc về lớp nào. Kết 
quả trả về là một số thực tương ứng với nhãn mà ta 
đã huấn luyện, có 10 nhãn tương ứng với các số từ 0 - 
9. 
4. Kết quả sau khi nhận dạng 
Một số kết quả tốt 
Một số kết quả chưa được tốt 
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST 
với thuật toán SVM: 
Dữ liệu huấn luyện 50.000 
Dữ liệu test 20.000 
Thời gian 
huấn 
luyện (s) 
Thời 
gian 
Test (s) 
Độ chính 
xác_Training 
(%) 
Độ chính 
xác_Test 
(%) 
Lần 1 
235.94 0.46 97.74 96.84 
Lần 2 
221.90 0.48 97.71 96.88 
Lần 3 
214.33 0.49 97.77 96.64 
Lần 4 
220.53 0.46 97.63 96.81 
Lần 5 
217.38 0.49 97.79 96.68 
Trung bình 
222.012 0.48 97.73 96.77 
Bảng kết quả thực nghiệm trên tập dữ liệu số báo 
danh viết tay với SVM 
Chữ 
số 
Số 
lượng 
Số 
lượng 
tách 
sai 
Số 
lượng 
tách 
đúng 
KQ 
đúng 
KQ 
sai 
Tỉ lệ 
% 
đúng 
Tỉ lệ 
% sai 
0 165 1 164 164 0 100 0 
1 85 20 65 40 25 61.54 38.46 
2 105 0 105 101 4 96.19 3.81 
3 105 0 105 100 5 95.24 4.76 
4 85 0 85 55 30 64.71 35.29 
5 85 2 83 83 0 100 0 
6 55 0 55 50 5 90.91 9.09 
7 75 0 75 56 19 74.67 25.33 
8 75 1 74 72 2 97.30 2.70 
9 65 0 65 49 16 75.38 24.62 
Tổng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viết tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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. 
 Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
 Tiếp theo, điều chỉnh lại kích thước ảnh và 
chuyển ảnh về ảnh đen trắng. 
Hình 3.5. Ảnh sau khi chuyển sang đen trắng 
Sau khi đã chuẩn hóa kích thước và khử nhiễu, 
thực hiện xác định viền của từng đối tượng: 
Hình 3.6. Ảnh sau khi được xác định viề 
Loại bỏ các viền nhiễu bằng cách chỉ lấy nh 
viền có diện tích lớn hất. 
Hình 3.7. Ảnh sau khi loại bỏ viền nhiễu 
Sau khi đã tách được các ký tự ở bước trên, tiến 
hành chuẩn hóa kích thước đường viền bằng 28x28. 
Từ đó, tính vetor đặc trưng của từng đối tượng vừa 
được chuẩn hóa bằng thuộc tính HOG. 
Sau khi mẫu dữ liệu đã qua các bước tiền xử lý 
và trích chọn đặc trưng, dựa vào giá trị các tham số 
thu được khi huấn luyện ta sẽ sử dụng thuật toán 
SVM để xem xem vector đó thuộc về lớp nào. Kết 
quả trả về là một số thực tương ứng với nhãn mà ta 
đã huấn luyện, có 10 nhãn tương ứng với các số từ 0 - 
9. 
4. Kết quả sau khi nhận dạng 
Một số kết quả tốt 
Một số kết quả chưa được tốt 
Bảng kết quả thực nghiệm trên tập dữ liệu MNIST 
với thuật toán SVM: 
Dữ liệu huấn luyện 50.000 
Dữ liệu test 20.000 
Thời gian 
huấn 
luyện (s) 
Thời 
gian 
Test (s) 
Độ chính 
xác_Training 
(%) 
Độ chính 
xác_Test 
(%) 
Lần 1 
. 0.46 97.74 96.84 
Lần 2 
. 0.48 97.71 96.88 
Lần 3 
. 0.49 97. 7 9 .64 
Lần 4 
. 0.46 97.63 96.81 
Lần 5 
217.38 0.49 97.79 96.68 
Trung bình 
222.012 0.48 97.73 96.77 
Bảng kết quả thực nghiệm trên tập dữ liệu số báo 
danh viết tay với SVM 
Chữ 
số 
Số 
lượng 
Số 
lượng 
tách 
sai 
Số 
lượng 
tách 
đúng 
KQ 
đúng 
KQ 
sai 
Tỉ lệ 
% 
đúng 
Tỉ lệ 
% sai 
0 165 1 164 164 0 100 0 
1 85 20 65 40 25 61.54 38.46 
2 105 0 105 101 4 96.19 3.81 
3 105 0 105 100 5 95.24 4.76 
4 85 0 85 55 30 64.71 35.29 
5 85 2 83 83 0 100 0 
6 55 0 5 50 5 90.91 9.09 
7 75 0 75 56 19 74.67 25.33 
8 75 1 74 72 2 97.30 2.70 
9 65 0 5 49 16 75.38 24.62 
Tổng 900 24 876 770 106 87.90 12.10 
Thực nghiệm trên ta thấy kết quả nhận dạng trên 
bộ dữ liệu số báo danh viế tay không được tốt bằng 
khi thực nghiệm kiểm tra trên bộ dữ liệu của tập 
MNIST. Nguyên nhân là vì: 
 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. 
Chữ viết nguệch ngoạc, cách điệu 
 Nét chữ không đều dẫn đến bị mất nét trong các 
bước tiền xử lý 
Từ những khó khăn, hạn chế trên ta có thể đưa ra 
phương pháp cải thiện kết quả bằng cách 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. 
V. KẾT LUẬN 
Thực nghiệm trên ta thấy kết q ả nhận ạ g trên bộ dữ liệu số báo da h viết tay không được 
tốt bằng khi thực nghiệm kiểm tra trên bộ dữ liệu của tập MNIST. Nguyên nhân là vì:
• 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.
• Chữ viết nguệch ngoạc, các điệu
• Nét chữ không đều dẫn đến bị mất nét trong các bước tiền xử lý
Từ những khó khăn, hạn chế trên ta có thể đưa ra phương pháp cải thiện kết quả bằng cách 
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.
27TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
V. KẾT LUẬN
Trong bài báo này đã nghiên cứu tổng quan về nhận dang chữ số, phương pháp trích chọn 
đặc trưng HOG và thuật toán SVM để áp dụng vào bài toán nhận dạng số báo danh trong phiếu 
thi trắc nghiệm.
Giải pháp dùng thuật toán SVM mặc dù chưa đem lại kết quả tuyệt đối nhưng nó sẽ là nền 
tảng cho các nghiên cứu về nhận dạng sau này.
TÀI LIỆU THAM KHẢO
Tiếng việt
[1] Huỳnh Hữu Hưng, Nguyễn Trọng Nguyên, Võ Đức Hoàng (2015), Giáo trình Xử Lý Ảnh. 
NXB TT&TT.
[2] Lương Mạnh Bá, Nguyễn Thanh Thuỷ. Nhập môn xử lý ảnh số. Nhà xuất bản. Nhà xuất 
bản Khoa học và Kỹ thuật, 2003.
Tiếng Anh
[3] Navneet Dalal and Bill Triggs. "Histograms of Oriented Gradients for Human Detection". 
International Conference on Computer Vision & Pattern Recognition.June 2005.
Trang Website
[4] https://machinelearningcoban.com (Bài 19 - Support Vector Machine)
[5] https://www.learnopencv.com/histogram-of-oriented-gradients/
[6] https://www.learnopencv.com/support-vector-machines-svm
[7] https://dominhhai.github.io/vi/2017/12/ml-logistic-regression/

File đính kèm:

  • pdfnhan_dang_so_viet_tay_su_dung_thuoc_tinh_hog_ket_hop_voi_sup.pdf