Xây dựng mạng nơron

Một phần của tài liệu Trung tâm Thư viện và Tri thức số - Library and Digital Knowledge Center (Trang 58)

Chọn mạng đa tầng Feedforward với 3 lớp :

Hình 3.1: Sơ đồ mạng neural thiết kế

Lớp đầu vào gồm 150 neural nhận giá trị nhị phân(0,1) của 150 thành phần của vộctơ tương ứng. dữ liệu được véc tơ hóa từ ma trận điểm ảnh kí tự bằng phương pháp chia lưới.

500 neural Lớp ẩn 150 neural Lớp đầu vào Điểm ảnh Điểm ảnh Điểm ảnh Điểm ảnh 0 hoặc 1 0 hoặc 1 0 hoặc 1 0 hoặc 1 16 neural Lớp đầu ra

Lớp ẩn gồm 500 neural, số neural này được quyết định từ những kết quả tối ưu và giá trị lỗi cơ sở trong quá trình huấn luyện.

Lớp đầu ra gồm 16 neural đưa ra giá trị nhị phân(0,1) tương ứng với 16 bít của mã Unicode.

Với những lớp nói ở trên ta đó xõy dụng được mạng neural như hình 3.1.

3.2.2. X lý dữ liệu

Quá trình phân tích ảnh để tìm ra đặc tính của kí tự bởi việc kiểm tra điểm ảnh nó là giá trị đầu vào cho cả quá trình huấn luyện và quá trình kiểm tra. Quá trình phân tích này dựa trên việc nhận dạng từ ảnh đầu vào bằng phương pháp tính giá trị màu. Giới hạn của giá trị là điểm đen RGB(0,0,0) hoặc điểm trẳng RGB(255,255,255). Những ảnh đầu vào được định dạng bitmap(*.bmp).

3.2.3. Huấn luyện mạng

Một mạng neural đã được xây dựng sẽ phải được huấn luyện trên một không gian đầu vào đã được chuẩn bị trước. Khi hoạt động mạng neural sẽ đọc giá trị đã được huấn luyện.

Trong bước huấn luyện tôi huấn luyện cho mạng để có thể cho đầu ra mong muốn với một đầu vào quy định. Đối với mục đích này mỗi mẫu huấn luyện được đại diện bởi hai thành phần: đầu vào và đầu có thể cho mạng một đầu vào mong muốn. Sau khi các bước huấn luyện được thực hiện, tôi có thể cung cấp cho một đầu vào bất kỳ cho mạng và mạng sẽ hình thành một đầu ra, từ đó chúng ta có thể giải quyết một loại mô hình được cho vào mạng. Giả sử rằng chúng ta muốn huấn luyện một mạng lưới để nhận 26 chữ cái đại diện là hình ảnh của 5x6 pixel, ví dụ :

Một trong những cách rõ ràng nhất để chuyển đổi một hình ảnh đến một phần đầu vào của một mẫu huấn luyện là để tạo ra một vector kích thước 30 có chứa "1" trong tất cả các vị trí tương ứng với các điểm ảnh chính và "0" trong tất cả các vị trí tương ứng với các điểm ảnh nền. Trong mô hình mạng nó đại diện cho mô hình huấn luyên gọi là cách "lưỡng cực", đặt vào vector đầu vào "0,5" thay vì "1" và "-0.5" thay vì "0". Loại như vậy của các mô hình mã hóa sẽ dẫn đến một cải tiến hiệu suất học tập hơn. Cuối cùng, mẫu đào tạo của tôi tìm được như thế này:

float[] input_letterK = new float[] { 0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f, -0.5f, 0.5f, -0.5f, -0.5f, 0.5f, 0.5f, -0.5f, -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, -0.5f, -0.5f, 0.5f, -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, -0.5f, -0.5f, -0.5f, 0.5f};

Đối với mỗi đầu vào có thể chúng ta cần tạo ra một mạng mong muốn để hoàn thành các mẫu huấn luyện. Đối với nhận dạng ký tự nó rất phổ biến để mã mỗi mẫu như là một vector có kích thước 26 (vì tôi có 26 chữ cái khác nhau), đặt vào các vector "0.5" cho các vị trí tương ứng với số loại của mô hình và "-0.5" cho tất cả các vị trí khác. Vì vậy, một vector đầu ra mong muốn cho chữ "K" sẽ tìm một cái gì đó như thế này:

// 0.5 is placed only in the position of "K" letter

float[] output_letterK = new float[] { -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, 0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f, -0.5f};

Làm thế nào để nhận ra một ký tự ? Tôi cần phải nhập vào mạng được huấn luyện và nhận được kết quả của nó. Sau đó, chúng ta tìm một phần tử trong vector đầu ra với giá trị tối đa. Số lượng các phần tử sẽ chỉ cho chúng ta mô hình được công nhận:

// "K" letter, but a little bit noised

float[] pattern = new float [] {

0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 0.5f, -0.5f, -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, -0.5f, -0.5f,

0.5f, -0.5f, -0.5f, 0.5f, -0.5f, 0.3f, -0.5f, -0.5f, 0.5f, 0.5f};

// get network's output

float[] output = neuralNet.Compute(pattern);

int i, n, maxIndex = 0;

// find the maximum from output

float max = output[0];

for (i = 1, n = output.Length; i < n; i++) { if (output[i] > max) { max = output1[i]; maxIndex = i; } } // System.Diagnostics.Debug.WriteLine(

"network thinks it is - " + (char)((int) 'A' + maxIndex));

3.2.4. Nhận dạng ảnh

Quá trình nhận dạng của mạng neural đơn giản và dễ hiểu. Khi chương trình chạy sẽ gọi các modun: phân tích ảnh, vector hóa... trong quá trình huấn luyện có thể được sử dụng lại trong quá trình nhận dạng.

3.2.5. Lựa chọn công c

Tôi lựa chọn ngôn ngữ C# và sử dụng nguồn opensource Neural Network Ocr được được cấp phép theo giấy phép GNU General Public (GPLv3), người phát triển đầu tiên và đưa ra các ví dụ là là Andrew Kirillov, một lập trình viên của IBM.

3.3. Một số kết quả thử nghiệm và đánh giá hệ thống nhận dạng ký tự

3.5.1. Th nghiệm hệ thống nhận dạng ký tự

Hệ thống nhận dạng ký tự khi cài đặt sẽ có các phần như hình 3.2, bao gồm: Phần đưa dữ liệu đầu vào , Mạng nơron (huấn luyện mạng) và phần nhận diện.

Hình 3.2 Giao diện hệ thống nhận dạng ký tự

Trong phần đầu vào ký tự ta có một ô vé dung paint, dung chuột để vẽ ra ký tự muốn nhận dạng, kết quả như hình 3.3.

Hình 3.3 Giao diện đƣa ký tự đầu vào

Sau khi đã vẽ ra ký tự đầu vào chúng ta sẽ chuyển qua phần Mạng nơron, trong phần này chúng ta sẽ tiến hành huấn luyện mạng nơron với các tham số có thể thiết lập như số nơron đầu vào, số nơron ẩn, ngưỡng lỗi

Hình 3.4 Giao diện kết quả

3.5.2. Ưu điểm và hạn chế

Ưu điểm: Hệ thống đã nhận dạng tốt với các đối tượng ký tự chuẩn và tốc độ

khá nhanh với lỗi rất thấp, còn các ký tự vẽ tay bằng paint kết quả nhận dạng chính xác nếu đầu vào vẽ ký tự chuẩn không quá xiên xẹo và hệ thống cần thời gian huấn luyện lâu .

Nhược điểm: Hệ thống còn phụ thuộc nhiều ở đầu vào của ảnh. Đối với một

số ký tự vẽ đứt nét ,độ lệch so với ký tự chuẩn quá nhiều cho kết quả không tốt ở phần nhận dạng ảnh. Hệ thống hiện nay mới chỉ triển khai trên môi trường desktop nên chưa thật sự tiện lợi cho người sử dụng.

3.5.3. Hướng phát triển trong tương lai

Hệ thống hiện tại là bản nhận dạng một ký tự, trong tương lai em hi vọng có thể phát triển hệ thống nhận dạng được nhiều ký tự một lúc, trên nhiều hàng, nhiều dòng. Ngoài ra, hướng phát triển lâu dài mang tính tương lai là nhận dạng được chữ viết tay tiếng việt và trả về kết quả là giọng nói, từ đó có thể làm thành phần mềm hỗ trợ nghe đọc cho người mù.

KẾT LUẬN CHUNG

Trong thời gian vừa qua, như đã trình bày ở trên đây nội dung nghiên cứu đề tài của em được gồm các phần chính sau:

Tìm hiểu mạng neural nhân tạo.

Tìm hiểu bài toán nhận dạng

Tìm hiểu một số kỹ thuật gán nhãn

Phân tích cụ thể bài toán nhận dạng.

Thiết kế mạng và huấn luyện mạng neural cho bài toán “nhận dạng kí tự Các hạn chế

Do có những hạn chế nhất định về mặt thời gian và kiến thức của bản thân, luận văn mới chỉ dừng lại ở mức thử nghiệm của hệ thống trên một ảnh với số lượng ảnh và thông tin trên ảnh khá khiêm tốn cho việc xác nhận ký tự.

Hướng phát triển tiếp

Trong thời gian tới, em sẽ tiến hành thử nghiệm hệ thống với tập dữ liệu chữ viết tay và quả đầy đủ hơn. Đồng thời, tăng số lượng ảnh và chi tiết trong ảnh nhiều lên cần nhận dạng để xây dựng môt hệ thống hoàn chỉnh.

Nhận dạng ảnh và gán nhãn là một phần rất quan trọng của lĩnh vực nhận dạng nói riêng và xử lý ảnh nói chung. Cùng với việc sử dụng công cụ là mạng neural là một lĩnh vực đã được sử dụng nhiều nhưng vẫn cần được phát triển hơn.

Em xin chân thành cảm ơn các thầy, cô của Viện công nghệ thông tin, Đại học công nghệ - Đại học quốc gia Hà Nội đã tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức quý báu.

Em xin tỏ lòng biết ơn sâu sắc đến thầy Đỗ Năng Toàn, người đã tận tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn thành luận văn này.

DANH MỤC TÀI LIỆU THAM KHẢO Tiếng việt

[1] Đỗ Năng Toàn (2010), iáo tr nh xử lý ảnh, Học viện Công nghệ Bưu chính Viễn thông.

Tiếng Anh

[2] D. Heckenberg, B. C. Lovell (2000), “A Gesture Driven Computer Interface”, Proceeding of Visual Communications and Image Processing, SPIE, 4067, 261-268.

[3] Journal on Graphics (2006), Vision and Image Processing, 6.

[4] J. Mathews (2002), “An Introduction to Edge Detection: The Sobel Edge Detector”.

[5] Peter l. Rockett (2005), “An Improved Rotation-Invarient Thinning Algorithm”, IEEE transaction on Pattern, Analysis and Machine Intelligence, 27, 10.

[6] Te-Hsiu Sun, Fang-Chih Tien (2008), Using Backpropagation Neural Network for Face Recognition with 2D+ 3D Hybrid Information, Elsevier: Expert System with Applications, 35,361-372.

[7] N. Sakai, S. Yonekawa and A. Matsuzaki, Two-dimensional image analysis of the shape of rice and its applications to separating varieties”, Journal of Food Engineering, vol 27, 1996, pp. 397-407.

[8] A. J. M. Timmermans, and A. A. Hulzebosch, Computer vison system for on-line sorting of pot plants using an artificial neural network classifier, Computers and Electronics in Agriculture, vol. 15, 1996, pp. 41-55.

[9] S. Abbasi, F. Mokhtarian, and J. Kittler, Reliable classification of chrysanthemum leaves through curvature scale space, Lecture Notes in Computer Science, vol. 1252, 1997, pp. 284-295.

57

[10] J. Camarero, S. Siso, and E.G-Pelegrin, Fractal dimension does not adequately describe the complexity of leaf margin in seedlings of Quercus species, Anales del Jardín Botánico de Madrid, vol. 60, no. 1, 2003, pp. 63-71.

[11] C-L Lee, and S-Y Chen, Classification of leaf images, 16th IPPR Conference on Computer Vision, Graphics and Image Processing (CVGIP), 2003, pp. 355-362.

[12] S. G. Wu, F. S. Bao, E. Y. Xu, Y-X Wang, Y-F Chang, and Q-L Xiang, A leaf recognition algorithm for plant classification using probabilistic neural network, The Computing Research Repository (CoRR), vol.1, 2007, pp. 11-16.

[13] J. Pan and Y. He, Recognition of plants by leaves digital image and neural network, International Conference on Computer Science and Software Engineering, vol 4, 2008, pp. 906 – 910.

Các trang web tham khảo

[14] http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.htm l#A%20simple%20neuron

[15] http://andrewback.com/ivs.php

Một phần của tài liệu Trung tâm Thư viện và Tri thức số - Library and Digital Knowledge Center (Trang 58)

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

(66 trang)