2.2.1. Đặc trưng của phiếu điểm
Trƣớc tiên, một vài điều kiện cần phải đƣợc áp đặt lên việc ghi phiếu để quá trình phân đoạn cũng nhƣ nhận dạng diễn ra thuận lợi đó là:
- Viết rõ ràng, không đứt đoạn, không chồng chéo.
- Điểm đƣợc viết đúng vị trí, đúng ô, không đè lên các đƣờng bao quanh ô, không dập xóa lên phiếu.
Đặc trƣng chung của các mẫu phiếu điểm là phần trên cùng gồm tên phiếu điểm, các thông tin mô tả của phiếu điểm (tên lớp, đợt thi, môn thi,…). Phần tiếp theo là điểm của sinh viên đƣợc ghi trong một bảng gồm nhiều hàng, mỗi hàng là thông tin điểm của một sinh viên. Các cột mô tả số báo danh, số điểm hoặc số phách, số điểm.
Mẫu phiếu điểm thi viết: Phiếu điểm thi viết gồm các cột thông tin: Số phách, điểm số, điểm chữ, ghi chú. Giáo viên sau khi chấm bài thi sẽ ghi điểm vào các phiếu này.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 2.3. Mẫu phiếu điểm thi viết
Mẫu phiếu điểm thƣờng xuyên: Phiếu điểm thƣờng xuyên gồm các cột thông tin: số thứ tự, mã sinh viên, họ tên, ngày sinh, điểm chuyên cần, điểm bài 1, điểm bài 2, điểm bài 3, điểm bài 4, điểm trung bình.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 2.4. Mẫu phiếu điểm thường xuyên
2.2.2. Nhận dạng phiếu điểm
Sau khi đã có ảnh của phiếu điểm đƣợc quét đúng cách, việc nhận dạng phiếu điểm thực hiện lần lƣợt các bƣớc nhƣ sau:
Tiền xử lý: Ảnh của phiếu điểm sau khi quét thƣờng có nhiễu, một phần nhiệm vụ của bƣớc này sẽ là lọc nhiễu. Sau đó ảnh phải đƣợc biến đổi về ảnh nhị phân để tạo điều kiện cho phân đoạn ở bƣớc tiếp theo.
Phân đoạn và trích chọn đặc trƣng: Tách ảnh đã qua tiền xử lý thành các hàng, mỗi hàng bao gồm các cột. Sau đó từ các cột sẽ tách ra kí tự cần nhận dạng, rồi trích chọn đặc trƣng của nó.
Huấn luyện và nhận dạng: Xây dựng các support vector nhận dạng từ các
phiếu điểm. Trƣớc khi nhận dạng, quá trình huấn luyện đƣợc thực hiện trƣớc dựa trên một tập mẫu có sẵn.
Hậu xử lý: Tổng hợp các kí tự đƣợc nhận dạng riêng lẻ thành dữ liệu để cập nhật vào cơ sở dữ liệu.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
2.2.2.1. Tiền xử lý
Giai đoạn này góp phần làm tăng độ chính xác phân lớp của hệ thống nhận dạng [1], tuy nhiên nó cũng làm cho tốc độ nhận dạng của hệ thống chậm lại. Vì vậy, tùy thuộc vào chất lƣợng ảnh quét vào của từng phiếu điểm cụ thể để chọn một hoặc một vài chức năng trong khối này. Nếu cần ƣu tiên tốc độ xử lý và chất lƣợng của máy quét tốt thì có thể bỏ qua giai đoạn này. Khối tiền xử lý bao gồm một số chức năng: Nhị phân hóa ảnh, lọc nhiễu, chuẩn hóa kích thƣớc ảnh, làm trơn biên chữ, làm đầy chữ, làm mảnh chữ và xoay văn bản.
Nhị phân hóa ảnh
Nhị phân hóa ảnh là một kỹ thuật chuyển ảnh đa cấp xám sang ảnh nhị phân. Trong bất kỳ bài toán phân tích hoặc nâng cao chất lƣợng ảnh nào, nó cũng cần thiết để xác định các đối tƣợng quan trọng. Nhị phân hóa ảnh phân chia ảnh thành 2 phần: phần nền và phần chữ. Hầu hết các phƣơng pháp nhị phân hóa ảnh hiện nay đều lựa chọn một ngƣỡng thích hợp theo cƣờng độ sáng của ảnh và sau đó chuyển tất cả các giá trị độ sáng lớn hơn ngƣỡng đó thành một giá trị độ sáng (ví dụ “trắng”) và tất cả các giá trị bé hơn ngƣỡng thành một giá trị độ sáng khác (“đen”).
Hình 2.5. Nhị phân hóa ảnh
Lọc nhiễu [2]
Nhiễu là một tập các điểm sáng thừa trên ảnh. Khử nhiễu là một vấn đề thƣờng gặp trong nhận dạng, nhiễu có nhiều loại (nhiễu đốm, nhiễu vệt, nhiễu đứt nét...).
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn Để khử các nhiễu đốm (các nhiễu với kích thƣớc nhỏ), có thể sử dụng các phƣơng pháp lọc (lọc trung bình, lọc trung vị...). Tuy nhiên, với các nhiễu vệt (hoặc các nhiễu có kích thƣớc lớn) thì các phƣơng pháp lọc tỏ ra kém hiệu quả, trong trƣờng hợp này sử dụng phƣơng pháp khử các vùng liên thông nhỏ tỏ ra có hiệu quả hơn.
Chuẩn hóa kích thƣớc ảnh
Hình 2.7.Chuẩn hóa kích thước ảnh các số “4” và “6”.
Việc chuẩn hóa kích thƣớc ảnh dựa trên việc xác định trọng tâm ảnh, sau đó xác định khoảng cách lớn nhất từ tâm ảnh đến các cạnh trên, dƣới, trái, phải của hình chữ nhật bao quanh ảnh. Thông qua khoảng cách lớn nhất đó, có thể xác định đƣợc một tỷ lệ co, giãn của ảnh gốc so với kích thƣớc đã xác định, từ đó hiệu chỉnh kích thƣớc ảnh theo tỷ lệ co giãn này. Nhƣ vậy, thuật toán chuẩn hóa kích thƣớc ảnh luôn luôn đảm bảo đƣợc tính cân bằng khi co giãn ảnh, ảnh sẽ không bị biến dạng hoặc bị lệch.
Làm trơn biên chữ
Đôi khi do chất lƣợng quét ảnh quá xấu, các đƣờng biên của chữ không còn giữ đƣợc dáng điệu trơn tru ban đầu mà hình thành các đƣờng răng cƣa giả tạo. Trong các trƣờng hợp này, phải dùng các thuật toán làm trơn biên để khắc phục.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 2.8. Làm tròn biên chữ
Làm đầy chữ
Chức năng này đƣợc áp dụng với các ký tự bị đứt nét một cách ngẫu nhiên. Ảnh đứt nét gây khó khăn cho việc tách chữ, dễ bị nhầm hai phần liên thông của ký tự thành hai ký tự riêng biệt, tạo nên sai lầm trong quá trình nhận dạng.
Làm mảnh chữ
Đây là một bƣớc quan trọng nhằm phát hiện khung xƣơng của ký tự bằng cách loại bỏ dần các điểm biên ngoài của các nét. Tuy nhiên, quá trình làm mảnh chữ rất nhạy cảm với việc khử nhiễu.
Hình 2.9. Làm mảnh chữ.
Điều chỉnh độ nghiêng của văn bản
Do trang tài liệu quét vào không cẩn thận hoặc do sự cố in ấn, các hàng chữ bị lệch so với lề chuẩn một góc α, điều này gây khó khăn cho công đoạn tách chữ, đôi khi không thể tách đƣợc. Trong những trƣờng hợp nhƣ vậy, phải tính lại tọa độ điểm ảnh của các chữ bị sai lệch. Có nhiều kỹ thuật để điều chỉnh độ nghiêng, kỹ thuật phổ biến nhất dựa trên cơ sở biểu đồ chiếu (projection profile) của ảnh tài liệu; một số kỹ thuật dựa trên cơ sở các phép biến đổi Hough và Fourier.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 2.10.Hiệu chỉnh độ nghiêng của phiếu điểm 2.2.2.2. Phân đoạn và trích chọn đặc trưng
Khối này có nhiệm vụ tách từng ký tự ra khỏi phiếu điểm. Chỉ khi nào phiếu điểm đƣợc tách và cô lập từng dòng (ứng với thông tin điểm của từng sinh viên) và cô lập đúng từng ký tự đơn ra khỏi tổng thể hệ thống mới có thể nhận dạng đúng ký tự đó.
Trích chọn đặc trƣng đóng vai trò cực kỳ quan trọng trong một hệ thống nhận dạng. Trong trƣờng hợp đơn giản nhất, ảnh đa cấp xám hoặc ảnh nhị phân đƣợc sử dụng cho việc nhận dạng. Tuy nhiên, trong hầu hết các hệ nhận dạng, để giảm độ phức tạp và tăng độ chính xác của các thuật toán phân lớp thì đòi hỏi các đặc trƣng đƣợc trích chọn phải rút gọn lại càng nhỏ càng tốt nhƣng vẫn phải đảm bảo đƣợc thông tin của ký tự. Với mục tiêu này, một tập các đặc trƣng đƣợc trích chọn cho mỗi lớp sao cho có thể phân biệt đƣợc với các lớp khác.
Hình 2.11. Tách thông tin phiếu điểm 2.2.2.3. Huấn luyện và nhận dạng
Tập 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 máy huấn luyện phân lớp SVM. 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
2.2.2.4. Hậu xử lý
Đây là công đoạn cuối của quá trình nhận dạng phiếu điểm. Có thể hiểu hậu xử lý là bƣớc ghép nối các kí tự, điểm đã nhận dạng và chuyển vào cơ sở dữ liệu lƣu trữ điểm của sinh viên, đồng thời phát hiện ra các lỗi nhận dạng sai bằng cách
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn kiểm tra giá trị số báo danh, số phách, điểm số dựa trên các miền giá trị của chúng. Việc phát hiện ra các lỗi, các sai sót trong nhận dạng ở bƣớc này góp phần đáng kể vào việc nâng cao chất lƣợng nhận dạng phiếu điểm.
2.3. Kết luận
SVM đƣợc đánh giá là một hƣớng tiếp cận nhận diện chữ viết tay đạt độ chính xác cao. Hạn chế lớn nhất của SVM là tốc độ phân lớp chậm, tùy thuộc vào số lƣợng các support vector. Mặt khác, giai đoạn huấn luyện SVM đòi hỏi bộ nhớ lớn, do đó các bài toán huấn luyện với số lƣợng mẫu lớn sẽ gặp trở ngại trong vấn đề lƣu trữ. Dù vậy, SVM vẫn đƣợc đánh giá là phƣơng pháp học máy tiên tiến đã đóng góp nhiều thành công trong các lĩnh vực khai phá dữ liệu cũng nhƣ trong lĩnh vực nhận dạng. Chƣơng tiếp theo trình bày về hệ thống mô phỏng phân lớp với SVM, nhận dạng phiếu điểm với SVM.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
CHƢƠNG 3
THIẾT KẾ CHƢƠNG TRÌNH VÀ KẾT QUẢ THỬ NGHIỆM 3.1. Phân lớp với SVM
Xét ví dụ của bài toán phân lớp nhị phân ở chƣơng 2. Có 2 tập hợp những điểm màu đỏ và điểm màu xanh nhƣ hình vẽ; ở đó ta phải tìm một đƣờng ngăn cách sao cho các điểm đỏ và các điểm xanh nằm ở hai bên khác nhau.
Hình 3.1. Chương trình mô phỏng phân lớp
Chƣơng trình phân lớp các điểm màu đƣợc xây dựng trên ngôn ngữ lập trình C#, .NetFramework 4.0, thƣ viện OpenCLTemplate.dll, Cloo.dll. dựa trên thuật toán phân lớp nhị phân với SVM đã trình bày ở chƣơng 2. Module xây dựng các support vector nhƣ sau:
float[] features = new float[] { 1, 2, 3 }; float classification = 4;
TrainingUnit u = new TrainingUnit(features, classification); float[] features2 = new float[] { 1, 2, 3 };
float classification2 = 2;
TrainingUnit u2 = new TrainingUnit(features2, classification2); float[] features3 = new float[] { 1, 2, 3 };
float classification3 = 1;
TrainingUnit u3 = new TrainingUnit(features3, classification3); TrainingSet TSet = new TrainingSet();
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
TSet.addTrainingUnit(u); TSet.addTrainingUnit(u2); TSet.addTrainingUnit(u3);
MultiClassSVM SVM = new MultiClassSVM(TSet);
Tiến hành phân lớp ta đƣợc kết quả nhƣ sau:
Hình 3.2. Mô phỏng phân lớp nhị phân với SVM
Phân nhiều lớp: Giả sử ta có 3 tập hợp điểm màu đỏ, màu xanh lá cây và màu xanh dƣơng, chƣơng trình sẽ tiến hành phân 3 tập hợp điểm này thành 3 vùng khác nhau.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 3.4. Phân nhiều lớp với SVM (sau khi phân lớp)
3.2. Nhận dạng phiếu điểm
Nhƣ đã trình bày ở các phần trên, một trong những ứng dụng hiệu quả của SVM đó là nhận dạng chữ viết tay. Qua tìm hiểu, nghiên cứu về kỹ thuật SVM, tác giả xây dựng chƣơng trình mô phỏng nhận dạng chữ số, chữ số viết tay trên các phiếu điểm.
Input: Tập dữ liệu huấn luyện gồm các chữ số từ 0 đến 9, các phiếu điểm. Output: Nhận dạng giá trị điểm trên các phiếu điểm.
Tập dữ liệu huấn luyện: là ảnh của những chữ số viết tay đã đƣợc nhị phân hóa, có kích thƣớc 32x32
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Phiếu điểm cần nhận dạng: Là những ảnh scan của các phiếu điểm đang
đƣợc sử dụng tại trƣờng Đại học Công nghệ thông tin và truyền thông, Đại học Thái Nguyên.
Hình 3.6. Phiếu điểm cần nhận dạng
Chƣơng trình mô phỏng nhận dạng phiếu điểm đƣợc xây dựng dựa trên ngôn ngữ lập trình C#, .NetFramework 4.0, thƣ viện AForge.NET (AForge.NET là
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn Framework đƣợc thiết kế mở, cung cấp cho các nhà phát triển, nhà nghiên cứu trong lĩnh vực khoa học máy tính, trí tuệ nhân tạo, xử lý ảnh,…)
Mô hình chức năng hệ thống
Hình 3.7. Mô hình hệ thống nhận dạng phiếu điểm
Quy trình hệ thống nhận dạng phiếu điểm:
Đầu tiên, một tập dữ liệu huấn luyện gồm những chữ số viết tay đƣợc đọc vào chƣơng trình. Mỗi mẫu trong tập dữ liệu huấn luyện đã đƣợc gán giá trị tƣơng ứng với các số từ 0 đến 9. Chƣơng trình tiến hành tạo các Support vectors phân lớp từng giá trị số với các số còn lại.
Sau khi tạo các Support vectors, chức năng quản lý Support vectors cho phép xem các Support vectors tạo đƣợc, số lƣợng, trọng số phân lớp giữa các giá trị số từ tập dữ liệu mẫu.
Sau khi huấn luyện và tạo các Support vectors xong, ta có thể tiến hành thử nghiệm nhận dạng số viết tay. Chức năng nhận dạng số viết tay đƣợc xây dựng gồm 3 vùng chính: vùng viết số (sử dụng chuột máy tính), vùng biểu đồ hiện thị kết quả phân lớp, vùng kết quả nhận dạng tìm đƣợc.
Chức năng nhận dạng phiếu điểm gồm 3 công đoạn: Chọn phiếu điểm: Lựa chọn phiếu điểm cần nhận dạng.
Xử lý phiếu điểm: Loại bỏ nhiễu trên ảnh phiếu điểm, trích chọn vùng hiển thị điểm trên ảnh.
Nhận dạng: Sử dụng các Support vectors đã tạo để nhận dạng điểm trên phiếu.
Hệ thống nhận dạng phiếu điểm Nhận dạng số viết tay Nhận dạng phiếu điểm Huấn luyện các Support vectors Quản lý các Support vectors
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
3.2.1. Huấn luyện
Dữ liệu huấn luyện gồm 500 ảnh chữ số viết tay đã đƣợc nhị phân hóa và lƣu trong file dulieuhuanluyen.txt. Mỗi dữ liệu mẫu đƣợc lƣu lần lƣợt từ trên xuống dƣới gồm 33 dòng và 32 cột. Dòng 1 đến dòng 32 biểu diễn giá trị nhị phân của ảnh mẫu, dòng thứ 33 là giá trị của ảnh mẫu đó.
Module huấn luyện nhƣ sau:
Hình 3.8. Huấn luyện Support Vector theo dữ liệu mẫu
Các Support vector đƣợc xây dựng dựa vào dữ liệu huấn luyện
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
3.2.2. Nhận dạng
Sau khi xây dựng các support vector phân lớp giữa các chữ số từ 0 đến 9, ta tiến hành nhận dạng với bộ dữ liệu test gồm 500 chữ số. Kết quả nhƣ sau:
Hình 3.10. Nhận dạng các chữ số với SVM
Với bộ dữ liệu này, chƣơng trình nhận dạng ra 95% giá trị trùng với giá trị của ảnh.
Nhận dạng phiếu điểm: Không mất tính tổng quát, để đơn giản hóa, chƣơng trình giả sử cần nhận dạng các điểm là các số có một chữ số. Với những điểm đƣợc viết dƣới dạng thập phân, ta chỉ lấy phần nguyên của điểm để nhận dạng.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn
Hình 3.11. Nhận dạng phiếu điểm
Xử lý nhiễu, tách các hàng mang giá trị điểm
Hình 3.12. Xử lý phiếu điểm
Tiến hành nhận dạng
Hình 3.13. Nhận dạng phiếu điểm
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn Với tập dữ liệu huấn luyện gồm 500 chữ số viết tay từ 0 đến 9, số lƣợng Support vectors tạo đƣợc là 1471. Kết quả thử nghiệm nhƣ sau:
Nhận dạng số viết tay trực tiếp trên chƣơng trình:
Giá trị số Số lần thử Nhận dạng đúng Tỉ lệ chính xác 0 140 115 82.14 % 1 140 123 87.86 % 2 140 110 78.57 % 3 140 105 75.00 % 4 140 107 76.43 % 5 140 117 83.57 % 6 140 125 89.29 % 7 140 127 90.71 % 8 140 132 94.29 % 9 140 123 87.86 % Nhận dạng phiếu điểm: Điểm số Kết quả nhận dạng Chính xác 2 1 6 1 1 0 8 0 1 0 8 0 3 1 9 1
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn Điểm số Kết quả nhận dạng Chính xác 4 1 1 0 6 1 1 0 8 1 1 0 0 0 Nhận xét:
Với bộ dữ liệu mẫu gồm 500 chữ số viết tay. Chƣơng trình nhận dạng chữ số viết tay trực tiếp với độ chính xác là 84.54%. Tuy nhiên với các chữ số viết tay từ các phiếu điểm, kết quả nhận dạng chỉ đạt độ chính xác là 42.85%. Một số lý do khiến độ chính xác của kết quả nhận dạng còn thấp:
Tập dữ liệu huấn luyện nhỏ (500 mẫu). Chữ số viết tay rất đa dạng, phong