Mục tiêu của bài viết 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.
Trang 1TẠ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
Trang 216 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:
Trang 3TẠ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 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.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:
g= √(g_x^2+g_y^2 )
Trang 418 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 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
Trang 5TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bên phải: Các gradient cùng một phần được biểu diễn dưới các con số
Hình 2.3 Ảnh được phân tích độ lớn và hướng
Từ hình ảnh trên ta thấy, các mũi tên được trình bày với hướng của các gradient và độ dài
chỉ cường độ của các gradient
Ở bên phải chúng ta thấy các số nguyên thể hiện các gradient trong các ô 8 x 8 với một sự
khác biệt nhỏ - các góc nằm ở giữa 0 và 180 thay vì 0 đến 360 Vì ở đây một mũi tên của gradient
và một góc 180 độ đối diện được coi là giống nhau
Dưới đây là kết quả việc miêu tả quá trình minh họa biểu đồ gradient:
Hình 2.4 Bảng minh họa biểu đồ gradient
Tại các pixel bao quanh màu xanh Nó là các góc (hướng) của 80 độ và giá trị cường độ là
2 Vì vậy sẽ thêm 2 vào vị trí 5 trong dãy tương ứng với 80 độ
Với các pixel xung quanh màu đỏ có giá trị góc là 10 độ và giá trị cường độ là 4 Với 10 độ
là một nửa giữa 0 và 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
Giá trị cường độ gradient g = 4 phân bố đều cho hai góc 0 và 20, mỗi góc có giá trị 4x0.5
= 2
Bên phải: Các gradient cùng một phần được biểu diễn dưới các con số
Hình 2.3 Ảnh được phân tích độ lớn và hướng
Từ hình ảnh trên ta thấy, các mũi tên được trình bày với hướng của các gradient và độ dài chỉ cường
độ của các gradient
Ở bên phải chúng ta thấy các số nguyên thể hiện các gradient trong các ô 8 x 8 với một sự khác biệt
nhỏ - các góc nằm ở giữa 0 và 180 thay vì 0 đến 360
Vì ở đây một mũi tên của gradient và một góc 180 độ
đối diện được coi là giống nhau
Dưới đây là kết quả việc miêu tả quá trình minh họa biểu đồ gradient:
Hình 2.4 Bảng minh họa biểu đồ gradient
Tại các pixel bao quanh màu xanh Nó là các góc (hướng) của 80 độ và giá trị cường độ là 2 Vì
vậy sẽ thêm 2 vào vị trí 5 trong dãy tương ứng với 80
độ
Với các pixel xung quanh màu đỏ có giá trị góc
là 10 độ và giá trị cường độ là 4 Với 10 độ là một
nửa giữa 0 và 20 độ:
cho hai góc 0 và 20, mỗi góc có giá trị 4x0.5
= 2
Hình 2.5 Điều chỉnh bảng minh họa biểu
đồ gradient
Với Pixel ở vị trí khoanh tròn xanh lá có giá trị góc là 165, giá trị cường độ là 85 Trong histogram 9 bin tương ứng với các góc 0 -> 180 nên góc 165 nằm giữa bin 160 và bin 0
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 bin 160 sẽ là 0.75, trọng số phân bố vào bin0 sẽ là 0.25
Bin 160 sẽ nhận giá trị 85x0.75 = 63.75, bin 0 nhận giá trị 85x0.2 = 1.25 Ở bước trước bin 0 đã có giá trị là 2, nên bin 0 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 2.6 Biểu đồ đánh giá kết quả
Bước 4: Chuẩn hóa khối 16 x 16
Các Gradient rất nhạy cảm với ánh sáng, nhất là các vùng chồng lấn lên nhau Vì thế chúng ta sẽ chuẩn hóa lại biểu đồ để chúng không bị ảnh hưởng với các biến đổi ánh sáng
Ở đây thay vì chuẩn hóa vector histogram từng ô 8x8, ta sẽ chuẩn hóa cho từng khối 16x16
Trang 620 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bên phải: Các gradient cùng một phần được biểu diễn dưới các con số
Hình 2.3 Ảnh được phân tích độ lớn và hướng
Từ hình ảnh trên ta thấy, các mũi tên được trình bày với hướng của các gradient và độ dài chỉ cường
độ của các gradient
Ở bên phải chúng ta thấy các số nguyên thể hiện các gradient trong các ô 8 x 8 với một sự khác biệt nhỏ - các góc nằm ở giữa 0 và 180 thay vì 0 đến 360
Vì ở đây một mũi tên của gradient và một góc 180 độ đối diện được coi là giống nhau
Dưới đây là kết quả việc miêu tả quá trình minh họa biểu đồ gradient:
Hình 2.4 Bảng minh họa biểu đồ gradient
Tại các pixel bao quanh màu xanh Nó là các góc (hướng) của 80 độ và giá trị cường độ là 2 Vì vậy sẽ thêm 2 vào vị trí 5 trong dãy tương ứng với 80
độ
Với các pixel xung quanh màu đỏ có giá trị góc
là 10 độ và giá trị cường độ là 4 Với 10 độ là một nửa giữa 0 và 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
Giá trị cường độ gradient g = 4 phân bố đều cho hai góc 0 và 20, mỗi góc có giá trị 4x0.5
= 2
Hình 2.5 Điều chỉnh bảng minh họa biểu
đồ gradient
Với Pixel ở vị trí khoanh tròn xanh lá có giá trị góc là 165, giá trị cường độ là 85 Trong histogram 9 bin tương ứng với các góc 0 -> 180 nên góc 165 nằm giữa bin 160 và bin 0
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 bin 160 sẽ là 0.75, trọng số phân bố vào bin0 sẽ là 0.25
Bin 160 sẽ nhận giá trị 85x0.75 = 63.75, bin 0 nhận giá trị 85x0.2 = 1.25 Ở bước trước bin 0 đã có giá trị là 2, nên bin 0 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 2.6 Biểu đồ đánh giá kết quả
Bước 4: Chuẩn hóa khối 16 x 16
Các Gradient rất nhạy cảm với ánh sáng, nhất là các vùng chồng lấn lên nhau Vì thế chúng ta sẽ chuẩn hóa lại biểu đồ để chúng không bị ảnh hưởng với các biến đổi ánh sáng
Ở đây thay vì chuẩn hóa vector histogram từng ô 8x8, ta sẽ chuẩn hóa cho từng khối 16x16
Bên phải: Các gradient cùng một phần được biểu
diễn dưới các con số
Hình 2.3 Ảnh được phân tích độ lớn và hướng
Từ hình ảnh trên ta thấy, các mũi tên được trình
bày với hướng của các gradient và độ dài chỉ cường
độ của các gradient
Ở bên phải chúng ta thấy các số nguyên thể hiện
các gradient trong các ô 8 x 8 với một sự khác biệt
nhỏ - các góc nằm ở giữa 0 và 180 thay vì 0 đến 360
Vì ở đây một mũi tên của gradient và một góc 180 độ
đối diện được coi là giống nhau
Dưới đây là kết quả việc miêu tả quá trình minh
họa biểu đồ gradient:
Hình 2.4 Bảng minh họa biểu đồ gradient
Tại các pixel bao quanh màu xanh Nó là các
góc (hướng) của 80 độ và giá trị cường độ là 2 Vì
vậy sẽ thêm 2 vào vị trí 5 trong dãy tương ứng với 80
độ
Với các pixel xung quanh màu đỏ có giá trị góc
là 10 độ và giá trị cường độ là 4 Với 10 độ là một
nửa giữa 0 và 20 độ:
cho hai góc 0 và 20, mỗi góc có giá trị 4x0.5
= 2
Hình 2.5 Điều chỉnh bảng minh họa biểu
đồ gradient
Với Pixel ở vị trí khoanh tròn xanh lá có giá trị góc là 165, giá trị cường độ là 85 Trong histogram 9 bin tương ứng với các góc 0 -> 180 nên góc 165 nằm giữa bin 160 và bin 0
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 bin 160 sẽ là 0.75, trọng số phân bố vào bin0 sẽ là 0.25
Bin 160 sẽ nhận giá trị 85x0.75 = 63.75, bin 0 nhận giá trị 85x0.2 = 1.25 Ở bước trước bin 0 đã có giá trị là 2, nên bin 0 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 2.6 Biểu đồ đánh giá kết quả
Bước 4: Chuẩn hóa khối 16 x 16
Các Gradient rất nhạy cảm với ánh sáng, nhất là các vùng chồng lấn lên nhau Vì thế chúng ta sẽ chuẩn hóa lại biểu đồ để chúng không bị ảnh hưởng với các biến đổi ánh sáng
Ở đây thay vì chuẩn hóa vector histogram từng ô 8x8, ta sẽ chuẩn hóa cho từng khối 16x16
Hình 2.5 Điều chỉnh bảng minh họa biểu đồ gradient
Với Pixel ở vị trí khoanh tròn xanh lá có giá trị góc là 165, giá trị cường độ là 85 Trong histogram 9 bin tương ứng với các góc 0 -> 180 nên góc 165 nằm giữa bin 160 và bin 0
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 bin 160 sẽ là 0.75, trọng
số phân bố vào bin0 sẽ là 0.25
Bin 160 sẽ nhận giá trị 85x0.75 = 63.75, bin 0 nhận giá trị 85x0.2 = 1.25 Ở bước trước bin
0 đã có giá trị là 2, nên bin 0 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 2.6 Biểu đồ đánh giá kết quả
Trang 7TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Hình 2.7 Quá trình di chuyển khối 16x16
Hình 3.1 Phân hoạch tập mẫu từ không gian Rn sang không gian Rd.
Bước 4: Chuẩn hóa khối 16 x 16 Các Gradient rất nhạy cảm với ánh sáng, nhất là các vùng chồng lấn lên nhau Vì thế chúng
ta sẽ chuẩn hóa lại biểu đồ để chúng không bị ảnh hưởng với các biến đổi ánh sáng
Ở đây thay vì chuẩn hóa vector histogram từng ô 8x8, ta sẽ chuẩn hóa cho từng khối 16x16
Ta thấy mỗi khối 16x16 sẽ gồm 4 ô 8x8 mà 1 ô 8x8 có vector histogram kích thước là 9x1
Vậy một khối 16x16 sẽ có vector histogram kích thước là 36x1 Việc chuẩn hóa vecto 36 x 1
được tính toán trên một cửa sổ trượt với bước di chuyển là 8 pixel, và ta lần lượt trượt cửa sổ
16x16 từ trái qua phải, từ trên xuống dưới đến khi hết hình
Bước 5: Tính toán vecto đặc trưng HOG
Để tính toán vecto đặc trưng cuối cùng cho toàn bộ các hình ảnh nhỏ, các đoạn vecto 36 x 1 sẽ được nối lại thành một vecto khổng lồ Và đây là cách tính vecto này:
Chúng ta có bao nhiêu vị trí của các khối 16 x 16? Có 7 vị trí nằm ngang và
15 dọc tổng cộng sẽ có 7 x 15 = 105 vị trí Mỗi khối 16 x 16 sẽ biểu diễn một vecto 36 x 1 Vì vậy chúng ta sẽ có một vecto khổng lồ, vecto đó chứa một vecto
36 x 105 = 3780 chiều
Ta thấy mỗi khối 16x16 sẽ gồm 4 ô 8x8 mà 1 ô 8x8 có vector histogram kích thước là 9x1 Vậy một khối 16x16 sẽ có vector histogram kích thước là 36x1 Việc chuẩn hóa vecto 36 x 1 được tính toán trên một cửa sổ trượt với bước di chuyển là 8 pixel,
và ta lần lượt trượt cửa sổ 16x16 từ trái qua phải, từ trên xuống dưới đến khi hết hình
Hình 2.7 Quá trình di chuyển khối 16x16 Bước 5: Tính toán vecto đặc trưng HOG
Để tính toán vecto đặc trưng cuối cùng cho toàn
bộ các hình ảnh nhỏ, các đoạn vecto 36 x 1 sẽ được nối lại thành một vecto khổng lồ Và đây là cách tính vecto này:
Chúng ta có bao nhiêu vị trí của các khối 16 x 16? Có 7 vị trí nằm ngang và 15 dọc tổng cộng sẽ có
7 x 15 = 105 vị trí Mỗi khối 16 x 16 sẽ biểu diễn một vecto 36 x 1
Vì vậy chúng ta sẽ có một vecto khổng lồ, vecto đó chứa một vecto 36 x 105 = 3780 chiều
III THUẬT TOÁN SVM SVM thực hiện chuyển tập mẫu từ không gian biểu diễn Rn của chúng sang một không gian Rd có
số chiều lớn hơn Trong không gian Rd tìm một siêu phẳng tối ưu để phân hoạch tập mẫu này dựa trên phân lớp của chúng, có nghĩa là tìm ra miền phân bổ của từng lớp trong không gian biểu diễn Rn, để từ đó xác định được phân lớp của một mẫu nhận dạng
SVM là một phương pháp có tính tổng quát cao, có thể được áp dụng cho nhiều bài toán nhận dạng khác nhau
Hình 3.1 Phân hoạch tập mẫu từ không gian Rn sang không gian Rd
1 Ý tưởng của thuật toán:
Cho trước một tập huấn luyện được biểu diễn trên một không gian vector Phương pháp này
sẽ tìm ra một siêu phẳng và quyết định tốt nhất để phân tách thành các lớp trên không gian Chất lượng của siêu phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khi đó khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt, đồng thời việc phân loại càng chính xác
Hình 3.2 Siêu phẳng phân chia dữ liệu với khoảng cách biên lớn nhất
2 Các bước chính
Đầu vào của thuật toán là các vector của số thực Tiền xử lý dữ liệu: Biến đổi dữ liệu phù hợp cho quá trình tính toán, tránh các số quá lớn mô tả các thuộc tính Thường nên co giãn (scaling) dữ liệu chuyển về đoạn [-1, 1] hoặc [0, 1]
Chọn hàm hạt nhân: lựa chọn hàm hạt nhân phù hợp tương ứng cho từng bài toán cụ thể để đạt độ chính xác cao trong quá trình phân lớp
Thực hiện việc kiểm tra chéo để xác định các tham số cho ứng dụng
Sử dụng các tham số cho huấn luyện với tập mẫu: trong quá trình huấn luyện sẽ sử dụng thuật toán tối ưu hóa khoảng cách giữa các siêu phẳng trong quá trình phân lớp, xác định hàm phân lớp trong không gian đặc trưng nhờ việc ánh xạ dữ liệu vào không gian đặc trưng bằng cách mô tả hạt nhân và cuối cùng
là kiểm thử tập dữ liệu
3 Các dạng bài toán phân lớp trong SVM
Bài toán phân lớp nhị phân với SVM
Bài toán nhiều phân lớp với SVM
Phương pháp thứ 1: One - vs – One
Phương pháp thứ 2: One - vs – Rest
IV THỰC NGHIỆM
1 Mô tả bài toán
Hiện nay, có rất nhiều mẫu phiếu trả lời trắc nghiệm được sử dụng cho từng kỳ thi khác nhau
Ta thấy mỗi khối 16x16 sẽ gồm 4 ô 8x8 mà 1 ô
8x8 có vector histogram kích thước là 9x1 Vậy một
khối 16x16 sẽ có vector histogram kích thước là
36x1 Việc chuẩn hóa vecto 36 x 1 được tính toán
trên một cửa sổ trượt với bước di chuyển là 8 pixel,
và ta lần lượt trượt cửa sổ 16x16 từ trái qua phải, từ
trên xuống dưới đến khi hết hình
Hình 2.7 Quá trình di chuyển khối 16x16
Bước 5: Tính toán vecto đặc trưng HOG
Để tính toán vecto đặc trưng cuối cùng cho toàn
bộ các hình ảnh nhỏ, các đoạn vecto 36 x 1 sẽ được
nối lại thành một vecto khổng lồ Và đây là cách tính
vecto này:
Chúng ta có bao nhiêu vị trí của các khối 16 x
16? Có 7 vị trí nằm ngang và 15 dọc tổng cộng sẽ có
7 x 15 = 105 vị trí
Mỗi khối 16 x 16 sẽ biểu diễn một vecto 36 x 1
Vì vậy chúng ta sẽ có một vecto khổng lồ, vecto đó
chứa một vecto 36 x 105 = 3780 chiều
III THUẬT TOÁN SVM
SVM thực hiện chuyển tập mẫu từ không gian
biểu diễn Rn của chúng sang một không gian Rd có
số chiều lớn hơn Trong không gian Rd tìm một siêu
phẳng tối ưu để phân hoạch tập mẫu này dựa trên
phân lớp của chúng, có nghĩa là tìm ra miền phân bổ
của từng lớp trong không gian biểu diễn Rn, để từ đó
xác định được phân lớp của một mẫu nhận dạng
SVM là một phương pháp có tính tổng quát cao, có
thể được áp dụng cho nhiều bài toán nhận dạng khác
nhau
Hình 3.1 Phân hoạch tập mẫu từ không
gian Rn sang không gian Rd
1 Ý tưởng của thuật toán:
Cho trước một tập huấn luyện được biểu diễn trên một không gian vector Phương pháp này
sẽ tìm ra một siêu phẳng và quyết định tốt nhất để phân tách thành các lớp trên không gian Chất lượng của siêu phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khi đó khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt, đồng thời việc phân loại càng chính xác
Hình 3.2 Siêu phẳng phân chia dữ liệu với khoảng cách biên lớn nhất
2 Các bước chính
Đầu vào của thuật toán là các vector của số thực
Tiền xử lý dữ liệu: Biến đổi dữ liệu phù hợp cho quá trình tính toán, tránh các số quá lớn mô tả các thuộc tính Thường nên co giãn (scaling) dữ liệu chuyển về đoạn [-1, 1] hoặc [0, 1]
Chọn hàm hạt nhân: lựa chọn hàm hạt nhân phù hợp tương ứng cho từng bài toán cụ thể để đạt độ chính xác cao trong quá trình phân lớp
Thực hiện việc kiểm tra chéo để xác định các tham số cho ứng dụng
Sử dụng các tham số cho huấn luyện với tập mẫu: trong quá trình huấn luyện sẽ sử dụng thuật toán tối ưu hóa khoảng cách giữa các siêu phẳng trong quá trình phân lớp, xác định hàm phân lớp trong không gian đặc trưng nhờ việc ánh xạ dữ liệu vào không gian đặc trưng bằng cách mô tả hạt nhân và cuối cùng
là kiểm thử tập dữ liệu
3 Các dạng bài toán phân lớp trong SVM
Bài toán phân lớp nhị phân với SVM
Bài toán nhiều phân lớp với SVM
Phương pháp thứ 1: One - vs – One
Phương pháp thứ 2: One - vs – Rest
IV THỰC NGHIỆM
1 Mô tả bài toán
Hiện nay, có rất nhiều mẫu phiếu trả lời trắc nghiệm được sử dụng cho từng kỳ thi khác nhau
III THUẬT TOÁN SVM SVM thực hiện chuyển tập mẫu từ không gian biểu diễn Rn của chúng sang một không gian
Rd có số chiều lớn hơn Trong không gian Rd tìm một siêu phẳng tối ưu để phân hoạch tập mẫu
này dựa trên phân lớp của chúng, có nghĩa là tìm ra miền phân bổ của từng lớp trong không gian
biểu diễn Rn, để từ đó xác định được phân lớp của một mẫu nhận dạng SVM là một phương
pháp có tính tổng quát cao, có thể được áp dụng cho nhiều bài toán nhận dạng khác nhau
Trang 822 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Ta thấy mỗi khối 16x16 sẽ gồm 4 ô 8x8 mà 1 ô
8x8 có vector histogram kích thước là 9x1 Vậy một
khối 16x16 sẽ có vector histogram kích thước là
36x1 Việc chuẩn hóa vecto 36 x 1 được tính toán
trên một cửa sổ trượt với bước di chuyển là 8 pixel,
và ta lần lượt trượt cửa sổ 16x16 từ trái qua phải, từ
trên xuống dưới đến khi hết hình
Hình 2.7 Quá trình di chuyển khối 16x16
Bước 5: Tính toán vecto đặc trưng HOG
Để tính toán vecto đặc trưng cuối cùng cho toàn
bộ các hình ảnh nhỏ, các đoạn vecto 36 x 1 sẽ được
nối lại thành một vecto khổng lồ Và đây là cách tính
vecto này:
Chúng ta có bao nhiêu vị trí của các khối 16 x
16? Có 7 vị trí nằm ngang và 15 dọc tổng cộng sẽ có
7 x 15 = 105 vị trí
Mỗi khối 16 x 16 sẽ biểu diễn một vecto 36 x 1
Vì vậy chúng ta sẽ có một vecto khổng lồ, vecto đó
chứa một vecto 36 x 105 = 3780 chiều
III THUẬT TOÁN SVM
SVM thực hiện chuyển tập mẫu từ không gian
biểu diễn Rn của chúng sang một không gian Rd có
số chiều lớn hơn Trong không gian Rd tìm một siêu
phẳng tối ưu để phân hoạch tập mẫu này dựa trên
phân lớp của chúng, có nghĩa là tìm ra miền phân bổ
của từng lớp trong không gian biểu diễn Rn, để từ đó
xác định được phân lớp của một mẫu nhận dạng
SVM là một phương pháp có tính tổng quát cao, có
thể được áp dụng cho nhiều bài toán nhận dạng khác
nhau
Hình 3.1 Phân hoạch tập mẫu từ không
gian Rn sang không gian Rd
1 Ý tưởng của thuật toán:
Cho trước một tập huấn luyện được biểu diễn trên một không gian vector Phương pháp này
sẽ tìm ra một siêu phẳng và quyết định tốt nhất để phân tách thành các lớp trên không gian Chất lượng của siêu phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khi đó khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt, đồng thời việc phân loại càng chính xác.
Hình 3.2 Siêu phẳng phân chia dữ liệu với khoảng cách biên lớn nhất
2 Các bước chính
Đầu vào của thuật toán là các vector của số thực
Tiền xử lý dữ liệu: Biến đổi dữ liệu phù hợp cho quá trình tính toán, tránh các số quá lớn mô tả các thuộc tính Thường nên co giãn (scaling) dữ liệu chuyển về đoạn [-1, 1] hoặc [0, 1]
Chọn hàm hạt nhân: lựa chọn hàm hạt nhân phù hợp tương ứng cho từng bài toán cụ thể để đạt độ chính xác cao trong quá trình phân lớp
Thực hiện việc kiểm tra chéo để xác định các tham số cho ứng dụng
Sử dụng các tham số cho huấn luyện với tập mẫu: trong quá trình huấn luyện sẽ sử dụng thuật toán tối ưu hóa khoảng cách giữa các siêu phẳng trong quá trình phân lớp, xác định hàm phân lớp trong không gian đặc trưng nhờ việc ánh xạ dữ liệu vào không gian đặc trưng bằng cách mô tả hạt nhân và cuối cùng
là kiểm thử tập dữ liệu
3 Các dạng bài toán phân lớp trong SVM
Bài toán phân lớp nhị phân với SVM
Bài toán nhiều phân lớp với SVM
Phương pháp thứ 1: One - vs – One
Phương pháp thứ 2: One - vs – Rest
IV THỰC NGHIỆM
1 Mô tả bài toán
Hiện nay, có rất nhiều mẫu phiếu trả lời trắc nghiệm được sử dụng cho từng kỳ thi khác nhau
1 Ý tưởng của thuật toán:
Cho trước một tập huấn luyện được biểu diễn trên một không gian vector Phương pháp này
sẽ tìm ra một siêu phẳng và quyết định tốt nhất để phân tách thành các lớp trên không gian Chất lượng của siêu phẳng này được quyết định bởi khoảng cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này Khi đó khoảng cách biên càng lớn thì mặt phẳng quyết định càng tốt, đồng thời việc phân loại càng chính xác
Hình 3.2 Siêu phẳng phân chia dữ liệu với khoảng cách biên lớn nhất
2 Các bước chính Đầu vào của thuật toán là các vector của số thực
Tiền xử lý dữ liệu: Biến đổi dữ liệu phù hợp cho quá trình tính toán, tránh các số quá lớn mô tả các thuộc tính Thường nên co giãn (scaling) dữ liệu chuyển về đoạn [-1, 1] hoặc [0, 1]
Chọn hàm hạt nhân: lựa chọn hàm hạt nhân phù hợp tương ứng cho từng bài toán cụ thể để đạt độ chính xác cao trong quá trình phân lớp Thực hiện việc kiểm tra chéo để xác định các tham số cho ứng dụng
Sử dụng các tham số cho huấn luyện với tập mẫu: trong quá trình huấn luyện sẽ sử dụng thuật toán tối ưu hóa khoảng cách giữa các siêu phẳng trong quá trình phân lớp, xác định hàm phân lớp trong không gian đặc trưng nhờ việc ánh xạ dữ liệu vào không gian đặc trưng bằng cách mô tả hạt nhân và cuối cùng là kiểm thử tập dữ liệu
3 Các dạng bài toán phân lớp trong SVM
• Bài toán phân lớp nhị phân với SVM
• Bài toán nhiều phân lớp với SVM Phương pháp thứ 1: One - vs – One Phương pháp thứ 2: One - vs – Rest
IV THỰC NGHIỆM
1 Mô tả bài toán Hiện nay, có rất nhiều mẫu phiếu trả lời trắc nghiệm được sử dụng cho từng kỳ thi khác nhau Nhưng trong đó có 2 mẫu phiếu trả lời trắc nghiệm phổ biến: Phiếu dành cho kỳ thi tuyển sinh đại học (Phiếu 1) và phiếu dành cho các kỳ kiểm tra kết thúc môn học (Phiếu 2)
Trang 9TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Với đề tài nhận dạng số viết tay ta có thể áp dụng với cả 2 bài toán trên:
• Đối với “Phiếu 1”:
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
Nhận dạng số báo danh viết tay nhằm mục đích 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
• Đối với “Phiếu 2”:
Phần ghi thông tin số báo danh của thí sinh chỉ gồm phần ghi bằng tay
Nhận dạng số báo danh viết tay nhằm mục đích hỗ trợ giáo viên lên điểm mỗi kỳ thi
2 Kho dữ liệu thử nghiệm
Bộ dữ liệu chuẩn MNIST
Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay
MNIST bao gồm 70.000 dữ liệu được lưu dưới dạng hình ảnh: trong đấy ta sử dụng 50.000
dữ liệu cho huấn luyện và 20.000 dữ liệu cho việc kiểm tra
Nhưng trong đó có 2 mẫu phiếu trả lời trắc nghiệm
phổ biến: Phiếu dành cho kỳ thi tuyển sinh đại học
(Phiếu 1) và phiếu dành cho các kỳ kiểm tra kết thúc
môn học (Phiếu 2)
Phiếu 1
Phiếu 2
Với đề tài nhận dạng số viết tay ta có thể áp
dụng với cả 2 bài toán trên:
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
Nhận dạng số báo danh viết tay nhằm mục đích
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
Phần ghi thông tin số báo danh của thí sinh chỉ gồm phần ghi bằng tay
Nhận dạng số báo danh viết tay nhằm mục đích
hỗ trợ giáo viên lên điểm mỗi kỳ thi
2 Kho dữ liệu thử nghiệm
Bộ dữ liệu chuẩn MNIST
Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay
MNIST bao gồm 70.000 dữ liệu được lưu dưới dạng hình ảnh: trong đấy ta sử dụng 50.000 dữ liệu cho huấn luyện và 20.000 dữ liệu cho việc kiểm tra
Bộ dữ liệu số báo danh viết tay
Xây dựng bộ dữ liệu viết tay phục vụ cho việc thử nghiệm bao gồm 150 ảnh số báo danh đã được cắt ra từ phiếu trả lời trắc nghiệm, mỗi ảnh chứa 6 chữ số viết tay Vậy tổng cộng có 150x6 =900 chữ số viết tay
Hình 3.3 Một số hình ảnh về dữ liệu SBD
viết tay
3 Giải quyết bài toán
Các kỹ thuật sử dụng:
viết tay tự tạo
Các bước giải quyết bài toán
Đầu tiên ta xây dựng mô hình huấn luyện dữ liệu
để phục vụ cho bước nhận dạng
Ở đây ta giả định đã xác định và cắt được vị trí ô
số báo danh
Đầu tiên, ảnh thu được từ camera hoặc scan được đưa vào hệ thống
Hình 3.4.Ảnh đầu vào
Nhưng trong đó có 2 mẫu phiếu trả lời trắc nghiệm phổ biến: Phiếu dành cho kỳ thi tuyển sinh đại học (Phiếu 1) và phiếu dành cho các kỳ kiểm tra kết thúc môn học (Phiếu 2)
Phiếu 1
Phiếu 2
Với đề tài nhận dạng số viết tay ta có thể áp dụng với cả 2 bài toán trên:
Đối với “Phiếu 1”:
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
Nhận dạng số báo danh viết tay nhằm mục đích 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
Đối với “Phiếu 2”:
Phần ghi thông tin số báo danh của thí sinh chỉ gồm phần ghi bằng tay
Nhận dạng số báo danh viết tay nhằm mục đích
hỗ trợ giáo viên lên điểm mỗi kỳ thi
2 Kho dữ liệu thử nghiệm
Bộ dữ liệu chuẩn MNIST
Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay
MNIST bao gồm 70.000 dữ liệu được lưu dưới dạng hình ảnh: trong đấy ta sử dụng 50.000 dữ liệu cho huấn luyện và 20.000 dữ liệu cho việc kiểm tra
Bộ dữ liệu số báo danh viết tay
Xây dựng bộ dữ liệu viết tay phục vụ cho việc thử nghiệm bao gồm 150 ảnh số báo danh đã được cắt ra từ phiếu trả lời trắc nghiệm, mỗi ảnh chứa 6 chữ số viết tay Vậy tổng cộng có 150x6 =900 chữ số viết tay
Hình 3.3 Một số hình ảnh về dữ liệu SBD
viết tay
3 Giải quyết bài toán
Các kỹ thuật sử dụng:
Dữ liệu: Tập dữ liệu MNIST và dữ liệu viết tay tự tạo
Đặc trưng: Đặc trưng HOG
Thuật toán: Thuật toán SVM
Các bước giải quyết bài toán
Đầu tiên ta xây dựng mô hình huấn luyện dữ liệu
để phục vụ cho bước nhận dạng
Ở đây ta giả định đã xác định và cắt được vị trí ô
số báo danh
Đầu tiên, ảnh thu được từ camera hoặc scan được đưa vào hệ thống
Hình 3.4.Ảnh đầu vào
Trang 1024 TẠP CHÍ KHOA HỌC
QUẢN LÝ VÀ CÔNG NGHỆ
Bộ dữ liệu số báo danh viết tay Xây dựng bộ dữ liệu viết tay phục vụ cho việc thử nghiệm bao gồm 150 ảnh số báo danh đã được cắt ra từ phiếu trả lời trắc nghiệm, mỗi ảnh chứa 6 chữ số viết tay Vậy tổng cộng có 150x6
=900 chữ số viết tay
Nhưng trong đó có 2 mẫu phiếu trả lời trắc nghiệm phổ biến: Phiếu dành cho kỳ thi tuyển sinh đại học (Phiếu 1) và phiếu dành cho các kỳ kiểm tra kết thúc
môn học (Phiếu 2)
Phiếu 1
Phiếu 2
Với đề tài nhận dạng số viết tay ta có thể áp dụng với cả 2 bài toán trên:
Đối với “Phiếu 1”:
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
Nhận dạng số báo danh viết tay nhằm mục đích 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
Đối với “Phiếu 2”:
Phần ghi thông tin số báo danh của thí sinh chỉ gồm phần ghi bằng tay
Nhận dạng số báo danh viết tay nhằm mục đích
hỗ trợ giáo viên lên điểm mỗi kỳ thi
2 Kho dữ liệu thử nghiệm
Bộ dữ liệu chuẩn MNIST
Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay
MNIST bao gồm 70.000 dữ liệu được lưu dưới dạng hình ảnh: trong đấy ta sử dụng 50.000 dữ liệu cho huấn luyện và 20.000 dữ liệu cho việc kiểm tra
Bộ dữ liệu số báo danh viết tay
Xây dựng bộ dữ liệu viết tay phục vụ cho việc thử nghiệm bao gồm 150 ảnh số báo danh đã được cắt ra từ phiếu trả lời trắc nghiệm, mỗi ảnh chứa 6 chữ số viết tay Vậy tổng cộng có 150x6 =900 chữ số viết tay
Hình 3.3 Một số hình ảnh về dữ liệu SBD
viết tay
3 Giải quyết bài toán
Các kỹ thuật sử dụng:
Dữ liệu: Tập dữ liệu MNIST và dữ liệu viết tay tự tạo
Đặc trưng: Đặc trưng HOG
Thuật toán: Thuật toán SVM
Các bước giải quyết bài toán
Đầu tiên ta xây dựng mô hình huấn luyện dữ liệu
để phục vụ cho bước nhận dạng
Ở đây ta giả định đã xác định và cắt được vị trí ô
số báo danh
Đầu tiên, ảnh thu được từ camera hoặc scan được đưa vào hệ thống
Hình 3.4.Ảnh đầu vào
Nhưng trong đó có 2 mẫu phiếu trả lời trắc nghiệm
phổ biến: Phiếu dành cho kỳ thi tuyển sinh đại học
(Phiếu 1) và phiếu dành cho các kỳ kiểm tra kết thúc
môn học (Phiếu 2)
Phiếu 1
Phiếu 2
Với đề tài nhận dạng số viết tay ta có thể áp
dụng với cả 2 bài toán trên:
Đối với “Phiếu 1”:
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
Nhận dạng số báo danh viết tay nhằm mục đích
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
Đối với “Phiếu 2”:
Phần ghi thông tin số báo danh của thí sinh chỉ gồm phần ghi bằng tay
Nhận dạng số báo danh viết tay nhằm mục đích
hỗ trợ giáo viên lên điểm mỗi kỳ thi
2 Kho dữ liệu thử nghiệm
Bộ dữ liệu chuẩn MNIST
Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay
MNIST bao gồm 70.000 dữ liệu được lưu dưới dạng hình ảnh: trong đấy ta sử dụng 50.000 dữ liệu
cho huấn luyện và 20.000 dữ liệu cho việc kiểm tra
Bộ dữ liệu số báo danh viết tay
Xây dựng bộ dữ liệu viết tay phục vụ cho việc thử nghiệm bao gồm 150 ảnh số báo danh đã được cắt ra từ phiếu trả lời trắc nghiệm, mỗi ảnh chứa 6
chữ số viết tay Vậy tổng cộng có 150x6 =900 chữ số viết tay
Hình 3.3 Một số hình ảnh về dữ liệu SBD
viết tay
3 Giải quyết bài toán
Các kỹ thuật sử dụng:
Dữ liệu: Tập dữ liệu MNIST và dữ liệu viết tay tự tạo
Đặc trưng: Đặc trưng HOG
Thuật toán: Thuật toán SVM
Các bước giải quyết bài toán
Đầu tiên ta xây dựng mô hình huấn luyện dữ liệu
để phục vụ cho bước nhận dạng
Ở đây ta giả định đã xác định và cắt được vị trí ô
số báo danh
Đầu tiên, ảnh thu được từ camera hoặc scan được đưa vào hệ thống
Hình 3.4.Ảnh đầu vào
Hình 3.3 Một số hình ảnh về dữ liệu SBD viết tay
3 Giải quyết bài toán Các kỹ thuật sử dụng:
• Dữ liệu: Tập dữ liệu MNIST và dữ liệu viết tay tự tạo
• Đặc trưng: Đặc trưng HOG
• Thuật toán: Thuật toán SVM Các bước giải quyết bài toán Đầu tiên ta xây dựng mô hình huấn luyện dữ liệu để phục vụ cho bước nhận dạng
Ở đây ta giả định đã xác định và cắt được vị trí ô số báo danh
Tiếp theo, điều chỉnh lại kích thước ảnh và chuyển ảnh về ảnh đen trắng
Đầu tiên, ảnh thu được từ camera hoặc scan được đưa vào hệ thống
Hình 3.4 Ảnh đầu vào
Hình 3.5 Ảnh sau khi chuyển sang đen trắng
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
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
Lần 2
Lần 3
Lần 4
Lần 5
Trung bình
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ố lượng Số
Số lượng tách sai
Số lượng tách đúng
KQ đúng KQ sai
Tỉ lệ
% đúng
Tỉ lệ
% sai
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ì:
Việt Nam và người phương Tây
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