Cấu trúc của mạng được định nghĩa bởi: số lớp, số đơn vị trên mỗi lớp, và sự liên kết giữa các lớp như thế nào. Các mạng về tổng thể được chia thành hai loại
41 dựa trên cách thức liên kết các đơn vị, Mạng truyền thẳng, dòng dữ liệu từ đơn vị đầu vào đến đơn vị đầu ra chỉ được truyền thẳng. Việc xử lý dữ liệu có thể mở rộng ra nhiều lớp, nhưng không có các liên kết phản hồi. Nghĩa là, các liên kết mở rộng từ các đơn vị đầu ra tới các đơn vị đầu vào trong cùng một lớp hay các lớp trước đó là không cho phép, hình 2.9.
Hình 2.9. Mạng nơron truyền thẳng nhiều lớp 2.4.5. Mạng hồi quy
Mạng hồi quy có chứa các liên kết ngược, khác với mạng truyền thẳng, các thuộc tính động của mạng mới quan trọng. Trong một số trường hợp, các giá trị kích hoạt của các đơn vị trải qua quá trình nới lỏng (tăng giảm số đơn vị và thay đổi các liên kết) cho đến khi mạng đạt đến một trạng thái ổn định và các giá trị kích hoạt không thay đổi nữa. Trong các ứng dụng khác mà cách chạy động tạo thành đầu ra của mạng thì những sự thay đổi các giá trị kích hoạt là đáng quan tâm, hình 2.10.
42
Hình 2.10. Mạng nơron hồi quy nhiều lớp 2.4.6. Huấn luyện mạng Nơron
Chức năng của một mạng nơron được quyết định bởi các nhân tố như: hình trạng mạng (số lớp, số đơn vị trên mỗi tầng, và cách mà các lớp được liên kết với nhau) và các trọng số của các liên kết bên trong mạng. Hình trạng của mạng thường là cố định, và các trọng số được quyết định bởi một thuật toán huấn luyện. Tiến trình điều chỉnh các trọng số để mạng “nhận biết” được quan hệ giữa đầu vào và đích mong muốn được gọi là học hay huấn luyện. Rất nhiều thuật toán học đã được phát minh để tìm ra tập trọng số tối ưu làm giải pháp cho các bài toán. Các thuật toán đó có thể chia làm hai nhóm chính: Học có giám sát và Học không có giám sát.
2.4.7. Các phương pháp học 2.4.7.1. Khái niệm 2.4.7.1. Khái niệm
Học là quá trình thay đổi hành vi của các vật theo một cách nào đó làm cho chúng có thể thực hiện tốt hơn trong tương lai. Một mạng nơron được huyấn luyện sao cho với một tập các vector đầu vào X, mạng có khả năng tạo ra tập các vector đầu ra mong muốn Y của nó. Tập X được sử dụng cho huấn luyện mạng được gọi là tập huấn luyện. Các phần tử x thuộc X được gọi là các mẫu huấn luyện. Quá trình huấn luyện bản chất là sự thay đổi các trọng số liên kết của mạng. Trong quá trình này, các trọng số của mạng sẽ hội tụ dần tới các giá trị sao cho với mỗi vector đầu vào x từ tập huấn luyện, mạng sẽ cho ra vector đầu ra y như mong muốn. Có ba phương pháp học phổ biến là học có giám sát, học không giám sát và học tăng cường.
2.4.7.2. Học có giám sát
Với học có giám sát, tập mẫu huấn luyện được cho dưới dạng D = {(x,t) | (x,t) ∈ [IRN x RK]}, trong đó: x = (x1, x2, ..., xN) là vector đặc trưng N chiều của mẫu huấn luyện và t = (t1, t2, ..., tK) là vector mục tiêu K chiều tương ứng, nhiệm vụ của thuật toán là phải thiết lập được một cách tính toán trên mạng như
43 thế nào đó để sao cho với mỗi vector đặc trưng đầu vào thì sai số giữa giá trị đầu ra thực sự của mạng và giá trị mục tiêu tương ứng là nhỏ nhất. Chẳng hạn mạng có thể học để xấp xỉ một hàm t = f(x) biểu diễn mối quan hệ trên tập các mẫu huấn luyện (x, t) hình 2.11.
.
Hình 2.11. Học có giám sát
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm vụ của thuật toán là phải xác định được một cách thức phân lớp sao cho với mỗi vector đầu vào sẽ được phân loại chính xác vào lớp của nó.
2.4.7.3. Học không giám sát
Là việc học không cần có bất kỳ một sự giám sát nào.Trong bài toán học không giám sát, tập dữ liệu huấn luyện được cho dưới dạng: D = {(x
1, x 2,.., x N)}, với (x 1, x 2, ..., x
N) là vector đặc trưng của mẫu huấn luyện. Nhiệm vụ của thuật toán là phải phân chia tập dữ liệu D thành các nhóm con, mỗi nhóm chứa các vector đầu vào có đặc trưng giống nhau.
Như vậy với học không giám sát, số lớp phân loại chưa được biết trước, và tùy theo tiêu chuẩn đánh giá độ tương tự giữa các mẫu mà ta có thể có các lớp phân loại khác nhau.
2.4.7.4. Học tăng cường
Đôi khi còn được gọi là học thưởng-phạt, là sự tổ hợp của cả hai mô hình trên. Phương pháp này cụ thể như sau: với vector đầu vào, quan sát vector đầu ra
44 do mạng tính được. Nếu kết quả được xem là “tốt” thì mạng sẽ được thưởng theo nghĩa tăng các trọng số kết nối lên; ngược lại mạng sẽ bị phạt, các trọng số kết nối không thích hợp sẽ được giảm xuống.
2.4.7.5. Thuật toán học có giám sát trong các mạng nơron
Học có giám sát có thể được xem như việc xấp xỉ một ánh xạ: X→ Y, trong đó X là tập các vấn đề và Y là tập các lời giải tương ứng cho vấn đề đó. Các mẫu (x, y) với x = (x1, x2, . . ., xn) ∈ X, y = (yl, y2, . . ., ym) ∈ Y được cho trước. Học có giám sát trong các mạng nơron thường được thực hiện theo thuật toán 2.8
Thuật toán 2.8. Học có giám sát
Bước 1. Xây dựng cấu trúc thích hợp cho mạng nơron, chẳng hạn có (n + 1) nơron vào (n nơron cho biến vào và 1 nơron cho ngưỡng x0), m nơron đầu ra, và khởi tạo các trọng số liên kết của mạng.
Bước 2. Đưa một vector x trong tập mẫu huấn luyện X vào mạng
Bước 3. Tính vector đầu ra o của mạng
Bước 4. So sánh vector đầu ra mong muốn y (là kết quả được cho trong tập huấn luyện) với vector đầu ra o do mạng tạo ra; nếu có thể thì đánh giá lỗi.
Bước 5. Hiệu chỉnh các trọng số liên kết theo một cách nào đó sao cho ở lần tiếp theo khi đưa vector x vào mạng, vector đầu ra o sẽ giống với y hơn.
Bước 6. Nếu cần, lặp lại các bước từ 2 đến 5 cho tới khi mạng đạt tới trạng thái hội tụ.
Việc đánh giá lỗi có thể thực hiện theo nhiều cách, cách dùng nhiều nhất là sử dụng lỗi tức thời: Err = (o - y), hoặc Err = |o - y|; lỗi trung bình bình phương (MSE: mean-square error): Err = (o- y)2/2;
Có hai loại lỗi trong đánh giá một mạng nơron. Thứ nhất, gọi là lỗi rõ ràng, đánh giá khả năng xấp xỉ các mẫu huấn luyện của một mạng đã được huấn luyện. Thứ hai, gọi là lỗi kiểm tra, đánh giá khả năng tổng quá hóa của một mạng đã được
45 huấn luyện, tức khả năng phản ứng với các vector đầu vào mới. Để đánh giá lỗi kiểm tra chúng ta phải biết đầu ra mong muốn cho các mẫu kiểm tra.
Thuật toán tổng quát ở trên cho học có giám sát trong các mạng nơron có nhiều cài đặt khác nhau, sự khác nhau chủ yếu là cách các trọng số liên kết được thay đổi trong suốt thời gian học. Trong đó tiêu biểu nhất là thuật toán lan truyền ngược.
2.4.7.6. Thuật toán lan truyền ngược
Ta sử dụng một số kí hiệu sau: j: nơron thứ j (hay nút thứ j)
Xj: vector đầu vào của nút thứ j Wj: vector trọng số của nút thứ j
xji: đầu vào của nút thứ j từ nút thứ i wji: trọng số trên xji
bj: ngưỡng tại nút thứ j oj: đầu ra của nút thứ j
tj: đầu ra mong muốn của nút thứ j
Downstream(j): Tập tất cả các nút nhận đầu ra của nút thứ j làm một giá trị đầu vào.
η: tốc độ học
f: hàm truyền với f(x) = 1 / (1 + e-x) như thuật toán 2.9
Thuật toán 2.9. Thuận toán lan truyền ngược Input:
- Mạng feed-forward với ni đầu vào, nh nút ẩn và no đầu ra. - Hệ số học η
- Tập dữ liệu huấn luyện D = {là vector đầu vào, là vector đầu ra mong muốn}.
46
Bước 1. Khởi tạo trọng số bởi các giá trị ngẫu nhiên nhỏ.
Bước 2. Lặp lại cho tới khi thỏa mãn điều kiện kết thúc. Với mỗi mẫu, thực hiện các bước sau:
2.1 Tính đầu ra oj cho mỗi nút j: oj = f(d – bj) với d = Σxjiwji
2.2 Với mỗi nút k thuộc tầng ra, tính δk theo công thức: δk = (tk – ok)(1 – ok)ok
2.3 Với mỗi nút h thuộc tầng ẩn, tính δh theo công thức: δh = oh(1 – oh) Σδkwkh với k ∈ Downstream(j)
Cập nhật: wji = wji + Δwji Trong đó Δwji = ηδkxji
2.4.8. Mạng truyền thẳng
Một mạng truyền thẳng nhiều lớp bao gồm một lớp vào, một lớp ra và một hoặc nhiều lớp ẩn. Các nơron đầu vào thực chất không phải các nơron theo đúng nghĩa, bởi lẽ chúng không thực hiện bất kỳ một tính toán nào trên dữ liệu vào, đơn giản nó chỉ tiếp nhận các dữ liệu vào và chuyển cho các lớp kế tiếp. Các nơron ở lớp ẩn và lớp ra mới thực sự thực hiện các tính toán, kết quả được định dạng bởi hàm đầu ra (hàm chuyển). Cụm từ “truyền thẳng” (không phải là trái nghĩa của lan truyền ngược) liên quan đến một thực tế là tất cả các nơron chỉ có thể được kết nối với nhau theo một hướng: tới một hay nhiều các nơron khác trong lớp kế tiếp (loại trừ các nơron ở lớp ra), hình 2.12.
47
Hình 2.12. Mạng nơron MPL tổng quát
Mỗi liên kết gắn với một trọng số, trọng số này được thêm vào trong quá trình tín hiệu đi qua liên kết đó. Các trọng số có thể dương, thể hiện trạng thái kích thích, hay âm, thể hiện trạng thái kiềm chế. Mỗi nơron tính toán mức kích hoạt của chúng bằng cách cộng tổng các đầu vào và đưa ra hàm chuyển. Một mạng nơ ron đơn giản được xây dựng như thật toán 2.10
Thuật toán 2.10. Xây dựng mạng nơ ron Intput: Cho: Mạng nơ ron có sô lớp (với sô lớp>1).
Mỗi lớp có số nơron trong một lớp (số neural>=1).
Trọng số w liên kết nơ ron ngẫu nhiên trong khoảng (-a,a).
Output: Mạng nơ ron nhân tạo.
Kiểu dữ liệu: chọn lưu dữ kiểu mảng : int số lớp;
int số nơ ron[số lớp]; w[i][j][k]; với 2<=i<=số lớp, 1<=j,k<=số nơ ron[] ,
Bước 1. Chọn lớp i=2 là lớp bắt đầu
Bước 2. Chọn lớp i là lớp hiện thời.
Bước 3. Tại lớp đang xét i , xét nơ ron thứ j .
Bước 4. Thực hiện khởi tạo ngẫu nhiên trọng số kết nối với nơ ron k của lớp i-1
trong khoảng (-a,a). w(i,j,k)=random(-a,a)
Bước 5. Nếu k <= số nơ ron[i-1] quay lại “Bước 4”, ngược lại thực hiện “Bước 6”.
Bước 6. Nếu j<= số nơ ron[i] quay lại “Bước 3”, ngược lại thực hiện “Bước 7”.
48 Một khi đầu ra của tất cả các nơron trong một lớp mạng cụ thể đã thực hiện xong tính toán thì lớp kế tiếp có thể bắt đầu thực hiện tính toán của mình bởi vì đầu ra của lớp hiện tại tạo ra đầu vào của lớp kế tiếp. Khi tất cả các nơron đã thực hiện tính toán thì kết quả được trả lại bởi các nơron đầu ra. Tuy nhiên, có thể là chưa đúng yêu cầu, khi đó một thuật toán huấn luyện cần được áp dụng để điều chỉnh các tham số của mạng. Xét trường hợp mạng có hai lớp, công thức tính toán cho đầu ra theo công thức (2.24).
𝒂𝟐=𝒇𝟐(𝒘𝟐(𝒇𝟏(𝒘𝟏p+𝒃𝟏))+𝒃𝟐 (2.24)
Mạng có nhiều lớp có khả năng tốt hơn là các mạng chỉ có một lớp, chẳng hạn như mạng hai lớp với lớp thứ nhất sử dụng hàm sigmoid và lớp thứ hai dùng hàm đồng nhất có thể áp dụng để xấp xỉ các hàm toán học khá tốt, trong khi các mạng chỉ có một lớp thì không có khả năng này.
2.4.9. Kết luận chương
Trong chương này trình bày cơ sở lý thuyết, luận văn đã đã trình bày ba kỹ thuật tiền xử lý ảnh quan trọng, thường xuyên được sử dụng trong các hệ thống nhận dạng: Nhị phân ảnh, căn chỉnh độ nghiêng của ảnh và một số phép toán hình thái. Đây là bước rất cần thiết đối với một hệ phân tích ảnh và nhận dạng ảnh tài liệu, nó không chỉ khôi phục lại các đặc trưng của ảnh như ban đầu mà còn làm nổi bật các đặc trưng trong ảnh. Mạng nơ-ron, máy học chuyên sâu tiên tiến giúp cho chúng ta xây dựng đựợc những hệ thống thông minh với độ chính xác cao như hiện nay. Trong luận văn này chúng tôi đi vào nghiên cứu về mạng nơrơn cũng như ý tưởng của mô hình trong phân lớp ảnh, và áp dụng trong việc xây dựng hệ thống. Trên cơ sở lý thuyết vừa tìm hiểu ở chương này, chúng tôi sẽ ứng dụng mô hình cho việc nhận dạng ảnh được trình bày trong chương tiếp theo sẽ ứng dụng các kỹ thuật đã nêu trên để xác định các trường thông tin trên ảnh CCCD.
49
CHƯƠNG 3: XÂY DỰNG THUẬT TOÁN PHÂN TÍCH THẺ CĂN CƯỚC CÔNG DÂN
3.1. Tiền xử lý
Ảnh đầu vào thường có chất lượng rất khác nhau: có thể bị ố, mốc, nhàu, mờ… trong quá trình sử dụng hoặc bị lệch, nghiêng, méo, cong. Mặt khác, mặt trước có hoa văn nền khá rõ nét. Do đó, để đảm bảo cho việc tách các trường thông tin được chính xác (cũng như kết quả nhận dạng sau này), cần áp dụng các kỹ thuật xử lý ảnh để nâng cao chất lượng ảnh đầu vào. Các kỹ thuật đó bao gồm:
+ Chuyển từ ảnh màu về ảnh đa cấp xám + Làm trơn ảnh
+ Nhị phân ảnh
+ Căn chỉnh độ nghiêng
3.1.1. Chuyển ảnh màu về ảnh đa cấp xám
Các phương pháp nhị phân ảnh thường được áp dụng trên ảnh đa cấp xám, do đó cần chuyển ảnh màu đầu vào về ảnh đa cấp xám trước khi chuyển sang bước nhị phân ảnh. Trong không gian màu RGB, mỗi điểm ảnh được tổ hợp từ ba thành phần màu R (Red), G (Green) và B (Blue) (mỗi thành phần màu có giá trị từ 0 đến 255), còn trong ảnh đa cấp xám, mỗi điểm ảnh mang một trị số mức xám từ 0 đến 255. Để chuyển đổi giữa hai không gian màu này, nếu áp dụng công thức tính độ sáng theo chuẩn NTSC (dựa trên thị giác của con người) thì ảnh thu được có hoa văn nền khá rõ nét (khá tương đồng với nét chữ).
Nhận thấy rằng, với những điểm sảnh nền thì giá trị của thành phần màu G chênh lệch lớn so với thành phần màu R. Do đó, để chuyển đổi từ ảnh màu về ảnh đa cấp xám, ta lấy thành phần màu G cộng với độ chênh lệnh giữa hai thành phần màu G và R theo công thức (3.1).
50 Điều này không những làm nổi bật được các nét chữ (hoa văn nền mờ đi, trong khi đặc trưng nét chữ không đổi) mà còn làm mờ đi mực nhoè màu đỏ ở trường Số CCCD lên trường Họ tên, hình 3.1.
(a) (b) (c)
Hình 3.1. Tiền xử lý ảnh mặt trước CCCD
(a) Ảnh đầu vào; (b) Ảnh đa cấp xám; (c) Ảnh nhị phân
3.1.2. Làm trơn ảnh
Ảnh đa cấp xám thu được ở bước trên thường không được “mịn” (vẫn còn“ráp”) do một số thành phần nền quá rõ nét, để làm mịn ảnh và loại bỏ các nhiễu ta cần áp dụng một phép lọc để làm trơn ảnh, áp dụng phương pháp làm trơn thích ứng.
3.1.3. Nhị phân hóa ảnh
Bước tiếp theo là tìm ngưỡng để phân đoạn ảnh đa cấp xám ở trên về ảnh nhị phân (phân biệt rõ đâu là nền đâu là đối tượng). Các phương pháp trình bầy ở trên, trong một số trường hợp này thì cho kết quả tốt, trong một số trường hợp
Thuật toán 3.1. Nhị phân hóa ảnh CCCD
Input: Ảnh CCCD màu
Ouput: Ảnh CCCD nhị phân hóa tách ngưỡng tự động 1.For T= (0 to 255) / 2 xác định giá triT 2 div T1 and T2 tính T1 và T2 3.If Type 1 <= T.
4. If Type 2 x > T. (iAverage) for Type1 (iAverage1) and Type2 (iAverage2).
tính giá tri cường độ sáng tb
6.T2 = (iAverage1 + iAverage2) / 2. Tính giá trị T2 7. Compare T1 and T2. so sánh T1 và T2
8. If T1 and T2 <= Delta then T2 Giá trị chênh lệch T1 và T2 9. If between T1 and T2> Delta, then go back to Step 1.
51 khác lại cho kết quả không tốt. Phương pháp Otsu: Khử nền của ảnh khá tốt theo thuật toán 3.1.
3.1.4. Căn chỉnh độ nghiêng
Mặc dù công đoạn thu nhận ảnh được thực hiện bằng thiết bị chuyên dụng nhưng không thể trách khỏi việc ảnh thu nhận được bị nghiêng. Do đó, để cho