NHẬN DẠNG SỐ VIẾT TAY SỬ DỤNG<br />
THUỘC TÍNH HOG KẾT HỢP VỚI<br />
SUPPORT VECTOR MACHINE<br />
MCS HOG FEATURES AND SUPPORT VECTOR MACHINE<br />
BASED HANDWRITTEN DIGIT RECOGINITION SYSTEM<br />
<br />
<br />
Đỗ Thị Thanh Nga<br />
Trường Đại học Công nghệ và Quản lý Hữu Nghị<br />
Email: thanhngait94@gmail.com<br />
<br />
Nguyễn Vân Anh<br />
Trường Đại học Kinh Doanh và Công Nghệ Hà Nội<br />
Email: vnvananhcomputer@gmail.com<br />
<br />
<br />
<br />
Ngày tòa soạn nhận được bài báo: 28/11/2018<br />
Ngày phản biện đánh giá: 18/12/2018<br />
Ngày bài báo được duyệt đăng: 28/12/2018<br />
<br />
<br />
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<br />
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<br />
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<br />
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<br />
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<br />
danh tự động.<br />
Từ khóa:<br />
Summary: Handwriting digit recognition is a difficult problem but there are many<br />
practical applications. Handwritten alphanumeric identification can be applied in automatic<br />
attendance check, automatic multiple choice test answer identification, etc. The objective<br />
of the paper is to study the attribute HOG features and SVM, while using SVM with HOG<br />
attribute in hand writeen digit identification for automatic attendance check.<br />
Keywords: HOG, SVM, MNIST<br />
<br />
TẠP CHÍ KHOA HỌC 15<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
I. TỔNG QUAN NHẬN DẠNG CHỮ SỐ<br />
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ố<br />
đượ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<br />
ta sẽ chỉ tìm hiểu về nhận dạng chữ số viết tay.<br />
Các bước trong nhận dạng chữ số<br />
Bước 1: Tiền xử lý<br />
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<br />
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<br />
chụp.<br />
Bước 2: Tách các chữ số<br />
Ở 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<br />
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.<br />
Bước 3: Trích rút đặc trưng<br />
Đặ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à để<br />
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<br />
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<br />
đặc trưng riêng cho từng lớp để phân biệt các lớp với nhau.<br />
Bước 4: Huấn luyện và Nhận dạng<br />
• Huấn luyện<br />
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<br />
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<br />
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<br />
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<br />
luyện, chiến lược và số lượng mẫu tham gia huấn luyện.<br />
• Nhận dạng<br />
Để 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<br />
đặc điểm riêng.<br />
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<br />
được kết quả nhận dạng.<br />
II. TRÍCH CHỌN ĐẶC TRƯNG VỚI HOG<br />
Histogram of Oriented Gradients là một bộ vector mô tả đặc trưng của đối tượng. Nó trích<br />
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<br />
mục đích để phát hiện đối tượng.<br />
Bài toán tính toán HOG gồm 5 bước:<br />
<br />
16 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Bước 1: Tiền xử lý quan tâm, sau đó sẽ cắt và điều chỉnh kích thước<br />
Đầu tiên ta phải xác về định<br />
cùngđược<br />
mộtđốikíchtượng<br />
thướccầncho trước (Tùy vào từng<br />
quan tâm, sau đó sẽ cắt vàtoán điềumàchỉnh kíchrathước<br />
ta đưa ảnhthước cụ thể)<br />
tỉ lệ kích<br />
Bước 1: Tiền xử lý<br />
về cùng một kích thước cho trước Ở (Tùy<br />
đây ta vàobài<br />
lấy từng bàinhận dạng người để làm<br />
toán<br />
Đầu tiêntoán màxác<br />
ta phải ta đưa<br />
định ra tỉ lệđốikích<br />
được thước<br />
tượng cần cụ thể)<br />
quan tâm, sau đó sẽ cắt và điều chỉnh kích<br />
dụ:<br />
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<br />
cụ thể) Ở đây ta lấy bài toán nhận dạng người để làm ví<br />
Từ một bức ảnh tổng thể có kích thước ban<br />
dụ:<br />
Ở đây ta lấy bài toán nhận dạng người 720x475 ta tiến hành cắt đối tượng cần quan tâm<br />
để làm ví dụ:<br />
Từtổng<br />
Từ một bức ảnh mộtthểbức ảnhthước<br />
có kích tổng ban<br />
thểđầu<br />
kích có kích64x128<br />
thước thước<br />
720x475 ta tiếnban lệđầu<br />
(tỉhành 1:2)<br />
cắt đối tượng cần quan<br />
tâm về kích720x475 ta tiến<br />
thước 64x128 (tỉ lệ hành<br />
1:2) cắt đối tượng cần quan tâm về<br />
kích thước 64x128 (tỉ lệ 1:2) Hình<br />
<br />
<br />
Bước 3: Tính<br />
cells 8x8<br />
Chia ảnh<br />
Với mỗi thàn<br />
8x8x3= 192<br />
nhỏ đó chỉ c<br />
Hình 2.1. Điều chỉnh và phân tách ảnh<br />
Gradient chỉ c<br />
Bước 2: Tính toán Gradient của các hình Và ảnh<br />
để vi<br />
Hình 2.1. Điều chỉnh và phân tách ảnh.<br />
Hình 2.1. Điều chỉnhĐầu cácảnhgradient chiều diễn<br />
tiêntách<br />
và phân ngang128vàgiáct<br />
Bước 2: Tính toán Gradient của các hình ảnh<br />
thẳng. trưng cho hư<br />
Bước 2: Tính toán Gradient của các hình ảnh Sau đó, chúng ta sẽ tính toán biểu đồ của<br />
Đầu tiên các gradient chiều Điều<br />
gradient. ngangnàyvà sẽchiều<br />
thực hiện được góc 0,dựa<br />
20,40,…<br />
trên<br />
Đầ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<br />
thẳng. Sau đó, chúng ta sẽthống tính toán biểu (kernels)<br />
các nhân đồ của các<br />
sau:<br />
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: Ví dụ vớ<br />
gradient. Điều này sẽ thực hiện được dựa trên hệ được vẻ bên n<br />
Điều nàythống các nhân (kernels) sau:<br />
tính được bằng cách sử dụng toán tử<br />
Sobel trong OpenCV với lõi kích cỡ là 1.<br />
<br />
# Read image<br />
<br />
im = cv2.imread (‘bolt.png’)<br />
<br />
im = np.float32 (im) / 255.0<br />
<br />
# Calculate gradient Điều này tính được bằng cách sử dụng toá<br />
Sobel trong OpenCV với lõi kích cỡ là 1.<br />
gx = cv2.Sobel(img,cv2.CV_32F, 1, 0, ksize =1)<br />
Điều này tính được bằng cách sử dụng toán tử<br />
# Read image<br />
Sobel trong OpenCV với<br />
gy = cv2.Sobel(img,cv2.CV_32F, 0, 1, lõi kích<br />
ksize =1) cỡ là 1.<br />
im = cv2.imread (‘bolt.png’)<br />
# Read<br />
Tiếp theo chúng image<br />
ta sẽ tìm được độ lớn và hướng của gradien bằng công thức sau:<br />
im = np.float32 (im) / 255.0 Ở giữa:<br />
im = )cv2.imread (‘bolt.png’)<br />
g= √(g_x^2+g_y^2<br />
gradient bằng<br />
im = np.float32 (im) / 255.0 TẠP CHÍ KHOA HỌC 17<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />