Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha2.25 Minh họa bước lấy đặc trưng của 1 ký tự trong captcha qua từng lớp tích chập.. Luận văn thạc sĩ Phân loại
Trang 1TRƯỜNG ĐẠI QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA TOÁN-TIN
———————o0o——————–
LUẬN VĂN THẠC SĨ
PHÂN LOẠI VÀ NHẬN DẠNG TỰ ĐỘNG CÁC KÝ TỰ TRÊN ẢNH CAPCHA
Chuyên ngành: Cơ sở toán cho tin học
Người hướng dẫn: TS Đỗ Thanh Hà
Học viên: Nguyễn Duy Anh
HÀ NỘI, 5/2019
Trang 2Một số kí hiệu viết tắt iii
1.1 Định nghĩa captcha 1
1.2 Lịch sử và ứng dụng 2
1.2.1 Lịch sử 2
1.2.2 Ứng dụng 2
1.3 Quá trình sinh captcha 3
1.4 Các phương pháp nhận dạng captcha tự động 4
2 Nhận dạng tự động captcha sử dụng CNN 8 2.1 Phép toán hình thái 8
2.1.1 Phép toán giãn nở 11
2.1.2 Phép toán co 12
2.2 Lọc ảnh 13
2.2.1 Nguyên tắc chung của lọc ảnh 13
2.2.2 Phép lọc Gauss 14
2.2.3 Phép lọc trung vị ảnh xám 15
2.3 Lý thuyết tích chập và mạng tích chập (CNN) 16
2.3.1 Tích chập 16
2.3.2 Mạng tích chập (CNN) 20
2.4 Nhận dạng captcha sử dụng CNN 27
2.4.1 Phương pháp tách và nhận dạng từng ký tự 27
Trang 3Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
2.4.2 Phương pháp nhận dạng toàn bộ ký tự 29
3 Kết quả thực nghiệm 30 3.1 Bộ dữ liệu sử dụng 30
3.2 Mô hình sử dụng và các tham số 34
3.2.1 Tham số mô hình 34
3.2.2 Độ đo 35
3.3 Kết quả thực nghiệm 35
3.3.1 Ngôn ngữ lập trình, thư viện 35
3.3.2 Kết quả đạt được với các mẫu dữ liệu 37
3.3.3 Mô tả quá trình thực nghiệm 39
3.3.4 So sánh kết quả thực nghiệm 46
Nguyễn Duy Anh ii Cơ sở toán cho tin học
Trang 4AF Activation function.
Hàm kích hoạt
BG Background của ảnh nhị phân
CAPTCHA Completely Automated Public Turing
test to tell Computers and Humans Apart
CMU Carnegie Mellon University
Đại học Carnegie Mellon
FC Fully connected
Lớp kết nối đầy đủ
FG Foreground của ảnh nhị phân
MIT Massachusetts Institute of Technology
Viện công nghệ Massachusetts
KQT Kết quả của phương pháp tách
và nhận dạng từng ký tự
KQTB Kết quả của phương pháp nhận dạng toàn bộ
ký tự nhưng không thực hiện bước tiền xử lý
KQTB + TXL Kết quả của phương pháp nhận dạng toàn bộ
ký tự và có thực hiện bước tiền xử lý
OCR Optical Character Recognition
Nhận dạng ký tự quang học
PIL Python Imaging Library
ReLU Rectified Linear Unit
Tinh chỉnh đơn vị tuyến tính
Trang 5Mathematic morphology Phép toán hình thái
Pool Lớp tổng hợp đơn giản hóa thông tin đầu ra
Structuring element Phần tử cấu trúc
iv
Trang 61.1 Một số mẫu captcha 2
1.2 Một số mẫu captcha được tạo nhiễu bởi phương pháp phối hợp ngẫu nhiên một hoặc nhiều loại nhiễu khác nhau 4
1.3 Một số kết quả tấn công captcha 2003-2008 tổng hợp trong tài liệu [10] 6 1.4 Một số kết quả tấn công captcha 2009-2016 tổng hợp trong tài liệu [10] 6 2.1 Biểu diễn một ảnh số, mỗi ô vuông là một điểm ảnh 9
2.2 Một số dạng SE 10
2.3 Ví dụ về SE phản chiếu 10
2.4 Ví dụ phép giãn nở với ảnh I và phần tử cấu trúc Z 11
2.5 Ví dụ phép co với ảnh I và thành phần cấu trúc Z 12
2.6 Minh họa lọc ảnh 13
2.7 Định nghĩa ảnh xám I và Kernel K 13
2.8 Kết quả tính phép lọc trung bình trên ảnh I được ảnh D 14
2.9 Minh họa kernel Gausian blur 15
2.10 Kết quả tính phép lọc trung vị tại một vùng cục bộ 16
2.11 Kết quả lọc ảnh bằng lọc Gauss và lọc trung vị 16
2.12 Ảnh xám I, ảnh I0 mở rộng biên 0 xung quanh I và kernel K 17
2.13 Nhân tích chập tại điểm I11 với K theo công thức (2.13) cho ra điểm r11 17 2.14 Lấy ma trận hàng xóm điểm I22 nhân tích chập với K cho ra điểm r22 18 2.15 2 ảnh gốc 19
2.16 Nhân tích chập với kernel K1 hiện rõ các cạnh theo chiều ngang 19
2.17 Nhân tích chập với kernel K2 hiện rõ các cạnh theo chiều dọc 19
2.18 Minh họa mô hình CNN để nhận dạng 1 ký tự [26] 21
2.19 Minh họa về bước tính tích chập [6] 22
2.20 Minh họa max pooling 25
2.21 Minh họa Average pooling 26
2.22 Hai cách tiếp cận để nhận dạng captcha bằng CNN 27
2.23 Một số ví dụ tách từng ký tự khỏi ảnh 28
2.24 Ví dụ tập các ảnh kí tự đã được cắt và xếp theo thư mục 28
Trang 7Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
2.25 Minh họa bước lấy đặc trưng của 1 ký tự trong captcha qua từng lớp
tích chập 28
2.26 Ví dụ một số kết quả tiền xử lý 29
2.27 Minh họa các bước lấy đặc trưng của ảnh captcha qua từng lớp tích chập 29 3.1 Một số mẫu dữ liệu trong bộ dữ liệu Dataset-1 30
3.2 Kí tự W và Q bị dính với nhau 31
3.3 Một số mẫu dữ liệu trong bộ Dataset-2 31
3.4 Hai loại nhiễu nền captcha dùng trong Dataset-2 31
3.5 Một số mẫu captcha trong bộ dữ liệu Dataset-3 32
3.6 Một số mẫu captcha của bộ dữ liệu Dataset-4 32
3.7 Một số mẫu captcha của bộ dữ liệu Dataset-5 33
3.8 Giãn nở ký tự trong captcha để dễ phát hiện vùng liên thông 39
3.9 Phát hiện thành phần liên thông 39
3.10 Một mẫu captcha có 2 ký tự dính liền nhau 40
3.11 Vùng nhận dạng liên tục nhận 2 ký tự vào 1 ảnh cắt, chưa tốt 40
3.12 Kết quả sau khi dùng thủ thuật cắt đôi vùng nhận các ký tự liền nhau 40 3.13 2 kiểu dữ liệu trong bộ dữ liệu Dataset-2 41
3.14 Kết quả lọc ảnh với 2 loại dữ liệu 1 và 2 41
3.15 Kết quả tách ngưỡng nhị phân với 2 loại dữ liệu 1 và 2 41
3.16 Kết quả lọc thành phần kết nối với 2 loại dữ liệu 1 và 2 42
3.17 Kết quả tách ký tự với 2 loại dữ liệu 1 và 2 42
3.18 Minh họa quy trình tách từng ký tự 43
3.19 Một mẫu tách chưa tốt 43
3.20 Kết quả xử lý ảnh bị cắt lệch 43
3.21 Mẫu dữ liệu minh họa Dataset-3 và Dataset-4 44
3.22 Kết quả tiền xử lý mẫu dữ liệu Dataset-3 và Dataset-4 44
3.23 2 mẫu captcha minh họa quy trình thực nghiệm 45
3.24 Captcha được chuyển sang ảnh xám 45
3.25 Captcha được chuyển sang ảnh xám 45
3.26 Captcha sau bước xử lý cuối cùng 45
Nguyễn Duy Anh vi Cơ sở toán cho tin học
Trang 83.1 Các tham số mạng CNN dùng trong thực nghiệm 343.2 Bảng so sánh kết quả thực nghiệm dữ liệu Dataset-1 với Dataset-2 463.3 Bảng so sánh kết quả thực nghiệm dữ liệu Dataset-3, Dataset-4 vàDataset-5 463.4 Bảng so sánh kết quả thực nghiệm tổng quan các bộ dữ liệu 47
Trang 9Lời nói đầu
Để hoàn thành luận văn thạc sĩ là cả một quá trình đầy khó khăn và thử thách tronghọc tập và nghiên cứu tại trường Đại học Khoa học Tự nhiên Để có được những thànhquả như ngày hôm nay, ngoài những nỗ lực của bản thân, không thể không nhắc tới
là sự động viên, giúp đỡ của các thầy, cô giáo, bạn bè và người thân trong gia đình
Em xin chân thành cảm ơn TS Đỗ Thanh Hà là cán bộ giảng viên của TrườngĐại học Khoa học Tự nhiên - Đại học Quốc gia Hà Nội đã tận tình giúp đỡ em về cảchuyên môn, nghiên cứu và định hướng phát triển trong suốt quá trình làm luận vănlẫn phát triển trong tương lai
Em cũng xin chân thành cảm ơn các thầy cô giáo trong nhà trường, đặc biệt làcác thầy cô trong khoa Toán - Cơ - Tin học đã nhiệt tình giảng dạy và giúp em trang
bị những kiến thức nền tảng cần thiết nhất để phát triển bản thân trong con đườngtương lai
Tuy nhiên vì kiến thức chuyên môn còn hạn chế và bản thân còn thiếu nhiều kinhnghiệm thực tiễn nên nội dung của luận văn không tránh khỏi những thiếu sót, em rấtmong nhận sự góp ý và chỉ bảo của quý thầy cô để hoàn thiện hơn luận văn cũng nhưkiến thức của bản thân
Em xin chân thành cảm ơn!
Hà Nội,ngày 19 tháng 5 năm 2019
Học viên cao học
Nguyễn Duy Anh
viii
Trang 10Giới thiệu về captcha
Trong thời đại công nghệ hiện nay đa số người dùng sử dụng máy tính đều quen vớiviệc sử dụng captcha Captcha có thể được gặp ở bất cứ đâu trên môi trường internetvới mục đích chính là phân biệt máy tính với con người để chống lại các hình thứcspam Captcha có nhiều loại: âm thanh, đánh tích, sắp xếp hình ảnh và hình ảnh ký
tự bị làm nhiễu Chương này sẽ tập trung giới thiệu một số vấn đề về captcha dạnghình ảnh ký tự bị làm nhiễu
Một hệ thống captcha là một dạng kiểm thử được tạo ra tự động thỏa mãn cácđiều kiện sau:
1 Các máy tính hiện nay không thể giải được một cách chính xác
2 Đa số con người có thể giải được
3 Người tấn công có thể biết trước các kiểu captcha
Trang 11Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
Hình 1.1: Một số mẫu captcha
Hình 1.1 (a) mô tả một mẫu captcha được chương trình EZ-Gimpy tạo ra [13], đãđược Yahoo sử dụng vào những năm 2000 Tuy nhiên, đã có những công nghệ nhậndạng tự động được loại captcha này Captcha hình 1.1 (b) làm cho nội dung khó nhận
ra hơn bằng cách thêm vào đường gạch ngang và bố trí ký tự không thẳng hàng
ra hệ thống captcha có thể coi là đầu tiên Với mục đích chống lại hệ thống nhận dạng
ký tự quang học (OCR) Vào năm 2000 Von Ahn và Blum đã phát triển nhiều mẫucaptcha được sử dụng rộng rãi và công khai khái niệm captcha để định danh nhữngchương trình có thể phân biệt được máy tính và con người
b Bảo vệ đăng ký Email, Website: Hiện nay có không ít công ty cung cấp dịch vụtạo email miễn phí, đi kèm với đó là sự xuất hiện của những chương trình tự độngđăng ký email tràn lan Đặc biệt các website ngày nay đa số đều cho phép đăng
ký tài khoản miễn phí thông qua email Sự liên kết giữa email và website này làđối tượng rất dễ bị spam nên luôn cần được bảo vệ bởi captcha nhằm chống lại
sự lạm dụng các chương trình tự động
Nguyễn Duy Anh 2 Cơ sở toán cho tin học
Trang 12c Bảo vệ các cuộc thăm dò trực tuyến: Vào tháng 11 năm 1999, một trang web đã
tổ chức cuộc thăm dò trực tuyến bình chọn trường đại học có ngành khoa họcmáy tính tốt nhất Và rất nhanh chóng nó trở thành cuộc đua bỏ phiếu bằng cácchương trình tự động giữa hai đại học lớn là CMU và MIT [5] Từ đó tính chínhxác của các cuộc thăm dò trực tuyến đã bị đặt những dấu hỏi lớn Để giải quyếtvấn đề này captcha chính là câu trả lời với ứng dụng phân biệt giữa máy tínhvới con người sẽ giúp đảm bảo sự chính xác của các kết quả thăm dò trực tuyếnkhông còn bị làm sai lệch bởi các công cụ đánh giá tự động nữa
1.3 Quá trình sinh captcha
Captcha được hình thành bởi 2 thành phần chính là nội dung captcha và nhiễu captcha.Tùy vào yêu cầu về độ phức tạp của captcha mà 2 thành phần này được xây dựng theonhiều phương pháp khác nhau nhưng vẫn xoay quanh một định hướng nhất định
1 Tạo nội dung captcha
Nội dung captcha thường được tạo bởi các ký tự chữ, số cả dạng viết hoa và viếtthường sử dụng ngẫu nhiên tùy theo mỗi loại Các loại captcha phổ biến thườngbao gồm cả chữ và số để đảm bảo độ khó nhất định Tuy nhiên trong thời điểmhiện tại vẫn còn không ít trang web sử dụng các loại captcha toàn chữ hoặc toàn
số, những captcha có nội dung đơn giản như vậy rất dễ bị tấn công và nhận dạng
tự động Do đó nội dung là một trong số các yếu tố quan trọng để đánh giá độ
an toàn của captcha
2 Tạo nhiễu captcha
Một thành phần không thể thiếu để tạo nên độ khó của captcha là nhiễu captcha.Hiện nay cách tạo nhiễu của captcha rất phong phú và đa dạng như :
a Làm méo, bẻ cong ký tự theo nhiều hình dạng
b Phủ các thành phần làm nhiễu lên captcha như chấm hạt, các đoạn gạchngang, các mảng màu khác biệt v.v phủ lên ký tự
c Đổi màu ngẫu nhiên các thành phần nhiễu và cả ký tự trên captcha
d Biến đổi độ đậm nhạt ngẫu nhiên các thành phần nhiễu và cả ký tự trêncaptcha
e Phối hợp ngẫu nhiên một hoặc nhiều các phương pháp trên
Trang 13Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
Hình 1.2 giới thiệu một số mẫu captcha phổ biến hiện nay được tạo nhiễu bởiphương pháp phối hợp nhiều kiểu nhiễu (e) Các kiểu nhiễu của captcha đượctùy biến rất phong phú và đa dạng nhưng không phối hợp quá nhiều kỹ thuậtlàm nhiễu vì sẽ gây khó khăn cả cho con người khi nhận dạng
Hình 1.2: Một số mẫu captcha được tạo nhiễu bởi phương pháp phối hợp ngẫu nhiênmột hoặc nhiều loại nhiễu khác nhau
Trong mỗi công cụ sinh captcha nhất định sau khi sinh captcha luôn tạo kèm một
bộ giải captcha tự dộng Bộ giải này luôn đi kèm với bộ sinh captcha khi dùng trongcác hệ thống thực tế và cũng trở thành mục tiêu tấn công chính của các hacker hiệnnay
1.4 Các phương pháp nhận dạng captcha tự động
Ngày nay captcha được sử dụng rất phổ biến như một thành phần quan trọng trongquy trình bảo mật an ninh an toàn thông tin Song hành với điều này các nỗ lưc trongviệc tự động hóa các cuộc tấn công nhằm vào các website như: quảng cáo quy mô lớn,can thiệp vào các hệ thống bình chọn trực tuyến, tấn công từ chối dịch vụ các website;Tạo ra các liên kết giả để nâng hạng của website trong các máy tìm kiếm; Truy cậpthông tin bí mật hoặc lây lan mã độc v.v Từ đó nhu cầu đánh giá và kiểm định vànâng cấp độ an toàn của mỗi loại captcha trước khi đưa vào sử dụng trong thực tế làrất cần thiết Phương pháp cụ thể và phổ biến nhất là nghiên cứu và tìm ra cách tấncông giả định vào các mẫu captcha, hay chính là thực hiện nhận dạng captcha tự độngbằng máy không phải con người để phủ định mục đích chính mà captcha được tạo ra.Nhận dạng tự động captcha được chia thành 2 kỹ thuật chính là nhận dạng cứng vànhận dạng mềm
1 Nhận dạng cứng
Nhận dạng cứng là một phương pháp nhận dạng tự động mang tính kỹ thuật
Nguyễn Duy Anh 4 Cơ sở toán cho tin học
Trang 14cao Phương pháp này tập trung vào các điểm yếu trong quá trình sinh và kiểmtra thông qua bộ giải captcha Các phương pháp này sử dụng nhiều cách khácnhau để vượt qua bước kiểm tra captcha, trong đó có hai hướng phổ biến nhất
là tấn công vào máy khách và tấn công vào máy chủ [2]
a Một số dạng tấn công máy khách:
- Tấn công vào các trường ẩn và vùng lưu trữ trên máy khách: bằng nhiềuthủ thuật khác nhau, người tấn công có thể khai thác được bộ giải captchanằm trong các trường ẩn và vùng lưu trữ của máy khách do đặc điểm kém
an toàn của nó
- Tấn công lựa chọn giá trị chuỗi CAPTCHA: trong trường hợp bộ sinhcaptcha đặt ở máy khách và bộ giải captcha ở máy chủ thì người tấn côngvẫn có thể lấy được một số thông tin chuỗi captcha nhất định trong bộ giảiđặt ở máy chủ và sử dụng nó để tấn công captcha
- Tấn công bằng cách sử dụng con người để nhận dạng: dạng tấn công lợidụng lao động giá rẻ ở một số quốc gia để thực hiện nhận dạng hỗ trợ chocác phương pháp tấn công khác
2 Nhận dạng mềm
Nhận dạng mềm là một phương pháp nhận dạng tự động mang tính học thuậtcao Với mục đích chính là nghiên cứu và xây dựng các phương pháp sử dụngnhững kiến thức trong các lĩnh vực về trí tuệ nhân tạo cụ thể là thị giác máytính, học máy thống kê để xây dựng các công cụ tự động nhận dạng và xử lý cácloại captcha mà không cần quan tâm tới quy trình sinh và kiểm tra captcha nhưphương pháp nhận dạng cứng
Năm 2017 trong bản báo cáo nghiên cứu về hiệu quả kỹ thuật nhận dạng tự độngcaptcha dựa trên nhận dạng văn bản [10] của Xiangyang Luo, và cộng sự có tổnghợp sự phát triển của kỹ thuật nhận dạng tự động captcha theo các năm minh
Trang 15Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
họa trong hình 1.3 và 1.4
Thời kì đầu những năm từ 2003 tới 2008 các phương pháp tấn công thường sửdụng bao gồm đánh giá độ méo, và sử dụng mô hình CNN với hiệu quả biến độngtùy vào từng bộ dữ liệu và phương pháp sử dụng ( [25], [7], [28], [9], [29])
Hình 1.3: Một số kết quả tấn công captcha 2003-2008 tổng hợp trong tài liệu [10]
Từ những năm 2009 tới 2016 việc ứng dụng các mô hình học máy vào nhận dạng
tự động captcha ngày một phổ biến và linh hoạt, một số mô hình có thể kể đếnbao gồm SVN, KNN, CNN, v.v Có thể thấy mô hình CNN vẫn được sử dụngphổ biến do tính năng ưu việt và tiềm năng phát triển phong phú của nó đối vớibài toán nhận dạng ( [22], [19], [3], [4], [15] [17], [18], [16], [21])
Hình 1.4: Một số kết quả tấn công captcha 2009-2016 tổng hợp trong tài liệu [10]
Nguyễn Duy Anh 6 Cơ sở toán cho tin học
Trang 16Nội dung luận văn này sẽ tập trung tìm hiểu và thực nghiệm với phương phápnhận dạng mềm sử dụng mô hình nhận dạng là CNN.
Chương này đã trình bày các vấn đề xung quanh captcha gồm 4 nội dung chính là:Định nghĩa, lịch sử và ứng dụng, quá trình sinh, các kĩ thuật tấn công captcha Vớimục đích tìm hiểu các kỹ thuật tấn công captcha tập trung xây dựng các công cụ thựcnghiệm để kiểm thử và đánh giá độ an toàn của một số bộ captcha Trong chương tiếptheo luận văn sẽ giới thiệu chi tiết các lý thuyết tiền xử lý và áp dụng mô hình CNN
để nhận dạng tự động các ký tự trong ảnh captcha
Trang 17áp dụng mô hình CNN để nhận dạng tự động captcha.
2.1 Phép toán hình thái
Định nghĩa 2.1.1 Hình thái toán học (Mathematical morphology) [24] là một
lý thuyết và kỹ thuật để phân tích và xử lý cấu trúc hình học, dựa trên lý thuyết tậphợp, lý thuyết lưới và hàm ngẫu nhiên
Hình thái toán học là phương pháp khá phổ biến trong xử lý ảnh số, đây là mộttrong những kỹ thuật quan trọng được áp dụng trong giai đoạn tiền xử lý hình ảnh để
có được ảnh đầu vào tốt cho hệ thống nhận dạng
Định nghĩa 2.1.2 Một ảnh I là một ánh xạ từ tập Sp gồm các tọa độ điểm ảnh
p = (r, c) ( tập không gian ảnh) vào tập các giá trị G thỏa mãn: với mỗi tọa độ điểmảnh p tồn tại một giá trị I(p) ∈ G
Định nghĩa 2.1.3 Một ảnh nhị phân có 2 giá trị G = {Vf g, Vbg} trong đó Vf g đượcgọi là giá trị foreground và Vbg được gọi là giá trị background
Thông thường Vf g = 0 và Vbg = −∞ Ngoài ra Vf g và Vbg có thể nhận các giá trịkhác bao gồm {Vf g, Vbg} = {0, ∞}, {0, 1}, {1, 0}, {0, 255}, {255, 0} trong nội dung luậnvăn này đặt {Vf g, Vbg} = {255, 0}
Định nghĩa 2.1.4 Foreground của một ảnh nhị phân I được định nghĩa như sau
F G{I} = {I(p), p = (r, c) ∈ Sp|I(p) = Vf g} (2.1)
8
Trang 18Định nghĩa 2.1.5 Background của một ảnh nhị phân I được định nghĩa như sau.
BG{I} = {I(p), p = (r, c) ∈ Sp|I(p) = Vbg} (2.2)Như vậy F G{I} ∪ BG{I} = I và F G{I} ∩ BG{I} = ∅
Bên cạnh đó có thể thấy background là phần bù của foreground và ngược lại
BG{I} = {F G{I}C}, F G{I} = {BG{I}C} (2.3)Hình 2.1 minh họa về khái niệm foregrounf và background của một ảnh nhị phân
I với c = 255
Hình 2.1: Biểu diễn một ảnh số, mỗi ô vuông là một điểm ảnh
Định nghĩa 2.1.6 Support của một ảnh I là tập vị các điểm ảnh foreground trongkhông gian ảnh
supp(I) = {p = (r, c) ∈ Sp|I(p) = Vf g} (2.4)Định nghĩa 2.1.7 Phần bù của support là tập vị trí các điểm ảnh background trongkhông gian ảnh
supp(I)C = {p = (r, c) ∈ Sp|I(p) = Vbg} (2.5)Định nghĩa 2.1.8 Thành phần cấu trúc (Structuring Element (SE) ) [12] làmột ảnh nhỏ, được sử dụng như một của sổ dịch chuyển nhằm hỗ trợ phác họa hàngxóm của một điểm ảnh trong không gian ảnh
Hình 2.2 minh họa về các SE được sử dụng trong luận văn trong đó FG là màuxám BG là màu trắng
Trang 19Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
Hình 2.2: Một số dạng SE
SE có thể có bất kì hình dáng kích thước nào với tâm tùy ý như trong hình 2.2điểm tròn trắng là tâm của thành phần cấu trúc Ngoài ra một số hình dạng phổ biếncủa SE thường được sử dụng hiện nay như dạng hình thoi, hình chữ thập thẳng hoặcchéo và dạng đường theo chiều ngang, dọc
Định nghĩa 2.1.9 Cho ảnh I và Z là SE, Z + p được hiểu là Z được di chuyển saocho tâm của nó trùng với vị trí p ∈ Sp khi đó tập các vị trí trong ảnh được phác họabởi Z + p gọi là Z-hàng xóm của p kí hiệu N {i, Z}(p)
Định nghĩa 2.1.10 Cho Z là SE, ζ là hình vuông gồm vị trí các điểm ảnh mà chứatập {(r, c), (−r, −c)|(r, c) ∈ supp(Z)} Khi đó ¯Z(a, b) = Z(a, b)∀(a, b) ∈ ζ là thànhphần cấu trúc phản chiếu của Z
Có thể hiểu về mặt kĩ thuật ¯Z là Z quay 180 độ quanh tâm của nó như hình 2.3dưới đây
Hình 2.3: Ví dụ về SE phản chiếu
Nguyễn Duy Anh 10 Cơ sở toán cho tin học
Trang 20Trong nội dung luận văn này phép giãn nở được áp dụng với định nghĩa thứ 3 Với
ví dụ minh họa trong hình 2.4 ta áp dụng công thức (2.8) để thực hiện phép giãn nởảnh I với SE là ảnh Z
Hình 2.4: Ví dụ phép giãn nở với ảnh I và phần tử cấu trúc Z
Trang 21Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
2.1.2 Phép toán co
Tương tự như phép giãn nở phép co (Erosion) [12] cũng có nhiều cách định nghĩa và
ba trong số các định nghĩa có thể áp dụng cho ảnh nhị phân là:
1 Tập tất cả các vị trí điểm ảnh p trong không gian ảnh mà thỏa Z + p là tập concủa I
Hình 2.5: Ví dụ phép co với ảnh I và thành phần cấu trúc Z
Nguyễn Duy Anh 12 Cơ sở toán cho tin học
Trang 222.2 Lọc ảnh
Lọc ảnh (Image Filtering) là một bước rất quan trọng trong quá trình tiền xử lý hìnhảnh với các mục đích khá đa dạng như lọc nhiễu, làm nét hình ảnh v.v Phần này sẽgiới thiệu nguyên tắc chung của lọc ảnh và một số phép lọc ảnh cơ bản
2.2.1 Nguyên tắc chung của lọc ảnh
Nguyên tắc chung của các phương pháp lọc là cho ma trận ảnh tích chập với một matrận lọc (Kernel) Ma trận lọc lọc còn có thể được gọi là cửa sổ chập (trong phép nhântich chập), cửa sổ lọc, mặt nạ v.v Trong luận văn sử dụng thuật ngữ kernel
Việc tính tích chập ảnh với kernel thực hiện bằng cách trượt kernel lần lượt trêntừng điểm ảnh của ảnh theo hàng và thực hiện phép tích chập với từng vùng chiếu củakernel trên ảnh với tâm của kernel trùng với điểm ảnh đang xét Phép tính tích chập
sẽ được giới thiệu chi tiết tại mục 2.3.1 Hình 2.6 minh họa nguyên tắc lọc ảnh trênảnh I với kenel kích thước 3 × 3 (vùng màu xám trên ảnh I) và ảnh kết quả O với cácđiểm ảnh đầu ra được biết đổi màu xám
Trang 23Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
trung bình cho ra tọa độ tương ứng trong ảnh kết quả D
D(3, 3) = (7 + 2 + 1 + 6 + 2 + 8 + 6 + 7 + 7)/9 = 1
9× 46
Hình 2.8: Kết quả tính phép lọc trung bình trên ảnh I được ảnh D
Thực hiện tương tự với các điểm khác trong I ta sẽ có kết quả là ảnh D như tronghình 2.8
2.2.2 Phép lọc Gauss
Phép lọc Gauss là cách làm mờ hình ảnh bằng cách tính tích chập hình đó với kernel làGausian Blur Nó có thể giúp làm giảm nhiễu và mức độ chi tiết (không mong muốn)của hình ảnh Về mặt trực quan, đây được xem như là phương pháp làm mờ mịn cũnggiống như hiệu ứng hình ảnh được đặt dưới một lớp màn trong suốt bị mờ
Gaussian blur là một loại kernel làm mờ ảnh, sử dụng lý thuyết hàm Gaussian
để tính toán việc chuyển đổi mỗi điểm ảnh của hình Dưới đây là phương trình hàmGaussian dùng trong không gian ảnh hai chiều
Nguyễn Duy Anh 14 Cơ sở toán cho tin học
Trang 24Hình 2.9: Minh họa kernel Gausian blur
Giá trị mới của mỗi điểm ảnh sau khi tính tích chập với kernel đại diện cho hàmGaussian có thể coi là trung bình lượng giá của các điểm ảnh xung quanh nó Giá trịlượng giá của phần tử trung tâm kernel tương ứng với điểm ảnh đang xét là lớn nhất,giá trị này sẽ nhỏ hơn đối với các phần tử tương ứng với những điểm ảnh kế cận mộtcách đối xứng và tỉ lệ thuận với khoảng cách của phần tử này với trung tâm Tính chấtnày giúp giữ lại đường viền và biên cũng như làm mờ một cách đồng bộ hơn so với cácphương pháp khác
2.2.3 Phép lọc trung vị ảnh xám
Trong phép lọc ảnh có một trường hợp đặc biệt đó là phép lọc trung vị Phép lọc trung
vị thực hiện bằng cách sắp sếp các giá trị mức xám tăng dần trong vùng cục bộ rồi lấygiá trị trung vị mức xám thay thế mức xám ở tâm vùng cục bộ
Với phép lọc trung bình ở trên, giá trị điểm trung tâm được tính mới (có thể bằnghoặc khác với giá trị một điểm trong vùng ma trận lọc), còn với phép lọc trung vị, giátrị điểm trung tâm luôn được thay bằng một giá trị điểm ảnh trong ảnh đầu vào Dovậy, phương pháp lọc này phù hợp dùng để loại bỏ nhiễu hạt, nhiễu muối tiêu khá tốt
Ví dụ : Hình 2.10 minh họa phép lọc trung vị với một điểm ảnh trong ảnh gốc thựchiện trên vùng cục bộ bao quanh điểm ảnh đó
Trang 25Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
Hình 2.10: Kết quả tính phép lọc trung vị tại một vùng cục bộ
Ví dụ trong hình 2.11 thể hiện kết quả lọc ảnh bằng bộ lọc Gauss và bộ lọc trung
Nguyễn Duy Anh 16 Cơ sở toán cho tin học
Trang 262 Điểm neo (anchor point) của kernel thường được chọn là tâm của kernel Giá trịmỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị
độ xám của điểm ảnh trong vùng tương ứng với kernel
Theo hướng thực nghiệm phép tính tích chập giữa một ảnh I và một kernel K làquét K trên từng điểm ảnh của I, tại mỗi điểm ảnh trên I thực hiện phép tích chậpchập giữa K với ma trận tương ứng do K chiếu xuống điểm ảnh đó sao cho tâm của
K trùng với điểm ảnh đang xét Với các điểm ảnh ở biên để thực hiện tính toán, ảnhgốc thường được mở rộng biên với số lượng cột và hàng của đường biên được mở rộng
là tùy chọn nhưng thường phụ thuộc vào kiểu kernel sao cho khi trượt trên ảnh đã mởrộng không bị thiếu vùng để tính toán Các giá trị của đường biên thường được chọnbằng 0 hoặc những giá trị điểm ảnh gần đó Trong luận văn giá trị đường biên đượcchọn bằng 0
Ví dụ: phép tính tính chập giữa 1 ảnh xám I với kernel K
Hình 2.12: Ảnh xám I, ảnh I0 mở rộng biên 0 xung quanh I và kernel K
Hình 2.13: Nhân tích chập tại điểm I11 với K theo công thức (2.13) cho ra điểm r11Lấy ma trận trận được chiếu bởi K của I11 (vùng xanh lá) trong ảnh I0 thực hiệnphép nhân tích chập với kernel K theo công thức (2.13) sẽ có kết quả là điểm ảnh r11
Trang 27Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
trong ảnh đầu ra R đươc tính như sau:
r11 = w00× I22 + w10× I12 + w20× 0 + w01× I21 + w11 (2.14)
×I11 + w21× 0 + w02× 0 + w12× 0 + w22× 0
Hình 2.14: Lấy ma trận hàng xóm điểm I22 nhân tích chập với K cho ra điểm r22Tiếp theo quét kernel K lần lượt trên các điểm ảnh của I và tính toán tương tựnhư trên Khi qua các điểm ảnh biên của I các phần thiếu với công thức (2.13) đượcthay bằng điểm ảnh biên trong ảnh I0 là 0 Khi quét K tới những điểm ảnh không phảibiên trên I thì công thức (2.13) sẽ được tính với thông số đầy đủ Điểm ảnh r22 trongảnh kết quả R được tính như sau:
r22= w00× I33 + w10× I23 + w20× I13 + w01× I32 + w11 (2.15)
×I22+ w21× I12 + w02× I31 + w12× I21 + w22× I11
Thực hiện tương tự lần lượt với các điểm ảnh trong ảnh gốc cho đến hết I44 ta sẽ
có được hình ảnh kết quả R có kích thước 4 × 4 đã được biến đổi hoàn toàn bằng phéptính tích chập
Đối với ảnh màu, bộ lọc có 3 chiều tương ứng với 3 kênh màu của ảnh, thực hiệntính tích chập trên mỗi kênh màu với mỗi chiều của bộ lọc tương ứng, kết quả cuốicùng là tổng hợp tuyến tính của tích chập trên 3 kênh màu của ảnh Tuy nhiên, sốlượng bộ lọc được áp dụng lên 1 kênh màu cũng có thể lớn hơn 1 và sự kết hợp củacác tích chập cũng không nhất thiết phải là tổng của các kết quả mà có thể sử dụngmột bộ trọng số nào đó để tính tổng các kết quả tích chập thu được
Phép tính tích tập có rất nhiều tác dụng trong xử lý hình ảnh Với tác dụng đặctrưng là trích chọn các đặc trưng cụ thể hình ảnh dựa vào sự biến đổi của kernel Hình2.16 và hình 2.17 dưới đây sẽ minh họa trực quan tác động của phép tính tích chậpvới ảnh gốc ở hình 2.15
Nguyễn Duy Anh 18 Cơ sở toán cho tin học
Trang 28Hình 2.15: 2 ảnh gốc
Thực hiện phép nhân tích chập với 2 kernel được định nghĩa khác nhau sẽ có đượccác ảnh kết quả đặc trưng như hình 2.16 và 2.17
Hình 2.16: Nhân tích chập với kernel K1 hiện rõ các cạnh theo chiều ngang
Hình 2.17: Nhân tích chập với kernel K2 hiện rõ các cạnh theo chiều dọcQua đó có thể thấy được phép tính tích chập có ứng dụng rút trích đặc trưng rất
đa dạng và là một tiền đề tốt cho các vấn đề nhận dạng nội dung trong hình ảnh Bêncạnh đó cũng là thành phần quan trọng trong mô hình mạng nơ-ron tích chập CNNtrong phần tiếp theo
Trang 29Luận văn thạc sĩ Phân loại và nhận dạng tự động các ký tự trong ảnh captcha
Các tế bào đơn giản được kích hoạt khi nhận dạng các hình dáng đơn giản nhưđường nằm ngang trong một khu vực cố định và một góc cạnh của nó Các tế bào phứctạp có vùng tiếp nhận lơn hơn và đầu ra của nó không nhạy cảm với những vị trí cốđịnh trong vùng Trong thị giác, vùng tiếp nhận của một nơ-ron tương ứng với mộtvùng trên võng mạc nơi mà sẽ kích hoạt nơ-ron tương ứng
Năm 1980, Fukushima đề xuất mô hình mạng nơ-ron có cấp bậc gọi là neocognitron.[14] Mô hình này dựa trên khái niệm về S cell và C cell Mạng neocognitron có thểnhận dạng mẫu dựa trên việc học hình dáng của đối tượng
Sau đó vào năm 1998, Mạng nơ-ron Tích Chập được giới thiệu bởi Bengio, Le Cun,Bottou và Haffner Mô hình đầu tiên của họ được gọi tên là LeNet-5 [30] Mô hình này
có thể nhận dạng chữ số viết tay
Kiến trúc mạng tích chập
Mạng nơ-ron tích chập [1] có kiến trúc khác với mạng nơ-ron thông thường Mạngnơ-ron bình thường chuyển đổi đầu vào thông qua hàng loạt các tầng ẩn Mỗi tầng làmột tập các nơ-ron và các tầng được liên kết đầy đủ với các nơ-ron ở tầng trước đó
Và ở tầng cuối cùng sẽ là tầng kết quả đại diện cho dự đoán của mạng
Đầu tiên, mạng tích chập được chia thành 3 chiều: rộng, cao, và sâu Kế đên, cácnơ-ron trong mạng không liên kết hoàn toàn với toàn bộ nơ-ron kế đến nhưng chỉ liênkết tới một vùng nhỏ Cuối cùng, một tầng đầu ra được tối giản thành vecter của giátrị xác suất
CNN gồm hai thành phần chính là:
a Phần mã hóa hay phần rút trích đặc trưng: trong phần này, mạng sẽ tiến hànhtính toán hàng loạt phép tích chập và phép hợp nhất (pooling) để phát hiện cácđặc trưng Ví dụ: nếu ta có hình ảnh con ngựa vằn, thì trong phần này mạng sẽnhận dạng các sọc vằn, hai tai, và bốn chân của nó
b Phần phân lớp: tại phần này, một lớp với các liên kết đầy đủ sẽ đóng vai trò nhưmột bộ phân lớp các đặc trưng đã rút trích được trước đó Tầng này sẽ đưa raxác suất của một đối tượng trong hình
Nguyễn Duy Anh 20 Cơ sở toán cho tin học
Trang 30Hình 2.18: Minh họa mô hình CNN để nhận dạng 1 ký tự [26]
Mô hình CNN được minh họa cụ thể trên hình 2.18 nội dung tiếp theo sẽ giới thiệuchi tiết của từng thành phần trong mạng tích chập
1 Tầng tích chập (Convolution layer, CONV)
Tầng tích chập là tầng quan trọng nhất trong mạng vì kết quả của nó quyết địnhlớn nhất đến độ chính xác của đầu ra toàn mạng Như đã giới thiệu về tích chập
ở trên, tầng này cũng thực hiện theo phương pháp như vậy nhưng điểm khác biệt
là các bộ lọc kết nối đến từng vùng của dữ liệu đầu vào để tính toán
- AddPadding P1 và P2 là số lượng hàng và cột cần tăng thêm mỗi phía chođầu vào Mục đích để tính toán không bị gián đoạn khi áp bộ lọc lên các vịtrí biên của dữ liệu đầu vào Giá trị P cũng góp phần quyết định kích thướccủa kết quả đầu ra
Đầu ra là một tensor có kích thước: o1× o2 × K với:
o1 = (x1− f1+ 2P1)/S1+ 1 (2.16)
o = (x − f + 2P )/S + 1 (2.17)