Với việc áp dụng thị giác máy tính trên một thiết bị, người dùng có thể sử dụng kỹ thuật nhận dạng chữ số viết tay để trích xuất số phách của phiếu trả lời trắc nghiệm đồng thời đánh giá
GIỚI THIỆU
Lý do chọn đề tài
Thí giác máy tính (computer vision) đang trở thành một công cụ quan trọng trong lĩnh vực giáo dục, mang lại nhiều tiềm năng để cải thiện quá trình giảng dạy và học tập Ứng dụng của thí giác máy tính trong giáo dục là một bước tiến quan trọng trong sự phát triển của ngành công nghiệp này Nó đã được áp dụng thành công trong việc xác định thành phần, kiểm tra và rà soát chất lượng trong xử lý ảnh kỹ thuật số[1-
6], cũng như trong việc nhận diện ký tự quang học và nhận dạng mẫu[7-8]
Một trong những ứng dụng quan trọng của thí giác máy tính trong giáo dục là khả năng Chấm trắc nghiệm tự động và nhận dạng chữ số viết tay đang là hai phần quan trọng của sự tiến bộ công nghệ trong lĩnh vực giáo dục Chúng đem lại nhiều cơ hội để tối ưu hóa quá trình giảng dạy và đánh giá học tập, giúp tạo ra môi trường học tập hiệu quả hơn cho giảng viên và học sinh
Công nghệ chấm trắc nghiệm tự động đã giúp giảng viên giảm thiểu công việc chấm điểm thủ công, thay vào đó, họ có thể sử dụng các hệ thống tự động để đánh giá các bài kiểm tra và bài tập trắc nghiệm Điều này tiết kiệm thời gian và đảm bảo tính khách quan và chính xác trong quá trình chấm điểm Bên cạnh đó, việc chấm điểm tự động cũng giúp tạo ra kết quả nhanh chóng và tăng cường hiệu suất quản lý lớp học và đánh giá học tập [9-10]
Trường Đại học Phan Thiết (ĐHPT) được thành lập tháng 03/2009, trong quá trình hoạt động đào tạo, hàng năm Trung tâm Phát triển Nguồn nhân lực (TTPTNNL) của nhà Trường thường xuyên tổ chức các kỳ thi Toeic chuẩn đầu ra (CĐR) dành cho sinh viên (SV)
Trong quá trình tổ chức còn gặp nhiều khó khăn khi phải chấm thủ công một lượng lớn các bài thi trắc nghiệm Toeic CĐR với thời gian và nguồn nhân lực hạn hẹp Hàng năm Trường ĐHPT có khoảng hàng nghìn bài thi trắc nghiệm Toeic CĐR để sửa và chấm điểm trong một khoảng thời gian ngắn Việc thực hiện công tác làm số phách và chấm điểm cho một số lượng lớn các bài thi nhiều câu hỏi làm nảy sinh các vấn đề chính sau:
- Các Cán bộ chấm thi (CBCT) không hài lòng việc phải thực hiện các hoạt động lặp đi lặp lại;
- CBCT dễ gặp lỗi khi thực hiện nhập số phách vào lại kết quả thi;
- Việc chấm bài và ráp số phách của bài thi trắc nghiệm bằng thủ công tốn thời gian, dẫn đến sự chậm trễ và dẫn đến khả năng không tuân thủ thời gian đã công bố của các kỳ thi;
- Không thể đảm bảo tính bảo mật và độ tin cậy của kết quả;
- Có nguy cơ mất phiếu kiểm tra;
- Gặp khó khăn trong việc tìm kiếm các bài kiểm tra lưu trữ
Từ những hạn chế nêu trên, bài toán nhận dạng chữ số viết tay nhằm mục đích phát triển ứng dụng cho phép người dùng có khả năng tiếp cận với việc ráp số phách bằng cách nhận dạng chữ số viết tay và chấm điểm tự động từ phiếu trắc nghiệm Với việc áp dụng thị giác máy tính trên một thiết bị, người dùng có thể sử dụng kỹ thuật nhận dạng chữ số viết tay để trích xuất số phách của phiếu trả lời trắc nghiệm đồng thời đánh giá kết quả của bài thi một cách nhanh chóng điều này cũng giúp giảm đáng kể thời gian
Trước tình hình thực tế đó, đề tài "Xây dựng thuật toán trích xuất số phách trên phiếu trả lời trắc nghiệm của Trường Đại học Phan Thiết" đã được lựa chọn để thực hiện với các yêu cầu như cấu trúc nhỏ gọn, xử lý nhanh và chi phí thấp, nhưng vẫn đảm bảo hiệu quả như mong muốn Mục tiêu của việc thiết kế hệ thống này là để nâng cao khả năng ứng dụng trong việc tổ chức các kỳ thi tiếng Anh Toeic CĐR tại Trường Đại học Phan Thiết và đồng thời giảm bớt các chi phí không cần thiết liên quan đến việc chấm thi thủ công Hệ thống này được thiết kế để hoạt động hiệu quả, tiết kiệm thời gian và tối ưu hóa quy trình chấm điểm, đảm bảo tính chính xác và đáng tin cậy của kết quả thi Bằng cách sử dụng công nghệ và phần mềm tiên tiến, hệ thống này cung cấp một phương pháp chấm thi tự động chính xác và đáng tin cậy, giúp giảm bớt tải công việc cho các nhân viên và giảng viên, đồng thời tiết kiệm chi phí và tăng tính hiệu quả của quá trình tổ chức các kỳ thi
Ngoài ra, các nội dung nghiên cứu được thực hiện để hoàn thành đề tài sẽ phục vụ cho việc đạt được các kỹ năng mới trong việc sử dụng các công cụ xử lý và trích xuất thông tin nằm trong hình ảnh, đồng thời áp dụng thị giác máy tính vào trong các ứng dụng cơ bản Kết quả của đề tài sẽ góp phần:
- Cung cấp kết quả chính xác, đảm bảo tính bảo mật của kỳ thi;
- Tạo phiếu trả lời được cá nhân hóa, bao gồm dữ liệu SV (nhận dạng bằng chữ viết tay số phách);
- Tự động nhận dạng số phách bằng chữ viết tay và chấm bài thi trắc nghiệm;
- Tạo điều kiện thuận lợi cho việc xem các bài kiểm tra số hóa và điểm tổng kết để xử lý khiếu nại.
Mục tiêu, nội dung và phương pháp nghiên cứu
- Đối tượng nghiên cứu: Các vấn đề liên quan liên quan đến phương pháp nhận dạng hình ảnh, xử lý ảnh cụ thể: Nhận dạng chữ số viết tay; Xử lý hình ảnh
Hiện tại, Trường ĐHPT chưa có ứng dụng cụ thể nào về việc chấm trắc nghiệm bài thi Toeic CĐR dành cho SV Do đó, việc trích xuất dữ liệu từ bài thi của SV và đánh giá bài thi của SV bằng cách áp dụng nhận dạng chữ viết tay để thực hiện việc ráp số phách và chấm điểm bài thi trắc nghiệm vẫn đang là một hướng nghiên cứu mới
Nghiên cứu ứng dụng công nghệ thị giác máy tính để hỗ trợ việc nhận dạng chữ số viết tay, chấm trắc nghiêm tự động của TTPTNNL tại Trường ĐHPT
+ Xây dựng mô hình nhận dạng chữ số viết tay dựa trên mạng Nơ-ron tích chập; + Xây dụng mô hình xử lý ảnh chấm điểm tự động trên phiếu trả lời trắc nghiệm;
+ Áp dụng mô hình để trích xuất số phách trên phiếu trả lời trắc nghiệm của TTPTNNL tại Trường ĐHPT
- Nghiên cứu bộ dữ liệu viết tay MNIST;
- Nghiên cứu ngôn ngữ lập trình python;
- Nghiên cứu tổng quan về xử lý ảnh;
- Nghiên cứu thuật toán mạng Nơ-ron tích chập (CNN);
- Nghiên cứu áp dụng vào hệ thống nhận dạng chữ số viết tay, xử lý ảnh dựa trên phiếu chấm trắc nghiệm của TTPTNNL tại Trường ĐHPT
Giới hạn của cơ sở dữ liệu ảnh: Nghiên cứu tập trung vào việc nhận dạng và phân loại mười ký tự số viết tay từ 0 đến 9 trên các ảnh và câu hỏi trắc nghiệm là câu hỏi đơn đáp án gồm 4 phương án lựa chọn A, B, C, D.
Ý nghĩa của đề tài
- Đề xuất mô hình nhận dạng chữ số viết tay để trích số phách tự động;
- Đề xuất được mô hình xử lý ảnh chấm thi trắc nghiệm tự động chấm thi trắc nghiệm;
Kết quả nghiên cứu của đề tài có thể ứng dụng vào thực tế như giải quyết việc tô sai số phách trong quá trình chấm bài kiểm tra trắc nghiệm tại Trường ĐHPT Việc áp dụng công nghệ vào việc chấm điểm tự động phiếu trả lời trắc nghiệm giúp tiết kiệm thời gian và công sức của bộ phận chấm thi, đồng thời giảm thiểu sai sót do con người gây ra.
Cấu trúc luận văn
Chương 1: Giới thiệu đề tài
Chương 2: Tổng quan về xử lý anh và nhận dạng chữ số viết tay
Chương 3:Mô hình mạng Nơ-ron tích chập
Chương 4:Xử lý ảnh và nhận dạng chữ số viết tay với mạng Nơ-ron tích chập
Chương 5:Đánh giá kết quả thực hiện
TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ NHẬN DẠNG CHỮ SỐ VIẾT
Tổng quan
Trong thời đại hiện nay, nhận dạng chữ số viết tay đã trở thành một yếu tố quan trọng trong nhiều lĩnh vực và có ứng dụng rộng rãi Ví dụ, việc nhận dạng bảng điểm viết tay, số xe và các tác vụ khác đòi hỏi khả năng nhận dạng chính xác các chữ số viết tay Tuy nhiên, nhận dạng chữ viết tay và chữ số viết tay là những thách thức đáng kể đối với các nhà nghiên cứu Mỗi cá nhân có phong cách viết riêng biệt và đặc trưng, tạo ra sự đa dạng trong các biểu thức chữ viết tay Do đó, xây dựng một hệ thống nhận dạng chữ số viết tay có khả năng nhận dạng mọi chữ số là một nhiệm vụ không dễ dàng
2.1.1 Các công trình nghiên cứu trong và ngoài nước
2.1.1.1 Các công trình nghiên cứu trong nước
Phân tích chữ viết tay, kể cả việc nhận dạng chữ số viết tay, đang là một lĩnh vực phức tạp mà các nhà nghiên cứu đối mặt Trong thời gian gần đây, có nhiều nghiên cứu tập trung vào việc nhận dạng chữ số viết tay, và ở Việt Nam cũng xuất hiện nhiều nhóm nghiên cứu trong lĩnh vực này Các mô hình phổ biến được sử dụng bao gồm: HMM (Hidden Markov Model), SVM (Support Vector Machine), HOG (Histogram of Oriented Gradients), mạng Nơ-ron, và nhiều phương pháp khác Hiện tại, trong nước ta, chỉ có một số công trình của các tác giả đã được công bố Ví dụ, tác giả Lê Thanh Trúc[11] đã nghiên cứu về "Nhận dạng điểm viết tay trên bảng điểm với biến đổi Hough và đặc trưng Gist" Tác giả Phạm Anh Phương[12] đã tìm hiểu "Áp dụng một số chiến lược SVM đa lớp cho bài toán nhận dạng chữ viết tay hạn chế" Tác giả Đinh Thị Mẫn và thành viên[18] đã nghiên cứu “Phương pháp nhận dạng kí tự số viết tay dựa trên mạng Nơ ron học sâu”, trong đó các tác giả đã minh chứng tính hiệu quả của phương pháp đề xuất, thực nghiệm được xây dựng và đánh giá trên tập dữ liệu ảnh MNIST Kết quả thực nghiệm đã cho thấy tính khả thi và hiệu quả của phương pháp, đồng thời dễ dàng mở rộng cho việc nhận diện các hình ảnh chữ viết tay khác Tác giả Hoàng Thị Tình[13], đã thực hiện nghiên cứu về
"Xây dựng hệ thống hỗ trợ học sinh thi trắc nghiệm bậc THPT", trong đó tác giả sử dụng phương pháp nhận dạng ký tự (OCR) để nhận diện đáp án trắc nghiệm Các tác giả cũng đã áp dụng các phương pháp xử lý ảnh như loại bỏ nhiễu, phát hiện cạnh, phân đoạn ảnh, sử dụng thuật toán Hough để phát hiện đường thẳng trong ảnh và phân vùng ảnh Tác giả cũng sử dụng thuật toán K-Nearest Neighbors (KNN) để phân loại các ký tự được nhận dạng Kết quả cho thấy hệ thống đạt được độ chính xác trung bình khoảng 85%
2.1.1.2 Các công trình nghiên cứu nước ngoài
Ngày nay, nhận dạng chữ số viết tay đã trở thành một lĩnh vực phức tạp và thu hút sự quan tâm của nhiều nhà nghiên cứu Có hai phương pháp chính để thực hiện việc này là nhận dạng online và nhận dạng offline Trên hình thức nhận dạng online, hệ thống máy tính có khả năng nhận dạng chữ số ngay sau khi người viết đã hoàn thành việc viết lên màn hình Quá trình này ghi lại thông tin về thứ tự, hướng và tốc độ của các nét chữ số để tạo nền tảng cho việc nhận dạng chữ viết Nhận dạng online không gặp nhiều khó khăn vì thông tin về nét viết được lưu lại Một ví dụ, Hệ thống nhận dạng chữ số viết tay trực tuyến của IBM, được phát triển bởi một nhóm nghiên cứu tại trung tâm nghiên cứu Watson, là một ví dụ tiêu biểu về công nghệ nhận dạng chữ số viết tay trực tuyến Hệ thống này có khả năng nhận dạng chữ số ngay sau khi chúng được viết trên màn hình, giúp đánh giá tính chính xác và tin cậy của kết quả
Hệ thống nhận dạng chữ số viết tay trực tuyến của IBM sử dụng các thuật toán và mô hình học máy tiên tiến để phân loại và nhận dạng chữ số Khi người dùng viết chữ số trên màn hình hoặc bảng vẽ, hệ thống sẽ tự động xử lý và phân tích dữ liệu để nhận dạng chữ số đó
Với sự kết hợp của công nghệ xử lý ảnh, trí tuệ nhân tạo và học máy, hệ thống nhận dạng chữ số viết tay trực tuyến của IBM đạt được hiệu suất cao và đáng tin cậy trong việc nhận dạng chữ số viết tay từ người dùng Điều này mang lại nhiều ứng dụng trong các lĩnh vực như công nghệ giao diện người-máy, bảo mật, điều khiển và quản lý dữ liệu
Hệ thống này không chỉ tiết kiệm thời gian và công sức so với việc nhận dạng chữ số thủ công, mà còn mang lại khả năng nhận dạng chính xác và nhất quán trên nhiều nền tảng và thiết bị khác nhau Điều này giúp cải thiện hiệu suất và trải nghiệm người dùng trong các ứng dụng sử dụng nhận dạng chữ số viết tay trực tuyến Mặc dù hệ thống này là một ví dụ tiêu biểu trong lĩnh vực nhận dạng chữ số viết tay trực tuyến, tuy nhiên, hiện vẫn chưa có nhiều ứng dụng thực tế sử dụng công nghệ này, do đó, việc áp dụng nhận dạng chữ số viết tay trực tuyến vẫn chưa phổ biến rộng rãi Trong khi đó, nhận dạng offline xảy ra khi chúng ta chỉ có sẵn hình ảnh chữ số viết tay mà không có thông tin về việc viết Trong phương pháp này, các thuật toán xử lý ảnh được sử dụng để tiền xử lý và trích xuất đặc trưng từ hình ảnh chữ số Các đặc trưng này có thể bao gồm các biểu đồ pixel, đặc điểm hình học và các đặc trưng khác Sau đó, các thuật toán nhận dạng như SVM, ANN hoặc CNN có thể được áp dụng để phân loại và nhận dạng chữ số từ các đặc trưng đã được trích xuất Ví dụ, một công trình nghiên cứu của tác giả Li, J., Sun, G., Yi, L., Cao, Q., Liang, F., & Sun, Y.[51] tập trung vào xây dựng hệ thống nhận dạng chữ số viết tay dựa trên mạng Nơ-ron Công trình này đặt giới hạn và áp dụng tiêu chuẩn cụ thể để nhận dạng chữ số viết tay trong một lĩnh vực cụ thể Công trình khác của tác giả Ascencio, H E., Pena, C F., Vasquez, K R., Cardona, M., & Gutierrez, S.[52] tập trung vào việc phát triển công cụ chấm điểm tự động cho bài kiểm tra trắc nghiệm bằng sử dụng Computer Vision Công trình này đặt giới hạn và áp dụng các tiêu chuẩn cụ thể để nhận dạng chữ số viết tay trong bài kiểm tra trắc nghiệm
Cả hai phương pháp đều có ưu điểm và hạn chế riêng, tùy thuộc vào ứng dụng cụ thể mà chúng ta có thể lựa chọn phương pháp phù hợp Nhận dạng online thường cung cấp thông tin đa dạng hơn về việc viết, nhưng yêu cầu các thiết bị thu thập thông tin đặc biệt Trong khi đó, nhận dạng offline đơn giản hơn để triển khai nhưng có thể bị ảnh hưởng bởi chất lượng hình ảnh và không có thông tin về việc viết gốc
2.1.2 Những khó khăn trong nhận dạng chữ số viết tay
Nhận dạng chữ số viết tay đặt ra nhiều thách thức và khó khăn do các yếu tố sau:
- Đa dạng về biến thể chữ viết tay: Mỗi người có cách viết riêng biệt và đặc trưng, dẫn đến sự đa dạng lớn trong cách viết chữ số Điều này tạo ra thách thức trong việc xây dựng một hệ thống nhận dạng chung có thể xử lý được tất cả các biến thể này
- Khả năng thay đổi của chữ số viết tay: Cùng một chữ số có thể được viết ở nhiều cách khác nhau dựa trên tốc độ, áp lực và phong cách viết của người viết Điều này tạo ra sự biến đổi trong hình dạng và cấu trúc của chữ số, gây khó khăn trong việc nhận dạng đúng và chính xác
- Nhiễu và độ mờ: Trong quá trình viết, có thể xảy ra nhiễu và chữ viết tay có thể không rõ ràng, mờ đi Điều này gây khó khăn trong việc nhận dạng chính xác và yêu cầu các kỹ thuật xử lý ảnh để giảm thiểu ảnh hưởng của nhiễu và tăng cường độ rõ nét
Hình 2.1.Minh họa ảnh mờ
- Số lượng dữ liệu huấn luyện: Để xây dựng mô hình nhận dạng chữ số viết tay đáng tin cậy, cần có một tập dữ liệu huấn luyện đủ lớn và đa dạng Tuy nhiên, việc thu thập và gán nhãn dữ liệu có thể tốn kém và tốn thời gian
- Độ phức tạp của chữ số: Một số chữ số có độ phức tạp cao hơn so với các chữ số khác, với nét viết cong, vòng cung hoặc đường nét phức tạp hơn Điều này tạo ra thách thức trong việc phân loại và nhận dạng đúng các chữ số phức tạp hơn
Hình 2.2 Minh họa số viết dính liền
Hình 2.3 Ảnh minh họa số nằm lòng vào nhau hoặc cắt nhau
- Tỷ lệ nhận dạng chính xác: Mặc dù đã có sự phát triển đáng kể trong lĩnh vực nhận dạng chữ số viết tay, vẫn còn một tỷ lệ nhận dạng sai không thể tránh khỏi Điều này đặt ra thách thức về việc cải thiện độ chính xác và đáng tin cậy của các hệ thống nhận dạng
Những khó khăn trên đòi hỏi sự kết hợp giữa các phương pháp xử lý ảnh, mô hình học máy và công nghệ tiên tiến để tạo ra các giải pháp nhận dạng chữ số viết tay hiệu quả và tin cậy.
Các phương pháp nhận dạng chữ số viết tay
Hiện nay, trong các hệ thống nhận dạng chữ số viết tay, đã có sử dụng nhiều phương pháp khác nhau, bao gồm:
- Đối sánh mẫu: Phương pháp này so sánh mẫu chữ số viết tay với các mẫu đã được lưu trữ trước đó để tìm ra sự tương đồng và nhận dạng chữ số tương ứng
- Phương pháp thống kê: Dựa trên các đặc điểm thống kê của các chữ số viết tay, phương pháp này xác định và so sánh các đặc trưng để nhận dạng chữ số
- Phương pháp cấu trúc: Dựa trên cấu trúc và hình dạng của các chữ số viết tay, phương pháp này phân tích các đặc trưng cấu trúc để nhận dạng chữ số
- Mạng Nơ-ron: Sử dụng các mạng Nơ-ron như Multilayer Perceptron (MLP) hoặc Convolutional Neural Network (CNN) để huấn luyện và nhận dạng chữ số viết tay dựa trên mẫu dữ liệu đã có
- SVM (Support Vector Machine): Sử dụng SVM để xây dựng mô hình phân loại chữ số viết tay dựa trên các đặc trưng trích xuất từ dữ liệu
Ngoài ra, còn tồn tại nhiều phương pháp khác như Random Forest, k-Nearest Neighbors (k-NN), Deep Learning và Ensemble Methods được áp dụng trong lĩnh vực nhận dạng chữ số viết tay
2.2.1 Phương pháp đối sánh mẫu
Phương pháp đối sánh mẫu (template matching) là một trong những phương pháp phổ biến trong nhận dạng chữ số viết tay Đây là quá trình so sánh các mẫu đã biết trước với các mẫu mới nhằm xác định xem chúng có tương đồng hay không Quá trình đối sánh mẫu bao gồm các bước sau:
- Tiền xử lý ảnh: Ảnh chứa chữ số viết tay cần được tiền xử lý để loại bỏ nhiễu, cân bằng độ sáng, điều chỉnh kích thước và chuyển đổi sang dạng màu sắc hoặc độ xám
- Xây dựng mẫu: Từ tập dữ liệu huấn luyện, ta xây dựng các mẫu biểu diễn các chữ số viết tay Các mẫu này có thể là các vectơ đặc trưng, biểu diễn hình dạng hoặc các mô hình thống kê
- Đối sánh mẫu: Quá trình này thực hiện so sánh các mẫu đã xây dựng với ảnh chứa chữ số viết tay Các phương pháp đối sánh có thể sử dụng các công cụ như cross- correlation, chi-square distance, hoặc cosine similarity để tính toán độ tương đồng giữa mẫu và ảnh đầu vào
- Xác định kết quả: Kết quả của quá trình đối sánh mẫu là độ tương đồng hoặc độ sai khác giữa các mẫu và ảnh đầu vào Dựa trên một ngưỡng xác định trước, ta có thể quyết định xem chữ số được nhận dạng là chữ số nào dựa trên mẫu có độ tương đồng cao nhất
Phương pháp đối sánh mẫu có ưu điểm đơn giản, dễ hiểu và thực hiện Tuy nhiên, nó cũng có nhược điểm là nhạy cảm với biến đổi hình dạng và kích thước của chữ số, cũng như không đảm bảo kết quả chính xác với các biến thể phức tạp của chữ số viết tay Do đó, trong những bài toán phức tạp hơn, các phương pháp khác như mạng nơ-ron tích chập (CNN) thường được sử dụng để cải thiện độ chính xác và độ tin cậy của quá trình nhận dạng
Phương pháp thống kê là một trong những phương pháp được sử dụng trong nhận dạng chữ số viết tay Đây là một quá trình xác định lớp của chữ số dựa trên phân tích thống kê các đặc trưng của chữ số
Quá trình thực hiện phương pháp thống kê bao gồm các bước sau:
- Tiền xử lý ảnh: Ảnh chứa chữ số viết tay được tiền xử lý để loại bỏ nhiễu và cân bằng độ sáng Các bước tiền xử lý có thể bao gồm làm mịn ảnh, làm sạch các đối tượng không mong muốn và chuẩn hóa độ tương phản
- Trích xuất đặc trưng: Từ ảnh đã được tiền xử lý, các đặc trưng quan trọng được trích xuất Điều này có thể bao gồm các đặc trưng hình học như kích thước, tỷ lệ, đường viền, hoặc các đặc trưng thống kê như histogram, trung bình, phương sai
- Xây dựng mô hình thống kê: Các mô hình thống kê được xây dựng dựa trên các đặc trưng đã trích xuất từ ảnh chữ số Các mô hình này có thể là các phân phối xác suất, các phương trình thống kê, hoặc các bộ phân loại dựa trên nguyên tắc thống kê
Kỹ thuật xử lý ảnh[16]
Lọc mịn ảnh là một kỹ thuật xử lý ảnh được sử dụng để làm giảm độ nhiễu và cải thiện chất lượng ảnh Kỹ thuật này có thể được thực hiện bằng cách áp dụng các bộ lọc để giảm bớt chi tiết và nhiễu trong ảnh
Một số phương pháp lọc mịn ảnh phổ biến bao gồm:
Lọc trung bình: Áp dụng một bộ lọc trung bình để tính trung bình các giá trị pixel trong các vùng của ảnh, giúp làm giảm độ nhiễu
Lọc Gaussian: Sử dụng bộ lọc Gaussian để giảm nhiễu và làm mịn ảnh bằng cách lấy trung bình các giá trị pixel xung quanh điểm đang xét, với trọng số phụ thuộc vào khoảng cách từ điểm đến các điểm khác
Lọc trung vị: Sử dụng bộ lọc trung vị để loại bỏ các giá trị nhiễu bằng cách tính trung vị của các giá trị pixel trong các vùng ảnh
Lọc laplacian: Áp dụng bộ lọc laplacian để làm nổi các cạnh và chi tiết trong ảnh bằng cách tăng độ tương phản giữa các điểm ảnh
Các phương pháp này có thể được sử dụng độc lập hoặc kết hợp với nhau để đạt được kết quả tốt nhất cho ảnh cụ thể
Nhị phân hóa ảnh là quá trình phân loại các điểm ảnh thành hai nhóm: trắng (nền) cho các điểm ảnh có giá trị lớn hơn ngưỡng và đen (đối tượng) cho các điểm ảnh có giá trị nhỏ hơn ngưỡng
Một tiêu chuẩn phổ biến để xác định ngưỡng là sử dụng sai số bình phương trung bình giữa giá trị mẫu v và giá trị tái tạo tương ứng r(v) (được ký hiệu là MSE -
Mean Squared Error) Theo Otsu, giá trị ngưỡng được xác định như sau:
Với p(v) ước lượng từ histogram: T =( v 2 = v max ) v v 0 = min với v 1 : giá trị cần tìm
Lấy mẫu (sampling) trong ngữ cảnh của việc nhận dạng chữ số viết tay thường liên quan đến quá trình chuyển đổi ảnh từ dạng liên tục thành dạng rời rạc dựa trên các tọa độ số nguyên Quá trình lấy mẫu này giúp chuyển đổi một hình ảnh chữ số viết tay từ định dạng không rời rạc (như ảnh liên tục) thành một tập hợp các giá trị rời rạc (như pixel) để tiện cho việc xử lý và nhận dạng Trong quá trình lấy mẫu, có hai yếu tố quan trọng cần được xem xét:
Tần suất lấy mẫu (Sampling rate): Đây là tỷ lệ hoặc số lượng điểm ảnh được lấy mẫu từ ảnh gốc Tần suất lấy mẫu quyết định mức độ giảm kích thước của dữ liệu và độ chi tiết được giữ lại Tùy thuộc vào yêu cầu và tính chất của bài toán, ta có thể chọn tần suất lấy mẫu cao để giảm kích thước dữ liệu, hoặc tần suất lấy mẫu thấp để giữ lại nhiều thông tin chi tiết hơn
Phương pháp lấy mẫu (Sampling method): Đây là cách thức chọn các điểm ảnh hoặc ô vuông nhỏ để lấy mẫu từ ảnh gốc Có nhiều phương pháp lấy mẫu khác nhau như lấy mẫu theo tỷ lệ (downsampling) và lấy mẫu ngẫu nhiên (random sampling) Phương pháp lấy mẫu cần đảm bảo rằng dữ liệu lấy mẫu có đại diện tốt cho dữ liệu gốc và không gây mất mát thông tin quan trọng
Khi lấy mẫu ảnh, sẽ tạo ra một tập hợp các vị trí để lấy mẫu trong không gian hai chiều Trước tiên, có thể mô tả quá trình lấy mẫu một chiều bằng cách sử dụng một hàm
Tiếp theo, chúng ta định nghĩa hàm răng lược với các khoảng Δx như sau:
= − (7) với r là số nguyên, Δx là khoảng lấy mẫu
Hàm răng lược là một chuỗi các xung răng lược từ (-∞ đến +∞) Giả sử chúng ta xấp xỉ hàm một chiều g(x) bằng gần đúng g(rΔx), tức là: g(x) ≈ g (r Δ x)
Khi đó, tín hiệu lấy mẫu có thể được mô hình hoá như sau:
= = − (8) hoặc có thể được biểu diễn tương đương như sau:
Trong thực tế, chúng ta không thể tính toán r trong khoảng vô hạn (từ -∞ đến
+∞), mà thay vào đó chúng ta lấy một số lượng mẫu cụ thể NΔx Do đó, để đơn giản, chúng ta có thể xem hàm liên tục g(x) có thể được thực hiện thành một chuỗi với độ dài mẫu NΔx như sau: g(x) ≈ {g(0), g(Δx), g(2Δx), , g((N −1)Δx) } Chú ý: Δx là một tham số quan trọng trong khoảng lấy mẫu (Sampling Interval) cần được lựa chọn nhỏ và phù hợp Nếu không, chúng ta sẽ không thể khôi phục được tín hiệu gốc từ tín hiệu đã được lấy mẫu Định lý lấy mẫu của Shannon [15] Định lý lấy mẫu của Shannon (Shannon's sampling theorem) là một nguyên tắc quan trọng trong lý thuyết xử lý tín hiệu Nó xác định rằng để tái tạo một tín hiệu liên tục từ tín hiệu đã được lấy mẫu, ta cần lấy mẫu với tần số lấy mẫu ít nhất là gấp đôi tần số cao nhất có mặt trong tín hiệu ban đầu Nếu tần số lấy mẫu thấp hơn, sẽ xảy ra hiện tượng mất mát thông tin và tín hiệu tái tạo sẽ bị méo mó Định lý này đóng vai trò quan trọng trong việc xác định tần số lấy mẫu cần thiết để duy trì tính chính xác của tín hiệu sau khi lấy mẫu
Ví dụ: cho g(x) là một hàm có giá trị tần số giới hạn và sự biến đổi của Fourier là G(ωx) = 0 và cho ωx > Wx Trong trường hợp này, ta có thể phục hồi lại g(x) từ các mẫu đã lấy mẫu đều đặn tại khoảng Δx Có nghĩa là:
∆𝑥 ≤ 1 Định lý lấy mẫu của Shannon có thể được mở rộng cho không gian hai chiều 2𝜔𝑥 Hàm răng lược hai chiều khi đó được xác định như sau:
= − − (12) Hàm lấy mẫu hai chiều thu được có thể được biểu diễn như sau:
Lấy Δx, Δy sao cho thoả với điều kiện của định lý Lấy mẫu Shannon, lúc đó:
Các dạng lấy mẫu (Tesselation)
Có một số dạng lấy mẫu (Tesselation) được sử dụng để chuyển đổi một không gian liên tục thành một tập hợp các điểm rời rạc Dưới đây là một số dạng lấy mẫu phổ biến:
- Lấy mẫu dạng chữ nhật: Trong dạng này, các điểm ảnh được lấy mẫu theo các lưới chữ nhật Mỗi điểm ảnh được đặt tại giao điểm của các đường dọc và đường ngang của lưới chữ nhật Đây là một dạng lấy mẫu đơn giản và phổ biến, thường được sử dụng trong các ứng dụng xử lý ảnh và đồ họa
- Lấy mẫu dạng tam giác: Trong dạng này, các điểm ảnh được lấy mẫu theo các lưới tam giác Mỗi điểm ảnh được đặt tại giao điểm của các đường điểm trên và đường điểm dưới của lưới tam giác Dạng lấy mẫu này thường được sử dụng trong các thuật toán phân tích hình ảnh và xử lý ảnh
- Lấy mẫu dạng lục giác: Trong dạng này, các điểm ảnh được lấy mẫu theo các lưới lục giác Mỗi điểm ảnh được đặt tại giao điểm của các đường đường kính và đường viền của lưới lục giác Dạng lấy mẫu này thường được sử dụng trong các ứng dụng xử lý ảnh và mô hình hóa không gian
Biên (edge) và các kỹ thuật tìm biên[16]
Biên cạnh là vùng chuyển đổi đột ngột giữa các điểm ảnh có cường độ khác nhau trong một hình ảnh Nó thường được hiểu là ranh giới hay ranh giới sắc nét giữa các vùng trong ảnh Biên cạnh thường được dùng để trích xuất và phân tích thông tin về cấu trúc, hình dạng và đặc trưng của đối tượng trong ảnh Các phương pháp như gradient Sobel, Canny và Laplace thường được sử dụng để phát hiện biên cạnh trong xử lý ảnh
2.4.1 Dò biên và mã hóa đường biên
Ta có giải thuật dò tìm biên như sau:
Bước 1: Quét hình ảnh cho đến khi gặp điểm ảnh đen và gọi điểm này là pixel 1 Bước 2: Lặp lại các bước sau:
• Nếu điểm ảnh hiện tại là một điểm đen, thực hiện quá trình "dò ngược" biên
• Quá trình "dò ngược" biên: Di chuyển ngược lại từ điểm hiện tại cho đến khi gặp một điểm ảnh trắng Trong quá trình di chuyển này, các điểm ảnh trên đường đi sẽ được xác định là điểm biên cạnh
• Ngược lại, nếu điểm ảnh hiện tại là một điểm trắng, di chuyển sang phải cho đến khi gặp pixel 1
Giải thuật này sử dụng cách tiếp cận quét từ trái sang phải và tìm điểm bắt đầu của đường biên bằng cách tìm điểm ảnh đen đầu tiên Sau đó, nó thực hiện việc dò ngược để tìm các điểm biên cạnh trên đường đi của đường biên, và di chuyển sang phải cho đến khi gặp điểm ảnh đen tiếp theo để bắt đầu quá trình tìm biên của đường biên tiếp theo
Tuy giải thuật này đơn giản, nhưng nó có thể được sử dụng để tìm biên cạnh trong một số trường hợp đơn giản Đối với ảnh phức tạp hơn và các đối tượng có hình dạng phức tạp, các giải thuật dò biên phức tạp hơn như Canny hay Sobel thường được sử dụng để đạt hiệu quả tốt hơn trong việc tìm biên cạnh
Hình 2.7 Minh họa hướng dò biên cạnh
2.4.2 Xác định hướng của điểm biên (Freeman code)
Xác định hướng của điểm biên là phương pháp sử dụng mã Freeman để xác định hướng của điểm biên trong xử lý ảnh Mã Freeman (hoặc còn gọi là mã điều hướng
8 phần tử) là một hệ thống mã hóa được sử dụng để biểu diễn hướng của các điểm trên đường biên Nó sử dụng 8 hướng khác nhau (từ 0 đến 7) để mã hóa hướng di chuyển từ điểm biên hiện tại đến điểm biên tiếp theo
Hình 2.8 Hướng quy ước mã hóa
Với mã hóa hướng di chuyển trên đường biên được mã hóa như hình:
Hình 2.9 Đường biên đã được mã hóa
Làm trơn đường biên là một quá trình xử lý các điểm trên đường biên của một đối tượng trong ảnh nhằm giảm sự biến đổi góc đột ngột và tạo ra đường biên mượt mà hơn Để đạt được điều này, chúng ta có thể áp dụng các phương pháp như làm trơn theo đường biên hoặc tìm điểm trung điểm giữa hai điểm liên tiếp để điều chỉnh giá trị của điểm trung gian Kết quả là đường biên sau khi được làm trơn sẽ có dạng mượt và ít biến đổi so với đường biên ban đầu
Theo định nghĩa của mã hướng Freeman, chúng ta xác định hiệu số hướng giữa hai điểm liên tiếp trên đường biên bằng cách so sánh giá trị cᵢ₊₁ với cᵢ Mã hướng Freeman đã được định nghĩa để biểu diễn các hướng khác nhau trên đường biên, và chúng ta sử dụng các mã hướng này để tính toán hiệu số hướng
Tóm lại, quá trình làm trơn đường biên bao gồm việc điều chỉnh giá trị các điểm trên đường biên dựa trên các phương pháp như làm trơn theo đường biên và tìm điểm trung điểm Mã hướng Freeman được sử dụng để xác định hiệu số hướng giữa các điểm liên tiếp trên đường biên, đảm bảo sự mượt mà và liên tục của đường biên sau quá trình làm trơn
Giả sử chúng ta có d = cᵢ₊₁ - cᵢ và Dabs = |d| Trong trường hợp |d| ≤ 4, ta có Dabs = |d| Tuy nhiên, trong trường hợp |d| > 4, ta có Dabs = 8 - |d|
Với giả sử trên ta có các trường hợp:
Nếu Dabs ≤ 1, điểm biên được xem là trơn Trong trường hợp Dabs = 2 và ci là số chẵn, ci+1 cũng là số chẵn, chúng ta có thể loại bỏ điểm pi+1 và điều chỉnh hướng tại điểm pi như sau:
Hình 2.10 Dabs = 2 và c i chẵn, c i +1 → chẵn
- Nếu Dabs = 2 và ci là số lẻ, ci + 1 cũng là số lẻ, chúng ta có thể loại bỏ điểm pi+1 và điều chỉnh hướng tại điểm pi như sau:
Hình 2.11 Dabs = 2 và c i lẻ, c i + 1 → lẻ
- dabs = 3, ci lẻ, ci + 1 chẵn
Hình 2.12 Dabs = 3 và c i chẵn, c i + 1 → lẻ
Hình 2.13 Dabs=3, ci lẻ, ci+1 chẵn
2.4.4 Phương pháp phát hiện biên cục bộ Gradient
Gradient [16] là một vector đại diện cho tốc độ thay đổi của độ xám của điểm ảnh theo hai hướng x và y trong không gian xử lý ảnh hai chiều Nó được biểu diễn bởi hai thành phần (x, y)
Trong quá trình tính toán Gradient, chúng ta sử dụng đạo hàm riêng bậc nhất theo hướng x và y để đo lường tốc độ thay đổi của độ xám của điểm ảnh Khoảng cách giữa hai điểm kề cận theo hướng x và y được ký hiệu là dx và dy tương ứng (thông thường chọn dx = dy = 1) Qua đó, chúng ta có thể tính toán Gradient và biểu diễn nó trong tọa độ góc (r, θ), với r là độ lớn của vector và θ là góc của vector
( , ) cos sin x y df r f dx f dy f f dr x dr y dr
(17) f(r,θ) đạt giá trị cực đại khi ( 𝑑𝑓(r,θ)
' max tan sin cos tan ( ) x y x x y y f f r f và f f f f
Để đơn giản hóa quá trình tính toán Gradient trong xử lý ảnh, thường áp dụng kỹ thuật Gradient sử dụng cặp mặt nạ trực giao H1 và H2, tương ứng với hai hướng vuông góc Gradient là một vector đại diện cho tốc độ thay đổi của độ xám của điểm ảnh theo hai hướng x và y trong không gian xử lý ảnh hai chiều
Bằng cách áp dụng mặt nạ H1 và H2 lên các điểm lân cận, chúng ta có thể tính toán Gradient theo hướng x (g1) và Gradient theo hướng y (g2) tại mỗi điểm ảnh Sau đó, biên độ Gradient tại mỗi điểm ảnh có thể được tính toán bằng cách sử dụng công thức Euclidean:
Trong đó, g1 và g2 là Gradient theo hai hướng x và y tại điểm (m,n), và g(m,n) là biên độ Gradient tại điểm (m,n)
Qua quá trình tính toán Gradient, chúng ta thu được thông tin về tốc độ thay đổi độ xám của điểm ảnh trong không gian xử lý ảnh Gradient là một công cụ mạnh mẽ trong việc phát hiện và trích xuất biên cạnh, cấu trúc và đặc trưng của đối tượng trong ảnh
MÔ HÌNH MẠNG NƠ-RON TÍCH CHẬP
Mạng Nơ-ron nhân tạo
Nơ-ron sinh học là đơn vị cơ bản của hệ thống thần kinh trong cơ thể con người và các sinh vật khác Chúng đóng vai trò quan trọng trong việc truyền tín hiệu điện hóa và xử lý thông tin trong não bộ Cấu tạo của nơ-ron sinh học gồm có thân nơ-ron, sợi dẫn truyền tín hiệu (axons) và các kết nối (synapse) Thân nơ-ron chứa nhân và các cấu trúc tế bào quan trọng Sợi dẫn truyền tín hiệu (axons) dài và mảnh, có chức năng truyền tín hiệu điện hóa từ nơ-ron này đến nơ-ron khác Các kết nối (synapse) là nơi truyền thông tin giữa các nơ-ron, thông qua chất truyền thay (neurotransmitters)
Hình 3.1 Mô hình Nơ-ron sinh học
Cấu trúc của một nơ-ron của bộ não con người bao gồm các thành phần chính sau đây:
Dendrit: Đó là các sợi nhánh nhỏ nhận tín hiệu từ các neuron khác và truyền tín hiệu đến cơ thể chính của neuron
Cơ thể tế bào (Soma): Đây là phần trung tâm của neuron chứa nhân và các cấu trúc tế bào quan trọng khác Nó tích hợp và xử lý các tín hiệu nhận được từ dendrit
Axon: Đây là sợi dẫn tín hiệu dài và mảnh Tín hiệu điện hóa được truyền dọc theo axon từ soma đến các neuron khác hoặc đến các cơ quan và cơ bắp khác trong cơ thể
Cuối axon và các đầu nối synapse: Cuối axon chứa các đầu nối synapse, nơi tín hiệu được truyền từ một neuron sang neuron khác thông qua các chất trung gian gọi là neurotransmitter
Các thành phần này hoạt động cùng nhau để tạo ra quá trình giao tiếp và truyền thông tin trong bộ não
3.1.2 Mạng Nơ-ron nhân tạo
Mạng nơ-ron nhân tạo (Artificial Neural Network - ANN) là một mô hình tính toán được lấy cảm hứng từ cấu trúc và hoạt động của mạng nơron sinh học trong hệ thống thần kinh của con người Mạng nơ-ron nhân tạo bao gồm một tập hợp các nơ- ron nhân tạo được kết nối với nhau thông qua các liên kết
Mỗi nơ-ron nhân tạo trong mạng nhận đầu vào từ các nơ-ron khác và thực hiện một phép tính trên dữ liệu đầu vào để tạo ra đầu ra Các liên kết giữa các nơ-ron có trọng số, thể hiện sức mạnh và tác động của đầu vào lên nơ-ron đó Quá trình truyền thông tin qua mạng nơ-ron nhân tạo diễn ra dựa trên các phép tính và quy tắc kết nối giữa các nơ-ron
Mạng nơ-ron nhân tạo thường được sử dụng để giải quyết các bài toán như phân loại, dự đoán, nhận dạng và gợi ý Điểm mạnh của mạng nơ-ron nhân tạo là khả năng học tự động thông qua quá trình huấn luyện dữ liệu Khi được huấn luyện với một tập dữ liệu đầu vào và đầu ra tương ứng, mạng nơ-ron nhân tạo có thể tự động tìm ra các quy luật và mối quan hệ phức tạp trong dữ liệu, và từ đó có thể dự đoán đầu ra cho các dữ liệu mới
Synapse là thành phần trong mạng nơ-ron nhân tạo mô phỏng các khớp nối thần kinh Nó là nơi truyền tín hiệu từ một nơron sang nơron khác Các synapse có thể có trọng số, biểu thị sự tương quan và mức độ quan trọng của tín hiệu truyền qua Các trọng số này có thể điều chỉnh trong quá trình huấn luyện của mạng nơron nhân tạo để cải thiện hiệu suất và khả năng học tập của mạng
Tổ hợp các nơ-ron và synapse trong mạng nơron nhân tạo tạo nên một cấu trúc phức tạp, cho phép mô phỏng và xử lý thông tin theo cách tương tự như bộ não con người Mạng nơron nhân tạo có thể được sử dụng để giải quyết nhiều bài toán trong lĩnh vực trí tuệ nhân tạo và xử lý thông tin
Nơ-ron nhân tạo là một đơn vị tính toán trong mạng nơ-ron nhân tạo, có nhiều đầu vào và một đầu ra Nó được thiết kế để mô phỏng các tính chất cơ bản của nơ- ron sinh học trong bộ não con người
Hình 3.2 Mô hình Nơ-ron nhân tạo ở mức đơn giản
Hoạt động của một nơ-ron trong mạng nơ-ron nhân tạo được mô tả theo các bước sau:
1 Nhận đầu vào: Nơ-ron nhân tạo nhận đầu vào từ các nơ-ron hoặc nguồn thông tin khác qua các kết nối đến đầu vào của nó Mỗi kết nối có một trọng số tương ứng, đại diện cho mức độ quan trọng của đầu vào đối với hoạt động của nơ-ron
2 Tổ hợp tuyến tính: Nơ-ron tính tổng có trọng số của các đầu vào bằng cách nhân mỗi đầu vào với trọng số tương ứng và cộng tổng các kết quả này lại Quá trình này được gọi là tổ hợp tuyến tính, và nó xác định mức độ ảnh hưởng của từng đầu vào đến đầu ra của nơ-ron
3 Áp dụng hàm kích hoạt: Sau khi tổ hợp tuyến tính, kết quả được đưa qua một hàm kích hoạt Hàm kích hoạt thường được sử dụng để giới hạn và biến đổi giá trị đầu ra của nơ-ron Ví dụ, hàm kích hoạt nhị phân (như hàm bước) có thể chuyển đổi đầu ra thành hai giá trị chỉ có thể là 0 hoặc 1, trong khi hàm kích hoạt sigmoid có thể chuyển đổi đầu ra thành một giá trị nằm trong khoảng từ 0 đến 1
4 Tạo đầu ra: Kết quả từ hàm kích hoạt là đầu ra của nơ-ron, nó có thể được truyền đến các nơ-ron khác trong mạng nơ-ron nhân tạo làm đầu vào cho các nơ-ron tiếp theo trong quá trình xử lý thông tin
Qua việc điều chỉnh trọng số kết nối và áp dụng hàm kích hoạt, nơ-ron nhân tạo có khả năng học và thích nghi với dữ liệu đầu vào Quá trình này được thực hiện thông qua các thuật toán học máy và huấn luyện mạng nơ-ron để đạt được các mục tiêu như phân loại, dự đoán hoặc xử lý thông tin khác Đường truyền nào có trọng số càng lớn thì tín hiệu truyền qua đó càng có ảnh hưởng lớn hơn, tương tự như synapse trong nơ-ron sinh học Kết quả tổng của một Nơ-ron nhân tạo có thể được biểu diễn như sau [41]:
Mạng Nơ-ron tích chập (Convolutional Neural Networks – CNN) [21]
Mạng nơ-ron tích chập (Convolutional Neural Network - CNN) là một loại mô hình mạng nơ-ron nhân tạo được thiết kế đặc biệt cho việc xử lý dữ liệu không gian như hình ảnh và video CNN được xây dựng dựa trên các khái niệm và phép toán của tích chập (convolution), giúp nắm bắt các đặc trưng cục bộ trong dữ liệu đầu vào CNN thường bao gồm các lớp khác nhau như lớp tích chập, lớp pooling, và lớp kết nối đầy đủ (fully-connected) Lớp tích chập có nhiệm vụ áp dụng các bộ lọc (filter) lên dữ liệu đầu vào để tạo ra các bản đồ đặc trưng (feature maps) Bằng cách chia sẻ trọng số của các bộ lọc, CNN có khả năng tự động học và nhận biết các đặc trưng phổ biến như góc, cạnh, hoặc textural patterns trong hình ảnh
Lớp pooling được sử dụng để giảm kích thước không gian của bản đồ đặc trưng, giúp giảm lượng tính toán và tránh hiện tượng quá khớp Các phép toán pooling thường là max pooling hoặc average pooling, giữ lại giá trị lớn nhất hoặc trung bình của các vùng cục bộ
Sau đó, các bản đồ đặc trưng được đưa vào lớp kết nối đầy đủ, trong đó các nút được kết nối với tất cả các nút trong lớp trước đó Lớp này thường được sử dụng để phân loại hoặc dự đoán đầu ra dựa trên các đặc trưng đã học được
Với cấu trúc và phép toán đặc biệt, CNN đã chứng tỏ khả năng xuất sắc trong nhiều nhiệm vụ như nhận dạng hình ảnh, phân loại văn bản, nhận dạng khuôn mặt, và nhiều ứng dụng khác trong lĩnh vực trí tuệ nhân tạo và thị giác máy tính
Hình 3.6 Mô hình mạng nơ ron truyền thống
Hình 3.7 Phân loại ảnh với mạng CNN
CNN có tính bất biến và tính kết hợp cục bộ (Location Invariance and Compositionality) Khi một đối tượng được chiếu theo các góc độ khác nhau (dịch chuyển, quay, co giãn), độ chính xác của thuật toán CNN có thể bị ảnh hưởng đáng kể Tuy nhiên, pooling layer trong CNN cho phép đạt được tính bất biến đối với phép dịch chuyển, phép quay và phép co giãn
Tính bất biến của CNN đảm bảo rằng kết quả của một filter không thay đổi khi áp dụng lên các vùng dữ liệu dịch chuyển trong ảnh Điều này giúp cho CNN không quan tâm đến vị trí cụ thể của các đặc trưng trong ảnh và mang lại tính bất biến đối với phép dịch chuyển
Tính kết hợp cục bộ trong CNN cho phép biểu diễn thông tin từ cấp độ thấp đến cấp độ cao và trừu tượng hơn thông qua quá trình convolution với các bộ lọc Qua các lớp convolution, CNN học được các đặc trưng cụ thể từ dữ liệu đầu vào, bắt đầu từ các đặc trưng cơ bản (mức độ thấp) như cạnh và đường cong, sau đó kết hợp chúng để tạo ra các đặc trưng phức tạp hơn (mức độ cao) Quá trình này tạo ra một biểu diễn hình ảnh tổng thể của đối tượng, giống như cách con người nhận biết các vật thể trong tự nhiên
Ví dụ, để phân biệt một con chó và một con mèo, CNN sẽ nhận biết các đặc trưng cơ bản như có 4 chân và có đuôi (mức độ thấp), sau đó kết hợp chúng với các đặc trưng khác như dáng đi, hình thể và màu lông (mức độ cao) Quá trình này giúp CNN xây dựng một mô hình với độ chính xác cao trong việc phân loại ảnh, tương tự như cách con người nhận biết đối tượng thông qua các đặc trưng từ mức độ thấp đến mức độ cao
Tích chập (Convolutional) là một phần cốt lõi của mạng Nơ-ron tích chập (CNNs) và được sử dụng để trích xuất các thông tin đặt trưng của hình ảnh và lớp này cũng hổ trợ cho việc “học” của mạng CNN [24] Nhờ vào biến đổi thông tin nên kỹ thuật này còn được áp dụng vào xử lý ảnh và video số Ví dụ chúng ta xem tích chập như một cửa sổ trượt được đặt trên một ma trận
Hình 3.8 Minh họa ma trận trong tích chập
Trong Hình 3.8, ma trận bên tay trái có thể được tưởng tượng là một ảnh đen trắng, với mỗi giá trị trên ma trận tương ứng với một điểm ảnh (pixel) Trong trường hợp này, giá trị 0 được sử dụng để biểu thị màu đen, và giá trị 1 được sử dụng để biểu thị màu trắng Đây là một cách biểu diễn đơn giản cho ảnh nhị phân, trong đó chỉ có hai mức xám: đen hoặc trắng
Ngoài ra, nếu ma trận đại diện cho ảnh xám, thì các giá trị trên ma trận có thể biến thiên từ 0 đến 255, tương ứng với các mức xám khác nhau Giá trị 0 tương đương với màu đen tuyệt đối, trong khi giá trị 255 tương đương với màu trắng tuyệt đối Các giá trị nằm giữa 0 và 255 biểu thị các mức xám khác nhau, trong đó giá trị càng cao thể hiện mức xám càng sáng
3.2.3 Cấu trúc mạng Nơ-ron tích chập
Mạng Nơ-ron tích chập (Convolutional Neural Network - CNN) là một loại mạng Nơ-ron đa tầng, gồm ba dạng tầng chính: tầng tích chập (convolutional layer), tầng lấy mẫu con (subsampling layer), và tầng kết nối đầy đủ (fully connected layer), như được minh họa trong hình sau
Hình 3.9 Minh họa mô hình CNN
Trong mạng CNN, ảnh đầu vào được coi như một tầng đầu vào (input layer), trong đó mỗi pixel tương ứng với một nơ-ron Tầng này còn được gọi là feature map, tương tự như ảnh thông thường, trong đó mỗi pixel đại diện cho một nơ-ron
Tầng tích chập (Convolutional layer - C) là tầng thực hiện việc trích xuất đặc trưng Trong tầng này, tích chập được thực hiện bằng cách áp dụng một hoặc nhiều bộ lọc (kernel) lên kết quả đầu ra của tầng trước, tạo ra các feature map mới
Tầng gộp (Pooling layer - S) là tầng thực hiện lấy mẫu con trên các feature map từ tầng tích chập Mục đích của tầng này là giảm kích thước của feature map và tạo ra các feature map có tính chất không gian invariance, giúp mạng chịu được biến đổi vị trí và tạo ra các biểu diễn đặc trưng tổng quát hơn
XỬ LÝ ẢNH VÀ NHẬN DẠNG CHỮ SỐ VIẾT TAY VỚI MẠNG NƠ-RON TÍCH CHẬP
Bài toán nhận dạng
Bài toán được đặt ra là nhận dạng chữ số viết tay và đáp án trên phiếu trả lời trắc nghiệm từ file ảnh đầu vào (*.jpg) Để giải quyết bài toán này, chúng ta sẽ sử dụng mạng Nơ-ron tích chập (CNN) cùng với cơ sở dữ liệu số viết tay (0-9) Giả sử giai đoạn tiền xử lý đã được thực hiện, bao gồm phân ngưỡng, xoay ảnh, lọc nhiễu, và các bước khác Chúng ta tập trung nghiên cứu vào quá trình nhận dạng chữ số viết tay và xử lý ảnh bằng CNN
4.1.2 Ảnh dầu vào của bài toán Ảnh đầu vào là file ảnh (*.jpg) bao gồm một ảnh chứa mã số phách là 3 ký tự số viết tay và các đáp án được tô có 4 đáp án: “A”, “B”, “C”, “D”
Hình 4.1 Ảnh chứa các ký tự số viết tay và trả lời trắc nghiệm
Thuật toán nhận diện số phách
4.2.1 Mô tả các bước trong thuật toán
- Thuật toán lấy vùng chứa số phách viết tay chủ yếu dựa trên việc tìm kiếm và định vị các đối tượng có trong bức ảnh, sau đó tách riêng ra các vùng chứa số phách và định dạng chúng theo đúng kích thước Các bước thực hiện của thuật toán này bao gồm:
Bước 1: Tiền xử lý ảnh: Chuyển đổi ảnh về dạng đen trắng và loại bỏ các nhiễu
Bước 2: Tìm kiếm vùng chứa mã số phách: Sử dụng thuật toán như cắt nền, phát hiện các đường viền hoặc tìm kiếm các đối tượng trong ảnh để tìm ra các vùng có thể chứa chữ số
Bước 3: Nén vùng chứa chữ số: Gom những vùng nhỏ hơn thành các vùng lớn hơn và loại bỏ các vùng không cần thiết
Bước 4: Phân loại chữ số: Sử dụng Mạng nơ ron tích chập (CNN)để phân loại chữ số trong mỗi vùng đã nén
Các bước trong quá trình nhận dạng chữ số viết tay đòi hỏi sự chính xác để đạt được kết quả tốt nhất Chất lượng ảnh ban đầu và độ phức tạp của chữ số viết tay cũng ảnh hưởng đáng kể đến độ chính xác của quá trình này Ảnh chứa các ký tự số viết tay cần xác định
Xác định vùng và biên ngoại tiếp ký tự đầu tiên bên trái
Hoàn thành việc xác định vùng ngoại tiếp của tất cả các ký tự Hình 4.2 Kết quả xác định vùng và biên chứa các ký tự số viết tay
Hình 4.3 Mô hình tổng quan nhận dạng chữ số viết tay
- Nhập ảnh vào: ảnh đầu vào là phiếu trả lời trắc nghiệm có chứa số 3 chữ số phách viết tay
- Tiền xử lý: Chuyển ảnh đầu vào sang thành ảnh xám và áp dụng các phép lọc để giảm nhiễu và làm mịn ảnh Sử dụng bộ lọc kernel Gaussian để làm mịn ảnh và loại bỏ nhiễu
- Tách số phách: ảnh được chia thành nhiều vùng riêng biệt có chứa số phách
- Nhận dạng số phách: Các chữ số được tách sẽ được nhận dạng bằng cách sử dụng thuật toán mạng nơ ron tích chập (CNN)
- Số phách được nhận dạng: Các số phách trong từng vùng được phân tích và nhận dạng bằng thuật toán mạng nơ ron tích chập (CNN)
- Kết hợp các số đã nhận dạng để tạo thành số phách, kết quả từ các bước trên để đưa ra kết quả cuối cùng của bài toán là số phách đã được nhận dạng từ trên phiếu trả lời trắc nghiệm và trả về danh sách các số phách đã nhận dạng được
Hình 4.4 Mô hình tiền xử lý ảnh
Tiền xử lý để lấy số phách trên ảnh bao gồm các bước sau:
Chuyển ảnh màu sang ảnh xám: Sử dụng phép chuyển đổi màu để chuyển ảnh màu sang thành ảnh xám Điều này giúp loại bỏ thông tin màu sắc và chỉ giữ lại thông tin về cường độ ánh sáng
Lọc nhiễu: Sử dụng phép lọc Gaussian để loại bỏ nhiễu trên ảnh Điều này giúp cải thiện chất lượng ảnh và loại bỏ nhiễu không mong muốn
Làm mịn ảnh: Sử dụng phép lọc Gaussian để làm mịn ảnh Điều này giúp giảm độ nhiễu và giảm chi tiết không cần thiết trên ảnh
Hình 4.5 Ảnh đầu vào Hình 4.6 Ảnh sau khi thực hiện bước tiền xử lý
4.2.3 Xác định biên, tách vùng số phách
Hình 4.7 Mô hình xác định biên và tách vùng số phách
Phân ngưỡng ảnh là quá trình sử dụng một phương pháp để chia các vùng trên ảnh thành hai nhóm dựa trên mức độ cường độ ánh sáng Kết quả là việc tách được các vùng trắng (chứa số phách) và các vùng đen (nền) hoặc ngược lại Để tìm các đối tượng (số phách) trên ảnh, chúng ta sử dụng phương pháp Canny Edge detection để phát hiện các đường viền của số phách Sau đó, chúng ta áp dụng các kỹ thuật xử lý hình ảnh để tìm ra các vùng chứa số phách và làm sạch các vùng không cần thiết Quá trình này giúp xác định và trích xuất các đối tượng số phách từ ảnh
Lấy vùng chứa số phách: Dựa trên các đường viền và vùng trắng trên ảnh, ta có thể xác định được các vùng chứa số phách trên ảnh
Kết quả bước này, chúng ta thu được vùng chứa số phách và đưa vào nhận dạng bởi mô hình mạng nơ ron tích chập (CNN)
Hình 4.8 Minh họa xác định biên và tách số phách
4.2.4 Xây dựng mạng Nơ-ron nhận dạng chữ số viết tay [22 - 23] Để xây dựng mạng nơ-ron nhận dạng chữ số viết tay, chúng ta có thể sử dụng thuật toán CNN (Convolutional Neural Network) Trong mạng CNN, các tầng tích chập (convolutional layers) được sử dụng để học các đặc trưng của ảnh chữ số viết tay, trong khi các tầng lấy mẫu (pooling layers) được sử dụng để giảm kích thước đầu vào Sau đó, chúng ta sử dụng một hoặc nhiều tầng kết nối đầy đủ (fully connected layers) để đưa ra dự đoán cho chữ số tương ứng
Trước khi đưa dữ liệu ảnh vào mạng nơ-ron, chúng ta cần chuẩn hóa dữ liệu và chia nó thành các tập train, validation và test Sau đó, chúng ta sử dụng các thuật toán tối ưu hóa như stochastic gradient descent để học các tham số của mạng nơ-ron Kết quả của mạng nơ-ron được đánh giá bằng các độ đo như accuracy, precision, recall, F1-score Qua đó, chúng ta có thể tìm kiếm các giá trị tham số tối ưu cho mạng nơ-ron nhằm đạt được kết quả tốt nhất trong việc nhận dạng chữ số viết tay
Hình 4.9 Mô hình mô phỏng mạng Nơ-ron được sử dụng
4.2.5 Huấn luyện mạng Nơ-ron Để huấn luyện mô hình nhận dạng chữ số viết tay trên mạng nơ-ron tích chập (CNN), chúng ta có thể thực hiện các bước sau:
Chuẩn bị dữ liệu: Chuẩn bị hai tập dữ liệu - tập huấn luyện và tập kiểm thử Tập dữ liệu này chứa các hình ảnh 28×28 pixel của các chữ số từ 0 đến 9 Tập huấn luyện được sử dụng để huấn luyện mô hình, trong khi tập kiểm thử được sử dụng để đánh giá độ chính xác của mô hình
Xây dựng mô hình: Xây dựng một mạng nơ-ron đơn giản với các lớp ẩn và một lớp đầu ra Các lớp ẩn có thể sử dụng các hàm kích hoạt như ReLU hoặc tanh Lớp đầu ra sử dụng hàm softmax để tính xác suất của các lớp
Khởi tạo trọng số: Khởi tạo ngẫu nhiên các trọng số của các nơ-ron trong mạng
Huấn luyện mô hình: Sử dụng tập huấn luyện, thực hiện huấn luyện mô hình bằng cách tính toán gradient của hàm mất mát (cross-entropy loss) và sử dụng phương pháp tối ưu như stochastic gradient descent (SGD) để điều chỉnh trọng số của mạng Quá trình này được lặp lại qua nhiều epoch để cải thiện hiệu suất của mô hình
Đánh giá mô hình: Sau khi huấn luyện, đánh giá hiệu suất của mô hình trên tập kiểm thử bằng cách tính toán độ chính xác của mô hình
Cải thiện mô hình: Nếu mô hình không đạt được kết quả tốt trên tập kiểm thử, ta có thể cải thiện mô hình bằng cách điều chỉnh các siêu tham số khác, chọn kiến trúc mạng khác hoặc sử dụng các kỹ thuật khác để cải thiện hiệu suất của mô hình
Đưa ra dự đoán: Khi mô hình đã được huấn luyện và đánh giá, ta có thể sử dụng nó để đưa ra dự đoán trên các hình ảnh chữ số mới
Thuật toán chấm điểm tự động [24 - 26]
Thuật toán chấm trắc nghiệm là quá trình tự động chấm điểm các bài thi trắc nghiệm Thuật toán này sử dụng các kỹ thuật xử lý ảnh và học máy để nhận diện câu trả lời và tính điểm cho các câu trả lời đó Các bước cơ bản của thuật toán chấm trắc nghiệm bao gồm:
Tiền xử lý ảnh: Ảnh của bài làm được đưa vào để loại bỏ nhiễu và chỉ giữ lại thông tin quan trọng
Xác định vùng chứa đáp án: Sử dụng các kỹ thuật như phân ngưỡng và phân đoạn để tách các vùng chứa đáp án ra khỏi phần còn lại của bài trả lời
Xác định đáp án: Sử dụng các kỹ thuật nhận dạng ký tự để trích xuất các đáp án được chọn Kỹ thuật nhận dạng ký tự có thể sử dụng mạng nơ-ron nhân tạo
Phân loại đáp án: So sánh kí tự đã nhận dạng được với bộ dữ liệu đáp án đã được xác định trước đó và gán điểm tương ứng cho từng đáp án
Tính điểm: Cuối cùng, kết quả được chấm điểm dựa trên số đáp án đúng và sai, tổng điểm của thí sinh được tính toán và lưu lại
Hình 4.11 Mô hình tổng quan chấm điểm tự động
Sau khi hoàn thành quá trình xử lý và nhận dạng thông tin trên phiếu trả lời trắc nghiệm, kết quả có thể được sử dụng để thực hiện các bước so sánh và thu thập thông tin chi tiết về thí sinh, cũng như tính toán điểm số của thí sinh
4.3.1 Xác định vùng chứa đáp án
Sau khi thực hiện bước tiền xử lý, việc xác định vùng chứa đáp án có thể được thực hiện thông qua các bước sau đây:
- Áp dụng các kỹ thuật tiền xử lý ảnh như lọc nhiễu và làm mịn ảnh để giảm nhiễu và làm rõ đường viền
- Sử dụng kỹ thuật phân đoạn ảnh để phân tách các vùng ảnh khác nhau
- Tìm kiếm các khu vực dựa trên thông tin đặc trưng của đáp án, bao gồm như màu sắc, hình dạng, kích thước và vị trí đặc trưng
- Xác định các vùng chứa đáp án bằng cách tìm kiếm các khu vực gần nhau hoặc liền kề nhau có cùng đặc trưng, gồm như các hình tròn hoặc hình chữ nhật trên đáp án
Hình 4.12 Mô hình xác định vùng chứa đáp án
Sau khi xác định được các vùng chứa đáp án, thuật toán chấm trắc nghiệm sẽ tiếp tục đọc và phân tích thông tin trong các vùng này để đưa ra kết quả chấm điểm
Sau khi thực hiện bước tiền xử lý và sử dụng thuật toán xác định vùng chứa đáp án, vùng này sẽ được tách ra từ các vùng khác của bức ảnh và lấy ra để phân tích tiếp
Từ vùng chứa đáp án ta thực hiện các bước sau:
Tách các ô chứa đáp án: các ô chứa đáp án sẽ được tách ra và đưa vào để phân tích tiếp
Nhận dạng đáp án: các ô chứa đáp án được đưa vào mạng nơ-ron để nhận dạng Trong mạng nơ-ron, các đáp án sẽ được phân loại và đánh giá đáp án được chọn hay không được chọn của từng lựa chọn
Hình 4.13 Mô hình xác định đáp án
Hình 4.14 Xác định thông tin của vùng trả lời
Sau khi vùng chứa đáp án đã được xác định bằng các phương pháp tiền xử lý ảnh và phân đoạn ảnh Sau đó, ảnh được chuyển sang định dạng dữ liệu thích hợp cho thuật toán học máy, sử dụng ma trận numpy
Tiếp theo, thuật toán Mạng nơ-ron được dùng để phân loại các đáp án Dữ liệu huấn luyện được thu thập dựa trên phiếu trả lời, dữ liệu huấn luyện bao gồm các câu hỏi và đáp án tương ứng Huấn luyện mô hình trên dữ liệu huấn luyện để tìm các tham số tối ưu cho mô hình Quá trình huấn luyện có thể được thực hiện trong nhiều epochs, với mỗi epoch bao gồm nhiều vòng lặp qua các batch dữ liệu để cập nhật trọng số của mô hình Sau khi được huấn luyện và đánh giá, bước tiếp theo bài toán có thể dự đoán đáp án cho các ảnh đáp án mới
Cuối cùng, kết quả của thuật toán phân loại được sử dụng để tính toán số điểm của từng thí sinh trong bài kiểm tra Số điểm được tính bằng cách so sánh kết quả phân loại với đáp án chính xác và gán điểm tương ứng
Hình 4.15 Mô hình phân loại đáp án
Hình 4.16 Quy trình các bước xác định vùng cắt vùng, xác định đáp án và phân loại
Xây dựng chương trình thử nghiệm
Python là một ngôn ngữ lập trình bậc cao và thông dịch, có ý nghĩa là mã nguồn Python được thực thi từng dòng lệnh một, không cần biên dịch trước như một số ngôn ngữ khác Nó hướng đến việc tạo ra mã nguồn dễ đọc và dễ hiểu, với cú pháp gọn nhẹ và rõ ràng Điều này làm cho Python rất dễ học cho người mới bắt đầu trong lập trình Python hỗ trợ lập trình hướng đối tượng, lập trình hàm và lập trình theo thủ tục Điều này cho phép người lập trình sử dụng các phong cách lập trình khác nhau tùy theo yêu cầu của dự án Python đi kèm với một thư viện chuẩn rất mạnh mẽ, cung cấp các công cụ và chức năng đa dạng để phát triển ứng dụng Thư viện chuẩn của Python cũng tích hợp tốt với các hệ điều hành phổ biến như UNIX, Windows và Macintosh Hiện nay, Python có hai phiên bản chính là Python 2 và Python 3 Trong luận văn này, tác giả sử dụng phiên bản Python 3 để triển khai và sử dụng Python đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trong cộng đồng phát triển phần mềm do tính linh hoạt, mạnh mẽ và dễ sử dụng của nó
4.4.2 Thư viện mã nguồn mở OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở rất phổ biến và mạnh mẽ trong lĩnh vực xử lý ảnh và thị giác máy tính Với hơn
2500 hàm và thuật toán, OpenCV cung cấp một loạt các công cụ và tính năng đa dạng để xử lý, phân tích và nhận dạng ảnh
OpenCV ban đầu được phát triển bởi Intel vào năm 1999 và đã đóng vai trò quan trọng trong việc thiết lập chuẩn giao tiếp và xử lý dữ liệu trong lĩnh vực thị giác máy tính Thư viện này hỗ trợ đa nền tảng trên Windows, Linux, macOS, iOS và Android, giúp người dùng có thể sử dụng một bộ công cụ mạnh mẽ để xử lý, phân tích và nhận dạng hình ảnh và video trên nhiều nền tảng khác nhau
Với vai trò quan trọng của mình, OpenCV cung cấp công cụ, thuật toán và chuẩn giao tiếp cho lĩnh vực thị giác máy tính, tạo điều kiện thuận lợi cho nghiên cứu và phát triển ứng dụng trong lĩnh vực này Điều này giúp đẩy mạnh sự phát triển và ứng dụng của công nghệ thị giác máy tính trong nhiều lĩnh vực khác nhau như xử lý ảnh y tế, nhận dạng khuôn mặt, phân tích hình ảnh, và nhiều ứng dụng thị giác máy tính khác
Hình 4.17 Tổ chức thư viện OpenCV
Trước khi OpenCV ra đời, lĩnh vực xử lý ảnh không có công cụ chuẩn nào Mỗi cá nhân có cách tiếp cận và phong cách lập trình riêng, dẫn đến sự không thống nhất trong cú pháp và cấu trúc mã Điều này có thể tạo ra sự khó khăn trong việc sử dụng và duy trì mã nguồn mở này Đối với các công ty phát triển ứng dụng lớn, các bộ công cụ thương mại như Matlab, Simulink và Halcon có thể là lựa chọn hợp lý Tuy nhiên, nhược điểm của các bộ công cụ thương mại này là giá thành cao và hạn chế về tính linh hoạt Họ thường đi kèm với phần cứng cụ thể và mã nguồn đóng, làm cho việc mở rộng và tuỳ chỉnh ứng dụng trở nên khó khăn
OpenCV là công cụ hữu ích cho người mới tiếp cận với xử lý ảnh số nhờ có những ưu điểm sau:
- Mã nguồn mở: OpenCV là một thư viện mã nguồn mở, điều này có nghĩa là bạn có thể truy cập và sửa đổi mã nguồn của nó theo nhu cầu của mình Điều này giúp bạn tùy chỉnh và mở rộng các chức năng theo ý muốn của mình
- Đa nền tảng: OpenCV hỗ trợ trên nhiều hệ điều hành như Windows, Linux, macOS, iOS và Android Điều này cho phép bạn phát triển ứng dụng xử lý ảnh trên nhiều nền tảng khác nhau mà không cần thay đổi mã nguồn
- Hơn 2500 thuật toán: OpenCV đã cung cấp hơn 2500 thuật toán, hàm để thực hiện thực hiện xử lý ảnh như: lọc ảnh, phát hiện biên, nhận dạng đối tượng và nhiều hơn nữa Việc có sẵn các thuật toán này giúp bạn tiết kiệm thời gian và công sức trong việc xây dựng các chức năng xử lý ảnh từ đầu
- Cộng đồng lớn: OpenCV có một cộng đồng lớn và tích cực, với nhiều nguồn tài liệu, ví dụ, mã nguồn mở và diễn đàn hỗ trợ Bạn có thể tìm thấy nhiều tài liệu, hướng dẫn và giải đáp câu hỏi từ cộng đồng này, giúp bạn giải quyết các vấn đề và nắm vững kiến thức về xử lý ảnh số
- Dễ sử dụng: OpenCV được thiết kế để dễ sử dụng và có giao diện lập trình dễ hiểu Bạn có thể nhanh chóng tìm hiểu và sử dụng các chức năng của OpenCV mà không cần có kiến thức chuyên sâu về lĩnh vực xử lý ảnh
- OpenCV tập trung vào việc thu thập ảnh, xử lý ảnh và các thuật toán phân tích dữ liệu ảnh Đây là một số chức năng chính mà OpenCV cung cấp:
Thu thập ảnh: OpenCV hỗ trợ việc thu thập ảnh từ nhiều nguồn khác nhau như camera, file ảnh và video Bạn có thể dễ dàng truy cập và xử lý dữ liệu hình ảnh từ các nguồn này
Xử lý ảnh: OpenCV cung cấp nhiều chức năng mạnh mẽ để xử lý ảnh như cắt, xoay, co giãn, chỉnh sửa độ sáng, tương phản và màu sắc Bạn có thể áp dụng các phép biến đổi này để điều chỉnh và cải thiện chất lượng ảnh
Phân tích dữ liệu ảnh: OpenCV cung cấp các thuật toán và công cụ để phân tích dữ liệu ảnh như phát hiện biên, phát hiện đối tượng, nhận dạng khuôn mặt và nhận dạng vật thể Bạn có thể sử dụng các thuật toán này để tìm kiếm và trích xuất thông tin quan trọng từ ảnh
Xử lý và phân tích video: OpenCV cho phép bạn làm việc với dữ liệu video, bao gồm xử lý video và phân tích các khung hình trong video Bạn có thể áp dụng các thuật toán và kỹ thuật xử lý ảnh để phân tích và trích xuất thông tin từ các dữ liệu video
XÂY DỰNG HỆ THỐNG THỰC NGHIỆM
Xây dựng hệ thống chấm trắc nghiệm
Giao diện của hệ thống
Hình 5.1 Giao diện đăng nhập chưa chương trình
Hệ thống chấm điểm gồm các phần chính:
Hình 5.2 Giao diện quản lý các bài đã chấm Ở trang này chương trình cho phép người dùng có thể tìm kiếm dữ liệu đã chấm dựa theo ngày tháng năm
Các phiếu thi sẽ được in trên loại giấy thông thường và được tô theo dữ liệu đã chuẩn bị trước Sau đó, phiếu thi sẽ được lấy mẫu bằng máy scan Brother T4500DW với độ phân giải 4913x6968
Hình 5.3 Giao diện chấm bài thi bằng file ảnh Đồng thời với quá trình lấy mẫu, phần số phách và phần trả lời sẽ được tạo ra bằng cách sử dụng tính năng "Quản lý bài thi" có sẵn trên chương trình đã được phát triển Chương trình này được xây dựng dựa trên một phiếu thi có 200 câu hỏi và đáp án tương ứng Để thực hiện chấm điểm chính xác, quá trình lọc các câu trả lời đúng được thực hiện bằng cách so sánh câu trả lời trên phiếu thi với đáp án đã được cung cấp trước đó
Trường hợp chấm nhiều phiếu trả lời cùng một lúc, người dùng có thể chọn tất cả các phiếu được lưu trong thư mục
Dựa trên điểm tin cậy (confidence score) lớn hơn 0.4, ta có thể xử lý các câu hỏi có nhiều hơn một đáp án được tô, đồng thời đảm bảo tính chính xác Điều này được hỗ trợ bởi sự rõ nét của các đặc trưng của các ô đã được tô hay không tô, giúp giảm thiểu khả năng nhận nhầm Sau khi được huấn luyện với 2-3 epoch và batch size = 32, mô hình đạt độ chính xác 100% trên cả tập huấn luyện và tập kiểm tra (validation)
Hình 5.4 Giao diện các bài thi đã chấm xong từ trang chấm bài bằng file ảnh
5.1.4 Kết quả thuật toán chấm trắc nghiệm đã được đề xuất Đưa ảnh hoặc file ảnh vào chương trình để thực hiện quá trình chấm thi Kết quả đạt độ chính xác 100%
Yếu tố quan trọng ảnh hướng đến tốc độ hoạt động của hệ thống là thời gian xử lý Thực nghiệm đã được tiến hành trên một máy tính có cấu hình: bộ vi xử lý 11th Gen Intel(R) Core(TM) i5-11400 với tốc độ 2,60Ghz (12 CPUs) ~ 2,60Ghz, RAM 16Gb và card màn hình VGA Gigabyte GT 1030 OC 2G (NVIDIA Geforce/ 2Gb/ DDR5/ 64Bit) Trong các thử nghiệm, với 50 mẫu trên, thời gian chấm thi dao động từ 3 đến 5 giây Từ đó, có thể tính được tốc độ nhận dạng khoảng từ 433 đến 533ms/bài thi.
Đánh giá kết quả
Sau khi quá trình hoàn thiện thuật toán và thực nghiệm trên chương trình chấm trắc nghiệm, tôi muốn nhận xét sau đây:
- Module quản lý kỳ thi: Module này đáp ứng yêu cầu quản lý và cho phép người dùng quản lý kết quả các kỳ thi dựa trên ngày chấm Tuy nhiên, để trở thành một ứng dụng thực tế, module này cần được mở rộng với các chức năng bổ sung như quản lý ngân hàng đề thi, thông tin chi tiết của thí sinh, hội đồng thi, phòng thi, tạo và xuất báo cáo Đồng thời, việc lưu trữ thông tin trong một cơ sở dữ liệu an toàn và bảo mật là rất quan trọng
- Module chấm điểm từ file: Module này đã được kiểm chứng về độ chính xác, độ tin cậy và tốc độ hoạt động trên các mẫu đầu vào in trên giấy thông thường với chất lượng không quá cao Đây là module cốt lõi và quan trọng nhất trong chương trình
Các kết quả đã được trình bày cho thấy tiềm năng ứng dụng thực tế của hệ thống chấm thi trắc nghiệm Tuy nhiên, để phát triển và tối ưu hóa hệ thống, chúng ta cần tập trung vào việc hoàn thiện các thành phần cơ khí, bao gồm cơ cấu tờ giấy và quy trình chụp ảnh Mục tiêu của quá trình phát triển là cải tiến các tính năng chưa đầy đủ và tích hợp toàn bộ hệ thống thành một khối thống nhất, ổn định, linh hoạt và tự động Đặc biệt, tốc độ chấm thi càng nhanh càng tốt, đồng thời giảm thiểu chi phí đầu tư, chi phí vận hành và bảo trì Chỉ khi đạt được những mục tiêu này, hệ thống mới có thể thực sự sử dụng được và có tính cạnh tranh trong thực tế
KẾT LUẬN VÀ KIẾN NGHỊ Kết luận
Trên đây là nội dung tổng quan của luận văn tốt nghiệp "Xây dựng thuật toán trích xuất số phách trên phiếu trả lời trắc nghiệm của Trường Đại học Phan Thiết" Luận văn đã hoàn thành và đáp ứng các yêu cầu đề ra Trong luận văn, tập trung vào lý thuyết nhận dạng và xử lý ảnh để giải quyết bài toán nhận dạng ký tự số viết tay trên phiếu trả lời trắc nghiệm Chương trình được thực nghiệm trên 872 tập mẫu, thuật toán trích xuất số phách đã đạt được độ chính xác trên 99%
Mặc dù luận văn đã hoàn thành cơ bản về nội dung và chương trình nhận dạng, tuy nhiên vẫn còn một vài hạn chế cần được giải quyết, bao gồm:
- Chương trình hiện đang đưa vào thử nghiệm và chưa đưa vào áp dụng thực tế Để đảm bảo tính khả dụng và hiệu quả thực tế, cần thực hiện thử nghiệm và đánh giá ở quy mô lớn hơn, bao gồm các phiếu thi thực tế và trong các điều kiện môi trường khác nhau
- Việc xử lí và phân tích ký tự gần biên trong ô chứa số phách vẫn còn hạn chế và chưa được dự đoán chính xác cao Điều này cho thấy việc nhận dạng ký tự không đúng và sai sót Cần tiếp tục nghiên cứu và cải tiến thuật toán để xử lí chính xác các trường hợp này, bằng cách tăng cường khả năng xử lí biên và đặc trưng cho từng ký tự
- Mức độ phức tạp về cấu tạo của ký tự là một thách thức trong việc nhận dạng
Do có nhiều cách viết khác nhau, việc xây dựng một cơ sở dữ liệu ảnh ký tự đầy đủ và đa dạng là cần thiết để đào tạo và cải tiến thuật toán Cần tiếp tục thu thập và mở rộng cơ sở dữ liệu ảnh ký tự để phát triển thêm khả năng nhận dạng và đa dạng hóa việc huấn luyện mô hình
Tổng quan, mặc dù đã đạt được những kết quả khả quan, luận văn còn một số hạn chế cần được khắc phục để nâng cao hiệu suất và độ chính xác của chương trình nhận dạng trong thực tế Cần tiếp tục nghiên cứu và phát triển để hoàn thiện và tối ưu hóa hệ thống nhận dạng số phách trên phiếu trả lời trắc nghiệm
Xây dựng hệ thống chấm trắc nghiệm dựa trên trích xuất số phách hoàn chỉnh Xây dựng một chương trình chấm trắc nghiệm hoàn chỉnh dựa trên việc trích xuất số phách Điều này cần có các điều kiện:
- Tối ưu hóa hiệu suất và độ chính xác: Tiến hành tối ưu hóa thuật toán chấm điểm để đạt được hiệu suất cao và độ chính xác tốt Điều này bao gồm việc cải thiện xử lí số phách, xây dựng các quy tắc chấm điểm linh hoạt và cải thiện độ tin cậy của hệ thống
- Kiểm thử và đánh giá: Tiến hành kiểm thử và đánh giá chương trình chấm trắc nghiệm hoàn chỉnh trên các tập dữ liệu lớn và trong môi trường điều kiện khác nhau Điều này giúp đảm bảo tính đúng đắn và đáng tin cậy của hệ thống chấm điểm
- Mở rộng tính năng và quy mô hệ thống: Phát triển và mở rộng tính năng của hệ thống chấm trắc nghiệm, bao gồm quản lý kỳ thi, lưu trữ bài thi, tạo báo cáo và tích hợp hệ thống với cơ sở dữ liệu để thuận tiện trong việc quản lý và chia sẻ thông tin
[1] M Cardona, “Sugar crystals characterization for quality control in- spection using digital image processing,” in 2016 IEEE 36th Central American and
Panama Convention (CONCAPAN XXXVI), 2016, pp 1– 6
[2] I E Lo´pez, G A Lo´pez, R A Argueta, J A Ga´lvez, and M N Cardona,
“Software development for extraction properties of sugar crystals using artificial vision sugarvision,” in 2015 CHILEAN Conference on Electrical,
Electronics Engineering, Information and Communication Technologies (CHILECON), 2015, pp 835–840
[3] R Kulkarni, S Kulkarni, S Dabhane, N Lele, and R S Paswan, “An automated computer vision based system for bottle cap fitting inspection,” in
2019 Twelfth International Conference on Contemporary Computing (IC3),
[4] X Tao, H Li, J Lu, and X Wang, “Computer vision technology for seafood quality evaluation,” in 2012 International Conference on Computer Science and
[5] F Gao, Z Li, G Xiao, X Yuan, and Z Han, “An online inspection system of surface defects for copper strip based on computer vision,” in 2012 5th
International Congress on Image and Signal Processing, 2012, pp 1200–1204
[6] R Duan, W Zhao, S Huang, and J Chen, “Automatic inspection method of steady arm slope based on computer vision,” in 2010 International Conference on Measuring Technology and Mechatronics Automation, vol 1, 2010, pp 714–718
[7] D Barik and M Mondal, “Object identification for computer vision using image segmentation,” in 2010 2nd International Conference on Education
Technology and Computer, vol 2, 2010, pp V2–170–V2–172
[8] S Begum and M Hasanuzzaman, “Computer vision-based bangladeshi sign language recognition system,” in 2009 12th International Conference on
Computers and Information Technology, 2009, pp 414–419
[9] J Fisteus, A Pardo, and N Garc´ıa, “Grading multiple choice exams with low- cost and portable computer-vision techniques,” J Sci Educ Technol, vol 22, pp
[10] M Supic, K Brkic, T Hrkac, Mihajlovic´, and Z Kalafatic´, “Automatic recognition of handwritten corrections for multiple-choice exam answer sheets,” in 2014 37th International Conventionon Information and
Communication Technology, Electronics and Microelectronics (MIPRO),
[11] Lê Thanh Trúc và Phạm Nguyên Khang, Nhận dạng điểm viết tay trên bảng điểm với biến đổi Hough và đặc trưng Gist, Tạp chí khoa học Trường Đại học Cần Thơ, Số chuyên đề: Công nghệ Thông tin (2015):79-87
[12] Phạm Anh Phương (2008), “Áp dụng một số chiến lược SVM đa lớp cho bài toán nhận dạng chữ viết tay hạn chế”, Tập chí khoa họa đại học Huế, ISN 1859