CHƢƠNG 3 MẠNG NƠRON VÀ NHẬN DẠNG BIỂU MẪU
3.1. MẠNG NƠRON NHÂN TẠO
3.1.4. Một số mô hình mạng nơron cơ bản
a. Mạng nơron một lớp
Mạng Hopfield (HF)
- Kiến trúc mạng
Hình 3.4. Mô hình mạng Hopfield
- Huấn luyện mạng
Mạng Hopfield học dựa trên nguyên tắc học có giám sát. Giả sử có p mẫu học tƣơng ứng với các véctơ tín hiệu vào Xs, s=1...p. Mạng sẽ xác định bộ trọng số W sao cho: Xs=Tinh(Xs, W) với mọi s=1…p.
Giả sử đƣa vào vectơ tín hiệu X, sử dụng mạng để tính đầu ra tƣơng ứng với tín hiệu vào X. Điểm chú ý quan trọng là ma trận W không thay đổi trong quá trình sử dụng mạng.
- Một số điểm về mạng HF:
+ Mạng HF cho phép tạo ánh xạ tự kết hợp trên các tập dữ liệu. + Giá trị vào ta có giá trị lƣỡng cực.
+ Học có giám sát.
+ Mạng cho phép phục hồi dữ liệu.
+ Khả năng nhớ mẫu phụ thuộc vào số nơron của mạng.
Mạng ABAM (Adaptive Bidirectional Associative Memory)
Nghĩa là có thể dùng mạng để biến đổi tín hiệu vào thành tín hiệu ra và ngƣợc lại:
Y = Tính(X, WT) Và X = Tính(Y,W) ở đây WT
là ma trận chuyển vị của W. Mạng có thể điều chỉnh ma trận trọng số phù hợp với dáng điệu của môi trƣờng.
Ở các bƣớc tiếp theo trong quá trình học, ma trận trọng số WT
đƣợc thay đổi cho phù hợp sao cho tạo ra sự kết hợp thực sự hai chiều giữa tín hiệu vào và tín hiệu ra trong tập mẫu học.
- Huấn luyện mạng
Giả sử có tập mẫu học {(Xs, Ys)}.
Sơ đồ quá trình học đƣợc thể hiện nhƣ sau: Lặp {(Xs, Ys)} ma trận W(0)
(Xs(1),Ys(1))} ma trận W(1) Xs W(1)T Ys(2),YsW(1) Xs(2)
Cho đến khi {(Xs(t), Ys(t))} = {(Xs,Ys)}
- Kiến trúc mạng
- Sử dụng mạng:
Giả sử đã luyện tập mạng với tập mẫu {(Xs,Ys)} và quá trình hội tụ đến ma trận trọng số Ws(t) sao cho XsWs(t)T = Ys và YsWs(t) = Xs.
Khi đó, ta có thể sử dụng nhƣ bảng tra 2 chiều.
Mạng Perceptron - Kiến trúc mạng nơron ym xm x1 y1 Lớp vào Lớp ra
a) Cấu trúc mạng b) Biểu diễn ma trận
Đây là mạng truyền thẳng một lớp có một hoặc nhiều đầu ra.
- Huấn luyện mạng
Mạng học dựa trên nguyên tắc có giám sát với tập mẫu {(Xs,Ys)}.
Ý tƣởng cơ bản của quá trình huấn luyện mạng là xác định bộ trọng số W sao cho outs = Tinh(Xs,W) = Ys đối với mọi mẫu học s.
- Sử dụng mạng và khả năng biểu diễn của mạng
Các hàm có thể đƣợc tính nhờ mạng Perceptron tƣơng đối phong phú: Hàm “đa số”, Hàm “thiểu số”.
b. Mạng nơron nhiều lớp
Mạng lan truyền ngược sai số (Back Propagation Network)
sj
out Lớp vào
Lớp ra
wj
Hình 3.6. Mô hình tổng quát mạng Perceptron
outt aj wjị wjk Ik Lớp ra(0) Lớp ra(1) Lớp ra(2) Hình 3.8. Mô hình mạng nơron ngƣợc hƣớng
Các nơron lớp thứ t đƣợc nối đầy đủ với các nơron lớp thứ t+1. Trong nhiều ứng dụng, để đơn giản ngƣời ta thƣờng sử dụng mạng có một lớp ẩn.
Mạng nơron ngược hướng (Counter Propagation Neural Network)
Mạng ngƣợc hƣớng có 2 lớp: Lớp Kohonen và lớp ra. Các nơron của lớp vào đƣợc nối đầy đủ với các nơron lớp Kohonen. Tại mỗi bƣớc, chỉ có một số nơron láng giềng với nơron trung tâm đƣợc chọn để nối với các nơron ra và chỉ các trọng số liên kết tƣơng ứng đƣợc hiệu chỉnh.
3.2. NHẬN DẠNG BIỂU MẪU 3.2.1. Thiết kế mạng nơron 3.2.1. Thiết kế mạng nơron
Phỏng sinh học và đặc biệt phỏng nơron thần kinh là mong ƣớc từ lâu của nhân loại. Chính những khám phá của khoa học về não bộ con ngƣời, về nơron đã thúc đẩy các nhà tin học nghiên cứu xây dựng những hệ thống bắt chƣớc hoạt động của não bộ con ngƣời. Mặc dù đƣợc nghiên cứu cách đây khá lâu nhƣng những năm gần đây việc nghiên cứu nơron và mạng nơron mới có những thành công nhất định. Mạng nơron nhân tạo và các thành tựu đã đạt đƣợc cho phép chúng ta hy vọng rằng một ngày các chƣơng trình máy tính tiến gần đến khả năng phán đoán, ra quyết định hay nhận dạng trong các tình huống phức tạp khi mà thông tin mang tính không đầy đủ, thiếu chính xác hay
tƣơng đối khác lạ. Nói cách khác là chƣơng trình máy tính tiến gần đến khả năng suy nghĩ của con ngƣời.
Đây là hƣớng tiếp cận hiện đại và tỏ ra ƣu việt hơn các cách tiếp cận trên. Nó cho phép chƣơng trình ghi nhớ mẫu rất tốt sau một số lƣợt học. Ngay cả khi đầu vào có lỗi, chƣơng trình vẫn có thể tìm ra đƣợc kết quả phù hợp.
Hình 3.9. Cấu trúc mạng nơron
Trong luận văn này đề cập đến hƣớng tiếp cận nhận dạng kí tự bằng mạng Back Propagation gồm có 3 tầng, số phần tử nơron trên mỗi tầng phụ thuộc vào ngƣời dùng lựa chọn. Thông thƣờng, có một tầng input, một tầng output và một tầng hidden.
Trên tầng input có 35 phần tử nơron. Có nghĩa là mỗi một ảnh đƣợc nhận dạng bởi 35 điểm ảnh đặc trƣng. Kích thƣớc của ảnh phụ thuộc vào chiều cao và độ rộng của kí tự. Cuối cùng, tất cả các ảnh cần nhận dạng đƣợc trích rút đặc trƣng và đƣa về kích thƣớc chuẩn: 7x5.
Số nơron trên tầng hidden tùy thuộc vào lựa chọn của ngƣời dùng. Nó có thể lấy giá trị từ 10 đến 1000 hoặc nhiều hơn. Nhƣng để lấy đƣợc kết quả tốt nhất chúng ta phải thực hiện phƣơng pháp thử và sửa sai.
Trên tầng output có 10 phần tử nơron. Mỗi một nơron tƣơng ứng với các số từ 0 đến 9. 3.2.2. Lƣợc đồ huấn luyện mạng Bắt đầu Tạo mạng Khởi tạo các trọng số Tiền xử lý ảnh
Lấy mẫu đầu tiên
Phân tích mẫu
Tổng lỗi = 0
Huấn luyện mạng
Tính toán lỗi
Cộng giá trị lỗi cho mỗi nơron rồi cộng vào
tổng lỗi
Nễu mẫu kế tiếp sẵn sàng S MSE <= Threshold Số lần lặp = Max Epoch S Cập nhật trọng số S Đ Kết thúc Đ Đ
Hình 3.10. Lƣợc đồ thuật toán huấn luyện mạng - B1: Tạo mạng nơron tƣơng ứng với các thông số đầu vào.
- B2: Giá trị các trọng số đƣợc khởi tạo ngẫu nhiên.
- B3: Sau khi xây dựng đƣợc mạng, chúng ta phải xử lý ảnh đầu vào. Ở đề tài này bao gồm: Loại bỏ nhiễu và chuyển đổi sang ảnh nhị phân.
- B4: Lấy mẫu đầu tiên.
- B5: Phân tích mẫu đầu vào và phân tách mẫu này thành các mảng tuyến tính.
- B6: Thiết lập tổng số lỗi = 0 - B7: Huấn luyện mẫu đó.
- B8: Tính toán lỗi sau khi huấn luyện.
- B9: Cộng giá trị lỗi cho mỗi nơron rồi cộng vào tổng lỗi. - B10: Nếu mẫu kế tiếp sẵn sang thì load tiếp và lặp lại bƣớc 6.
- B11: Nếu không còn mẫu nào nữa thì tính toán MSE (Mean Square Error).
- B12: Nếu MSE <= Threshold thì dừng lại.
- B13: Nếu MSE > Threshold thì kiểm tra số lần lặp có thể. - B14: Nếu số lần lặp <> Maximum Epoch thì lặp lại bƣớc 4. - B15: Nếu số lần lặp = Maximum thì dừng lại.
3.2.3. Thuật toán BackPropagation
BackPropagation là một phƣơng pháp phổ biến đƣợc dùng để huấn luyện mạng nơron làm thế nào để thực hiện mục đích. Trong đề tài này tôi sử dụng cách huấn luyện có giám sát.
Lƣợc đồ thuật toán BackPropagation
Bắt đầu
Khởi tạo trọng số
Tính tổng trọng số của tín hiệu vào ở các tầng
Tính thông tin lỗi
Cập nhật trọng số
Kết thúc
Hình 3.11. Lƣợc đồ thuật toán BackPropagation. -Khởi tạo trọng số.
+ Giá trị của trọng số liên kết giữa các nơron đƣợc khởi tạo ngẫu nhiên. -Feed Fordward:
+ Mỗi nơron trên mỗi tầng đƣợc tính tổng trọng số của các tín hiệu vào. + Sử dụng hàm activation để tính giá trị ra từ nơron.
-Back Propagation của lỗi. + Thông tin lỗi đƣợc tính.
+ Ta sử dụng giá trị này để tính toán thông tin lỗi trên mỗi nơron còn lại. -Cập nhật giá trị trọng số:
Chúng ta sử dụng thông tin lỗi trên mỗi node để tính toán và cập nhật lại giá trị mới cho trọng số liên kết giữa các nơron.
3.2.4. Nhận dạng và đƣa vào cơ sở dữ liệu Lƣợc đồ: Lƣợc đồ:
Hình 3.12. Lƣợc đồ thuật toán nhận dạng kí tự
Thuật toán:
- Lựa chọn ảnh mà ta mong muốn nhận dạng.
- Phân tích ảnh thành các dòng và ánh xạ ảnh sang mảng các kí tự. - Mỗi dòng lại đƣợc phân tách ra thành các kí tự riêng biệt:
+ Điều chỉnh lại kích thƣớc thành 7x5
+ Phân tích và xử lý ảnh kí tự để ánh xạ sang một vector. + Đƣa vào mạng neuron và tính toán output.
+ Chuyển đổi output thành các kí tự tƣơng ứng và ghi vào CSDL.
CHƢƠNG 4.CHƢƠNG TRÌNH THỬ NGHIỆM
4.1. Chuyển đổi sang ảnh nhị phân.
Sử dụng phƣơng pháp ngƣỡng toàn cục và phƣơng pháp xác định ngƣỡng của Otsu để xác định ngƣỡng và chuyển đổi ảnh xám sang ảnh nhị phân.
Images Histogram Threshold optimal
0.8431 0.8647 0.8549 0.8569 0.8510 0.8549 0.8627 0.8471
Images Threshold values Result 0.6432 0.7896 0.8569 0.9981 0.7234 0.8549 0.9654 0.700 0.8588 0.999
4.2. Loại bỏ nhiễu
Sử dụng bộ lọc trung vị để loại bỏ nhiễu. Việc sử dụng bộ lọc trung vị để lọc nhiễu là phƣơng pháp hiệu quả và đƣợc áp dụng rộng rãi. Hai hình 4.1. và 4.2 mô phỏng kết quả của việc sử dụng bộ lọc trung vị để loại bỏ nhiễu
Hình 4.1. Ảnh trƣớc khi lọc nhiễu
Hình 4.2. Ảnh sau khi đƣợc lọc nhiễu
4.3. Tách dòng và trích rút vùng cần lấy dữ liệu.
Công việc tách dòng đƣợc thực hiện thành công qua việc sử dụng Projection Hozirontal. Dƣới đây là bức ảnh gốc cần tách ra thành 5 dòng.
Hình 4.3. Ảnh gốc cần tách thành các dòng riêng biệt. Sau khi thực hiện tách dòng sẽ thu đƣợc kết quả nhƣ sau: + Dòng 1: Hình 4.4. Dòng thứ nhất đƣợc tách ra từ ảnh gốc ở hình 4.3 + Dòng 2: Hình 4.5. Dòng thứ 2 đƣợc tách ra từ ảnh gốc ở hình 4.3 + Dòng 3: Hình 4.6. Dòng thứ 3 đƣợc tách ra từ ảnh gốc ở hình 4.3
+ Dòng 4:
Hình 4.6. Dòng thứ 4 đƣợc tách ra từ ảnh gốc ở hình 4.3 + Dòng 5:
Hình 4.7. Dòng thứ 5 đƣợc tách ra từ ảnh gốc ở hình 4.3
4.4. Tách ký tự trên một dòng.
Công việc tách các kí tự trên một dòng thành các kí tự riêng biệt đƣợc thực hiện thành công bằng việc sử dụng Projection Vertical. Dƣới đây là một số kết quả của việc tác kí tự.
Kết quả tách ký tự trên dòng 1:
Kết quả tách ký tự trên dòng 2:
Hình 4.9. Kết quả của việc tách kí tự trên dòng 2
4.5. Mô tả chƣơng trình chính.
Khi chạy chƣơng trình, form đăng nhập sẽ đƣợc hiển thị ra đầu tiên. Trên form này yêu cầu bạn chọn tên khoa cùng với ngƣời dùng tƣơng ứng của mỗi khoa. Sau khi kiểm tra dữ liệu mà tồn tại ngƣời dùng trên thì chƣơng trình sẽ hiện ra form cho phép bạn cập nhật điểm.
Hình 4.10. Form đăng nhập
Dƣới đây là form thực hiện chức năng chính. Trong form này yêu cầu bạn phải chọn tên học phần, lớp, kì học, năm học tƣơng ứng. Sau khi chọn đầy đủ các thông tin xong, bạn có thể chọn tới file ảnh chứa dữ liệu điểm cần cập
nhật và mở mẫu chữ số đã đƣợc huấn luyện tƣơng ứng với từng khoa. Việc mở mẫu chứ số đã đƣợc huấn luyện chúng ta có thể đặt mặc định tƣơng ứng với từng khoa ngay từ khi đăng nhập.
Hình 4.11. Form cho phép ngƣời dùng cập nhật điểm từ file ảnh
Sau khi lựa 2 file ảnh chứa điểm cần cập nhật và nhấn nút Cap nhat thì ảnh sẽ đƣợc phân tích, trích rút ra từng file ảnh con tƣơng ứng với mã sinh viên, điểm. Dựa vào mạng noron đã đƣợc huấn luyện trên tập mẫu tƣơng ứng với từng khoa mà đƣa ra quyết định điểm bằng chữ số ứng với mỗi ảnh đƣa vào mạng.
Hình 4.12. Kết quả của việc lựa chọn đầu vào (hiển thị 2 file ảnh của bảng điểm: Mặt trƣớc và mặt sau).
Dƣới đây là kết quả của việc sử dụng chƣơng trình trong cập nhật điểm. Ứng với mỗi hệ thống quản lý điểm thì có cấu trúc cơ sở dữ liệu khác nhau. Tuy nhiên, với giới hạn của đề tài là đƣa ra phƣơng pháp để cập nhật điểm từ file ảnh vào cơ sở dữ liệu cho nên tôi không quan tâm tới cấu trúc dữ liệu sẽ đƣợc thiết kế nhƣ thế nào, hay quản lý ra sau. Cái mà tối muốn thể hiện ở đề tài này là việc xử lý kĩ thuật trong file ảnh.
Vì trong phiếu điểm chỉ có 2 cột là tôi cần quan tâm đó là cột mã sinh viên và cột điểm. Việc thiết kế các thủ tục, module hay kĩ thuật thích hợp cho việc lấy dữ liệu từ 2 cột này ra đã đƣợc tôi thiết kế và thực hiện với độ chính xác 99% trong quá trình trích rút những vùng dữ liệu cần thiết.
Hình 4.13. Dữ liệu mã sinh viên và điểm tƣơng ứng với từng mã sinh viên đƣợc cập nhật vào CSDL
Một trong những module đƣợc coi là trái tim của chƣơng trình đó chính là tạo một mạng nơron mới và huấn luyện mạng vừa tạo dựa trên các tập mẫu. Ở đây các tập mẫu đƣợc dùng để huấn luyện chính là các chữ số viết tay của các giảng viên trong trƣờng. Việc thu thập mẫu chữ viết tay của các giảng viên trong trƣờng đƣợc thực hiện bằng cách sử dụng máy quét.
Hình 4.14. Mẫu đƣợc viết bởi Abhinav
Hình 4.15. Mẫu đƣợc viết bởi Abhishek
Hình 4.17. Mẫu đƣợc viết bởi Amit
Hình 4.18. Mẫu đƣợc viết bởi Anubhav
Hình 4.20. Mẫu đƣợc viết bởi Kapala_Ma'am1
Hình 4.21. Mẫu đƣợc viết bởi Kapala_Ma'am2
Hình 4.23. Mẫu đƣợc viết bởi Linh
Hình 4.24. Mẫu đƣợc viết bởi Manish
Hình 4.26. Mẫu đƣợc viết bởi Nargdra
Hình 4.27. Mẫu đƣợc viết bởi Naveen
Hình 4.29. Mẫu đƣợc viết bởi Sapneswar
Hình 4.30. Mẫu đƣợc viết bởi Sunil
Hình 4.32. Mẫu đƣợc viết bởi Sunita_Maam
Hình 4.33. Mẫu đƣợc viết bởi Swati
Hình 4.35. Mẫu đƣợc viết bởi Tushar_Sir1
Hình 4.36. Mẫu đƣợc viết bởi Tushar_Sir2
Hình 4.38. Mẫu đƣợc viết bởi Vishal
Hình 4.39. Mẫu đƣợc viết bởi Vuong
Sau khi đã thu thập mẫu, ta xây dựng mạng nơron và huấn luyện mạng dựa trên mẫu đã thu thập đƣợc. Việc huấn luyện mạng đã đƣợc tôi thiết kế thành một module riêng trong chƣơng trình cho phép ngƣời dùng tạo các kiểu mạng noron theo kiến trúc khác nhau.
PHẦN KẾT LUẬN
Qua quá trình nghiên cứu và triển khai thử nghiệm chƣơng trình tôi có một số kết luận sau:
- Việc sử dụng mạng nơron cho quá trình nhận dạng làm công việc nhận dạng đơn giản đi rất nhiều và độ chính xác cũng cao (có thể nói đạt tới 99%) nếu đƣợc nhận dạng các mẫu đã đƣợc học. Hơn nữa việc sử dụng mạng noron còn có thể nhận dạng đƣợc những mẫu mang tính chất gần giống kiểu vơi những chữ đã lấy mẫu.
- Một trong những ƣu điểm tuyệt vời của việc sử dụng mang nơron đó là nhanh chóng đƣa ra quyết định. Không phải duyệt và so sánh đối với dữ liệu mẫu trong CSDL, điều này làm tăng tốc độ nhận dạng của chƣơng trình.
- Chƣơng trình hoàn toàn có thể ứng dụng ngay vào thực tế. Bởi theo tôi đƣợc biết hiện tại trong trƣờng đang phải nhập dữ liệu bằng tay. Điều này thực sự khó khăn đối với những giáo vụ hoặc là các môn mà thi tập trung, việc nhập điểm có thể lên tới hàng nghìn sinh viên.
TÀI LIỆU THAM KHẢO
[1]. Đỗ Năng Toàn, Phạm Việt Bình (2007), Giáo trình xử lý ảnh, NXB KH kỹ thuật.
[2]. Đỗ Năng Toàn, Phạm Văn Dũng, Phạm Việt Bình (2005), “Ứng dụng