1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android

124 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN (21)
    • 1.1. Giới thiệu về lĩnh vực nhận dạng chữ (23)
    • 1.2. Mô hình tổng quát của một hệ thống nhận dạng chữ viết tay (25)
      • 1.2.1. Tiền xử lý (25)
        • 1.2.1.1. Nhị phân hóa ảnh (26)
        • 1.2.1.2. Lọc nhiễu (26)
        • 1.2.1.3. Chuẩn hóa kích thước ảnh (27)
        • 1.2.1.4. Làm trơn biên chữ (27)
        • 1.2.1.5. Làm đầy chữ (28)
        • 1.2.1.6. Làm mảnh chữ (28)
        • 1.2.1.7. Điều chỉnh độ nghiêng của văn bản (28)
      • 1.2.2. Khối tách chữ (29)
        • 1.2.2.1. Tách chữ theo chiều nằm ngang và thẳng đứng (29)
        • 1.2.2.2. Tách chữ dùng lược đồ sáng (29)
      • 1.2.3. Trích chọn đặc trưng (30)
        • 1.2.3.1. Biến đổi toàn cục và khai triển chuỗi (30)
        • 1.2.3.2. Đặc trưng thống kê (32)
        • 1.2.3.3. Đặc trưng hình học và hình thái (33)
      • 1.2.4. Huấn luyện và nhận dạng (34)
      • 1.2.5. Hậu xử lý (35)
    • 1.3. Các phương pháp nhận dạng chữ viết tay (35)
      • 1.3.1. Đối sánh mẫu (36)
      • 1.3.2. Phương pháp tiếp cận cấu trúc (37)
        • 1.3.2.1. Phương pháp ngữ pháp (Grammatical Methods) (38)
        • 1.3.2.2. Phương pháp đồ thị (Graphical Methods) (38)
      • 1.3.3. Mạng neural (39)
      • 1.3.4. Các phương pháp thống kê (40)
        • 1.3.4.1. Nhận dạng phi tham số (40)
        • 1.3.4.2. Nhận dạng có tham số (40)
        • 1.3.4.3. Mô hình Markov ẩn (HMM - Hidden Markov Model) (40)
      • 1.3.5. Máy vector tựa (SVM) (41)
      • 1.3.6. Kết hợp các kỹ thuật nhận dạng (41)
        • 1.3.6.1. Kiến trúc tuần tự (41)
        • 1.3.6.2. Kiến trúc song song (42)
        • 1.3.6.3. Kiến trúc lai ghép (42)
    • 1.4. Kiến thức chung về ngôn ngữ lập trình Java và Android (43)
      • 1.4.1. Ngôn ngữ lập trình Java (43)
      • 1.4.2. Hệ điều hành Android (45)
    • 1.5. Kết luận (49)
  • CHƯƠNG 2. PHƯƠNG PHÁP SVM (21)
    • 2.1. Tổng quan về phương pháp SVM (51)
    • 2.2. SVM tuyến tính (52)
      • 2.2.1. Siêu phẳng với khoảng cách lề cực đại (53)
      • 2.2.2. Tìm siêu phẳng tối ưu (56)
      • 2.2.3. Phân lớp mềm (57)
      • 2.2.4. Giải bài toán tối ưu (58)
    • 2.3. SVM phi tuyến (63)
      • 2.3.1. Không gian đặc trưng (64)
      • 2.3.2. Hàm nhân (65)
    • 2.4. Lý thuyết chiều VC (66)
      • 2.4.1. Cực tiểu hóa rủi ro cấu trúc (67)
      • 2.4.2. Cực tiểu hóa rủi ro thực nghiệm (67)
      • 2.4.3. Cực tiểu hóa cận rủi ro (68)
    • 2.5. Các thuật tuấn huấn luyện SVM (71)
      • 2.5.1. Thuật toán chặt khúc (71)
      • 2.5.2. Thuật toán phân rã (71)
      • 2.5.3. Thuật toán SMO (72)
        • 2.5.3.1. Tối ưu hai nhân tử Lagrange (73)
        • 2.5.3.2. Chọn hai nhân tử để tối ưu theo phương pháp heuristic (74)
    • 2.6. SVM đa lớp (75)
      • 2.6.1. Chiến lược một chống một (OVO: One – Versus – One) (75)
      • 2.6.2. Chiến lược một chống phần còn lại (OVR: One – Versus – Rest) (76)
      • 2.6.3. Chiến lược phân cấp (76)
    • 2.7. Ứng dụng SVM vào bài toán nhận dạng chữ viết tay rời rạc (77)
      • 2.7.1. Tiền xử lý (77)
      • 2.7.2. Trích chọn đặc trưng (77)
      • 2.7.3. Huấn luyện mô hình và nhận dạng (78)
    • 2.8. Kết luận (78)
  • CHƯƠNG 3. XÂY DỰNG MÔ HÌNH NHẬN DẠNG CHỮ VIỆT VIẾT (21)
    • 3.1. Trích chọn đặc trưng cho bài toán nhận dạng chữ viết tay (80)
      • 3.1.1. Trọng số vùng (Zoning) (80)
      • 3.1.2. Biểu đồ chiếu (Projection histograms) (81)
      • 3.1.3. Trích chọn theo chu tuyến (Contour Profile) (81)
      • 3.1.4. Trích chọn đặc trưng wavelet Haar (82)
    • 3.2. Nhận dạng chữ Việt viết tay rời rạc (85)
      • 3.2.1. Đặt vấn đề (85)
      • 3.2.2. Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc (86)
        • 3.2.2.1. Tiền xử lý (87)
        • 3.2.2.2. Chuẩn hóa ảnh theo vùng liên thông (87)
        • 3.2.2.3. Phân nhóm sơ bộ (89)
        • 3.2.2.4. Trích chọn đặc trưng (90)
        • 3.2.2.5. Xây dựng các máy phân lớp SVM (91)
    • 3.3. Kết luận (91)
  • CHƯƠNG 4. KẾT QUẢ THỰC HIỆN (21)
    • 4.1.1. Vấn đề khi triển khai mô hình nhận dạng trên điện thoại (92)
    • 4.1.2. Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc trên điện thoại thông minh (93)
    • 4.1.3. Xây dựng ứng dụng Android cho bài toán nhận dạng chữ Việt viết tay trên điện thoại thông minh (95)
      • 4.1.3.1. Thiết kế chức năng của ứng dụng (95)
      • 4.1.3.2. Thiết kế chi tiết của ứng dụng (95)
    • 4.1.4. Giao diện của ứng dụng (97)
      • 4.1.4.1. Màn hình lúc khởi động – Menu (97)
      • 4.1.4.2. Giao diện màn hình nhận dạng (98)
      • 4.1.4.3. Giao diện màn hình huấn luyện (99)
    • 4.2. Kết quả thực nghiệm (100)
      • 4.2.1. Kết quả nhận dạng ký tự (101)
      • 4.2.2. Tỷ lệ nhận dạng thành công của các ký tự (105)
      • 4.2.3. Các ký tự bị nhận dạng sai (106)
      • 4.2.4. Đánh giá tốc độ nhận dạng và hiệu suất của hệ thống (108)
        • 4.2.4.1. Tốc độ nhận dạng (108)
        • 4.2.4.2. Hiệu suất của hệ thống (108)
    • 4.3 So sánh kết quả mô phỏng với các công trình khác (109)
    • 4.4. Kết luận (111)
  • CHƯƠNG 5. KẾT LUẬN (21)
    • 5.1. Các kết quả chính của luận văn (112)
    • 5.2. Hướng phát triển của luận văn (113)
  • TÀI LIỆU THAM KHẢO (115)

Nội dung

 Đề xuất một phương pháp trích chọn đặc trưng hiệu quả cho bài toán nhận dạng chữ viết tay theo ý tưởng của phép biến đổi wavelet Haar và đã chứng minh tính bất biến của đặc trưng đối v

TỔNG QUAN

Giới thiệu về lĩnh vực nhận dạng chữ

Nhận dạng chữ là một trong những lĩnh vực nhận dạng được nhiều nhà nghiên cứu quan tâm và cho đến nay lĩnh vực này cũng đã đạt được nhiều thành tựu lớn lao cả về mặt lý thuyết lẫn ứng dụng thực tế Lĩnh vực nhận dạng chữ được chia làm hai loại: Nhận dạng chữ in và nhận dạng chữ viết tay Đến thời điểm này, nhận dạng chữ in đã được giải quyết gần như trọn vẹn Tuy nhiên, nhận dạng chữ viết tay vẫn còn nhiều vấn đề thách thức đối với các nhà nghiên cứu Nhận dạng chữ viết tay được phân ra làm hai loại: nhận dạng chữ viết tay trực tuyến (on-line) và nhận dạng chữ viết tay ngoại tuyến (off-line)

Nhận dạng chữ viết tay on-line được thực hiện trên cơ sở lưu lại các thông tin về nét chữ như thứ tự nét viết, hướng và tốc độ của nét viết trong quá trình nó đang viết Đây chính là cơ sở để máy tính nhận diện được các chữ cái, do đó việc nhận dạng không gặp quá nhiều khó khăn Một trong những sản phẩm nhận dạng chữ viết tay trực tuyến tiêu biểu nhất là hệ thống nhận dạng chữ viết tay rời rạc trực tuyến trên một trạm làm việc của IBM do H.S.M.Beigi, C.C.Tapert, M.Ukeison và C.G.Wolf ở phòng thực hành Watson IBM cài đặt [1] Ngược lại, đối với nhận dạng chữ viết tay off-line, dữ liệu đầu vào là ảnh văn bản được quét vào nên việc nhận dạng có độ khó cao hơn nhiều so với nhận dạng chữ viết tay on-line Do dữ liệu đầu vào là ảnh văn bản nên nhận dạng chữ viết tay off-line và nhận dạng chữ in còn được gọi chung là nhận dạng chữ quang học (OCR - Optical Character Recognition)

Khó khăn lớn nhất khi nghiên cứu bài toán nhận dạng chữ viết tay là sự biến thiên quá đa dạng trong cách viết của từng người Cùng một người viết nhưng đôi khi cũng có nhiều sự khác biệt trong cách viết tuỳ thuộc vào từng ngữ cảnh, kiểu viết của một người cũng có thể thay đổi theo thời gian hoặc theo thói quen Điều này gây ra nhiều trở ngại trong việc trích chọn đặc trưng cũng như lựa chọn mô hình nhận dạng

Các kiến thức cần thiết để nghiên cứu về lĩnh vực nhận dạng chữ viết tay tương đối rộng, có liên quan đến nhiều lĩnh vực khác nhau:

 Xử lý ảnh (Image Processing): Các kỹ thuật xử lý ảnh được sử dụng trong các giai đoạn tiền xử lý, tách chữ và trích chọn đặc trưng Chẳng hạn như các thuật toán khử nhiễu, tìm xương, phát hiện biên, phân vùng ảnh

 Học máy (Machine Learning): được sử dụng trong giai đoạn huấn luyện và nhận dạng, chẳng hạn như các mạng neural nhân tạo, các máy vector tựa (Support Vector Machines – SVM)

 Lý thuyết nhận dạng (Pattern Recognition): sử dụng các phương pháp luận phân lớp sử dụng trong công đoạn huấn luyện và nhận dạng

 Xác suất thống kê và toán ứng dụng: lý thuyết xác suất đóng vai trò rất quan trọng trong các phương pháp phân lớp thống kê như mô hình Markov ẩn (Hidden Markov Model - HMM), phương pháp Bayes, k-láng giềng gần nhất (k-Nearest Neighbors – k-NN), còn đối với phương pháp phân lớp SVM thì kết hợp cả lý thuyết thống kê lẫn toán tối ưu, đặc biệt là bài toán quy hoạch toàn phương

 Ngôn ngữ học và ngôn ngữ học tính toán (Linguistic and Computational Linguistic): Các kiến thức về ngữ pháp đóng vai trò quan trọng trong công đoạn hậu xử lý, nâng cao độ chính xác cho các hệ thống nhận dạng chữ viết

Trong số các lĩnh vực kể trên, luận văn sẽ tập trung vào việc nghiên cứu các kiến thức về xử lý ảnh đặc biệt là tiền xử lý và trích chọn đặc trưng, các kỹ thuật phân lớp dùng trong nhận dạng chữ viết tay đặc biệt là phương pháp SVM.

Mô hình tổng quát của một hệ thống nhận dạng chữ viết tay

Hình 1.1 Sơ đồ tổng quát của một hệ thống nhận dạng chữ viết tay

Về cơ bản, một hệ nhận dạng chữ viết tay bao gồm năm khối công việc chính

(hình 1.1) Luận văn chỉ tập trung nghiên cứu hai khối công việc chính: trích chọn đặc trưng và huấn luyện/nhận dạng

Giai đoạn này góp phần làm tăng độ chính xác phân lớp của hệ thống nhận dạng, tuy nhiên nó cũng làm cho tốc độ nhận dạng của hệ thống chậm lại Vì vậy, tùy thuộc vào chất lượng ảnh quét vào của từng văn bản cụ thể để chọn một hoặc một vài chức năng trong khối này Nếu cần ưu tiên tốc độ xử lý và chất lượng của máy quét tốt thì có thể bỏ qua giai đoạn này Khối tiền xử lý bao gồm một số chức năng: Nhị phân hóa ảnh, lọc nhiễu, chuẩn hóa kích thước ảnh, làm trơn biên chữ, làm đầy chữ, làm mảnh chữ và xoay văn bản Ảnh chứa chữ viết tay

Tiền xử lý Tách chữ Trích chọn đặc trưng

Huấn luyện và nhận dạng

Văn bản được nhận dạng

Nhị phân hóa ảnh là một kỹ thuật chuyển ảnh đa cấp xám sang ảnh nhị phân

Trong bất kỳ bài toán phân tích hoặc nâng cao chất lượng ảnh nào, nó cũng cần thiết để xác định các đối tượng quan trọng Nhị phân hóa ảnh phân chia ảnh thành 2 phần: phần nền và phần chữ Hầu hết các phương pháp nhị phân hóa ảnh hiện nay đều lựa chọn một ngưỡng thích hợp theo cường độ sáng của ảnh và sau đó chuyển tất cả các giá trị độ sáng lớn hơn ngưỡng đó thành một giá trị độ sáng (ví dụ “trắng”) và tất cả các giá trị bé hơn ngưỡng thành một giá trị độ sáng khác (“đen”)

Hình 1.2 Nhị phân hóa ảnh

Nhiễu là một tập các điểm sáng thừa trên ảnh Khử nhiễu là một vấn đề thường gặp trong nhận dạng, nhiễu có nhiều loại (nhiễu đốm, nhiễu vệt, nhiễu đứt nét )

Hình 1.3 Nhiễu đốm và nhiễu vệt Để khử các nhiễu đốm (các nhiễu với kích thước nhỏ), có thể sử dụng các phương pháp lọc (lọc trung bình, lọc trung vị ) Tuy nhiên, với các nhiễu vệt (hoặc các nhiễu có kích thước lớn) thì các phương pháp lọc tỏ ra kém hiệu quả, trong trường hợp này sử dụng phương pháp khử các vùng liên thông nhỏ tỏ ra có hiệu quả hơn

1.2.1.3 Chuẩn hóa kích thước ảnh

Hình 1.4 Chuẩn hóa kích thước ảnh các ký tự “A” và “B”

Việc chuẩn hóa kích thước ảnh dựa trên việc xác định trọng tâm ảnh, sau đó xác định khoảng cách lớn nhất từ tâm ảnh đến các cạnh trên, dưới, trái, phải của hình chữ nhật bao quanh ảnh Thông qua khoảng cách lớn nhất đó, có thể xác định được một tỷ lệ co, giãn của ảnh gốc so với kích thước đã xác định, từ đó hiệu chỉnh kích thước ảnh theo tỷ lệ co, giãn này Như vậy, thuật toán chuẩn hóa kích thước ảnh luôn luôn đảm bảo được tính cân bằng khi co giãn ảnh, ảnh sẽ không bị biến dạng hoặc bị lệch

1.2.1.4 Làm trơn biên chữ Đôi khi do chất lượng quét ảnh quá xấu, các đường biên của chữ không còn giữ được dáng điệu trơn tru ban đầu mà hình thành các đường răng cưa giả tạo Trong các trường hợp này, phải dùng các thuật toán làm trơn biên để khắc phục [2]

Hình 1.5 (a) Ảnh gốc, (b) Ảnh sau khi được làm trơn biên

Chức năng này được áp dụng với các ký tự bị đứt nét một cách ngẫu nhiên Ảnh đứt nét gây khó khăn cho việc tách chữ, dễ bị nhầm hai phần liên thông của ký tự thành hai ký tự riêng biệt, tạo nên sai lầm trong quá trình nhận dạng

1.2.1.6 Làm mảnh chữ Đây là một bước quan trọng nhằm phát hiện khung xương của ký tự bằng cách loại bỏ dần các điểm biên ngoài của các nét Tuy nhiên, quá trình làm mảnh chữ rất nhạy cảm với việc khử nhiễu Hiện nay có nhiều phương pháp làm mảnh chữ, các thuật toán tìm xương có thể tham khảo ở [2]

1.2.1.7 Điều chỉnh độ nghiêng của văn bản

Do trang tài liệu quét vào không cẩn thận hoặc do sự cố in ấn, các hàng chữ bị lệch so với lề chuẩn một góc α, điều này gây khó khăn cho công đoạn tách chữ, đôi khi không thể tách được Trong những trường hợp như vậy, phải tính lại tọa độ điểm ảnh của các chữ bị sai lệch

Có nhiều kỹ thuật để điều chỉnh độ nghiêng, kỹ thuật phổ biến nhất dựa trên cơ sở biểu đồ chiếu (projection profile) của ảnh tài liệu; một số kỹ thuật dựa trên cơ sở các phép biến đổi Hough và Fourier; một số kỹ thuật hiệu chỉnh độ nghiêng khác có thể tìm thấy trong [2]

Hình 1.7 Hiệu chỉnh độ nghiêng của văn bản

Khối này có nhiệm vụ tách từng ký tự ra khỏi văn bản Chỉ khi nào văn bản được tách và cô lập đúng từng ký tự đơn ra khỏi tổng thể văn bản thì hệ thống mới có thể nhận dạng đúng ký tự đó Sau đây là một số phương pháp tách chữ thông dụng:

1.2.2.1 Tách chữ theo chiều nằm ngang và thẳng đứng

Phương pháp này thường áp dụng cho chữ in Khác với chữ viết tay, kích thước và kiểu chữ cố định, phải tuân theo một số quy định in ấn, các chữ phải nằm gọn trong một khung nên việc cô lập một ký tự đơn có thể đồng nhất với việc tìm ra khung bao của chữ đó tại vị trí của nó trong văn bản Tách chữ theo chiều nằm ngang và thẳng đứng là tìm một hình chữ nhật có cạnh thẳng đứng và nằm ngang chứa trọn một ký tự ở bên trong

1.2.2.2 Tách chữ dùng lược đồ sáng

Hình 1.8 Tách dòng chữ Đối với chữ viết tay thì việc tìm đường phân cách giữa các dòng và các ký tự trong văn bản thường rất khó khăn Trong trường hợp này, không thể tìm đường phân cách theo nghĩa thông thường mà phải hiểu là đường phân cách với số điểm cắt hai dòng là ít nhất Khi đó phải xây dựng lược đồ sáng của các dòng chữ, từ đó các đoạn thấp nhất trên lược đồ chính là đường phân cách cần tìm (hình 1.8 và 1.9)

Hình 1.9 Xác định khoảng cách giữa hai kí tự và giữa hai từ

Trích chọn đặc trưng đóng vai trò cực kỳ quan trọng trong một hệ thống nhận dạng Trong trường hợp đơn giản nhất, ảnh đa cấp xám hoặc ảnh nhị phân được sử dụng cho việc nhận dạng Tuy nhiên, trong hầu hết các hệ nhận dạng, để giảm độ phức tạp và tăng độ chính xác của các thuật toán phân lớp thì đòi hỏi các đặc trưng được trích chọn phải rút gọn lại càng nhỏ càng tốt nhưng vẫn phải đảm bảo được thông tin của ký tự Với mục tiêu này, một tập các đặc trưng được trích chọn cho mỗi lớp sao cho có thể phân biệt được với các lớp khác Một số phương pháp trích chọn đặc trưng tương đối tốt đối với nhận dạng chữ viết tay có thể tham khảo trong [2], [3] Có hàng trăm phương pháp trích chọn đặc trưng cho ảnh văn bản, nhưng chung quy lại, các phương pháp này được gom lại thành ba nhóm chính sau:

1.2.3.1 Biến đổi toàn cục và khai triển chuỗi

Một tín hiệu liên tục thường chứa nhiều thông tin và chúng có thể sử dụng làm các đặc trưng cho mục đích phân lớp Các đặc trưng được trích chọn cũng có thể đúng đối với việc xấp xỉ các tín hiệu liên tục thành các tín hiệu rời rạc Một cách để biểu diễn một tín hiệu là sử dụng một tổ hợp tuyến tính của một dãy các hàm đơn giản hơn Các hệ số của tổ hợp tuyến tính cung cấp một tri thức giải mã vừa đủ, chẳng hạn như các phép biến đổi hoặc khai triển chuỗi Một số biến dạng khác như các phép dịch chuyển và phép quay là bất biến dưới các phép biến đổi toàn cục và khai triển chuỗi Sau đây là một số phương pháp biến đổi và khai triển chuỗi thường được áp dụng trong lĩnh vực nhận dạng chữ:

 Biến đổi Fourier: Một trong những tính chất nổi bật nhất của phép biến đổi

Các phương pháp nhận dạng chữ viết tay

Có nhiều phương pháp nhận dạng mẫu khác nhau được áp dụng rộng rãi trong các hệ thống nhận dạng chữ viết tay Các phương pháp này có thể được tích hợp trong các hướng tiếp cận sau: Đối sánh mẫu, thống kê, cấu trúc, mạng neural và SVM

Kỹ thuật nhận dạng chữ đơn giản nhất dựa trên cơ sở đối sánh các nguyên mẫu (prototype) với nhau để nhận dạng ký tự hoặc từ Nói chung, toán tử đối sánh xác định mức độ giống nhau giữa hai vé tơ (nhóm các điểm, hình dạng, độ cong ) trong một không gian đặc trưng Các kỹ thuật đối sánh có thể nghiên cứu theo ba hướng sau:

 Đối sánh trực tiếp: Một ký tự đầu vào là ảnh đa cấp xám hoặc ảnh nhị phân được so sánh trực tiếp với một tập mẫu chuẩn đã được lưu trữ Việc so sánh dựa theo một độ đo về sự tương đồng nào đó (chẳng hạn như độ đo Euclide) để nhận dạng Các kỹ thuật đối sánh này có thể đơn giản như việc so sánh một – một hoặc phức tạp hơn như phân tích cây quyết định [28], [29] Mặc dù phương pháp đối sánh trực tiếp đơn giản và có một cơ sở toán học vững chắc nhưng kết quả nhận dạng của nó cũng rất nhạy cảm với nhiễu

 Các mẫu biến dạng và Đối sánh mềm: Một phương pháp đối sánh khác là sử dụng các mẫu biến dạng, trong đó một phép biến dạng ảnh được dùng để đối sánh một ảnh chưa biết với một cơ sở dữ liệu ảnh đã biết [30] Ý tưởng cơ bản của đối sánh mềm là đối sánh một cách tối ưu mẫu chưa biết với tất cả các mẫu có thể mà các mẫu này có thể kéo giãn ra hoặc co lại Chỉ một không gian đặc trưng được thành lập, các vector chưa biết được đối sánh bằng cách sử dụng quy hoạch động và một hàm biến dạng [31], [32]

 Đối sánh giảm nhẹ: Đây là một kỹ thuật đối sánh ảnh ở mức độ tượng trưng, kỹ thuật này sử dụng hình dáng đặc trưng cơ bản của ảnh ký tự Thứ nhất, các vùng đối sánh đã được nhận biết Sau đó, trên cơ sở một số vùng đối sánh được đánh giá tốt, các phần tử của ảnh được so sánh với các vùng đối sánh này

Công việc này đòi hỏi một kỹ thuật tìm kiếm trong một không gian đa chiều để tìm cực đại toàn cục của một số hàm [33]

Các kỹ thuật đối sánh mẫu chỉ áp dụng tốt đối với nhận dạng chữ in, còn đối với chữ viết tay thì các kỹ thuật này tỏ ra kém hiệu quả

1.3.2 Phương pháp tiếp cận cấu trúc

Cách tiếp cận của phương pháp này dựa vào việc mô tả đối tượng nhờ một số khái niệm biểu diễn đối tượng cơ sở trong ngôn ngữ tự nhiên Để mô tả đối tượng người ta dùng một số dạng nguyên thuỷ như đoạn thẳng, cung,… Mỗi đối tượng được mô tả như một sự kết hợp của các dạng nguyên thuỷ

Các quy tắc kết hợp các dạng nguyên thuỷ được xây dựng giống như việc nghiên cứu văn phạm trong một ngôn ngữ, do đó quá trình quyết định nhận dạng là quá trình phân tích cú pháp [34], [35] Phương pháp này đặt vấn đề để giải quyết bài toán nhận dạng chữ tổng quát Tuy vậy, cho đến nay còn nhiều vấn đề liên quan đến hệ nhận dạng cú pháp chưa được giải quyết độc lập và chưa xây dựng được các thuật toán phổ dụng Hiện nay, nhận dạng theo cấu trúc phổ biến là trích trọn các đặc trưng của mẫu học, phân hoạch bảng ký tự dựa trên các đặc trưng này, sau đó ảnh cần nhận dạng sẽ được trích chọn đặc trưng, sau đó so sánh trên bảng phân hoạch để tìm ra ký tự có các đặc trưng phù hợp Đối với nhận dạng chữ viết tay rời rạc dựa theo cấu trúc xương và đường biên, công việc này đòi hỏi phải xây dựng các đặc trưng của chữ, đặc biệt là đặc trưng về các điểm uốn, điểm gấp khúc và đặc trưng của các nét Sau khi tiến hành công đoạn tiền xử lý, công việc tách các nét được tiến hành thông qua các điểm chạc Sau đó trích chọn đặc trưng cấu trúc xương của chữ, mỗi nét đặc trưng bởi cặp chỉ số đầu và cuối tương ứng với thứ tự của điểm chạc đầu và điểm chạc cuối Cuối cùng là xây dựng cây tìm kiếm, dựa vào đặc trưng về cấu trúc xương và cấu trúc biên để phân tập mẫu học thành các lớp Quá trình tìm kiếm để phân lớp được tiến hành qua hai bước:

Xác định lớp tương ứng với mẫu vào và tìm kiếm trong lớp đó mẫu nào gần giống với mẫu vào nhất [36], [37]

Các phương pháp cấu trúc áp dụng cho các bài toán nhận dạng chữ được phát triển theo hai hướng sau:

1.3.2.1 Phương pháp ngữ pháp (Grammatical Methods)

Giữa thập niên 1960, các nhà nghiên cứu bắt đầu xét các luật của ngôn ngữ học để phân tích tiếng nói và chữ viết Sau đó, các luật đa dạng của chính tả, từ vựng và ngôn ngữ học đã được áp dụng cho các chiến lược nhận dạng Các phương pháp ngữ pháp khởi tạo một số luật sinh để hình thành các ký tự từ một tập các công thức ngữ pháp nguyên thủy Các luật sinh này có thể kết nối bất kỳ kiểu đặc trưng thống kê và đặc trưng hình thái nào dưới một số cú pháp hoặc các luật ngữ nghĩa [34], [35], [38]

Giống như lý thuyết ngôn ngữ, các luật sinh cho phép mô tả các cấu trúc câu có thể chấp nhận được và trích chọn thông tin theo ngữ cảnh về chữ viết bằng cách sử dụng các kiểu ngữ pháp khác nhau [39]

Trong các phương pháp này, việc huấn luyện được thực hiện bằng cách mô tả mỗi ký tự bằng một văn phạm Gi Còn trong pha nhận dạng thì chuỗi, cây hoặc đồ thị của một đơn vị viết bất kỳ (ký tự, từ hoặc câu) được phân tích để quyết định văn phạm của mẫu đó thuộc lớp nào Các phương pháp ngữ pháp hầu hết được sử dụng trong giai đoạn hậu xử lý để sửa các lỗi mà khối nhận dạng đã thực hiện sai [40] ,[41]

1.3.2.2 Phương pháp đồ thị (Graphical Methods)

Các đơn vị chữ viết được mô tả bởi các cây hoặc các đồ thị Các dạng nguyên thủy của ký tự (các nét) được lựa chọn bởi một hướng tiếp cận cấu trúc Đối với mỗi lớp, một đồ thị hoặc cây được thành lập trong giai đoạn huấn luyện để mô tả các nét, các ký tự hoặc các từ Giai đoạn nhận dạng gán một đồ thị chưa biết vào một trong các lớp bằng cách sử dụng một độ đo để so sánh các đặc điểm giống nhau giữa các đồ thị

Có rất nhiều hướng tiếp cận khác nhau sử dụng phương pháp đồ thị, tiêu biểu là hướng tiếp cận đồ thị phân cấp được dùng trong việc nhận dạng chữ viết tay Trung Quốc và Hàn Quốc [36], [37]

Một mạng neural được định nghĩa như một cấu trúc tính toán bao gồm nhiều bộ xử lý “neural” được kết nối song song chằng chịt với nhau Do bản chất song song của các neural nên nó có thể thực hiện các tính toán với tốc độ cao hơn so với các kỹ thuật phân lớp khác Một mạng neural chứa nhiều nút, đầu ra của một nút được sử dụng cho một nút khác ở trong mạng và hàm quyết định cuối cùng phụ thuộc vào sự tương tác phức tạp giữa các nút Mặc dù nguyên lý khác nhau, nhưng hầu hết các kiến trúc mạng neural đều tương đương với các phương pháp nhận dạng mẫu thống kê [3], [42]

Các kiến trúc mạng neural có thể được phân thành hai nhóm chính: mạng truyền thẳng và mạng lan truyền ngược Trong các hệ thống nhận dạng chữ, các mạng neural sử dụng phổ biến nhất là mạng perceptron đa lớp thuộc nhóm mạng truyền thẳng và mạng SOM (Self Origanizing Map) của Kohonen thuộc nhóm mạng lan truyền ngược

Kiến thức chung về ngôn ngữ lập trình Java và Android

Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class)

Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy

Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi; do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ đó thay cho C++, nhưng các tính năng giống Objective C Công ty Sun Microsystems đang giữ bản quyền và phát triển Java thường xuyên

Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (“Write Once, Run Anywhere” – WORA) Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD &

Windows Ngoài ra, một số công ty, tổ chức cũng như cá nhân khác cũng phát triển môi trường thực thi Java cho những hệ điều hành khác như BEA, IBM, HP Trong đó đáng nói đến nhất là IBM Java Platform hỗ trợ Windows, Linux, AIX & z/OS

Những chi tiết về ngôn ngữ, máy ảo và API của Java được giữ bởi Cộng đồng Java (do Sun quản lý) Java được phát hành vào năm 1994, rồi nó trở nên nổi tiếng khi Netscape tuyên bố tại hội thảo SunWorld năm 1995 là trình duyệt Navigator của họ sẽ hỗ trợ Java Về sau Java được hỗ trợ trên hầu hết các trình duyệt như Internet

Explorer (Microsoft), Firefox (Mozilla), Safari (Apple) Oracle mua lại công ty Sun Microsystems năm 2009 – 2010 Hiện nay Java được sử dụng chủ yếu trên môi trường NetBeans và Oracle

Các đặc trưng của ngôn ngữ Java:

 Đơn giản, hướng đối tượng và quen thuộc

 Mạnh mẽ và an toàn

 Kiến trúc trung lập và di động, độc lập với phần cứng và hệ điều hành

 Thực thi với hiệu suất cao

 Dịch ra bytecode, phân luồng và năng động

Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng

Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008

Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache

Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng

700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt

Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác

Sơ đồ kiến trúc của Android gồm 4 lớp thành phần, được mô tả như ở hình 1.10

Hình 1.10 Sơ đồ kiến trúc của Android

Các thành phần (component) cơ bản tạo nên một ứng dụng Android được chia thành 6 loại: Activity, Service, Content Provider, Intent, Broadcast Receiver và Notification Nắm bắt được các thành phần này rất cần thiết cho việc lập trình

 Activity: được hiểu như khái niệm Window (cửa sổ hay Form) trong hệ điều hành Windows Khi khởi động một ứng dụng, bao giờ cũng có một Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác

Một activity có thể mang nhiều dạng khác nhau: một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với ActivityGroup)

 Service: thành phần chạy ẩn của Android Service được sử dụng để update dữ liệu, đưa ra các cảnh báo (notification) và không bao giờ hiển thị cho người dùng thấy

Ví dụ, khi người dùng yêu cầu phát một bài nhạc, sẽ có một Service chạy bên dưới để phát bài nhạc Khi người dùng download một tập tin, sẽ có một Serive thực hiện tác vụ download

 Content Provider: là kho dữ liệu chia sẻ, được dùng để quản lý và chia sẽ dữ liệu giữa các ứng dụng

Ví dụ, thông tin người dùng lưu trong contact, dữ liệu lưu trữ trên SQL Lite, dữ liệu lưu trữ trong các tập tin

 Intent: được sử dụng để truyền các thông báo nhằm khởi tạo một Activity hoặc Service để thực hiện công việc người dùng mong muốn

Ví dụ, khi mở một trang web, người dùng sẽ gửi một intent đi để tạo một Activity mới hiển thị trang web đó

 Broadcast Receiver: là thành phần thu nhận các intent từ bên ngoài gửi tới

Ví dụ, khi viết một chương trình thay thế cho phần gọi điện thoại mặc định của Android, khi đó, người dùng cần 1 Broadcast Receiver để nhận các intent là các cuộc gọi đến

 Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động

Activity, Service, Broadcast Receiver và Content Provider là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong file AndroidManifest.xml

PHƯƠNG PHÁP SVM

Tổng quan về phương pháp SVM

SVM được nghiên cứu từ những năm của thập niên 1960 với những công trình của Vapnik và Lerner (1963), Vapnik và Chervonenkis (1964) Cơ sở của SVM dựa trên nền tảng của lý thuyết học thống kê và lý thuyết chiều Vapnik – Chervonenkis (VC) đã được phát triển qua 3 thập kỷ bởi Vapnik và Chervonenkis [65], [66] Lý thuyết này bắt đầu có những bước phát triển mạnh mẽ về mặt ứng dụng kể từ những năm cuối của thập niên 1990 (Burges, 1996 [67]; Osuma, 1997 [68]; Platt, 1998 [69]) và từ đó đến nay nó đã trở thành một công cụ khá mạnh trong nhiều lĩnh vực như: nhận dạng chữ viết [10], [11], [55], nhận dạng mặt người [68]

Trong những năm gần đây, SVM được biết đến như một hướng tiếp cận phân lớp hiệu quả và đang được áp dụng rộng rãi trong nhiều ứng dụng thực tế Ưu điểm của SVM là khả năng phân lớp với độ chính xác cao, điều này được đảm bảo bởi các tính chất của siêu phẳng tối ưu và cách sử dụng hàm nhân Tuy nhiên, tốc độ phân lớp của SVM bị đánh giá là chậm hơn so với các phương pháp phân lớp khác Trong quá trình phân lớp, SVM phải duyệt qua tất cả các vector tựa để so sánh với mẫu cần nhận dạng, khi số vector tựa tăng thì tốc độ phân lớp cũng giảm xuống tương ứng

Các thuật toán huấn luyện SVM [65], [66] được thực hiện theo ý tưởng sau: tìm siêu phẳng tối ưu trong không gian đặc trưng để cực đại khoảng cách giữa hai lớp mẫu huấn luyện trong bài toán phân lớp nhị phân Như vậy, việc huấn luyện SVM tương đương với việc giải bài toán tối ưu với số lượng các biến là 𝑙 và số các tham số là 𝑙 2 , trong đó 𝑙 là số lượng mẫu huấn luyện Điều này dẫn đến bài toán trở nên phức tạp hơn trong cả hai mặt: không gian nhớ để lưu trữ và độ phức tạp tính toán Hơn nữa, siêu phẳng tối ưu lại nằm trong không gian đặc trưng với số chiều cao hơn dựa trên cơ sở lựa chọn hàm nhân Mà việc lựa chọn hàm nhân phù hợp cho từng ứng dụng cụ thể buộc người sử dụng SVM phải thử nghiệm nhiều lần huấn luyện với các loại hàm nhân khác nhau tương ứng với các giá trị tham số khác nhau của chúng Mặt khác, mục đích của việc huấn luyện SVM là lọc ra các mẫu huấn luyện có tham gia vào việc tạo siêu phẳng đồng thời loại bỏ các mẫu không liên quan, các mẫu có tham gia tạo ra siêu phẳng được gọi là các vector tựa (SV - Support Vector)

Có nhiều thuật toán huấn luyện SVM, các thuật toán chặt khúc và thuật toán phân rã [70] đã phân tích bài toán quy hoạch toàn phương (QP - Quadratic Programing) ban đầu thành một dãy các bài toán QP nhỏ hơn Các thuật toán này đã chứng tỏ rằng có thể giải các bài toán với kích thước vượt quá khả năng lưu trữ của bộ nhớ máy tính Thuật toán SMO [71] có thể xem là trường hợp cá biệt của thuật toán phân rã, trong mỗi lần lặp SMO giải một bài toán QP với kích thước là hai bằng giải pháp phân tích, vì vậy không cần phải giải bài toán tối ưu Các thuật toán này đã được cài đặt trong hầu hết các phần mềm SVM mã nguồn mở hiện nay như SVM light [55], LIBSVM [72], SVMTorch [73] và HeroSvm [74]

Các phần tiếp theo của chương 2 sẽ nghiên cứu chi tiết những vấn đề cơ bản của SVM.

SVM tuyến tính

SVM đầu tiên được xây dựng thông qua bài toán phân lớp nhị phân Bài toán phân lớp nhị phân được phát biểu như sau: Cho tập dữ liệu huấn luyện gồm 𝑙 mẫu

{(𝑥 1 , 𝑦 1 ), , (𝑥 𝑙 , 𝑦 𝑙 )} trong đó 𝑥 𝑖 ∈ 𝑅 𝐷 và 𝑦 𝑖 ∈ {±1}, ∀𝑖 ∈ {1, , 𝑙} Tập dữ liệu này được gọi là khả tách nếu tồn tại một hàm tuyến tính 𝑓(𝑥) = 𝑤 𝑇 𝑥 + 𝑏 để tách tập dữ liệu trên thành hai lớp Có nhiều thuật toán để giải bài toán này, chẳng hạn như thuật toán Perceptron của Rosenblatt [75], thuật toán tách biệt tuyến tính của Fisher

[76], SVM [65] Phần này sẽ trình bày một số ý tưởng cơ bản của SVM cho bài toán phân lớp nhị phân

2.2.1 Siêu phẳng với khoảng cách lề cực đại Định nghĩa 2.1: Khoảng cách đại số của một mẫu huấn luyện (𝑥 𝑖 , 𝑦 𝑖 ) tới siêu phẳng {𝑥 ∈ 𝑅 𝐷 | 𝑓(𝑥) = 𝑤 𝑇 𝑥 + 𝑏 = 0} là δ̂ 𝑓 (𝑥 𝑖 , 𝑦 𝑖 ) = 𝑦 𝑖 (𝑤 𝑇 𝑥 𝑖 + 𝑏) (2.1)

Trong bài toán phân lớp nhị phân, nếu δ̂ 𝑓 (𝑥 𝑖 , 𝑦 𝑖 ) > 0 hàm ý rằng siêu phẳng 𝑓(𝑥) phân lớp chính xác Nếu 𝑦 𝑖 = 1, để 𝑓(𝑥) phân lớp có độ tin cậy và chính xác cao thì cần một khoảng cách đại số càng rộng càng tốt, tức là giải pháp của bài toán luôn mong muốn 𝑓(𝑥 𝑖 ) là số dương càng lớn càng tốt Ngược lại, nếu 𝑦 𝑖 = −1 thì giải pháp của bài toán mong muốn 𝑓(𝑥 𝑖 ) là số âm càng lớn càng tốt

Một cách tổng quát, nếu 𝑦 𝑖 (𝑤 𝑇 𝑥 𝑖 + 𝑏) > 0 thì việc phân lớp trên mẫu (𝑥 𝑖 , 𝑦 𝑖 ) là chính xác Vì vậy, một khoảng cách đại số rộng thể hiện việc phân lớp chính xác và đáng tin cậy Tuy nhiên đối với phân lớp tuyến tính, khoảng cách đại số chưa phải là một thước đo độ tin cậy tốt Chẳng hạn như nếu thay 𝑤 bởi 2𝑤 và 𝑏 bởi 2𝑏 thì hàm quyết định phân lớp cũng không thay đổi vì sign(2𝑤 𝑇 𝑥 + 2𝑏) = sign(𝑤 𝑇 𝑥 + 𝑏)

Bằng cách thay đổi tỷ lệ của w và b, có thể tạo ra khoảng cách đại số với độ rộng tùy ý mà không làm thay đổi kết quả của việc phân lớp Vì vậy, có thể đặt ||𝑤|| 2 = 1, tức là thay (𝑤, 𝑏) bằng ( 𝑤

||𝑤|| 2 ) Trong trường hợp này, khoảng cách đại số trở thành khoảng cách hình học, đây chính là khoảng cách Euclide từ một điểm tới siêu phẳng Định nghĩa 2.2: Khoảng cách hình học của một mẫu huấn luyện (𝑥 𝑖 , 𝑦 𝑖 ) tới siêu phẳng {𝑥 ∈ 𝑅 𝐷 | 𝑓(𝑥) = 𝑤 𝑇 𝑥 + 𝑏 = 0} là δ 𝑓 (𝑥 𝑖 , 𝑦 𝑖 ) =𝑦 𝑖 (𝑤 𝑇 𝑥 𝑖 + 𝑏)

||𝑤|| 2 (2.2) Định nghĩa 2.3: Khoảng cách lề của một tập huấn luyện 𝑆 = {(𝑥 𝑖 , 𝑦 𝑖 )} 𝑖=1 𝑙 tới siêu phẳng {𝑥 ∈ 𝑅 𝐷 | 𝑓(𝑥) = 𝑤 𝑇 𝑥 + 𝑏 = 0} là khoảng cách hình học nhỏ nhất của tất cả các mẫu huấn luyện tới siêu phẳng: δ 𝑓 = min

Hình 2.1 Siêu phẳng tách tuyến tính Ý tưởng chính của SVM là tìm siêu phẳng phân cách với khoảng cách lề cực đại:

𝑓 δ 𝑓 (2.4) tức là tìm siêu phẳng (H): 𝑤 𝑇 𝑥 + 𝑏 = 0 và hai siêu phẳng (H1): 𝑤 𝑇 𝑥 + 𝑏 = +1, (H2): 𝑤 𝑇 𝑥 + 𝑏 = −1 song song với (H) sao cho khoảng cách giữa (H1) và (H2) đạt cực đại (hình 2.1)

Trong hình 2.2, giả sử các vùng A - và A + là các vùng nhận được sau khi huấn luyện phân lớp Như vậy, với các mẫu đầu vào nằm trong phạm vi đã được học (vùng A - và A + ) thì tất nhiên được phân lớp đúng cho dù đó là phân lớp tuyến tính thông thường hay SVM Tuy nhiên, với một mẫu đầu vào nằm ngoài phạm vi được học (vùng B - và B + ) thì máy phân lớp tuyến tính thông thường có thể phân lớp sai nhưng SVM thì vẫn phân lớp đúng Bằng trực giác có thể thấy rằng máy phân lớp với khoảng cách lề càng lớn thì khả năng phân lớp càng chính xác

Hình 2.2 So sánh hiệu quả phân lớp giữa máy học tuyến tính với SVM

Cụ thể hơn, trong hình 2.3 cho mẫu huấn luyện (𝑥, 𝑦), tạo ra các mẫu cần phân lớp theo công thức (𝑥 + 𝛥𝑥, 𝑦), trong đó 𝛥𝑥 được giới hạn bởi 𝑟 > 0, giả sử tất cả các mẫu cần phân lớp đều có nhiễu so với các mẫu huấn luyện Nếu siêu phẳng có khoảng cách lề δ và giới hạn nhiễu 𝑟 < δ thì siêu phẳng vẫn tách được chính xác các mẫu bị nhiễu Điều này giải thích tại sao siêu phẳng với khoảng cách lề cực đại có khả năng phân lớp tốt nhất

Hình 2.3 Siêu phẳng tách hai lớp ‘o’ và ‘+’

2.2.2 Tìm siêu phẳng tối ưu Đối với dữ liệu khả tách tuyến tính, thuật toán huấn luyện đơn giãn chỉ là tìm một hàm tuyến tính 𝑓(𝑥) = 𝑤 𝑇 𝑥 + 𝑏 với một khoảng cách lề lớn nhất có thể Không mất tính tổng quát, giả sử tất cả các mẫu huấn luyện đều có khoảng cách đại số lớn hơn hoặc bằng hằng số δ = 1, tức là

𝑤 𝑇 𝑥 𝑖 + 𝑏 ≥ +1, với 𝑦 𝑖 = +1 (2.5) 𝑤 𝑇 𝑥 𝑖 + 𝑏 ≤ −1, với 𝑦 𝑖 = −1 (2.6) hoặc viết gọn hơn:

𝑦 𝑖 (𝑤 𝑇 𝑥 𝑖 + 𝑏) ≥ 1, 𝑖 = 1 𝑙 (2.7) Khoảng cách của một điểm nằm trên (H1) hoặc (H2) tới (H) là |𝑤

||𝑤|| 2 nên khoảng cách giữa (H1) và (H2) là 2

||𝑤|| 2 Vì vậy, có thể tìm siêu phẳng với khoảng cách lề cực đại bằng cách cực tiểu ||𝑤|| 2 = 𝑤 𝑇 𝑤 sao cho thỏa mãn ràng buộc (2.7)

Từ đó, bài toán tìm siêu phẳng tối ưu có thể phát biểu lại như sau: min𝑤,𝑏

Kết quả của việc giải bài toán (2.8) sẽ thu được những mẫu nằm trên (H1) và (H2)

Các mẫu này được gọi là các vector tựa , chỉ có chúng mới tham gia vào việc xác định siêu phẳng tối ưu, còn các mẫu khác có thể loại bỏ

Máy phân lớp với khoảng cách lề cực đại ở phần trên chỉ áp dụng được đối với các tập dữ liệu khả tách tuyến tính, còn thực tế thì thường gặp các tập dữ liệu không khả tách tuyến tính Để xây dựng một máy phân lớp với khoảng cách lề cực đại phù hợp với các loại dữ liệu bị nhiễu, cần phải nới lõng ràng buộc của (2.9) Nghĩa là không ép buộc dữ liệu phải nằm hoàn toàn về hai phía của (H1) và (H2) (hình 2.4) Để thực hiện điều này, thêm vào các biến trể (slack variables) không âm 𝜉 𝑖 ≥ 0 sao cho:

𝜉 𝑖 ≥ 0, ∀𝑖 (2.11) và hàm mục tiêu ở trong (2.8) được thay bằng hàm mục tiêu có dạng hàm phạt [1]:

(2.12) trong đó C > 0 là một tham số tùy chọn (C càng lớn thì lượng phạt lỗi càng cao) Với 𝑚 ≥ 1, việc tìm siêu phẳng tối ưu sẽ có dạng bài toán quy hoạch lồi, đặc biệt với 𝑚 = 1 thì ta có bài toán quy hoạch toàn phương và trong trường hợp này bài toán tìm siêu phẳng tối ưu có thêm một lợi thế nữa là cả 𝜉 𝑖 lẫn các nhân tử Lagrange đều không xuất hiện trong bài toán đối ngẫu của Wolfe [78] Khi đó, bài toán tìm siêu phẳng tối ưu được phát biểu lại như sau: min𝑤,𝑏

(2.13) Thông thường chọn 𝑚 = 1, như vậy bài toán tối ưu trở thành: min𝑤,𝑏

(2.14) sao cho thỏa mãn ràng buộc (2.10) và (2.11)

2.2.4 Giải bài toán tối ưu Để thuận tiện cho việc trình bày, bài boán tìm siêu phẳng tối ưu được viết lại như sau: min𝑤,𝑏

Lý thuyết Lagrange thường được sử dụng để giải các bài toán tối ưu lồi nhưng chỉ với các ràng buộc phương trình Trong khi đó, các ràng buộc tối ưu của (2.15) chứa các ràng buộc bất phương trình, vì vậy cần biến đổi bài toán này thành một dạng khác để giải một cách dễ dàng hơn Phương pháp giải bài toán tối ưu lồi có ràng buộc [70] được trình bày tóm tắt như sau: Định nghĩa 2.4: Cho bài toán tối ưu với tập lồi 𝜴 ⊆ 𝑹 𝐷 min 𝑓(𝑤), 𝑤 ∈ 𝛀 (2.18) sao cho 𝑔 𝑖 (𝑤) ≤ 0, 𝑖 = 1, , 𝑘 (2.19)

Hàm Lagrange tổng quát gắn với bài toán trên là hàm có dạng

(2.21) Định nghĩa 2.5: Bài toán Lagrange đối ngẫu của bài toán gốc (2.18) là bài toán có dạng max 𝜃(𝛼, 𝛽) (2.22) sao cho 𝛼 ≥ 0 (2.23) trong đó 𝜃(𝛼, 𝛽) = 𝑖𝑛𝑓

Mối quan hệ giữa bài toán gốc và bài toán đối ngẫu là giá trị hàm mục tiêu tại đáp án tối ưu trong bài toán đối ngẫu bị chặn trên bởi giá trị hàm mục tiêu tại đáp án tối ưu trong bài toán gốc:

SVM phi tuyến

Hình 2.5 Ánh xạ dữ liệu vào không gian đặc trưng

Trong các ứng dụng thực tế, thông thường các tập dữ liệu không khả tách tuyến tính, vì vậy đòi hỏi các máy huấn luyện phải sử dụng các hàm phân lớp mạnh hơn so với các hàm tuyến tính Phần này sẽ mở rộng bài toán phân lớp SVM trong trường hợp tập dữ liệu huấn luyện không khả tách tuyến tính

Với tập dữ liệu không khả tách tuyến tính, có thể ánh xạ chúng sang một không gian khác với số chiều cao hơn sao cho trong không gian mới này tập dữ liệu sẽ khả tách tuyến tính (hình 2.5)

Cho ánh xạ biến đổi: Φ: 𝑅 𝐷 → ℋ 𝑥 ⟼ Φ(𝑥) trong đó 𝑅 𝐷 là không gian đầu vào và ℋ là không gian có số chiều lớn hơn 𝐷 (chiều của ℋ cũng có thể vô hạn) Đối với dữ liệu không khả tách tuyến tính trong không gian 𝑅 𝐷 thì mục tiêu của bài toán là tìm cách ánh xạ chúng sang không gian ℋ sao cho ở trong không gian này chúng khả tách tuyến tính, ℋ được gọi là không gian đặc trưng Như vậy, hàm mục tiêu 𝐿 𝐷 có thể viết lại:

Một vấn đề nảy sinh là làm thế nào để xử lý độ phức tạp tính toán xuất hiện trong (2.42) khi tích vô hướng Φ(𝑥 𝑖 )Φ(𝑥 𝑗 ) có số chiều rất lớn? Để giải quyết vấn đề này, một giải pháp hiệu quả khác là thay thế tích vô hướng Φ(𝑥 𝑖 )Φ(𝑥 𝑗 ) bằng một hàm nhân (kernel) 𝐾 nào đó, giả sử Φ(𝑥 𝑖 )Φ(𝑥 𝑗 ) = 𝐾(𝑥 𝑖 , 𝑦 𝑖 ) Với giải pháp này thì không cần phải tính trực tiếp tích vô hướng Φ(𝑥 𝑖 )Φ(𝑥 𝑗 ) mà chỉ cần tính thông qua hàm nhân 𝐾(𝑥 𝑖 , 𝑦 𝑖 )

Bằng cách thay thế tích vô hướng Φ(𝑥 𝑖 )Φ(𝑥 𝑗 ) bởi một hàm nhân thích hợp, bài toán hoàn toàn có thể thực hiện được thông qua ánh xạ phi tuyến từ không gian đầu vào sang không gian đặc trưng với số chiều cao hơn và việc tìm khoảng cách lề cực đại sẽ được thực hiện gián tiếp trong không gian đặc trưng mà không cần phải xác định rõ ánh xạ Φ

Vai trò của hàm nhân trong việc tìm siêu phẳng tối ưu là để tính tích vô hướng giữa hai vector trong không gian đặc trưng Vì vậy, các thuật toán huấn luyện SVM được thực hiện gián tiếp trong không gian đặc trưng thông qua hàm nhân Một hàm nhân được định nghĩa như sau: Định nghĩa 2.6: Cho ánh xạ Φ từ không gian đầu vào 𝑋 vào không gian đặc trưng

𝐹 ∀𝑥, 𝑦 ∈ 𝑋, một hàm nhân 𝐾 có dạng

Vấn đề đặt ra ở đây là làm thế nào để nhận biết một hàm có phải là hàm nhân hay không? Điều kiện Mercer sẽ cho biết một hàm cho trước có phải là hàm nhân hay không: Định lý 2.2: (Định lý Mercer) Để đảm bảo cho một hàm liên tục đối xứng 𝐾(𝑥, 𝑦) trong không gian 𝐿 2 (𝐶) có một khai triển

(2.44) với các hệ số 𝑎 𝑘 > 0 (tức 𝐾(𝑥, 𝑦) là tích vô hướng trong không gian đặc trưng), thì điều kiện cần và đủ là

≥ 0 (2.45) với mọi 𝑔 ∈ 𝐿 2 (𝐶) (𝐶 là một tập compact của 𝑅 𝐷 )

Sau đây là một số hàm nhân thông dụng:

 Hàm nhân Gauss (RBF - Radial Basic Function):

Như vậy, bài toán tìm siêu phẳng tối ưu trong không gian đặc trưng sẽ được giải thông qua bài toán tối ưu sau: max

Và hàm quyết định phân lớp cuối cùng có dạng:

Lý thuyết chiều VC

Các phần trên đã thảo luận về giải pháp tìm siêu phẳng tối ưu với khoảng cách lề cực đại bằng cách sử dụng hàm nhân trong một không gian đặc trưng với số chiều cao hơn Vấn đề đặt ra trong phần này là tại sao siêu phẳng tối ưu phân lớp tốt hơn trong không gian đặc trưng với số chiều cao hơn? Cụ thể hơn, tại sao một tập dữ liệu không khả tách tuyến tính trong không gian đầu vào lại trở nên khả tách tuyến tính trong không gian đặc trưng?

Xét họ hàm {𝑓(𝑥, 𝛼)} (mỗi 𝛼 tương ứng với một hàm cụ thể) và tập dữ liệu 𝑆 gồm 𝑙 điểm {𝑥 𝑖 , 𝑦 𝑖 } 𝑖=1, ,𝑙 với 𝑥 𝑖 ∈ 𝑅 𝐷 và 𝑦 𝑖 ∈ {−1, +1} Mục đích của SVM là xây dựng máy huấn luyện M để xác định các hệ số 𝛼 sao cho với mỗi mẫu 𝑥 𝑖 thì M sẽ cho một kết quả là 𝑓(𝑥 𝑖 , 𝛼) Tuy nhiên, kết quả huấn luyện của máy M tại 𝑥 𝑖 là

𝑓(𝑥 𝑖 , 𝛼) có thể bị sai lệch so với nhãn 𝑦 𝑖 Đại lượng 1

2|𝑦 𝑖 − 𝑓(𝑥 𝑖 , 𝛼)| được gọi là tổn thất (hay độ lệch) của máy M tại 𝑥 𝑖

2.4.1 Cực tiểu hóa rủi ro cấu trúc

Theo lý thuyết xác suất, tập dữ liệu 𝑆 có tất cả 2 𝑙 cách gán nhãn, giả sử việc gán nhãn tuân theo một phân bố xác suất 𝑃(𝑥, 𝑦) nào đó Khi đó, gọi

2∫|𝑦 − 𝑓(𝑥, 𝛼)| 𝑑𝑃(𝑥, 𝑦) (2.50) là rủi ro kỳ vọng, rủi ro thực tế (Actual Risk) hay rủi ro cấu trúc (Structural Risk) để nhấn mạnh điều mà bài toán thực sự quan tâm

Vấn đề đặt ra là xác định 𝛼 để 𝑅(𝛼) đạt cực tiểu

2.4.2 Cực tiểu hóa rủi ro thực nghiệm

Vì 𝑅(𝛼) không thể tính được một cách trực tiếp vì chưa biết 𝑃(𝑥, 𝑦), do đó, phải cố gắng ước lượng hàm 𝑓(𝑥, 𝛼) một cách tốt nhất dựa trên các thông tin đã biết, nghĩa là phải dựa trên tập dữ liệu huấn luyện 𝑆 đã cho và cách lựa chọn hàm 𝑓(𝑥, 𝛼) Thông thường, xấp xỉ việc cực tiểu hoá (2.50) bằng việc cực tiểu hoá rủi ro thực nghiệm:

(2.51) Vapnik (1995) [65] đã chứng minh rằng:

(2.52) trong đó, 0 ≤ 𝜂 ≤ 1, 𝑙 là số mẫu huấn luyện, ℎ ≥ 0 và được gọi là chiều VC

Trong (2.52) chỉ còn một giá trị chưa biết đó là ℎ, nếu biết được ℎ thì dễ dàng tính được vế phải Vì vậy ℎ là một trong những giá trị dùng để đánh giá khả năng phân lớp của họ hàm {𝑓(𝑥, 𝛼)} Vế phải của (2.52) được gọi là cận rủi ro và phần căn thức được gọi là độ tin cậy VC

Như vậy, việc giảm giá trị của vế phải của (2.52) sẽ làm giảm giá trị của 𝑅(𝛼)

Trên thực tế, không thể tính đuợc chính xác 𝑅(𝛼), do đó mọi cố gắng của bài toán đều tập trung vào việc cực tiểu hóa cận rủi ro Theo (2.52), khi ℎ càng bé hay 𝑙 càng lớn thì giá trị độ tin cậy VC càng nhỏ

2.4.3 Cực tiểu hóa cận rủi ro

Vì độ tin cậy VC là hàm đơn điệu tăng theo ℎ nên để cực tiểu độ tin cậy VC, cần phải cực tiểu ℎ

Hình 2.6 Độ tin cậy VC tăng theo ℎ

Xét sự biến thiên của độ tin cậy VC theo ℎ/𝑙 với độ tin cậy được chọn là 95%

(𝜂 = 0.05) và tập mẫu học 𝑙 = 10.000 mẫu, ta có đồ thị ở hình 2.6 Cũng theo đồ thị trên, khi ℎ/𝑙 > 0.37 thì độ tin cậy VC lớn hơn 1, điều này có nghĩa là bất đẳng thức (2.52) đánh giá rủi ro trở nên lỏng lẻo hơn

Trong bất đẳng thức đánh giá rủi ro (2.52) có ba thành phần: độ tin cậy VC phụ thuộc vào ℎ (chiều VC của lớp hàm được chọn), còn rủi ro thực tế và rủi ro thực nghiệm lại phụ thuộc vào một hàm cụ thể nào đó được chọn ra trong quá trình huấn luyện Cần chỉ ra một tập con các hàm được chọn sao cho cận rủi ro đối với những hàm này đạt cực tiểu Để thực hiện việc này, chia họ hàm thành các tập con lồng nhau (hình 2.7), với mỗi tập con ta phải tính được ℎ hoặc giới hạn của ℎ

Hình 2.7 Họ hàm được chia làm các tập con theo chiều VC tăng dần

Việc cực tiểu hóa rủi ro cấu trúc sau đó được thực hiện bằng cách xác định tập con của họ hàm có cận rủi ro đạt cực tiểu Điều này được thực hiện bằng cách huấn luyện các máy khác nhau (mỗi máy tương ứng với một tập con các hàm) theo hướng cực tiểu hóa rủi ro thực nghiệm, sau đó chọn các máy đã được huấn luyện có tổng rủi ro thực nghiệm và độ tin cậy VC nhỏ nhất

Sau đây là một số định nghĩa và định lý quan trọng về chiều VC: Định nghĩa 2.7: Đối với mỗi cách gán nhãn trong số 2 𝑙 cách gán nhãn của tập dữ liệu 𝑆, nếu tồn tại một 𝛼 sao cho 𝑓(𝑥 𝑖 , 𝛼) = 𝑦 𝑖 , ∀𝑖 = 1, , 𝑙 thì ta nói tập dữ liệu 𝑆 tách được bởi họ hàm {𝑓(𝑥, 𝛼)} Định nghĩa 2.8:[65] Chiều VC (hay 𝑑𝑖𝑚𝑉𝐶) của một họ hàm {𝑓(𝑥, 𝛼)} đối với tập dữ liệu 𝑆 là số lượng phần tử lớn nhất trong một tập con của 𝑆 tách được bởi họ hàm

Nếu 𝑑𝑖𝑚𝑉𝐶 = ℎ thì tồn tại ít nhất một tập con ℎ điểm của tập 𝑆 tách được bởi họ hàm {𝑓(𝑥, 𝛼)} Tuy nhiên, không phải mọi tập có không quá ℎ điểm đều có thể tách được bởi họ hàm {𝑓(𝑥, 𝛼)} Ví dụ, xét tập 𝑆 trong 𝑅 2 và họ hàm {𝑓(𝑥, 𝛼)} là tập các đường thẳng, nếu 𝑑𝑖𝑚𝑉𝐶 = 3 thì không phải với 3 điểm nào cũng tách được bởi họ các đường thẳng (hình 2.8)

Hình 2.8 Không phải 3 điểm nào cũng tách được bởi đường thẳng Định lý 2.3:[77] Cho 𝑘 điểm {𝑥 1 , 𝑥 2 , , 𝑥 𝑘 } trong không gian 𝑅 𝑛 Các điểm này tách được bởi họ hàm các siêu phẳng nếu và chỉ nếu chúng độc lập tuyến tính, nghĩa là

𝑗≠𝑡 𝑘 là độc lập tuyến tính

Hệ quả 2.3.1: 𝐷𝑖𝑚𝑉𝐶 của họ các siêu phẳng trong không gian 𝑅 𝑛 là 𝑛 + 1

Vì 𝑑𝑖𝑚𝑅 𝑛 = 𝑛 nên trong 𝑅 𝑛 luôn có một hệ vector độc lập tuyến tính chứa 𝑛 + 1 phần tử và không thể có nhiều hơn thế Theo định lý 2.3 suy ra điều phải chứng minh

Ví dụ: Trong không gian 𝑅 2 , 𝑑𝑖𝑚𝑉𝐶 của họ các đường thẳng là 3 (hình 2.9)

Hình 2.9 Với 3 điểm không thẳng hàng trong 𝑅 2 thì luôn tách được bởi đường thẳng

Các thuật tuấn huấn luyện SVM

Trong số những thuật toán thông dụng được thiết kế để huấn luyện SVM, có ba thuật toán kinh điển đã được cung cấp trong hầu hết ứng dụng SVM: thuật toán chặt khúc, thuật toán phân rã [77] và thuật toán SMO [69] Ý tưởng chính của các thuật toán này có thể trình bày tóm tắt như sau:

Thuật toán này bắt đầu với một tập con bất kỳ (chunk) của tập dữ liệu huấn luyện, sau đó huấn luyện SVM theo một phương án tối ưu trên chunk dữ liệu vừa chọn Tiếp đến, thuật toán giữ lại các vector tựa (các mẫu có 𝛼 𝑖 > 0) từ chunk sau khi đã loại bỏ các phần tử khác (tương ứng với 𝛼 𝑖 = 0) và dùng các vector tựa này để kiểm tra các phần tử trong phần còn lại của tập dữ liệu Phần tử nào vi phạm điều kiện KKT thì được bổ sung vào tập các vector tựa để tạo ra chunk mới Công việc này được lặp đi lặp lại, việc khởi tạo lại α cho mỗi bài toán con mới phụ thuộc vào giá trị đầu ra của trạng thái trước đó và tiếp tục tối ưu bài toán con mới với các tham số tối ưu đã được lựa chọn Thuật toán sẽ dừng lại khi thỏa mãn điều kiện tối ưu Chunk của dữ liệu tại thời điểm đang xét thường được hiểu như một tập làm việc (working set) Kích thước của tập làm việc luôn thay đổi, nhưng cuối cùng nó bằng số lượng 𝛼 𝑖 ≠ 0 (bằng số lượng vector tựa) Phương pháp này được sử dụng với giả thiết rằng ma trận Gram dùng để lưu tích vô hướng của từng cặp các vector tựa phù hợp với kích thước bộ nhớ (có thể tính lại ma trận Gram bất cứ lúc nào khi thấy cần thiết, nhưng điều này sẽ làm giảm tốc độ huấn luyện) Trong thực nghiệm, có thể xẩy ra trường hợp số lượng vector tựa quá lớn, làm cho ma trận Gram vượt quá khả năng lưu trữ của máy tính

Thuật toán này khắc phục nhược điểm của thuật toán chặt khúc bằng cách cố định kích thước của bài toán con (kích thước của ma trận Gram) Vì vậy tại mọi thời điểm, một phần tử mới được bổ sung vào tập làm việc thì một phần tử khác bị loại ra Điều này cho phép SVM có khả năng huấn luyện với tập dữ liệu lớn Tuy nhiên, thực nghiệm cho thấy phương pháp này hội tụ rất chậm

Trong thực nghiệm, có thể chọn mỗi lần vài mẫu để bổ sung vào hoặc loại bỏ ra khỏi bài toán con để tăng tốc độ hội tụ Thuật toán này được trình bày tóm tắt như sau:

- Tập 𝑆 gồm 𝑙 mẫu huấn luyện {(𝑥 𝑖 , 𝑦 𝑖 )} 𝑖=1, ,𝑙 - Kích thước của tập làm việc 𝐵 là 𝑚

- Chọn tập làm việc 𝐵 với kích thước 𝑚;

- Giải bài toán tối ưu cục bộ trên 𝐵;

Until ;

SMO là một thuật toán đơn giản để giải bài toán QP một cách nhanh chóng mà không cần lưu trữ ma trận Gram và cũng không cần phải giải bài toán QP ở mỗi bước

Thuật toán này phân rã bài toán QP tổng quát thành các bài toán con, sử dụng định lý của Osuma [68] để đảm bảo sự hội tụ

Khác với các thuật toán trước, SMO chỉ giải các bài toán tối ưu với kích thước nhỏ nhất Tại mỗi bước lặp, SMO chọn hai nhân tử Lagrange để giải, tìm các giá trị tối ưu cho hai nhân tử này và cập nhật lại các tham số của SVM Ưu điểm của thuật toán này là có thể tối ưu hai nhân tử Lagrange bằng giải pháp phân tích, vì vậy không cần phải giải bài toán QP Hơn nữa, SMO không đòi hỏi lưu trữ ma trận Gram, vì vậy các bài toán huấn luyện SVM với số lượng mẫu lớn có thể lưu trữ ở bộ nhớ trong của một một máy tính cá nhân bình thường

Thuật toán SMO thực hiện hai công việc chính: Giải bài toán tối ưu cho hai nhân tử Lagrange bằng phương pháp phân tích và chọn hai nhân tử để tối ưu bằng phương pháp lựa chọn heuristic

2.5.3.1 Tối ưu hai nhân tử Lagrange

Không mất tính tổng quát, giả sử đang tối ưu hai phần tử 𝛼 𝑖 , 𝛼 𝑗 từ một tập các phương án trước đó: 𝛼 1 𝑜𝑙𝑑 , 𝛼 2 𝑜𝑙𝑑 , 𝛼 3 , , 𝛼 𝑙 (để khởi tạo, có thể đặt 𝛼 𝑜𝑙𝑑 = 0)

𝑦 1 𝛼 1 + 𝑦 2 𝛼 2 = 𝑦 1 𝛼 1 𝑜𝑙𝑑 + 𝑦 2 𝛼 2 𝑜𝑙𝑑 = 𝐶𝑜𝑛𝑠𝑡 (2.53) Cố định các 𝛼 𝑖 khác, hàm mục tiêu trở thành hàm hai biến và có thể được viết lại:

(2.54) Đặt 𝐾 11 = 𝑥 1 𝑇 𝑥 1 , 𝐾 22 = 𝑥 2 𝑇 𝑥 2 , 𝐾 12 = 𝑥 1 𝑇 𝑥 2 và 𝜂 = 2𝐾 12 – 𝐾 11 – 𝐾 22 (tính toán chi tiết có thể tham khảo ở [69]) Tiếp tục cố định 𝛼 1 , hàm mục tiêu sẽ trở thành hàm một biến theo 𝛼 2 :

𝐿 𝐷 =12𝜂𝛼 2 2 + (𝑦 2 (𝐸 1 𝑜𝑙𝑑 − 𝐸 2 𝑜𝑙𝑑 ) − 𝜂𝛼 2 𝑜𝑙𝑑 )𝛼 2 + 𝐶𝑜𝑛𝑠𝑡 (2.55) trong đó 𝐸 𝑖 𝑜𝑙𝑑 = ∑ 𝑙 𝑘=1 𝑦 𝑘 𝛼 𝑘 𝑜𝑙𝑑 𝐾(𝑥 𝑘 , 𝑥 𝑖 ) + 𝑏 − 𝑦 𝑖 Vì hàm mục tiêu chứa 𝐸 1 𝑜𝑙𝑑 −𝐸 2 𝑜𝑙𝑑 nên không cần phải tính 𝑏 trong mỗi bước lặp

Lấy đạo hàm cấp một và cấp hai theo 𝛼 2 :

Cho đạo hàm cấp một bằng 0, ta có:

Vì 𝛼 2 cũng phải thỏa mãn ràng buộc 0 ≤ 𝛼 2 ≤ 𝐶 nên giá trị mới của 𝛼 2 phải cắt xén để đảm bảo một đáp án khả thi:

𝐿𝑜𝑤 = max(0, 𝛼 1 𝑜𝑙𝑑 + 𝛼 2 𝑜𝑙𝑑 − 𝐶) (2.62) 𝐻𝑖𝑔ℎ = min(𝐶, 𝛼 1 𝑜𝑙𝑑 + 𝛼 2 𝑜𝑙𝑑 ) (2.63) Và giá trị 𝛼 1 tính được từ 𝛼 2 như sau:

2.5.3.2 Chọn hai nhân tử để tối ưu theo phương pháp heuristic

Việc chọn hai nhân tử 𝛼 𝑖 , 𝛼 𝑗 cho bài toán tối ưu trong thuật toán SMO được thực hiện như sau:

 Ở vòng lặp ngoài chọn 𝛼 𝑖 , vòng lặp trong chọn 𝛼 𝑗 sao cho |𝐸 𝑗 − 𝐸 𝑖 | cực đại

 Ở vòng lặp ngoài, luân phiên duyệt qua tất cả các mẫu và các vector tựa (các mẫu có 0 < 𝛼 𝑖 < 𝐶) (ưu tiên duyệt qua các vector tựa, nếu không tìm thấy mới duyệt toàn bộ mẫu) để chọn ra một mẫu vi phạm điều kiện KKT

 Với 𝛼 𝑖 được chọn, vòng lặp trong tìm kiếm một mẫu 𝛼 𝑗 sao cho |𝐸 𝑗 − 𝐸 𝑖 | cực đại Đầu tiên nó duyệt qua các vector tựa, nếu không tìm được mới duyệt qua toàn bộ mẫu.

SVM đa lớp

SVM chỉ là bài toán phân lớp nhị phân, tuy nhiên trong nhiều ứng dụng thời gian thực, chẳng hạn như nhận dạng chữ viết tay thì buộc phải giải một bài toán phân nhiều lớp Vì vậy các mô hình SVM đa lớp cũng được nghiên cứu và phát triển để đáp ứng với các dạng bài toán phân nhiều lớp Sau đây là một số chiến lược thường để áp dụng cho bài toán SVM đa lớp:

2.6.1 Chiến lược một chống một (OVO: One – Versus – One)

Chiến lược này được đề xuất bởi Friedman [80], ý tưởng của chiến lược này khá đơn giản: với mỗi cặp lớp, xây dựng một máy phân lớp nhị phân, mỗi máy phân lớp được huấn luyện trên một tập con của tập huấn luyện mà tập con này chỉ chứa các mẫu huấn luyện của 2 lớp Như vậy phải xây dựng tất cả 𝑁×(𝑁−1)

2 máy phân lớp, chúng được kết nối lại với nhau và thông qua phương pháp bỏ phiếu để đánh giá kết quả phân lớp cuối cùng, lớp nào có số phiếu nhiều nhất sẽ được chọn làm kết quả dự đoán Ưu điểm của chiến lược này là tồn tại nhiều mặt phân cách khác nhau cho mỗi cặp lớp Do đó, nếu một mẫu thuộc một lớp bị phân lớp sai thì mẫu đó vẫn còn cơ hội được phân lớp đúng nhờ vào các máy phân lớp còn lại, do đó chiến lược này đạt kết quả phân lớp khá chính xác Chiến lược này được sử dụng trong hầu hết các phần mềm mã nguồn mở như SVM light [55], LIBSVM [72], SVMTorch [73] và HeroSvm [74] Tuy nhiên, để sử dụng chiến lược này trong bài toán phân 𝑁 lớp thì cần phải có

𝑁×(𝑁−1) 2 máy phân lớp, nếu 𝑁 tăng thì số máy phân lớp sẽ tăng lên rất nhanh, điều này sẽ làm cho tốc độ phân lớp giảm đáng kể

2.6.2 Chiến lược một chống phần còn lại (OVR: One – Versus – Rest) Đây là chiến lược đơn giản nhất cho bài toán phân nhiều lớp Gọi 𝑁 là số lớp cần nhận dạng thì chỉ cần xây dựng đúng 𝑁 máy phân lớp nhị phân, một máy cho mỗi lớp Với chiến lược này, máy phân lớp thứ 𝑖 sẽ được huấn luyện trên toàn bộ tập mẫu để phân lớp các thành viên của lớp thứ 𝑖 với tất cả các thành viên của các lớp còn lại

Vì vậy, khi xây dựng các máy phân lớp, các mẫu huấn luyện buộc phải đánh lại nhãn: các thành viên của lớp thứ 𝑖 sẽ được gán nhãn là 1, còn các thành viên của các lớp còn lại sẽ được gán nhãn là −1 Ưu điểm của chiến lược này là số máy phân lớp ít, do đó tốc độ phân lớp nhanh hơn Tuy nhiên, dù số máy phân lớp ít nhưng mỗi lần huấn luyện phân lớp thì toàn bộ tập mẫu đều tham gia huấn luyện, do đó thời gian huấn luyện tăng lên đáng kể

Nhược điểm chính của chiến lược này là nếu một mẫu khi bị phân lớp sai thì sẽ không có cơ hội để thực hiện lại, do đó độ chính xác phân lớp của chiến lược này không cao

2.6.3 Chiến lược phân cấp Ý tưởng của chiến lược này dựa trên cấu trúc phân cấp, sử dụng cây nhị phân

Nút gốc của cây phân lớp là một máy phân lớp nhị phân chia toàn bộ các lớp thành hai nhóm lớp, sau đó tùy đầu ra của máy phân lớp này mà các nút con tiếp tục được phân tách cho tới khi xuống đến nút lá

Chiến lược phân cấp có tốc độ phân lớp nhanh nhất so với hai chiến lược đã nêu trên nhưng nó cũng có một nhược điểm lớn: nếu một mẫu 𝑥 cho trước bị phân lớp sai ở ngay những nút đầu tiên thì chắc chắn kết quả phân lớp sẽ bị sai cho dù có tiếp tục phân lớp xuống đến tận nút lá Vì vậy, chiến lược này thường cho độ chính xác không ổn định bằng hai chiến lược ở trên Chiến lược phân cấp đã được áp dụng trong phần mềm mã nguồn mở DAGSVM [78].

Ứng dụng SVM vào bài toán nhận dạng chữ viết tay rời rạc

Phần này sẽ áp dụng phương pháp phân lớp SVM để xây dựng mô hình nhận dạng chữ viết tay rời rạc (hình 2.10)

Hình 2.10 Mô hình nhận dạng chữ viết tay rời rạc

Sau khi đã khử nhiễu, ảnh được chuẩn hóa về kích thước chuẩn 16 × 16 theo các bước sau:

Bước 1: Nhị phân hóa ảnh

Bước 2: Tìm hình chữ nhật R bé nhất chứa các điểm đen trên ảnh

Bước 3: Lấy vùng ảnh I nằm trong hình chữ nhật R

Bước 4: Chuẩn hóa ảnh I về kích thước chuẩn 16 × 16

Trong tất cả các loại đặc trưng thì đặc trưng ma trận nhị phân là đặc trưng đơn giản và dễ cài đặt nhất Với ảnh đầu vào, sau khi tìm khung bé nhất chứa các điểm đen trên ảnh và chuẩn hóa về kích thước 16 × 16, chuyển sang ảnh nhị phân và biến đổi thành mảng một chiều để làm đặc trưng cho việc huấn luyện và nhận dạng (hình 2.11) Như vậy, đặc trưng được trích chọn đại diện cho mỗi ký tự là một vector 256 chiều

Tiền xử lý Trích chọn đặc trưng

Hình 2.11 Trích chọn đặc trưng ma trận nhị phân

2.7.3 Huấn luyện mô hình và nhận dạng

Trong quá trình cài đặt thực nghiệm, có thể xây dựng các mô hình huấn luyện và nhận dạng theo chiến lược OVR Các máy phân lớp nhị phân được huấn luyện theo thuật toán SMO với nhiều loại hàm nhân và các thông số khác nhau.

XÂY DỰNG MÔ HÌNH NHẬN DẠNG CHỮ VIỆT VIẾT

Trích chọn đặc trưng cho bài toán nhận dạng chữ viết tay

Trong phần này, luận văn sẽ giới thiệu một số phương pháp trích chọn đặc trưng đơn giản nhưng hiệu quả, có thể áp dụng vào cho dữ liệu chữ viết tay rời rạc [10], [11], [12], [82]

Hình 3.1 Trích chọn đặc trưng trọng số vùng [83] Ảnh ký tự được chia thành 𝑁 × 𝑁 vùng (zones) Tổng số điểm đen của mỗi vùng sẽ được chọn để tạo thành các vector đặc trưng Với ảnh có kích thước 16 × 16, chọn 𝑁 = 8, ảnh sẽ được chia thành 64 vùng, tương ứng với 64 đặc trưng

3.1.2 Biểu đồ chiếu (Projection histograms)

Hình 3.2 Trích chọn các biểu đồ chiếu ngang, dọc và 2 đường chéo Ý tưởng cơ bản của phương pháp trích chọn đặc trưng này là chiếu các điểm đen trên ảnh 2 chiều theo các hướng ngang, dọc và hai đường chéo thành một dãy các tín hiệu 1 chiều Ưu điểm của các đặc trưng này là không phụ thuộc vào nhiễu, tuy nhiên nó vẫn phụ thuộc vào độ nghiêng của chữ

3.1.3 Trích chọn theo chu tuyến (Contour Profile)

Hình 3.3 Trích chọn các khối bên ngoài của chữ [83]

Phần được trích chọn là khoảng cách từ biên của khung chứa ảnh tới điểm đen đầu tiên của chữ trên cùng 1 dòng quét Phương pháp trích chọn này mô tả tốt các khối bên ngoài của chữ và cho phép phân biệt một số lượng lớn các ký tự

3.1.4 Trích chọn đặc trưng wavelet Haar

Phần này sử dụng ý tưởng của phương pháp trích chọn đặc trưng wavelet Haar [84], [85] để chọn tập đặc trưng cho mỗi ảnh ký tự đầu vào

Hình 3.4 Quá trình trích chọn đặc trưng

Từ ảnh nhị phân kích thước 2 𝑛 × 2 𝑛 (hình 3.4), quá trình trích chọn đặc trưng được mô tả theo thuật toán sau:

Procedure HaarFeature Input Ma trận vuông (𝐴, 𝑛) cấp 2 𝑛

Output Tập các đặc trưng {𝐹 1 , 𝐹 2 , , 𝐹 2 𝑛 ×2 𝑛 }

2 Tính 𝐹 𝑖 = Tổng các điểm đen trong toàn bộ ma trận (𝐴, 𝑛);

Gọi 𝑆, 𝑆 1 , 𝑆 2 , 𝑆 3 , 𝑆 4 là tổng các điểm đen tương ứng với các khối 𝐴, 𝐴 1 , 𝐴 2 , 𝐴 3 , 𝐴 4 ;

Phương pháp tính nhanh tổng các điểm đen trong trong thuật toán trên có thể tham khảo trong [82]

Mệnh đề (tính bất biến của đặc trưng theo phép biến đổi wavelet): Cho ma trận vuông 𝐴 cấp 2 𝑛 , 𝑛 nguyên dương Theo phương pháp trích chọn đặc trưng của thuật toán HaarFeature thì ma trận 𝐴 bất biến đối với các đặc trưng được trích chọn

Dùng phương pháp quy nạp

Ta chứng minh mệnh đề đúng với 𝑛 = 1 Thật vậy, giả sử 𝑥 1 , 𝑥 2 , 𝑥 3 , 𝑥 4 là bốn phần tử của ma trận 𝐴 vuông cấp 2 Theo phương pháp trích chọn đặc trưng trên ta có hệ phương trình:

| = 1 ≠ 0 do đó hệ phương trình có nghiệm duy nhất Vì vậy, theo cách trích chọn đặc trưng của thuật toán HaarFeature thì ma trận 𝐴 bất biến với 𝑛 = 1

Giả sử mệnh đề đúng với 𝑛 = 𝑘 Ta sẽ chứng minh mệnh đề đúng với 𝑛 = 𝑘 + 1

Rõ ràng ma trận vuông cấp 2 𝑘+1 có kích thước gấp 4 lần ma trận vuông cấp 2 𝑘 Ta sẽ chứng minh rằng nếu mỗi một phần tư của ma trận vuông 𝐴 cấp 2 𝑘+1 bất biến thì ma trận vuông 𝐴 cũng bất biến theo phương pháp trích chọn đặc trưng của thuật toán HaarFeature

Thật vậy, giả sử ma trận vuông 𝐴 cấp 2 𝑘+1 được chia thành 4 khối con 𝐴 1 , 𝐴 2 , 𝐴 3 , 𝐴 4 kích thước 2 𝑘 có tổng các điểm đen tương ứng là 𝑆 1 , 𝑆 2 , 𝑆 3 , 𝑆 4 Với cách chia thành 4 khối như vậy thì ma trận 𝐴 sẽ có nghiệm duy nhất 𝑋 1 = 𝑆 1 , 𝑋 2 𝑆 2 , 𝑋 3 = 𝑆 3 , 𝑋 4 = 𝑆 4 tương ứng với các phần tử 𝐴 1 , 𝐴 2 , 𝐴 3 , 𝐴 4 Mà mỗi khối 𝐴 𝑖 , 𝑖 1, ,4 là bất biến theo phương pháp trích chọn đặc trưng của thuật toán HaarFeature nên ma trận A cũng bất biến theo phương pháp trích chọn đặc trưng trên

Hình 3.5 Dãy đặc trưng wavelet Haar

Phương pháp trích chọn đặc trưng này sẽ tạo ra một dãy số các đặc trưng giảm dần Với cùng một chữ thì các giá trị lớn ở đầu dãy tương đối ổn định, có thể đại diện cho hình dạng khái quát của chữ, còn các giá trị ở cuối dãy nhỏ dần và không ổn định, thể hiện sự đa dạng trong từng chi tiết của chữ (hình 3.5).

Nhận dạng chữ Việt viết tay rời rạc

Toàn bộ tập ký tự tiếng Việt có tất cả 99 ký tự, bao gồm: các chữ số {0, ,9}, các ký tự không dấu {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V,

X, Y} và các ký tự có dấu {Ă, Â, À, Ả, Ã, Á, Ạ, Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ề, Ể, Ễ, Ế, Ệ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ơ, Ò, Ỏ, Õ, Ó, Ọ, Ồ, Ổ, Ỗ, Ố, Ộ, Ờ, Ở, Ỡ, Ớ, Ợ, Ư, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỵ} Bài toán luận văn đặt ra ở đây là xây dựng một mô hình nhận dạng chữ Việt viết tay rời rạc Bài toán này được xem như một ứng dụng với quy mô lớn Khi giải bài toán này sẽ vấp phải một số vấn đề sau:

 Để đảm bảo độ chính xác cho hệ thống nhận dạng, mỗi lớp phải có một số lượng mẫu đủ lớn để huấn luyện

 Bùng nổ số lớp (99 lớp) Nếu sử dụng chiến lược OVO cho bài toán phân lớp thì hệ thống phải xây dựng (99 × 98 ÷ 2) = 4851 máy phân lớp SVM nhị phân Điều này sẽ làm cho hệ thống huấn luyện và nhận dạng rất chậm, khó có thể đáp ứng được cho các ứng dụng thời gian thực, thậm chí không đủ không gian nhớ để hệ thống huấn luyện do số vector tựa sinh ra lớn hơn rất nhiều lần so với tổng số lượng mẫu tham gia huấn luyện Chưa kể nếu tiến hành mô phỏng trên điện thoại sẽ bị hạn chế hơn rất nhiều so với việc thực thi trên máy tính

 Bộ ký tự tiếng Việt có nhiều ký tự với hình dáng rất giống nhau, chỉ khác nhau chút ít về phần dấu Do đó rất khó để phân biệt đối với chữ viết tay, điều này dẫn đến độ chính xác của hệ thống nhận dạng không cao

Trong phần tiếp theo, luận văn sẽ đề xuất một mô hình hiệu quả cho bài toán nhận dạng chữ Việt viết tay rời rạc

3.2.2 Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc

Phần này sẽ trình bày chi tiết kiến trúc của mô hình nhận dạng chữ Việt viết tay rời rạc Luận văn đã tiến hành khảo sát mô hình nhận dạng chữ Việt viết tay rời rạc ở [83] Trên cơ sở các thành phần liên thông của ảnh, mô hình này phân tập ký tự tiếng Việt thành ba nhóm và tách các ký tự có dấu thành các phần rời nhau Sau đó xây dựng các máy phân lớp SVM để nhận dạng cho từng phần chữ và phần dấu, cuối cùng ghép nối các kết quả nhận dạng của các phần chữ và dấu để có kết quả nhận dạng cuối cùng Để phù hợp với mục tiêu ban đầu của luận văn là nhận dạng trực tiếp trên màn hình cảm ứng điện thoại thông minh, luận văn đã thay đổi một vài thông số của hệ thống nhận dạng chữ Việt viết tay ở [83] như hình 3.6

Hình 3.6 Kiến trúc của hệ thống nhận dạng chữ viết tay tiếng Việt Ảnh đầu vào

2,3 vùng liên thông Ảnh 16x16 Trích chọn đặc trưng

Mục đích của giai đoạn tiền xử lý nhằm tăng độ chính xác của hệ thống nhận dạng Ảnh quét vào thường hay bị nhiễu, các loại nhiễu phổ biến là nhiễu đốm và nhiễu vệt (hình 3.7) Để khử nhiễu đốm, sử dụng các bộ lọc trung bình và lọc trung vị là hiệu quả nhất, còn đối với các nhiễu vệt thì sử dụng phương pháp khử các vùng liên thông nhỏ tỏ ra hữu hiệu hơn

Hình 3.7 Một số nhiễu thường gặp khi quét ảnh [83] Để thuận tiện cho việc xử lý sau này, ảnh đầu vào được biến đổi từ ảnh đa cấp xám thành ảnh nhị phân Đối với bài toán mà luận văn cần giải quyết (nhận dạng chữ Việt viết tay trên màn hình cảm ứng điện thoại thông minh), việc viết chữ và nhận dạng sẽ được thực hiện trên nền màn hình trắng với chữ viết màu đen, vì vậy việc biến đổi từ ảnh đa cấp xám thành ảnh nhị phân xem như không cần thiết Đồng thời, việc xử lý nhiễu cũng có thể bỏ qua vì ảnh tạo ra trên màn hình điện thoại sẽ không có hoặc rất hiếm nhiễu xuất hiện

3.2.2.2 Chuẩn hóa ảnh theo vùng liên thông

Chuẩn hóa ảnh nhằm mục đích tạo điều kiện thuận tiện cho công đoạn tách ảnh thành từng phần chữ và dấu

Bước 1: Xác định các vùng liên thông trên ảnh (hình 3.8)

Bước 2: Sắp xếp các vùng liên thông theo thứ tự từ trên xuống (hình 3.8b)

Hình 3.8 Chuẩn hóa ảnh: (a) Ảnh gốc, (b) Xác định các vùng liên thông và đánh thứ tự các vùng liên thông [83]

Bước 3: Chuẩn hóa các vùng liên thông (hình 3.9)

Hình 3.9 Chuẩn hóa các vùng liên thông [83]

 Nếu ảnh chỉ có 1 vùng liên thông: Chuẩn hóa ảnh về kích thước chuẩn

 Nếu ảnh có 2 vùng liên thông: Gọi 𝑆 𝑖 là diện tích vùng liên thông thứ 𝑖

Nếu 𝑆 1 > 𝑆 2 thì dấu của phần liên thông 2 là dấu nặng (.) và chỉ cần chuẩn hóa vùng liên thông 1 về kích thước chuẩn 16 × 16

Ngược lại: Tách ảnh thành 2 phần: phần chữ và phần dấu Chuẩn hóa phần chữ về kích thước chuẩn 16 × 16 và phần dấu về kích thước chuẩn 8 × 8 (hình 3.9b) Tuy nhiên, để tăng độ chính xác khi nhận dạng phần dấu luận văn sẽ chuẩn hóa kích thước phần dấu như phần chữ, tức là 16 × 16

 Nếu ảnh có 3 vùng liên thông: Gọi 𝑆 𝑖 là diện tích vùng liên thông thứ 𝑖

Nếu 𝑆 3 = min(𝑆 𝑖 ) thì dấu của phần liên thông này là dấu nặng (.) Do đó chỉ cần chuẩn hóa thành phần liên thông 1 về kích thước chuẩn 8 × 8 và thành phần liên thông 2 về kích thước chuẩn 16 × 16 Tương tự như trường hợp trên, luận văn sẽ chuẩn hóa kích thước phần liên thông 2 là 16 × 16

Ngược lại: Tách ảnh thành 3 phần từ các vùng liên thông Chuẩn hóa các vùng liên thông 1 và 2 về kích thước chuẩn 8 × 8 và chuẩn hóa vùng liên thông 3 về kích thước chuẩn 16 × 16 (hình 3.9c) Tương tự như trường hợp trên, luận văn sẽ chuẩn hóa kích thước phần liên thông 1, 2 là 16 × 16

Dựa vào số thành phần liên thông để tách bộ ký tự tiếng Việt thành 3 nhóm:

 Nhóm 1: Nhóm có 1 vùng liên thông {A, B, C, D, Đ, E, G, H, I, K, L, M, N,

 Nhóm 2: Nhóm có 2 vùng liên thông {Ă, Â, À, Ả, Ã, Á, Ạ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ò, Ỏ, Õ, Ó, Ọ, Ờ, Ở, Ỡ, Ớ, Ợ, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỵ}

 Nhóm 3: Nhóm có 3 vùng liên thông { Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ề, Ể, Ễ, Ế, Ệ, Ồ, Ổ, Ỗ, Ố, Ộ}

Với cách phân nhóm này thì các máy phân lớp SVM được xây dựng cho từng nhóm đều rất khả thi Đối với nhóm 2 và 3, mặc dù số lớp rất lớn nhưng tất cả đều xuất phát từ các nguyên âm {A, E, I, O, U, Y} và các dấu {/, \, ?, ~, ^, ∨} (sắc, huyền, hỏi, ngã, dấu ô và dấu ă) Vì vậy đối với hai nhóm này, chỉ cần xây dựng một máy phân lớp SVM cho các nguyên âm và một máy cho các dấu là đủ, sau khi có kết quả nhận dạng thì kết nối chúng với nhau để có kết quả nhận dạng cuối cùng Còn đối với nhóm 1, tuy số lớp hơi nhiều nhưng hoàn toàn có thể xử lý được trong một máy tính cá nhân thông thường

Vì vậy, việc phân nhóm sơ bộ này sẽ khắc phục được sự bùng nổ số lớp, giúp cho việc giải bài toán nhận dạng chữ Việt viết tay rời rạc có thể thực hiện được trên các máy tính cá nhân Tuy nhiên, việc thực hiện trên điện thoại di động sẽ trở nên phức tạp và khó khăn hơn nhiều do vấn đề cấu hình và khả năng lưu trữ Luận văn sẽ đưa ra các phân tích chi tiết cho việc triển khai bài toán nhận dạng chữ Việt viết tay rời rạc trên điện thoại di động ở chương 4

Trong thực nghiệm, có thể chọn hai loại đặc trưng:

 Kết hợp các đặc trưng thống kê (ZPC - Zones, Projection histograms và Contour profiles): Với kích thước ảnh 16 × 16, như vậy mỗi vector đầu vào có tất cả : 64 + 94 + 64 = 222 đặc trưng

 Đặc trưng wavelet Haar: Với kích thước ảnh 16 × 16, như vậy mỗi vector đầu vào có tất cả : 1 + 3 + 4 × 3 + 4 × 4 × 3 + 4 × 4 × 4 × 3 = 256 đặc trưng

Trong 2 cách chọn trên, số đặc trưng đều khá lớn để triển khai bài toán nhận dạng trên di động, vì vậy luận văn đã tiến hành khảo sát để giảm số đặc trưng Dễ thấy rằng cách chọn thứ nhất có số đặc trưng ít hơn và là tổng của 3 loại đặc trưng thống kê (trọng số vùng, biểu đồ chiếu và trích chọn theo chu tuyến) Tuy nhiên, vì việc loại bỏ nhiễu được bỏ qua (như phân tích ở 3.2.2.1) nên luận văn đã bỏ qua 2 đặc trưng thống kê biểu đồ chiếu và trích chọn theo chu tuyến, vì vậy việc trích chọn đặc trưng sẽ lựa chọn trọng số vùng với 64 đặc trưng cho kích thước ảnh 16 × 16 Đối với trích chọn đặc trưng wavelet Haar, dù không được chọn để triển khai bài toán nhận dạng trên di động nhưng đây vẫn là một phương pháp trích chọn đặc trưng hiệu quả cho bài toán nhận dạng chữ viết tay trên máy tính cá nhân

3.2.2.5 Xây dựng các máy phân lớp SVM

Với việc phân nhóm sơ bộ như trên, chỉ cần xây dựng 3 máy phân lớp SVM, sử dụng một trong hai loại đặc trưng để huấn luyện phân lớp và nhận dạng

 SVM1: Máy phân lớp đối với nhóm ký tự có 1 vùng liên thông {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Ơ, Ư}

 SVM2: đối với các ký tự có dấu thì phần chữ đều là các nguyên âm, vì vậy máy này chỉ phân lớp các nguyên âm {A, E, I, O, Ơ, U, Ư, Y}

 SVM3: phân lớp các dấu {/, \, ?, ~, ^, ∨} (sắc, huyền, hỏi, ngã, dấu ô, dấu ă).

KẾT QUẢ THỰC HIỆN

Vấn đề khi triển khai mô hình nhận dạng trên điện thoại

Như đã trình bày ở mục 3.2.1, khi giải bài toán nhận dạng chữ Việt viết tay rời rạc sẽ vấp phải một số vấn đề về số lượng mẫu huấn luyện, cấu hình máy để chạy các thuật toán nhận dạng và độ chính xác của hệ thống khi bộ ký tự tiếng Việt có nhiều ký tự với hình dáng rất giống nhau, chỉ khác nhau chút ít về phần dấu

Ngoài ra, việc triển khai trên máy tính cá nhân và trên điện thoại di động thông minh cũng có nhiều sự khác nhau, trong đó rõ rệt nhất là sự khác biệt về cấu hình của các thiết bị Thực tế một máy tính cá nhân được trang bị phần cứng (RAM, Main Board, CPU load,…) với các thông số vượt trội hơn hẳn một chiệc điện thoại thông minh dù có cùng dung lượng bộ nhớ RAM Vì máy tính cá nhân dùng để xử lý và thực thi các phần mềm phức tạp và nhiều thuật toán lớn, trong khi đó, điện thoại nói chung và điện thoại thông minh nói riêng chủ yếu dùng để chạy các chương trình, tiện ích ít phức tạp và ít thuật toán hơn, để tiết kiệm hiệu năng và dung lượng pin cho thiết bị

Chính vì những lý do trên mà luận văn đã nỗ lực xây dựng một mô hình nhận dạng phù hợp để có thể triển khai trên điện thoại thông minh sử dụng hệ điều hành Android Luận văn đã cố gắng giải quyết tối ưu nhất bài toán nhận dạng ở chương 3 và trình bày những kết quả cơ bản nhất để có thể phát triển những ứng dụng hữu ích hơn dựa trên ứng dụng nhận dạng chữ Việt viết tay này.

Xây dựng mô hình nhận dạng chữ Việt viết tay rời rạc trên điện thoại thông minh

Để giảm số phân lớp và rút ngắn thời gian xử lý trong bài toán nhận dạng chữ Việt viết tay rời rạc, luận văn đề xuất mô hình nhận dạng như sau:

 Ảnh đầu vào sẽ là ảnh được tạo ra sau khi người dùng viết xong 1 chữ, hoặc

1 từ bất kỳ trên màn hình cảm ứng điện thoại

 Mỗi ảnh đầu vào sẽ được tiền xử lý để tách riêng từng chữ (nếu ảnh đầu vào chứa hơn 1 chữ), sau đó mỗi ảnh chứa từng chữ riêng biệt sẽ tiếp tục được xử lý để tách riêng từng vùng liên kết (nếu chữ có hơn 1 vùng liên kết) và cuối cùng mỗi vùng liên kết của mỗi chữ sẽ được lưu thành ảnh bitmap và có kích thước 16 × 16 Mỗi vùng liên kết sẽ được phân loại (vùng chứa nguyên âm hoặc vùng chứa dấu), sau đó sẽ tiếp tục được nhị phân hóa và trích chọn đặc trưng để tiến hành phân lớp

 Trích chọn đặc trưng: luận văn lựa chọn đặc trưng trọng số vùng (Zoning) để tối ưu hóa kích thước của vector tựa, qua đó làm giảm kích thước của file mô hình phân lớp, giúp cho việc xử lý trên điện thoại trở nên mượt mà và nhanh hơn Với việc chọn 𝑁 = 8, tức là chia mỗi ảnh 16 × 16 đầu vào thành 8 × 8 = 64 vùng, mỗi vector đầu vào sẽ có 64 đặc trưng, với mỗi đặc trưng là số pixel (điểm ảnh) đen trong vùng tương ứng

 Máy phân lớp: luận văn sẽ xây dựng 3 máy phân lớp SVM như mô hình ở chương 3 (phần 3.2.2.5) Với máy SVM1 có 25 phân lớp gồm các ký tự có 1 vùng liên thông {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Ơ, Ư}, máy SVM2 có 8 phân lớp gồm các ký tự là các nguyên âm có 1 vùng liên kết {A, E, I, O, Ơ, U, Ư, Y} và máy SVM3 có 6 phân lớp gồm các ký tự là dấu {/,\, ? , ~, ^,∨} (sắc, huyền, hỏi, ngã, dấu ô, dấu ă)

 Các thông số của mỗi máy phân lớp được lựa chọn để phù hợp với mô hình nhận dạng đưa ra (phân lớp đa lớp, 64 đặc trưng cho mỗi vector đầu vào, hàm nhân Gauss), các thông số hầu hết đều được giữ ở giá trị mặc định và cụ thể như sau:

+ 𝐬𝐯𝐦_𝐭𝐲𝐩𝐞 = 𝐂_𝐒𝐕𝐂 (C-Support Vector Classification): SVM phân lớp đa lớp

+ 𝐤𝐞𝐫𝐧𝐞𝐥_𝐭𝐲𝐩𝐞 = 𝐑𝐁𝐅 (Radial Basis Function): hàm nhân Gauss:

+ 𝐜𝐚𝐜𝐡𝐞_𝐬𝐢𝐳𝐞 = 𝟏𝟎𝟎: kích thước bộ nhớ cache tính theo MB, mặc định là 100

+ 𝐂 = 𝟏: tham số C của C-SVC, Epsilon-SVR (𝜖-Support Vector Regression), và Nu-SVR (𝜈-Support Vector Regression), mặc định là 1

+ 𝐞𝐩𝐬 = 𝟎 𝟎𝟎𝟏: dung sai (tolerance) của tiêu chuẩn thoát (termination criterion), mặc định là 0.001

+ 𝐬𝐡𝐫𝐢𝐧𝐤𝐢𝐧𝐠 = 𝟏: có sử dụng shrinking(co lại) heuristics hay không, 0 hoặc 1, mặc định là 1 (có)

+ 𝐩𝐫𝐨𝐛𝐚𝐛𝐢𝐥𝐢𝐭𝐲 = 𝟎: huấn luyện một mô hình SVC hoặc SVR để ước tính xác suất, 0 hoặc 1, mặc định là 0 (SVC)

+ 𝐧𝐫_𝐰𝐞𝐢𝐠𝐡𝐭 = 𝟎: tham số C của lớp i tới trọng số weight*C trong C-SVC, mặc định là 1

 Sau khi viết xong một chữ (gồm chữ cái và dấu nếu có) hoặc 1 từ (gồm nhiều chữ), người dùng sẽ ấn nút nhận dạng để ứng dụng sẽ nhận dạng ngay chữ hoặc từ đó Kết quả sẽ được hiện thị trực tiếp lên màn hình điện thoại

 Ứng dụng được xây dựng với công cụ hỗ trợ lập trình Android Studio 2.3.2, công cụ mô phỏng thiết bị Genymotion 2.8.1, phiên bản Android tối thiểu để chạy ứng dụng là 4.4.4 (API 19)

Mô hình ứng dụng nhận dạng chữ Việt viết tay trên điện thoại thông minh được trình bày ở hình 4.1

Hình 4.1 Mô hình nhận dạng chữ Việt viết tay trên điện thoại

Xây dựng ứng dụng Android cho bài toán nhận dạng chữ Việt viết tay trên điện thoại thông minh

4.1.3.1 Thiết kế chức năng của ứng dụng Ứng dụng nhận dạng chữ Việt viết tay bao gồm hai chức năng chính sau:

 Huấn luyện các ký tự chữ Việt (bao gồm tất cả 31 ký tự như ở mục 4.12) và xuất ra các file model1, model2, model3 cho 3 máy SVM1, SVM2, SVM3 để nhận dạng

 Nhận dạng các ký tự chữ Việt được viết tay trên màn hình cảm ứng điện thoại sau khi người dùng nhấn nút “Nhận dạng”

4.1.3.2 Thiết kế chi tiết của ứng dụng

Trước khi có thể nhận dạng được các ký tự chữ Việt viết tay, mỗi ký tự cần được huấn luyện với một số lượng mẫu nhất định và phải đa dạng với nhiều cách viết của nhiều người Độ chính xác của việc nhận dạng sẽ phụ thuộc vào số lượng mẫu huấn luyện, tuy nhiên, vì số phân lớp ở máy SVM1 khá nhiều (25 phân lớp) nên số lượng mẫu cho một ký tự lớn sẽ tạo ra một bộ dữ liệu có kích thước rất lớn và ảnh hưởng đến tốc độ nhận dạng cũng như khả năng xử lý của điện thoại Chính vì vậy mà luận văn sẽ chọn 30 mẫu để huấn luyện cho mỗi ký tự chữ Việt viết tay ở mỗi máy, tức là có 30 × 25 = 750 mẫu huấn luyện cho 25 phân lớp của máy SVM1, tương tự ta có

1 Viết chữ lên màn hình

Tiền xử lý: tách chữ, tách vùng liên kết, chuẩn hóa kích thước

Trích chọn đặc trưng: trọng số vùng (Zoning) (8x8d đặc trưng)

Hậu xử lý: kết nối dấu, phát hiện lỗi chính tả.

Hiển thị kết quả lên màn hình

240 mẫu huấn luyện cho 8 phân lớp của máy SVM2 và 180 mẫu huấn luyện cho 6 phân lớp của máy SVM3

Các hàm và thủ tục cần thiết cho chức năng huấn luyện của ứng dụng được mô tả như ở hình 4.2

Hình 4.2 Các hàm và thủ tục cho chức năng huấn luyện

Sau khi đã có các file model1, model2, model3 của 3 máy SVM1, SVM2, SVM3 từ quá trình huấn luyện, ứng dụng sẽ dựa vào các thông số trong các file này để thực hiện quá trình phân lớp và quyết định ký tự cần nhận dạng thuộc phân lớp nào, sau đó sẽ hiển thị lên trên vùng chữ nhận dạng trên màn hình điện thoại Độ chính xác của thuật toán nhận dạng tùy thuộc vào số lượng mẫu tương ứng với số vector tựa trong mỗi file model SVM

Quá trình nhận dạng có thể được miêu tả như ở hình 4.3

Hình 4.3 Các hàm và thủ tục cho chức năng nhận dạng

Thời gian nhận dạng sẽ phụ thuộc vào số lượng ký tự được viết trên màn hình

Nếu chỉ có 1 chữ (có thể có dấu) thời gian nhận dạng sẽ nhanh hơn vì bước tiền xử lý sẽ chỉ tiến hành cho 1 chữ với tối đa 3 vùng liên kết Nếu có hơn 1 chữ được viết, quá trình xử lý sẽ lặp lại cho mỗi chữ cho đến khi hoàn tất xử lý cho vùng liên kết cuối cùng của chữ cuối cùng

Vì thuật toán nhận dạng được xây dựng cho bài toán nhận dạng chữ viết tay rời rạc nên điều kiện bắt buộc để ứng dụng cho kết quả chính xác là người dùng phải viết các chữ cách nhau ít nhất 1 hàng trắng (chỉ chứa toàn pixel trắng) theo phương thẳng đứng, đồng thời các vùng liên kết của mỗi chữ cũng phải tách biệt bởi ít nhất 1 hàng trắng theo phương ngang.

Giao diện của ứng dụng

4.1.4.1 Màn hình lúc khởi động – Menu

Giao diện lúc khởi động (hình 4.4) của ứng dụng gồm 2 chức năng chính là “Nhận dạng” và “Huấn luyện”, ngoài ra còn có 2 chức năng phụ là “Hướng dẫn” và “Giới thiệu” dùng để giúp người dùng có thêm thông tin về ứng dụng và tác giả

Hình 4.4 Giao diện khởi động của ứng dụng

4.1.4.2 Giao diện màn hình nhận dạng

Giao diện màn hình nhận dạng (hình 4.5) gồm 1 vùng hiển thị chữ nhận dạng, 4 nút nhấn (Nhận dạng, Khoảng trắng, Xóa ký tự, Xóa màn hình) và 1 vùng trắng để vẽ chữ

Hình 4.5 Giao diện màn hình nhận dạng

4.1.4.3 Giao diện màn hình huấn luyện

Giao diện màn hình huấn luyện (hình 4.6) gồm 1 vùng hiển thị ký tự được huấn luyện, 1 list các ký tự có thể chọn để huấn luyện, 5 nút nhấn (Huấn luyện, Xuất file model1, Xuất file model2, Xuất file model3, Xóa màn hình) và 1 vùng trắng để vẽ mẫu

Hình 4.6 Giao diện màn hình huấn luyện

Kết quả thực nghiệm

Luận văn đã tiến hành chạy ứng dụng trên điện thoại SamSung Galaxy J7 Prime, với cấu hình như sau:

+ Kích thước màn hình: 5.5 inch (≈ 14cm)

Cấu hình của điện thoại hoàn toàn phù hợp với những yêu cầu từ phía ứng dụng như đã đề cập ở mục 4.1.2

4.2.1 Kết quả nhận dạng ký tự

Sau khi chọn tính năng “Nhận dạng” ở màn hình khởi động (Menu), ứng dụng sẽ bắt đầu tải 3 file model SVM (model1, model2, model3), mất khoảng 3 – 5 giây, và giao diện của màn hình nhận dạng sẽ xuất hiện như ở hình 4.5 Tại đây, người dùng có thể viết một chữ hoặc từ tùy ý và ấn nút “Nhận dạng” để xem kết quả trên vùng hiển thị chữ nhận dạng (vùng màu hồng) Kết quả nhận dạng được mô tả ở hình 4.7

Hình 4.7 Kết quả nhận dạng chữ “Ắ”, “Ộ”, “Ể”

Sau khi viết và nhận dạng xong một chữ, người dung có thể nhấn nút “Khoảng trắng” để tiếp tục viết và nhận dạng Kết quả nhận dạng các chữ đặc trưng của tiếng

Việt được trình bày ở hình 4.7 Trong trường hợp ở hình 4.7, kết quả nhận dạng là chính xác, nhưng cũng có trường hợp việc nhận dạng không chính xác như ở hình 4.8

Hình 4.8 Kết quả nhận dạng không chính xác

Người dùng muốn nhận dạng được chữ “M”, nhưng kết quả nhận dạng là chữ

“N” Ứng dụng cho phép người dùng xóa màn hình (ấn nút “Xóa màn hình”) và xóa ký tự (ấn nút “Xóa ký tự”) vừa nhận dạng để viết lại ký tự mới và tiến hành nhận dạng đến khi chính xác ý người dùng muốn (hình 4.9) Đồng thời người dùng có thể nhận dạng nguyên từ, cũng như dùng nút “Khoảng cách” để kết thúc 1 từ và bắt đầu nhận dạng từ mới như ở hình 4.10

Hình 4.9 Kết quả nhận dạng chính xác chữ “M”

Hình 4.10 Nhận dạng nguyên từ

Luận văn đã tiến hành kiểm tra việc nhận dạng cho 31 ký tự (31 phân lớp ban đầu) với những số lần nhận dạng khác nhau cho mỗi ký tự Các phần tiếp theo sẽ trình bày chi tiết tỷ lệ nhận dạng thành công của từng ký tự cũng như các ký tự dễ bị nhận dạng sai

4.2.2 Tỷ lệ nhận dạng thành công của các ký tự Để tạo ra sự đa dạng nhất định cho chữ viết tay đầu vào trong quá trình nhận dạng, luận văn đã tiến hành nhận dạng chéo giữa phần chữ và dấu bằng cách viết nguyên từ với nhiều chữ và dấu để nhận dạng, cũng có những phụ âm chỉ được nhận dạng riêng biệt (tức là chỉ viết 1 chữ lên màn hình nhận dạng) Vì vậy, số lần nhận dạng cho mỗi ký tự là khác nhau và được thống kê lại để tính toán tỷ lệ nhận dạng

Tỷ lệ nhận dạng thành công của từng ký tự được trình bày ở bảng 4.1

Ký tự Tổng số lần nhận dạng

Số lần nhận dạng đúng

Số lần nhận dạng sai, ký tự bị nhận sai

Bảng 4.1 Tỷ lệ nhận dạng thành công các ký tự

Từ bảng 4.1 có thể thấy, kết quả nhận dạng chữ Việt viết tay khá chính xác Có những ký tự có tỷ lệ chính xác rất cao và gần như tuyệt đối (~, A, K, T, U, Ư: 100%), bên cạnh đó cũng có những ký tự có tỷ lệ nhận dạng khá thấp (D, P: < 90%) Các kết quả này còn mang tính chủ quan và chưa đa dạng vì cùng một người viết và số lượng mẫu cũng chưa nhiều, tuy nhiên, chúng đã phần nào cho thấy mô hình nhận dạng chữ Việt viết tay rời rạc mà luận văn xây dựng là khả thi và có thể phát triển được cho những nghiên cứu sâu hơn về phương pháp SVM cũng như các giải thuật nhận dạng chữ viết tay tiếng Việt khác và ứng dụng trên các thiết bị Android

4.2.3 Các ký tự bị nhận dạng sai

Như đã đề cập ở những phần trước, bộ ký tự tiếng Việt có nhiều ký tự với hình dáng rất giống nhau, chỉ khác nhau chút ít về phần dấu, do vậy việc nhận dạng sai những ký tự ấy là không tránh khỏi Bảng 4.2 trình bày những ký tự bị nhận dạng sai và các ký tự nhận dạng sai cùng với xác suất nhận dạng sai của các ký tự đó từ những số liệu ở bảng 4.1

Ký tự bị nhận dạng sai Ký tự nhận dạng sai, xác suất nhận dạng sai

Bảng 4.2 Các ký tự dễ bị nhận dạng sai

Từ các kết quả ở bảng 4.2 cho thấy vẫn còn khá nhiều ký tự bị nhận dạng sai với xác suất khá cao (\, B, D, Đ, N, P: > 8%), cùng với những ký tự có xác suất nhận dạng lỗi thấp (?, C, S, V: < 3%) Tuy nhiên, các kết quả này là chấp nhận được đối với cơ sở dữ liệu còn ít (khoảng hơn 1100 mẫu huấn luyện và hơn 1500 mẫu nhận dạng) Thực tế cho thấy, các ký tự chữ Việt khá giống nhau và việc nhận dạng sai đối với chữ viết tay (không chỉ tiếng Việt) là không thể tránh khỏi Các kết quả được thống kê là cơ sở để luận văn tiếp tục nghiên cứu và tối ưu hơn các thuật toán để giảm đi sự sai lệch trong quá trình nhận dạng, đồng nghĩa với tỷ lệ nhận dạng chính xác sẽ được gia tăng

4.2.4 Đánh giá tốc độ nhận dạng và hiệu suất của hệ thống

Tốc độ xử lý và nhận dạng của ứng dụng phụ thuộc chủ yếu vào hai yếu tố là cấu hình thiết bị và số lượng mẫu huấn luyện hay số vector hỗ trợ Luận văn đã tiến hành chạy ứng dụng trên điện thoại Samsung Galaxy J7 Prime với phiên bản Android 6.0.1 và bộ nhớ RAM là 3GB Số lượng mẫu huấn luyện được trình bày ở mục 4.1.3.2 là khoảng 1100 mẫu Với cấu hình của thiết bị và số lượng mẫu huấn luyện như vậy thì tốc độ nhận dạng của ứng dụng đo được như sau:

 Nhận dạng từng ký tự riêng biệt: 0.02 giây (một vùng liên kết), 0.04 giây

(hai vùng liên kết) và 0.06 giây (ba vùng liên kết)

 Tổng thời gian nhận dạng 1518 mẫu (bảng 4.1) là khoảng 70 giây, tức là tốc độ nhận dạng trung bình cho mỗi mẫu là khoảng 0.046 giây

Tốc độ nhận dạng của ứng dụng là khá nhanh và đáp ứng được những yêu cầu cơ bản của một ứng dụng nhận dạng trong thực tế

4.2.4.2 Hiệu suất của hệ thống

Hệ thống nhận dạng chữ Việt in hoa viết tay được triển khai thành công trên điện thoại sử dụng nền tảng Android Bên cạnh những kết quả khả quan đạt được, hệ thống vẫn còn tồn tại những hạn chế cần cải thiện Ưu điểm và khuyết điểm của hệ thống được đánh giá như sau:

 Tốc độ nhận dạng khá nhanh (khoảng 0.05 giây cho 1 ký tự), thích hợp cho một ứng dụng thực tế

 Kích thước ứng dụng (khoảng 1.3MB), không gian lưu trữ dữ liệu trên điện thoại (khoảng 3.7MB) khá tối ưu cho điện thoại

 Tỷ lệ nhận dạng khá cao (95.32%) với số lượng vector hỗ trợ không quá lớn (khoảng 1100 vector)

 Có thể nhận dạng nguyên từ và dễ dàng chỉnh sửa kết quả hiển thị trên màn hình điện thoại nếu việc nhận dạng không chính xác

 Thời gian xử lý và nhận dạng chậm đi đáng kể (khoảng 4 lần, tức là khoảng 0.2 giây cho 1 ký tự) khi số lượng mẫu huấn luyện (số vector hỗ trợ) tăng lên gấp đôi (khoảng 2000 mẫu) Khi số lượng vector hỗ trợ cho mỗi phân lớp lên đến 100, ứng dụng sẽ bị giật và treo lúc khởi động

 Ứng dụng chưa nhận dạng được chữ thường và nguyên câu Khi người dùng viết chữ có kích thước quá lớn, kết quả nhận dạng thường không chính xác

 Ứng dụng còn nhiều ràng buộc về cách viết và người dùng cần phải ấn nút sau khi viết chữ lên màn hình để nhận dạng.

So sánh kết quả mô phỏng với các công trình khác

Theo kết quả thu được ở bảng 4.1, tỷ lệ nhận dạng trung bình là 95.32% Đây là một con số đáng kể và cho thấy ứng dụng nhận dạng chữ Việt viết tay trên hệ điều hành Android hoạt động khá tốt Tuy nhiên, các kết quả ở đây còn khá chủ quan vì phụ thuộc nhiều vào việc viết chữ lên màn hình của người làm ra ứng dụng, đồng thời cũng là người chạy test ứng dụng Bên cạnh đó, số lượng mẫu nhận dạng (khoảng hơn 1,500 mẫu) và tập dữ liệu (khoảng hơn 1,100 mẫu) vẫn còn khá ít so với một mô hình nhận dạng SVM trên máy tính cá nhân

Luận văn đã tiến hành so sánh kết quả đã đạt được với một số kết quả được công bố có liên quan đến bài toán nhận dạng chữ Việt viết tay Ở [83], tác giả cũng sử dụng phương pháp SVM cho bài toán nhận dạng chữ Việt viết tay nhưng thực hiện mô phỏng trên máy tính cá nhân Kết quả mô phỏng với hơn 52,000 mẫu huấn luyện và hơn 36,000 mẫu nhận dạng đã cho thấy tỷ lệ nhận dạng khá cao: 90.51% Kết quả này khá khách quan và chính xác hơn vì tác giả đã tiến hành thu thập dữ liệu từ hơn 650 cá nhân, phần lớn là học sinh, sinh viên với sự đa dạng hơn trong cách viết chữ Ở [86], tác giả cũng sử dụng phương pháp SVM với hàm nhân là RBF (hàm nhân Gauss) và giá trị 𝛾 = 0.01 Quá trình mô phỏng được tiến hành với 70,000 mẫu huấn luyện và hơn 26,000 mẫu để nhận dạng Ở đây, tác giả đã kết hợp thư viện SVM (LIBSVM) với 2 cở sở dữ liệu là từ điển họ tiếng Việt (200 họ) và từ điển tên tiếng Việt (10,000 tên), tổng cộng có 2 triệu tên cá nhân tiếng Việt bao gồm cả họ và tên

Sau khi phân lớp, kết quả sẽ tiếp tục được tra ở 2 từ điển cùng lúc để tăng độ chính xác của thuật toán nhận dạng Tỷ lệ nhận dạng cho ký tự, từ và tên cá nhân lần lượt là 91.23%, 85.41% và 96.03% Ứng dụng đã được nhúng trong hệ thống nhập dữ liệu tự động cho các mẫu đơn đăng ký bằng cách sử dụng một máy quét để giảm bớt nhiều sức lực và thời gian của nhân viên văn phòng

Từ những so sánh trên, có thể thấy ứng dụng nhận dạng chữ Việt viết tay trên hệ điều hành Android tuy có số lượng mẫu huấn luyện và nhận dạng khá ít so với các công trình ở [83] và [86] nhưng đã đạt được những kết quả khả quan Tỷ lệ nhận dạng khá cao và khả năng nhận dạng nguyên từ của ứng dụng là tiền đề để luận văn tiếp tục phát triển mô hình nhận dạng chữ Việt viết tay trên hệ điều hành Android để giải quyết nhiều bài toán phức tạp hơn, ví dụ như nhận dạng nguyên văn bản hoặc nhận dạng chữ trên các phông nền khác nhau, không chỉ là nền trắng, chữ đen Giải thuật này cũng có thể được tích hợp vào các ứng dụng khác liên quan đến bàn phím hoặc soạn thảo văn bản để tạo ra nhiều lựa chọn thú vị hơn cho người dùng.

Ngày đăng: 09/09/2024, 03:41

HÌNH ẢNH LIÊN QUAN

Hình 1.4. Chuẩn hóa kích thước ảnh các ký tự “A” và “B” - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 1.4. Chuẩn hóa kích thước ảnh các ký tự “A” và “B” (Trang 27)
Hình 1.8. Tách dòng chữ - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 1.8. Tách dòng chữ (Trang 29)
Hình 1.9. Xác định khoảng cách giữa hai kí tự và giữa hai từ - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 1.9. Xác định khoảng cách giữa hai kí tự và giữa hai từ (Trang 30)
Hình 1.10. Sơ đồ kiến trúc của Android - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 1.10. Sơ đồ kiến trúc của Android (Trang 46)
Hình 1.11. Lược đồ vòng đời của một Activity - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 1.11. Lược đồ vòng đời của một Activity (Trang 49)
Hình 2.1. Siêu phẳng tách tuyến tính  Ý tưởng chính của SVM là tìm siêu phẳng phân cách với khoảng cách lề cực đại: - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.1. Siêu phẳng tách tuyến tính Ý tưởng chính của SVM là tìm siêu phẳng phân cách với khoảng cách lề cực đại: (Trang 54)
Hình 2.3. Siêu phẳng tách hai lớp ‘o’ và ‘+’ - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.3. Siêu phẳng tách hai lớp ‘o’ và ‘+’ (Trang 55)
Hình 2.2. So sánh hiệu quả phân lớp giữa máy học tuyến tính với SVM - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.2. So sánh hiệu quả phân lớp giữa máy học tuyến tính với SVM (Trang 55)
Hình 2.4. Phân lớp mềm - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.4. Phân lớp mềm (Trang 57)
Hình 2.5. Ánh xạ dữ liệu vào không gian đặc trưng - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.5. Ánh xạ dữ liệu vào không gian đặc trưng (Trang 63)
Hình 2.6. Độ tin cậy VC tăng theo ℎ - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.6. Độ tin cậy VC tăng theo ℎ (Trang 68)
Hình 2.8. Không phải 3 điểm nào cũng tách được bởi đường thẳng - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.8. Không phải 3 điểm nào cũng tách được bởi đường thẳng (Trang 70)
Hình 2.10. Mô hình nhận dạng chữ viết tay rời rạc - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.10. Mô hình nhận dạng chữ viết tay rời rạc (Trang 77)
Hình 2.11. Trích chọn đặc trưng ma trận nhị phân - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 2.11. Trích chọn đặc trưng ma trận nhị phân (Trang 78)
Hình 3.2. Trích chọn các biểu đồ chiếu ngang, dọc và 2 đường chéo - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 3.2. Trích chọn các biểu đồ chiếu ngang, dọc và 2 đường chéo (Trang 81)
Hình 3.3. Trích chọn các khối bên ngoài của chữ [83] - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 3.3. Trích chọn các khối bên ngoài của chữ [83] (Trang 81)
Hình 3.6. Kiến trúc của hệ thống nhận dạng chữ viết tay tiếng Việt - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 3.6. Kiến trúc của hệ thống nhận dạng chữ viết tay tiếng Việt (Trang 86)
Hình 3.9. Chuẩn hóa các vùng liên thông [83] - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 3.9. Chuẩn hóa các vùng liên thông [83] (Trang 88)
Hình 3.8. Chuẩn hóa ảnh: (a) Ảnh gốc, (b) Xác định các vùng liên thông và đánh - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 3.8. Chuẩn hóa ảnh: (a) Ảnh gốc, (b) Xác định các vùng liên thông và đánh (Trang 88)
Hình 4.1. Mô hình nhận dạng chữ Việt viết tay trên điện thoại - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.1. Mô hình nhận dạng chữ Việt viết tay trên điện thoại (Trang 95)
Hình 4.2. Các hàm và thủ tục cho chức năng huấn luyện - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.2. Các hàm và thủ tục cho chức năng huấn luyện (Trang 96)
Hình 4.3. Các hàm và thủ tục cho chức năng nhận dạng - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.3. Các hàm và thủ tục cho chức năng nhận dạng (Trang 97)
Hình 4.4. Giao diện khởi động của ứng dụng - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.4. Giao diện khởi động của ứng dụng (Trang 98)
Hình 4.5. Giao diện màn hình nhận dạng - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.5. Giao diện màn hình nhận dạng (Trang 99)
Hình 4.6. Giao diện màn hình huấn luyện - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.6. Giao diện màn hình huấn luyện (Trang 100)
Hình 4.7. Kết quả nhận dạng chữ “Ắ”, “Ộ”, “Ể” - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.7. Kết quả nhận dạng chữ “Ắ”, “Ộ”, “Ể” (Trang 101)
Hình 4.8. Kết quả nhận dạng không chính xác - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.8. Kết quả nhận dạng không chính xác (Trang 102)
Hình 4.9. Kết quả nhận dạng chính xác chữ “M” - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.9. Kết quả nhận dạng chính xác chữ “M” (Trang 103)
Hình 4.10. Nhận dạng nguyên từ - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Hình 4.10. Nhận dạng nguyên từ (Trang 104)
Bảng 4.2. Các ký tự dễ bị nhận dạng sai - Luận văn thạc sĩ Kỹ thuật viễn thông: Thiết kế giải thuật nhận dạng chữ viết tay tiếng việt trên hệ điều hành Android
Bảng 4.2. Các ký tự dễ bị nhận dạng sai (Trang 107)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN