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.
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
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:
- nhan_dang_so_viet_tay_su_dung_thuoc_tinh_hog_ket_hop_voi_sup.pdf