Xây dựng chương trình

Một phần của tài liệu Nghiên cứu xây dựng và phát triển các thuật toán nhận dạng chữ viết tay (Trang 60 - 66)

CHƯƠNG 4: MÔ PHỎNG ĐÁNH GIÁ KẾT QUẢ

4.1.1. Xây dựng chương trình

4.1.1.1. Xây dựng chương trình tiền xử lý, phân tách, chuẩn hóa ảnh

Chương trình được xây dựng tuần tự theo các bước: đọc ảnh, chuyển ảnh sang màu xám, làm mờ, lọc ảnh sau khi làm mờ, nhị phân hóa, lọc ảnh sau khi nhị phân hóa, phân tách ký tự, chuẩn hóa ảnh, trung tâm hóa.

Chuyển đổi từ ảnh màu sang ảnh

xám

Làm mờ bằng thuật toán Gaussian Blur

Lọc sau khi làm mờ bằng hàm opening

Chuyển đổi sang ảnh nhị phân bằng

thuật toán Otsu

Lọc sau khi nhị phân hóa bằng hàm

closing

Tìm viền bằng hàm findContours

Loại bỏ các thành phần không mong muốn và cắt thành ảnh

nhỏ theo các viền tìm được Chuẩn hóa ảnh về

kích thước 20x20 Tìm trọng tâm và đặt

ảnh vào trung tâm ảnh bao 28x28

Hình 4-1: Quy trình xử lý và chuẩn hóa ảnh

Chương trình được viết bằng ngôn ngữ C++ sử dụng thư viện mã nguồn mở Opencv 2.4.10.

 Đọc ảnh và chuyển ảnh sang màu xám.

60 Ảnh gốc được chụp từ camera điện thoại Galaxy Note 5 sẽ được đọc vào chương trình. Chuyển ảnh sang màu xám giúp giảm số kênh của ảnh từ ba kênh xuống một kênh.

 Làm mờ ảnh bằng phương thức Gaussian

Bước này giúp ảnh trở nên mượt hơn, sự chênh lệch màu sắc giữa hai bên một cạnh sẽ giảm đi. Tôi sử dụng hạt nhân kích thước 3x3 mục đích làm mờ vừa phải.

 Lọc ảnh bằng hàm opening sau khi làm mờ

Bước này nhằm loại bỏ các thành phần nhiễu bên ngoài đối tượng.

 Nhị phân ảnh

Nhị phân ảnh giúp làm nổi bật đối tượng trong ảnh. Ảnh trở thành ảnh đen trắng.

61

 Lọc sau khi nhị phân hóa

Việc lọc này làm đầy lỗ trống bên trên đối tượng, làm cho các đường nét chữ đầy đặn hơn.

 Phân tách ký tự

Việc tiếp theo trong quá trình xử lý ảnh là phân tách từ ngữ thành các ký tự riêng rẽ. Chúng ta sẽ tìm đường viền của các chữ cái, sau đó cắt ảnh theo các đường viền này tạo ra các ảnh con chỉ chứa một chữ cái. Việc xử lý trước đó không thể tránh khỏi sai xót khi vẫn còn xót lại các đối tượng không mong muốn. Do đó qua thực nghiệm, tôi đặt ra các ngưỡng về diện tích, chiều dài, chiều rộng của khung viền để loại bỏ chúng.

 Chuẩn hóa và trung tâm hóa ảnh

 Lưu ảnh

62 Ảnh cuối cùng được lưu lại phục vụ cho việc làm mẫu dạy hoặc kiểm tra mạng nơ-ron.

4.1.1.2. Xây dựng chương trình nhận dạng

Các ảnh chưa một ký tự sau khi thu được sẽ được chuyển sang dạng excel .csv phục vụ việc đọc nhiều ảnh cùng một lúc và việc đánh nhãn cho đầu vào khi dạy mạng nơ-ron.

Chương trình nhận dạng được xây dựng bằng ngôn ngữ python, đây là một ngôn ngữ mạnh trong xây dựng mạng nơ-ron.

 Hàm khởi tạo mạng

Khởi tạo số lượng lớp, số lượng nơ-ron tại mỗi lớp, các mảng trọng số và bias cho mỗi nơ-ron.

 Hàm tính đầu ra

Hàm tính đầu ra sử dụng các mảng trọng số và bias hiện tại, tính toán đầu ra của mạng cho mỗi đầu vào.

 Hàm dạy

63 Hàm dạy chính là hàm thể hiện phương pháp stochastic gradient descent.

Mỗi một epoch, mạng sẽ được đánh giá một lần để kiểm chứng mức độ học của mạng bằng sử dụng dữ liệu kiểm tra.

 Hàm cập nhật trọng số và bias

Sau mỗi lần thay đổi gradient của hàm chi phí, chúng ta lặp lại việc thay đổi trọng số và bias để tìm điểm cực tiểu của hàm chi phí.

 Hàm tính gradient của hàm chi phí

Sử dụng thuật toán lan truyền ngược là cách nhanh chóng để tính toán gradient của hàm chi phí trên mỗi mẫu đầu vào của một lô đầu vào.

64

 Hàm đánh giá kết quả

Kết quả thu được là một vector có 26 phần tử, hàm đánh giá kết quả sẽ kiểm tra vị trí nào trong vector này có giá trị là 1 để phản ánh chữ cái nhận diện được.

Qua đó kết quả sẽ được hiển thị lên màn hình cho biết số lượng chữ cái được nhận diện đúng.

 Hàm sigmoid

Hàm sigmoid sử dụng để tính toán đầu ra của mỗi nơ-ron trong mạng.

Một phần của tài liệu Nghiên cứu xây dựng và phát triển các thuật toán nhận dạng chữ viết tay (Trang 60 - 66)

Tải bản đầy đủ (PDF)

(92 trang)