Chúng em đã thực hiện việc chấm bài thi qua 2 cách thức:
Chấm bằng tay bằng cách sử dụng bảng đục lỗ.
Chấm bằng chương trình chấm điểm tự động.
Với mỗi cách chấm được thực hiện bởi 2 người và thu được kết quả như sau: - Về mặt thời gian:
Chấm thủ công: thời gian tổng cộng là 4 giờ 30 phút. Tuy nhiên đây chỉ là khoảng thời gian để chấm bài chứ chưa kể đến việc ghi lại thông tin thí sinh và tạo bảng điểm.
Chấm bằng chương trình chấm điểm tựđộng: Thời gian tổng cộng là 2 giờ 26 phút. Trong đó thời gian để scan vào là 2 giờ 15 phút và thời gian để nhận dạng là 278 bài là 10 phút 51 giây. Ta thấy rằng việc chấm điểm bằng phầm mềm sở dĩ thời gian lâu là do thời gian scan (2 giờ 15 phút chiếm 92.56% thời gian).
- Về kết quả:
Chấm thủ công: số bài chấm sai là 24/278 bài chiếm tỉ lệ 8.63%. Nguyên nhân của việc chấm sai này là do người chấm nhầm lẫn. Trong đó số câu chấm sai là 33/(70*278) câu (mỗi đề thi có 70 câu)
chiếm tỉ lệ 0.17%. Vậy tỉ lệ chấm chính xác của phương pháp này là 99.83%.
Chấm bằng chương trình chấm điểm tựđộng: số bài chấm sai 11/278 bài chiếm tỉ lệ 3.96%. Tỉ lệ chấm chính xác của cách này là 96.04%. Trong đó số câu bị chấm sai là 17/(70*278) câu chiếm tỉ lệ 0.09%. Vậy tỉ lệ chấm chính xác của phương pháp này là 99.1%. Tuy nhiên việc chấm sai này chủ yếu tập trung vào 3 nguyên nhân:
9 Thí sinh dùng bút chì tô quá nhạt làm chương trình không thể nhận ra được vị trí tô.
9 Thí sinh đã xóa không kỹ những câu chọn sai và chương trình đã hiểu nhầm nơi đó vẫn có tô.
9 Thí sinh tô không trọn vùng tô hoặc tô lem ra ngoài vùng tô.
Như vậy ta có thể thấy nguyên nhân sai không phải là do lỗi chương trình mà do thí sinh tô không đúng qui cách. Nếu các bài làm được tô đúng qui cách thì tỉ lệ này sẽ còn cao hơn nhiều.
Chấm bằng máy Chấm bằng tay
- Thời gian: 2 giờ 26 phút
(scan: 2 giờ 15 phút, chấm điểm: 10 phút 51 giây).
- Thời gian: 4 giờ 30 phút
(chưa kể thời gian lấy thông tin của thí sinh và lập bảng điểm).
- Số bài sai: 11/278. Chiếm tỉ lệ 3.96%. Nguyên nhân: do bài làm tô không đủ đậm hay bài thi bị dơ do tẩy xóa không kỹ.
- Số bài sai: 24/278. Chiếm tỉ lệ 8.6%. Nguyên nhân: do người chấm nhầm lẫn.
- Số câu sai: 17/(70*278). Chiếm tỉ lệ 0.09%.
- Số câu sai: 33/(70*278). Chiếm tỉ lệ 0.17%.
Bảng 4-1 : So sánh chấm bằng tay và chấm bằng máy
4.3 Đánh giá
Kết quả thực hiện của cả 2 chương trình thiết kế và chấm điểm tự động là rất khả quan, tốc độ và kết quả chấp nhận được.
Tuy nhiên, trong phần chấm điểm tự động, khuyến nghị người dùng nên quét bài thi có góc lệch không quá 5 độ, độ phân giải từ 200 DPI đến 300 DPI`
Ngoài ra, do chương trình chấm điểm chuyển các cảnh báo về các dạng không hợp lệ trong bài thi ra phần thông tin tham khảo, cho nên kết quả chấm điểm của bài thi vẫn không bị ảnh hưởng. Cụ thể như phần so sánh giữa chữ viết tay với vị trí tô: Nếu không khớp, chúng vẫn không làm ảnh hưởng đến kết quả làm bài, thay vào đó sẽ có những thông tin tham khảo thêm về vị trí sai giữa chữ viết tay và vùng tô, đồng thời bài làm được đánh dấu cần xem lại.
4.4 Kết luận
Luận văn đã đạt được một số mục tiêu đề ra ban đầu. Đầu tiên, phần mềm này là một giải pháp thi trắc nghiệm có thể áp dụng ngay, cụ thể là Khoa Công Nghệ Thông Tin chúng ta với giá thành khá rẻ. Tiếp đến, phần mềm cho phép linh động tạo các mẫu đề thi theo nhu cầu.
Tuy nhiên, phần mềm thực hiện vẫn còn một số hạn chế cần được khắc phục. Do nhận dạng chữ viết tay in hiện chỉ cho kết quả đúng từ 70% đến 80%, nên kết quả nhận dạng này chưa có giá trị sử dụng trong việc kiểm tra tính hợp lệ của bài thi mà chỉ được xem là thông tin tham khảo. Ngoài ra, phần mềm chỉ có thể nhận dạng đúng đối với các bài thi còn nguyên vẹn (đặc biệt là các đánh dấu ở 4 góc) và không được quét vào mà có góc lệch quá 5 độ.
4.5 Hướng phát triển:
Trong tương lai, phần mềm cần được kết hợp với các ngân hàng câu hỏi trắc nghiệm. Khi thực hiện được điều này, biểu mẫu sẽ có thêm phần nội dung các câu hỏi, và đáp án được tự động tạo ra theo dữ liệu có sẵn trong ngân hàng câu hỏi. Do đó, tăng thêm tính hiệu quả của chương trình, hỗ trợ tối đa người dùng trong việc thiết kế một đề thi trắc nghiệm hoàn chỉnh, bao gồm phần trả lời và phần đề thi.
Tiếp đến, chương trình cần được cải tiến các thuật toán nhận dạng góc, nhằm tăng tốc độ thực hiện chấm bài và cho phép bài thi quét vào có dạng tổng quát hơn (tức được phép lệch nhiều hơn).
Thêm các thông tin cảnh báo về bài làm nếu có gì nghi ngờ nhằm giúp người dùng có thể kiểm tra thông tin được dễ dàng. Cuối cùng, phần nhận dạng chữ viết tay in cần được xem xét lại cách thực hiện để nâng cao hiệu suất nhận dạng hơn, góp phần vào việc kiểm tra tính hợp lệ cũng như cung cấp các thông tin kèm theo cho bài làm.
PHỤ LỤC
PL.1 Các thao tác xử lý ảnh cơ bản:
PL.1.1 Làm xám ảnh:
Cách thực hiện:
Mỗi ảnh bitmap bao gồm nhiều pixel. Mỗi pixel của ảnh lại bao gồm 3 giá trị Red, Green và Blue hợp lại tạo nên màu sắc thể hiện của pixel đó. Cho nên, mỗi pixel gồm 3 byte, với mỗi byte lưu các giá trị riêng biệt cho từng sắc Red, Green và Blue riêng biệt mà ta lần lượt đặt tên là byte RED, byte GREEN và byte BLUE. Quá trình làm xám ảnh chuyển giá trị mỗi pixel của ảnh gốc từ 3 byte về thành một byte, trong đó giá trị của byte kết quả được tính bằng các công thức tuỳ theo cách làm xám ảnh được dùng.
Ví dụ, đối với cách làm xám ảnh BT709 (được áp dụng cho đề tài), ta có công thức tính pixel kết quả như sau:
pixel kết quả = (0.2125 * byte RED + 0.7154 * byte GREEN + 0.0721 * byte BLUE)
Trong khi đó, cách làm xám ảnh RMY lại có công thức tính pixel kết quả là:
pixel kết quả = (0.5 * byte RED + 0.419 * byte GREEN + 0.081 * byte BLUE)
Do đó ảnh sau khi thực hiện xám ảnh sẽ có mỗi pixel chỉ gồm một byte là giá trị tính từ 3 byte của pixel tương ứng trong ảnh ban đầu.
Hình PL-1: ảnh trước khi được làm xám
PL.1.2 Chuyển sang ảnh nhị phân
Cách thực hiện:
Quét qua toàn bộ pixel của ảnh, nếu giá trị pixel nằm trong khoảng quy định thì chuyển màu tại pixel đó thành trắng, ngược lại thì chuyển thành đen.
Thuật toán:
¾ Đầu tiên kiểm tra xem ảnh cần chuyển sang nhị phân có được làm xám ảnh chưa?
¾ Nếu chưa thì thực hiện việc làm xám ảnh trước.
¾ Sau đó, quét tất cả các pixel của ảnh:
nếu màu của pixel nằm trong khoảng quy định (mặc định giá trị max của khoảng quy định là 255 và giá trị min là 128) thì chuyển sang trắng (tức giá trị của pixel là 255)
còn ngược lại thì chuyển thành đen (giá trị là 0).
Ý nghĩa:
Chuyển ảnh từ dạng ảnh xám sang thành dạng ảnh trắng đen bằng cách nếu tại một pixel, màu lợt (hơn giá trị cụ thể do ta quy định) thì trở thành màu trắng, còn không thì chuyển sang đen.
Hình PL-3: ảnh xám trước khi được chuyển thành ảnh nhị phân
PL.1.3 Xoay ảnh.
PL.1.4 Biến đổi tỉ lệảnh (Scale)
Phép biến đổi tỉ lệ làm thay đổi kích thước của ảnh.
Hình PL-7: ảnh trước khi biến đổi tỉ lệ
PL.2 Lý thuyết về mạng nơron
PL.2.1 Đặt vấn đề
Với một yêu cầu cụ thể và tập mẫu cho sẵn trong đó tập mẫu là các dữ liệu được thu thập từ thực tế, có đầy đủ điều kiện đầu vào cho yêu cầu (được gọi là biến độc lập) cũng như kết quả đầu ra (được gọi là biến phụ thuộc). Nhiệm vụ của chúng ta là tìm ra bài giải cho bài toán trên.
PL.2.2 Định nghĩa
Mạng nơron là công cụ dùng để tìm gần đúng nhất bài giải của một vấn đề bất kỳ mà không cần quan tâm đến nội dung chi tiết bên trong của bài toán. Để làm được điều này, mạng nơron cần phải trải qua một quá trình, gọi là quá trình học được thực hiện lặp đi lặp lại trên tập mẫu có sẵn. Sau khi được học xong, mạng nơron có thể giải quyết các vấn đề liên quan đến bài toán đã cho cũng như các bài toán cùng loại tương tự với độ chính xác chấp nhận được.
Mạng nơron được ứng dụng trong các bài toán nhận dạng, phân lớp như nhận dạng mặt người, nhận dạng ký tự...
PL.2.3 Sơ lược cấu tạo của mạng nơron
Một mạng nơron tổng quát là một mạng có n (n>2) lớp: lớp thứ nhất gọi là lớp nhập, lớp thứ n gọi là lớp xuất, và (n-2) lớp ẩn. Tuy nhiên với đề tài này, để đơn giản, mạng nơrơn bao gồm nhiều nút được phân trong 3 lớp: lớp nhập, lớp ẩn và lớp xuất. Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào mạng. Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp mà ta gọi là tổng trọng hoá, và chuyển kết quả cho các nút trong lớp ẩn. Gọi là ẩn vì các nút trong lớp này chỉ liên lạc với các nút trong các lớp nhập và lớp xuất, và chỉ người thiết kế mạng biết lớp này (người sử dụng mạng sẽ không biết lớp này). Tương tự, các nút trong lớp
xuất cũng nhận các tín hiệu tổng trọng hoá từ các nút ẩn. Mỗi nút trong lớp xuất tương ứng với một đầu ra (tức là một biến phụ thuộc).
Số nút của lớp nhập và lớp xuất là do bài toán quy định, còn số nút của lớp ẩn do người thiết kế mạng quy định.
Tuỳ theo bài toán cần giải quyết mà quyết định số nút ở lớp xuất (tức số đầu ra). Chẳng hạn với bài toán nhận dạng các chữ số thì ta xây mạng nơron với 10 nút xuất, hoặc nhận dạng chữ thì mạng cần 24 nút xuất.
Trong mạng nơron, mỗi nút của lớp thứ i (0<i<n) liên kết với mọi nút ở lớp thứ (i+1) thông qua các cung, và các nút trong cùng lớp không liên kết với nhau. Mỗi cung trong mạng được gắn với một trọng số w.
PL.2.4 Quá trình ánh xạ và quá trình học của mạng nơ ron
Một mạng nơron chỉ có thể ở một trong hai trạng thái: trạng thái ánh xạ và trạng thái học.
PL.2.4.1 Quá trình ánh xạ
Trong trạng thái ánh xạ, thông tin lan truyền từ lớp nhập đến lớp xuất và mạng thực hiện tính toán để tính giá trị các biến phụ thuộc (đầu ra) dựa vào các biến độc lập được cho (đầu vào): Y=NN(X). Mạng xử lý mỗi lần một mẫu để tính Y=NN(X).
Đầu tiên, giá trị của các biến độc lập được chuyển cho lớp nhập của mạng. Các nút nhập không tính toán gì cả. Mỗi nút nhập chuyển giá trị của nó cho tất cả các nút ẩn. Mỗi nút ẩn tính tổng trọng hoá của tất cả dữ liệu nhập bằng cách cộng dồn tất cả các tích giữa giá trị nút nhập với trọng số của cung liên kết giữa nút nhập đó và nút ẩn.
Kế tiếp, một hàm truyền được áp dụng trên tổng trọng hoá này cùng với một ngưỡng của nút ẩn đó để cho ra giá trị thực của nút ẩn. Hàm truyền chỉ đơn giản nén giá trị vào một miền giới hạn nào đó.
Sau khi nén tổng trọng hoá thành giá trị cụ thể, đến lượt mình, mỗi nút ẩn sẽ gửi kết quả đến tất cả các nút xuất.
Và mỗi nút xuất thực hiện các thao tác tương tự như đã thực hiện trong nút ẩn để cho giá trị kết xuất của nút xuất. Giá trị của các nút xuất chính là giá trị thực, nghĩa là giá trị của các biến phụ thuộc cần xác định.
Như vậy, bản chất của quá trình ánh xạ là xác định các đầu ra từ các đầu vào tuỳ thuộc vào giá trị của các trọng số trong mạng.
PL.2.4.2 Quá trình học
Trong trạng thái học (còn đựơc gọi là luyện mạng), thông tin được lan truyền theo 2 chiều nhiều lần để học các trọng số.
Cụ thể:
Quá trình luyện mạng đựơc bắt đầu bằng mạng với các trọng số tuỳ ý và tiến hành lặp đi lặp lại 2 việc: ánh xạ và lan truyền ngược sai số. Mỗi lần lặp được gọi là một thế hệ. Trong mỗi thế hệ, mang hiệu chỉnh các trọng số sao cho sai số giảm dần (sai số là độ lệch giữa các kết xuất thực và các kết xuất đích đã có sẵn trong tập mẫu). Tiến trình điều chỉnh nhiều lần giúp cho trọng dần dần đạt được tập hợp các giá trị tối ưu. Thường mạng cần thực hiện nhiều thế hệ trước khi việc luyện mạng hoàn tất.
Để cập nhật trọng trong mỗi thế hệ, mạng phải xử lý tất cả các mẫu trong tập mẫu. Đối với từng mẫu, mạng thực hiện như sau:
Trước tiên, mạng thực hiện quá trình lan truyền tiến, nghĩa là mạng ánh xạ các biến nhập của mẫu hiện hành thành các giá trị xuất bằng cách sử dụng các trọng hiện hành. Ở những thế hệ đầu, các kết xuất thường chưa chính xác vì trọng ban đầu do ta chọn ngẫu nhiên, chưa có gì là đúng.
Kế tiếp, sai số được tính dựa trên giá trị của kết xuất và giá trị đích lấy từ tập mẫu. Trên cơ sở sai số tính đuợc, mạng sẽ cập nhật lại các trọng số theo nguyên tắc lan truyền ngược sai số (gọi là giai đoạn lan truyền ngược, chi tiết sẽ được nói rõ ở phần sau).
Như vậy, để học mỗi mẫu, mạng thi hành 2 bước: lan truyền tiến – thực hiện ánh xạ và lan truyền ngược sai số - cập nhật các trọng.
Quá trình học được diễn tả qua đoạn mã giả như sau:
Lặp {
Duyêt qua toàn bộ tập mẫu, với một mẫu:
{
Lan truyền tiến
Tính sai số và lan truyền ngược sai số
}
Cập nhật lại trọng số của mạng nơron }
Ta thấy ở đây chương trình có một vòng lặp vô tận. Do đó trong thực tế ta phải thêm vào điều kiện dừng. Giải thích về đoạn mã giả trên như sau:
Tại mỗi bước lặp, chương trình duyệt qua tất cả các mẫu. Với mỗi mẫu, ta thực hiện giai đoạn lan truyền tiến, nghĩa là xác định giá trị xuất dựa trên các trọng số hiện có của mạng. Sau đó thực hiện tính sai số để từ đó xác định luợng thay đổi trong mỗi trọng dựa trên mẫu này và tích luỹ toàn bộ thay đổi cần thiết của mạng. Sau khi xử lý qua tất cả các mẫu, ta cập nhật lại trọng số dựa trên các thay đổi đã tích luỹ được. Một lần lặp mới lại được bắt đầu.
Trong quá trình học, ta cũng có thể cho cập nhật các trọng khi xử lý từng mẫu thay vì cập nhật trọng số sau khi đã xử lý tất cả các mẫu.
PL.2.4.3 Lan truyền ngược sai số
Để thực hiện việc học, ta phải tìm các trọng số của mạng sao cho lời giải của mạng khớp nhất với bộ dữ liệu chứa các mẫu sẵn có. Ban đầu, các trọng số này thường cho lời giải rất sai khác so với kết quả trong bộ dữ liệu mẫu. Nhưng từ sai số này, các trọng số sẽ được cập nhật lại, để càng về sau, sai số sẽ càng nhỏ đi.
Quá trình xác định lượng cần thay đổi cho các trọng số từ các sai số là một quá trình khá phức tạp (do đó ở đây, chúng tôi chỉ tóm tắt lại sơ khởi qui tắc thực hiện). Qui tắc này sử dụng các thông tin đạo hàm hàm lỗi để cập nhật lại trọng số