Hiện nay, nhờ các tiến bộ vượt bậc của khoa học kĩ thuật, công nghệ trí tuệ nhân tạo (AI) đã được ứng thực tế vào rất nhiều lĩnh vực trong đời sống. Nhờ trí tuệ nhân tạo mà các công việc trở nên tự động và chuẩn xác, tuy nhiên trí tuệ nhân tạo cũng có giới hạn của mình, còn rất nhiều vấn đề chưa giải quyết được. Một lĩnh vực nằm trong trí tuệ nhân tạo là xử lý ảnh hay là Computer Vision (CV). Xử lý ảnh được chia thành 4 nhóm chính là: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh. Trong đó nhận dạng ảnh có thể ứng dụng các thuật toán của học máy (Machine Learning) để giải quyết rất nhiều bài toán về nhận dạng. Dựa trên những kiến thức được học và tìm hiểu thêm từ các phòng nghiên cứu, em ứng dụng nhận dạng ký tự quang học để trích xuất thông tin từ hóa đơn. Lý do em chọn đề tài vì em thấy nhận dạng ký tự quang học hiện nay đang rất phát triển và có nhiều ứng dụng thực tế. Trong quá trình quan sát em thấy hiện nay các nhân viên mà muốn nhập thông tin hóa đơn đều rất là vất vả và mất nhiều thời gian, vì lý do đó em lựa chọn bài toán này nhằm giảm quyết những công việc nhàm chán đó mà thông tin trích xuất vẫn có tính chính xác cao. Bài toán của em hoàn toàn có thể áp dụng với những văn bản mà có cấu trúc như căn cước công dân, giấy khai sinh, giấy phép lái xe, hóa đơn thuốc ... em nghiên cứu một mà có thể dùng mô hình áp dụng cho đa dạng nhiều dữ liệu khác nhau. Đồ án của em được chia thành 2 phần nghiên cứu chính là: Ứng dụng học máy (Machine Learning) vào việc trích xuất thông tin hóa đơn và ứng dụng các thuật toán để thực hiện xây dựng mô hình. Báo cáo đồ án của em gồm 4 phần chương như sau: Chương 1: Giới thiệu bài toán nhận dạng ký tự quang học Chương 2: Mạng Nơ-ron nhân tạo và các công nghệ trong giải quyết bài toán OCR Chương 3: Kết quả nghiên cứu Chương 4: Kết luận
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ĐỀ TÀI
XÂY DỰNG MỘT MÔ HÌNH TRÍCH XUẤT THÔNG TIN HÓA
ĐƠN DỰA TRÊN HỌC SÂU
Giảng viên hướng dẫn : TS Hoàng Văn Thông
Sinh viên thực hiện : Nguyễn Trung Tài
Hà Nội – 2023
Trang 2TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN
-o0o -
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ĐỀ TÀI
XÂY DỰNG MÔ HÌNH TRÍCH XUẤT THÔNG TIN HÓA ĐƠN
DỰA TRÊN HỌC SÂU
Giảng viên hướng dẫn : TS Hoàng Văn Thông
Sinh viên thực hiện : Nguyễn Trung Tài
Hà Nội - 2023
Trang 3LỜI CẢM ƠN
Bốn năm, một khoảng thời gian không dài đối với cuộc đời một sinh viên, là những năm tháng nhiều kỉ niệm, có sự tự hào, vinh dự, có những thành công nhưng cũng có không ít những khó khăn, thách thức, nhiều niềm vui và cũng có nhiều nỗi buồn Sau bốn năm, đây là thời gian để em nhìn lại quá trình gắn bó, sự nỗ lực cũng như sự trưởng thành của mình
Đại học Giao Thông Vận Tải mùa thu năm 2019, bầu trời hôm ấy thật đẹp, không biết có phải vì niềm vui trong lòng khiến bầu trời thêm xanh hay không Đến giờ phút này, khi đã là sinh viên năm cuối, em vẫn cảm thấy mình thật may mắn khi trở thành sinh viên của Khoa Công Nghệ Thông Tin Khóa 60, được làm việc cũng những người bạn, những thầy cô dưới mái trường thân yêu này
Đặc biệt, để có được đồ án này ngày hôm nay, em xin chân thành cảm ơn thầy
TS Hoàng Văn Thông và các thầy cô giáo bộ môn đã tận tình hướng dẫn, chỉ dạy, góp ý; chia sẻ kiến thức, kinh nghiệm; giúp đỡ em trong suốt quá trình thực hiện báo cáo và chương trình, để đồ án tốt nghiệp của em hoàn thiện Em cũng xin gửi lời cảm ơn sâu sắc đến những người bạn, những người anh chị đã hỗ trợ kiến thức chuyên môn để em có được đồ án ngày hôm nay Sự tận tâm và nhiệt huyết của mọi người đã giúp em ngày càng trưởng thành và hoàn thiện hơn
Quá trình thực hiện đồ án của em không tránh khỏi những thiếu sót, mong nhận được các lời góp ý của thầy cô để đồ án của em có thể cải thiện và phát triển trong tương lai
Em xin chân thành cảm ơn!
Hà Nội, ngày tháng năm 2023 Sinh viên thực hiện
Nguyễn Trung Tài
Trang 4MỤC LỤC
LỜI CẢM ƠN 3
MỤC LỤC 4
DANH MỤC CÁC TỪ VIẾT TẮT 6
DANH MỤC BẢNG BIỂU 7
DANH MỤC HÌNH ẢNH 8
MỞ ĐẦU 10
CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ TỰ QUANG HỌC 11
1.1.GIỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ TỰ QUANG HỌC 11
1.1.1 Lịch sử OCR 11
1.1.2 Một số ứng dụng của OCR 12
1.1.3 Chương trình OCR 14
1.2.CÔNG TRÌNH LIÊN QUAN 15
1.3.KẾT LUẬN 19
CHƯƠNG 2 MẠNG NƠ-RON NHÂN TỌA VÀ CÁC CÔNG NGHỆ TRONG GIẢI QUYẾT BÀI TOÁN OCR 21
2.1.MẠNG NƠ RON NHÂN TẠO 21
2.1.1 Kiến trúc mạng neuron 21
2.2.2 Mạng neuron tích chập - CNN 24
2.2.3 Mạng neuron hồi quy – RNN 28
2.2.4 Một số cấu trúc mạng CNN hiện nay 30
2.2.4.1 Alexnet(2012) 30
2.2.4.2 VGG(2014) 31
2.2.4.3 ResNet(2015) 32
2.2.5 Một số cơ chế quan trọng 33
2.2.5.1 Cơ chế CTC 33
2.2.5.2 Cơ chế Attention 34
2.2.5.3 Cơ chế NMS 40
2.2.CÁC CÔNG NGHỆ GIẢI QUYẾT BÀI TOÁN OCR 42
2.2.1 Các bài toán con của OCR 42
2.2.1.1 Bài toán phát hiện chữ - Text detection 42
2.2.1.2 Bài toán nhận diện chữ - Text recogniton 43
2.2.2 Các mô hình phát hiện chữ - Text detection 44
2.2.2.1 Các phương pháp cổ điển 44
2.2.2.2 Text detection dựa trên Object Detection 45 2.2.2.3 Text detection dựa trên các thành phần của chữ (Sub-Text Components)49
Trang 52.2.3 Các mô hình nhận diện chữ - Text regcognition 52
2.2.3.1 Các phương pháp cổ điển 52
2.2.3.2 Mô hình tổng quan của text recognition áp dụng trong học sâu 53
2.2.3.3 Text recognition dựa trên CTC 54
2.2.3.3 Text recognition dựa trên Attention 55
2.2.4 Cơ sở lý thuyết cho bài toán trích xuất thông tin trong văn bản từ ảnh 56
2.2.4.1 Bài toán trích xuất thông tin trong văn bản từ ảnh 56
2.2.4.2 Một số lý thuyết đồ thị cơ bản 58
2.2.4.3 Một số bài toán khi sử dụng Graph Convolutional Network 60
2.2.4.4 Graph Convolutional Network trong bài toán trích xuất thông tin trong hóa đơn 62
2.3.KẾT LUẬN CHƯƠNG 66
CHƯƠNG 3 ỨNG DỤNG NHẬN DẠNG KÝ TỰ QUANG HỌC TRONG TRÍCH XUẤT THÔNG TIN HÓA ĐƠN 68
3.1.DỮ LIỆU VÀ PHƯƠNG PHÁP 68
3.1.1 Dữ liệu 68
3.1.2 Phương pháp 69
3.2.THỬ NGHIỆM 72
3.3.ĐÁNH GIÁ KẾT QUẢ VÀ MỞ RỘNG 74
KẾT LUẬN VÀ KIẾN NGHỊ 76
DANH MỤC TÀI LIỆU THAM KHẢO 77
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt Ý nghĩa
OCR Nhận dạng ký tự quang học
CNN Mạng nơ-ron tích chập
Trang 7DANH MỤC BẢNG BIỂU
Bảng 1 1 Khảo sát các phương pháp phát hiện text đã được công bố 16
Bảng 1 2 Khảo sát các nghiên cứu về nhận dạng ký tự đã được công bố 17
Bảng 2 1 So sánh một số mô hình phát hiện chữ 48
Bảng 2 2 Bảng so sánh kết quả các mô hình phát hiện chữ 51
Bảng 3 1 Tổng quan kiến trúc nhận diện hóa đơn 69
Trang 8DANH MỤC HÌNH ẢNH
Hình 1 1 Mục đích của kỹ thuật OCR 11
Hình 1 2 Minh họa OCR được ứng dụng trong doanh nghiệp 14
Hình 1 3 Minh họa một luồng OCR tiêu biểu 14
Hình 1 4 Các bước xử lý hệ thống 15
Hình 1 5 Sơ đồ khối xử lý ……… 19
Hình 2 1 Mỗi quan hệ giữa AI, ML, DL 21
Hình 2 2 Mạng thần kinh 22
Hình 2 3 Kiến trúc mạng Mutil Layber Perceptron(MLP) 23
Hình 2 4 Vai trò của tốc độ học – Learning Rate 24
Hình 2 5 Mô hình tổng quan của CNN 25
Hình 2 6 Một số loại Pooling 26
Hình 2 7 Đồ thị các hàm kích hoạt Sigmoid, Tanh, ReLU 27
Hình 2 8 Hàm Softmax với bài toán phân loại nhiều lớp 27
Hình 2 9 Mạng NN trước và sau khi Dropout 28
Hình 2 10 Kiến trúc mạng RNN 28
Hình 2 11 Cấu trúc BiLSTM 29
Hình 2 12 Lịch sử phát triển các cấu trúc mạng CNN 30
Hình 2 13 Kiến trúc mạng Alexnet 30
Hình 2 14 Kiến trúc mạng VGG-16 31
Hình 2 15 Ví dụ về việc thay bộ lọc 5x5 bằng bộ lọc 3x3 32
Hình 2 16 Cấu trúc mạng ResNet 32
Hình 2 17 Chi tiết bên trong khối Identity 33
Hình 2 18 Ví dụ Seq2Seq trong dịch máy 34
Hình 2 19 Mô hình mạng Encoder-Decoder 35
Hình 2 20 Mô hình Seq2Seq áp dụng cơ chế Attention 36
Hình 2 21 Một số kiểu Attention 37
Hình 2 22 Một số kiểu tính score của Attention 37
Hình 2 23 Mô hình Attention-OCR 38
Hình 2 24 Mô hình CRNN + Attention 39
Hình 2 25 Ảnh trước và sau khi áp dụng cơ chế NMS 40
Hình 2 26 Phần giao nhau của hai khung 41
Hình 2 27 IOU giữa hai khung 41
Hình 2 28 Phát hiện chữ trog ảnh biển báo 42
Hình 2 29 Nhận diện ảnh chữ STOP 43
Hình 2 30 Luồng xử lý của mô hình MSER 45
Hình 2 31 Luồng xử lý của mô hình SWT 45
Hình 2 32 Những dự đoán lỗi của TextBoxes 46
Hình 2 33 Một số kết quả phát hiện chữ của EAST 47
Hình 2 34 Mô hình LOMO 48
Hình 2 35 Kết quả của 2 mô hình LOMO và Wang 48
Hình 2 36 Kết quả phát hiện chữ của các mô hình dạng Sub-Text Coponent 51
Trang 9Hình 2 37 Luồng huấn luyện tổng quan của mô hình Text recognition 53
Hình 2 38 Mô hình mạng CRNN 54
Hình 2 39 Một số kiểu mô hình text recognition áp dụng CTC 55
Hình 2 40 Một số kiểu mô hình áp dụng cơ chế Attention 56
Hình 2 41 Các loại cấu trúc và phương thức cho bài toán trích xuất thông tin 57
Hình 2 42 Cấu trúc đồ thị trong mô hình Graph Convolutional Network 59
Hình 2 43 Heterogeneous và homogeneous graph 60
Hình 2 44 Ví dụ minh họa bài toán Link Prediction 61
Hình 2 45 Ví dụ minh họa bài toán Node Classification 61
Hình 2 46 Ví dụ minh họa bài toán Clustering & Community detection 62
Hình 2 47 Ví dụ các vector từ trược biểu diễn trong không gian word2vec 63
Hình 2 48 Kiến trức mô hình Skip-gram 64
Hình 2 49 Kiến trức mô hình Skip-gram 64
Hình 2 50 Đồ thị liên kết giữa các textbox 66
Hình 2 51 Kiến trúc mô hình Graph Convolutional Network trong bài toán node classification 66
Hình 3 1 Hình ảnh hóa đơn mẫu trong tạp dữ liệu 68
Hình 3 2 Mô hình tổng quan kiến trúc nhận diện hóa đơn 69
Hình 3 3 Kiến trúc của thuật toán DBnet 69
Hình 3 4 Xoay ngược ảnh với Mobilenet 70
Hình 3 5 Thực hiện xoay hóa đơn với Mobilenet 70
Hình 3 6 Text recognition với VietOCR 71
Hình 3 7 Kiến trúc của model Pick 71
Hình 3 8 Kết quả trích xuất thông tin trong hóa đơn 73
Hình 3 9 Thực hiện xây dựng một website ứng dụng 74
Trang 10em nghiên cứu một mà có thể dùng mô hình áp dụng cho đa dạng nhiều dữ liệu khác nhau Đồ án của em được chia thành 2 phần nghiên cứu chính là: Ứng dụng học máy (Machine Learning) vào việc trích xuất thông tin hóa đơn và ứng dụng các thuật toán để thực hiện xây dựng mô hình Báo cáo đồ án của em gồm 4 phần chương như sau:
Chương 1: Giới thiệu bài toán nhận dạng ký tự quang học
Chương 2: Mạng Nơ-ron nhân tạo và các công nghệ trong giải quyết bài toán
OCR
Chương 3: Kết quả nghiên cứu
Chương 4: Kết luận
Trang 11CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN NHẬN DẠNG KÝ
TỰ QUANG HỌC
1.1 Giới thiệu bài toán nhận dạng ký tự quang học
Hình 1 1 Mục đích của kỹ thuật OCR 1.1.1 Lịch sử OCR
Nhận dạng ký tự quang học hay tiếng anh gọi là Optical Character Recognition (viết tắt là OCR) là công nghệ chuyển đổi hình ảnh văn bản được đánh máy, chữ viết tay hoặc chứ đánh máy(thường được quyét bằng máy scanner) thành văn bản, tài liệu được mã hóa trên máy Mặc dù gần đây thuật ngữ OCR mới thực sự phổ biến ở nước ta song công nghệ này đã trải qua một lịch sử phát triển rất dài Sau đây là một số cột móc dánh chú ý của quá trình hình thành và phát triển của OCR:
• Năm 1870, C.R.Carey của Boston Masachusetts phát minh ra máy quét võng mạc – một hệ thống truyền hình ảnh sử dụng các tế bào quang điện
• Năm 1914: Một máy đọc các ký tự và chuyển đổi chúng thành mã điện báo tiêu chuẩn được phát triển bởi Emanuel Goldberg Edmund Fournier d’Albe phát triển Optophone, một máy quét cầm tay mà khi di chuyển trên một trang tạo ra các âm thanh tương ứng với các chữ cái hoặc ký tự cụ thể
• Năm 1920 - 1930: Emmanuel Goldberg đã phát triển ra “Máy thống kê” để tìm kiếm các tài liệu lưu trữ vi phim bằng hệ thống nhận dạng mã quang học
• Năm 1931: Emmanuel Goldberg được cấp bằng sáng chế Hoa Kỳ số 1.838.389 cho phát minh này Bằng sáng chế đã được mua lại bởi IBM
• Năm 1954: Thiết bị OCR đầu tiên được lắp đặt ở Reader’s Digest nhằm chuyển đổi các báo cáo bán hàng được đánh máy thành thẻ đục lỗ để nhập vào máy tính
Trang 12• Năm 1960 - 1965: đánh dấu sự ra đời của thế hệ OCR thương mại đầu tiên Thế hệ máy OCR này được đặc trưng bởi một số kí tự nhất định Số lượng
2 phông chữ tối đa là 10 và giới hạn bởi phương pháp nhận dạng là so sánh kí tự quét với kho lưu trữ hình ảnh mẫu
• Năm 1960-1970: OCR thế hệ này có thể nhận dạng các ký tự in thông thường và kí tự viết tay Đối với kí tự viết tay chỉ là các chữ số và một vài chữ cái cũng như ký hiệu, không phải toàn bộ bảng chữ cái Đặc biệt nhất trong thời kỳ này là 2 bộ font chữ OCR-A và OCR-B OCR-A là bộ ký tự OCR tiêu chuẩn của Mỹ, được thiết kế riêng để nhận dạng quang học OCR-
B là phông chữ châu âu, được cho là tự nhiên hơn tiêu chuẩn Mỹ
• Năm 1974: Ray Kurzweil thành lập công ty Kurzwell Computer Products, Inc và tiếp tục phát triển omni-font OCR có thể nhận dạng văn bản được in bằng bất kỳ phông chữ nào (Kurzweil được cho là đã phát minh ra OCR đa phông chữ, tuy nhiên theo một số tài liệu nó đã được sử dụng từ cuối những năm 1960 và 1970 bởi một số công ty như CompuScan)
• Năm 1976: Kurzwell tạo ra máy đọc cho người khiếm thị
• Năm 1978: Kurzweil Computer Products bắt đầu bán phiên bản thương mại của chương trình máy tính nhận dạng kí tự quang học
• Năm 2000: Vào những năm đầu của thế kỷ XXI, OCR được cung cấp trực tuyến dưới dạng dịch vụ (WebOCR), trong môi trường điện toán đám mây (cloud) và trên các ứng dụng di động thông minh
• Năm 2006: Phần mềm OCR Tesseract trở thành của google Sự hợp tác tạo nên sự phát triển vượt bậc của công nghệ OCR Nó có thể tự nhận dạng các mẫu thay vì phải đưa ra các quy tắc cho từng ngôn ngữ
1.1.2 Ứng dụng của nhận dạng ký tự quang học trong trích xuất thông tin hóa đơn
Nhận dạng ký tự quang học (OCR) có rất nhiều công dụng trong đời sống của chúng ta mà có thể dễ dàng bắt gặp như:
• Nhập liệu nhanh chóng cho các tài liệu kinh doanh (Căn cước công dân, hộ chiếu, hóa đơn, sao kê ngân hàng, biên lai)
• Nhận dạng biển số tự động
• Nhận dạng hộ chiếu và trích xuất thông tin hộ chiếu ở sân bay
• Nhận dạng biển báo giao thông
• Công nghệ hỗ trợ cho người khiếm thính và khiếm thị
• Chuyển đổi chữ viết tay trong thời gian thực
Trang 13Ứng dụng OCR trong xử lý hóa đơn giúp tiết kiệm thời gian, giảm thiểu các thao tác thủ công, tăng năng suất và tính chính xác của dữ liệu sau khi được trích xuất Dưới đây sẽ là những lợi ích mà phần mềm quét hóa đơn bằng OCR mang lại cho các doanh nghiệp:
• Giảm thời gian xử lý, tăng hiệu suất làm việc Quá trình xử lý hóa đơn
chậm sẽ khiến công việc không đảm bảo được tính liên tục, khiến cho hiệu suất làm việc của nhân viên không như kỳ vọng Vậy nên, khi áp dụng công nghệ OCR vào sẽ giúp thời gian xử lý mỗi hóa đơn giảm còn 3 - 5 giây Đây
là bước khởi đầu tốt đẹp cho hàng loạt quy trình phía sau
• Tăng độ chính xác của dữ liệu đồng thời tăng tính an toàn, bảo mật
Hóa đơn thường chứa nhiều thông tin như mã số hóa đơn, mã số thuế, số tiền, số tài khoản, Theo thống kê thì tỉ lệ lỗi nhập số liệu có thể lên tới 20%, như vậy thì nếu nhập theo cách thủ công thì khả năng sai số liệu tương đối lớn, chưa kể tới những trường hợp nhập trùng lặp hóa đơn sẽ khiến cho quá trình phê duyệt, thanh toán, của kế toán sau này gặp nhiều khó khăn Thêm vào đó nhiều người truy cập và đọc được dữ liệu hóa đơn cũng dễ khiến doanh nghiệp bị lộ thông tin Với công nghệ OCR trong quá trình chụp hóa đơn thì khác, độ chính xác khi xử lý lên tới 99%, đảm bảo nguồn dữ liệu đầu vào cho các quá trình tiếp theo
• Lưu trữ, quảng lý hóa đơn hiệu quả hơn Dữ liệu trên hóa đơn sau khi
được đọc bằng công nghệ nhận dạng ký tự quang học sẽ được trích xuất và số hóa toàn bộ Lúc này, doanh nghiệp có thể loại bỏ các tủ hồ sơ, giấy tờ cồng kềnh và thay vào đó là lưu trữ thông tin trên bộ nhớ Cloud
• Tối ưu chi phí và nguồn lực Công nghệ OCR giúp tự động hóa quy trình
xử lý hóa đơn, tối ưu hóa quá trình tìm kiếm và lưu trữ thông tin Như vậy thì doanh nghiệp sẽ không cần tốn quá nhiều chi phí cho việc lưu trữ, giấy tờ, chi phí phải trả nếu gặp rủi ro trong việc nhập sai dữ liệu, nhân viên cũng tránh khỏi những tác vụ lặp đi lặp lại nhàm chán, thay vào đó sẽ tập trung xử lý các nghiệp vụ chuyên môn khác
Trang 14Hình 1 2 Minh họa OCR được ứng dụng trong doanh nghiệp
1.1.3 Chương trình OCR
Chương trình OCR là tập hợp các mô hình nhằm số hóa văn bản thành định dạng số (doc, pdf, ) một chương trình OCR bao gồm một luồng hoàn chỉnh để giải quyết bài toán, mô hình OCR là một trong số đó Một luồng hoàn chỉnh được mô tả như hình dưới đây:
Hình 1 3 Minh họa một luồng OCR tiêu biểu
Bao gồm các bước sau:
• Bước 1: Ảnh đầu vào sẽ được đi một mô hình Nhận diện dòng chữ (Layout Analysis) để nhận diện vị trí các dòng chữ
• Bước 2: Khi đã có vị trí các dòng chữ, các dòng chữ sẽ được cắt ra và xoay về đúng hướng nhờ mô hình xoay (Text-line Alignment)
• Bước 3: Sau khi có ảnh chuẩn đã xoay, ảnh dòng chữ sẽ được đưa vào mô hình OCR để thực hiện việc nhận dạng ra từ
Trang 151.2 Công trình liên quan
Xử lý hóa đơn bằng OCR được thực hiện theo quy trình gồm các bước cơ bản sau:
• Bước 1: Đưa hình ảnh lên hệ thống
• Bước 2: Tiền xử lý hình ảnh Đây là quá trình giúp hệ thông xác định ảnh chính xác hơn, đưa ảnh về dạng pixel, điều chỉnh độ sáng tối, giảm độ mờ của ảnh
• Bước 3: Xác định vùng chứa thông tin
• Bước 4: Phát hiện trường thông tin cần trích xuất Nhanh chóng lấy ra các trường thông tin mong muốn như mã hóa đơn, ngày tháng, thông tin bên bán (tên, địa chỉ, số điện thoại, ) thông tin bên mua, tổng số tiền phải trả, phần trăm thuế,
• Bước 5: Đọc và nhập thông tin Ký tự được đọc và đưa vào các trường thông tin theo yêu cầu của từng doanh nghiệp
• Bước 6: Xử lý hậu kỳ Chỉnh sửa các trường thông tin còn sai sót sau khi máy đọc xong, đây là bước quang trọng vì nếu thiếu bước này thì đôi khi công nghệ OCR sẽ đọc sai hoặc có một vài từ vô nghĩa
Như phần trước đã đề cập, để xây dựng một hệ thống hoàn chỉnh từ phân tách text trong văn bản là ảnh hay bản scan đế trích xuất tự động các thông tin quan trọng trong văn bản thì cần giải quyết lần lượt ba nội dung sau Mỗi nội dung sẽ được coi là một bài toán nhỏ sẽ được nghiên cứu, thử nghiệm độc lập trước khi tổng hợp thành một thệ thống hoàn chỉnh Ba nội dung nghiên cứu như sau:
1 Xử lý ảnh để nhận diện các dòng chữ trong văn bản
2 Nghiên cứu nhận dạng ký tự cho tiếng Việt
3 Trích xuất thông tin quan trọng từ văn bản tiếng Việt
Hình 1 4 Các bước xử lý hệ thống
Trong nội dung thứ nhát là vấn đề xử lý ảnh để lấy ra được tất cả các dòng text có xuất hiện trong văn bản Đây được coi là bài toán phát thiện đối tượng trong ảnh Việc
Trang 16ngắt câu sẽ trở thành vấn đề, vì các đối tương đang rất giống nhau Đầu vào của bài toán thứ nhất là ảnh chụp hay ảnh scan của hóa đơn, đầu ra ta sẽ có vị trí của các dòng chữ xuất hiện trong ảnh
Với bài toán phát hiện vùng văn bản (text detection) đã có nhiều nghiên cứu, sử dụng nhiều phương pháp khác nhau, nhưng với tiếng Việt thì chưa có nhiều nghiên cứu công bố Dưới đây là các công trình nghiên cứu đã có về vấn đề phát hiện chữ viết, chủ đạo là tiếng Anh, tiếng Trung Quốc Bảng khảo sát được viết theo từ các phương pháp cũ đến mới
Bảng 1 1 Khảo sát các phương pháp phát hiện text đã được công bố
2001 Tiếng Trung
Quốc, tiếng Anh
Từ chữ viết ban đầu sử dụng bộ
lọc pháp hiện cạnh và mô hình Gaussian mixtures color, phân tích bố cục văn bản cụ thể, kết hợp nhận dạng ký tự quang học
Phân loại AdaBoost và mã hóa
Phức tạp, nhiều text có kích thước nhỏ không phát hiện được
2012 Tiếng Anh Phân cụm K-means, CNN gồm
2 lớp tích chập, 1 lớp kết nói
đầy đủ [4]
Phát hiện thiếu, bị giới hạn trong tập hợp chữ viết nhất định
2015 Tiếng Anh,
tiếng Hàn, tiếng Trung
CNN 2 lớp, phân loại SVM [5] Phát hiện sai với
văn bản đa hướng
2019 Tiếng Anh Phát hiện đối tượng sử dụng
Faster R-CNN [6]
Phát hiện từng ký
tự, không nhận diện cả cụm chữ viết
Trang 172018 Tiếng Anh,
tiếng Trung Quốc
Phát hiện đối tượng sử dụng
YoloV3 [7]
Phát hiện từng ký
tự, không nhận diện cả cụm chữ viết
Các bộ dữ liệu chuẩn có sẵn sử dụng để học cho bài toán phát hiện chữ viết đã được công bố được thể hiện ở bảng dưới đây Các bộ dữ liệu có sẵn cũng chỉ dừng lại ở các ngôn ngữ Anh, Trung Quốc, Hàn Quốc và Ả Rập và chưa có bộ dữ liệu chuẩn nào về tiếng Việt
Trong nội dung thứ hai sẽ nghiên cứu nhận diện ký tự tiếng Việt OCR (nhận dạng ký tự qung học) là ứng dụng công nghệ chuyên dùng để đọc text ở file ảnh Được biết đến là một công cụ scan kỹ thuật số chuyên nhận dạng các ký tự, chữ viết tay, hay chữ đánh máy, công nghệ này chuyên dùng để truyền tải, nhập liệu dữ liệu Đặc biệt, ở OCR có khả năng kỹ thuật số nhiều dưới nhiều dạng tài liệu khác nhau: hóa đơn, hộ chiếu, danh thiếp, tài liệu Vì vậy nghiên cứ sử dụng OCR cho văn bản tiếng Việt Từ vị trí các dòng chữ có trong bài toán thứ nhất, bài toán thứ hai sẽ tiến hành OCR để biết được nội dung chính xác của dòng chữ đó
Với bài toán nhận dạng ký tự chữ viết tiếng Việt cũng đã có nghiên cứu được công bố, sử dụng nhiều phương pháp khác nhau Dưới đây là các công trình nghiên cứu đã được công bố
Bảng 1 2 Khảo sát các nghiên cứu về nhận dạng ký tự đã được công bố
2014 Vietnamese Handwritting
Recognition for Automatic
Data Entry in Enrollment
Forms
Phân loại các ký tự viét in hoa tiếng Việt (bao gồm cả dấu) khi đầu vào là ảnh các ký
tự riêng biệt [8]
Chỉ nhận dạng được từng ký từ nếu cả câu thì không được, cần quá nhiều nhãn khi phân loại
2015 Isolated Vietnamese
Handwritting Recognition Embedded System Applied
Combined Feature Extraction Method
Phân loại các ký tự tiếng Việt, sử dụng quá trình tiền xử lý để
cắt từng ký tự ra khỏi
nhận dạng ký tự và dự
Kết quả tốt nhưng cần label một lượng lớn dữ liệu
Trang 18Database and Recognition
văn
2020 A Robust End-to-End
Information Extraction System for Vietnamese Indentity Cards
Sử dụng kiến trúc Attention OCR [12]
Kết quả tốt, độ chính xác cao, tỷ lệ lỗi từ thấp, nhưng với data rõ ràng, ít ký tự
sử dụng mô hình Transformer và AttentionOCR [13]
Kết quả nhanh, tốc độ chính xác cao, nhận dạng tốt cả chữ viết tay và đánh máy cho Tiếng Việt Các bộ dữ liệu cho bài toán nhận dạng ký tự Tiếng Việt có sẵn hay công khai thường có số lượng không nhiều và không đa dạng thường là các dữ liệu ảnh với chữ viết rõ ràng, sắc nét
Trong nội dung thức ba sẽ tiến hành thu thập dữ liệu các mẫu hóa đơn thanh toán sau đó quy định các trường thông tin cần trích xuất trong văn bản Xây dựng một mô hình huấn luyện để phân loại các text vào các nhãn đã quy định Đầu vào của model chính là vị trí và nội dung textbox đã thu được trong bài toán thứ nhất và bài toán thứ hai Với mô hình phân loại text, nghiên cứu sử dụng model GCN (graph convolutiona network) Một mô hình tương đối mới mẻ, giúp phác họa chân thực cấu trúc liên kết của các câu từ trong văn bản Đối với nội dung nghiên cứu thứ ba này thì hầu như không có nghiên cứu cứ thể nào được công bố cho vấn đề này và đặc biệt các nghiên cứu về trích xuất thông tin chỉ dừng lại ở một băn bản có cấu trúc nhất định như các loại giấy tờ có cấu trúc quy định sẵc như chứng minh thư, bằng lái xe, Mà đối với đối tượng của đồ án này là hóa đơn sẽ có nhiều cấu trúc, hình thức khác nhau, nên với bài toán trích xuất thông tin này là hoàn toàn mới
Trang 19Tổng quan sơ đồ khối xử lý như sau:
Hình 1 5 Sơ đồ khối xử lý
Đầu vào là văn bản cần trích xuất thông tin, sau đó các text sẽ được tiến hành embedding để vector số hóa Đây cũng là đầu vào để huấn luyện và kiểm thử mô hình phân loại text Với các text đã xác định rõ nhãn tiến hành mapping vào các trường thông tin muốn trích xuất
1.3 Kết luận
Đối với bất kỳ ai đang cố gắng với nghiệm vụ phân tích văn bản, cái khó nhất không phải là tìm đúng tài liệu mà là tìm những thông tin chính xác trong những tài liệu đấy Hiểu rõ mối liên kết giữa các chủ thể trong đoạn văn, các sự kiện trong đoạn văn
mô tả diễn ra như thế nào, hoặc là tìm những thông tin quý giá từ những từ khóa trong đoạn văn đó, và vì thế, việc tìm ra cách tự động trích xuất thông tin từ dữ liệu văn bản
và trình bày nó theo cách có cấu trúc sẽ giúp chúng ta gặt hái được nhiều lợi ích, giảm đáng kể thời gian ta phải dành để đọc lướt qua các tài liệu
Nghiên cứu tập chung vào một mẫu văn bản nhất định (mẫu hóa đơn thanh toán tiếng Việt), phục vụ cho các doanh nghiệp hay kế toán để có thể tự động, nhanh chóng lấy ra các trường thông tin mong muốn như mã hóa đơn, ngày tháng, thông tin bên bán (tên, địa chỉ, số điện thoại, ) thông tin bên mua, tổng số tiền phải trả, phần trăm thuế, Mô hình sẽ lấy ra các trường thông tin đó tùy thuộc vào mong muốn của người cài đặt và sử dụng Phạm vi nghiên cứu thử nghiệm với đầu vào là file ảnh, file pdf của hóa đơn chữ in, hoặc chữ viết tay, hình ảnh rõ ràng, độ nghiêng chữ không quá 10 độ, và nội dung hóa đơn chỉ trong một trang
Đầu vào sẽ là ảnh chụp hay ảnh scan một hóa đơn thanh toán, đầu ra hệ thống sẽ
tự động lấy ra các trường thông tin mong muốn (nội dung của trường thông tin đó được định dạng text, người bán: vinmart, thời gian: 02/09/2022, tổng tiền: 2000000, địa chỉ:
Mỹ Đình)
Thông thường ta chỉ quan tâm để một vài thông tin cần thiết ở trong hóa đơn, nên không nhất thiết phải xây dựng một hệ thống đọc toàn bộ thông tin trong hóa đơn, do trích xuất toàn bộ thông tin vừa làm giảm tốc độ trong quá trình xử lý và gây ra nhiều dữ liệu nhiễu Từ đó em thực hiện xây dựng một hệ thống trích xuất thông tin quan trọng trong hóa đơn với các trường thông tin gồm người bán, thời gian, địa chỉ, tổng tiền
Trang 20Trong đồ án tốt nghiệp này em sẽ tập trung giải quyết lần lượt từng nội dung bài toán với những mục tiêu chính sau:
1 Làm rõ từng bài toán, tìm ra phương pháp giải quyết phù hợp nhất, thử nghiệm và đánh giá các phương pháp đổi với dữ liệu là hóa đơn thanh toán tiếng Việt
2 Xây dựng một hệ thống hoàn chỉnh, phát triển giao diện để hỗ trợ người dùng sử dụng
Từ mục tiêu nghiên cứu trên, em đã tiến hành các bước sau và cũng là các chương trình bày tiếp theo trong báo cáo, mỗi chương trình sẽ trình bày lần lượt các nội dung liên quan đến ba bài toán nhỏ và hệ thông hoàn chỉnh sẽ được trình bày tại chương cuối cùng
Trang 21CHƯƠNG 2 MẠNG NƠ-RON NHÂN TỌA VÀ CÁC CÔNG NGHỆ TRONG GIẢI QUYẾT BÀI TOÁN OCR
2.1 Mạng nơ ron nhân tạo
Hình 2 1 Mỗi quan hệ giữa AI, ML, DL
Ban đầu, các thuật toán áp dụng cho mô hình còn sơ khai, dữ liệu còn ít, thiết bị chưa đủ mạnh, các nhà khoa học chỉ áp dụng ML như một ứng dụng để thực thiện phân tích dữ liệu, học đơn giản từ nó và sau đó thực hiện một quyết định Một số mô hình của Machine Learning là thuật toán sử dụng Linear Regression, Logistic Regression, Support Vector Machines (SVM), Tuy nhiên do còn nhiều hạn chế nên kết quả mô hình còn thấp, chỉ áp dụng được một vài trường hợp nhỏ, mô hình lại quá nhạy cảm, dễ bị sai có nhiễu (noise) Để giải quyết vấn đề này các nhà khoa học đã sáng tạo ra mạng neuron (tên tiếng anh là neural network - NN) – một mạng được đưa ra theo cơ chế của
Trang 22bộ não con người Với mỗi neuron trong tế bào thần kinh con người nhận tín hiệu đầu vào (input) qua các sợi thần kinh, tích tụ lại trong thân (cell body), khi tín hiệu này vượt qua ngưỡng (threshold) thì nó sẽ phát ra tín hiệu đầu ra (output) Cứ thế các neuron sẽ truyền các tín hiệu sang các neuron khác nhờ các liên kết (Dendrites) và chúng tạo thành mạng thần kinh trong não bộ của chúng ta
Hình 2 2 Mạng thần kinh
Tuy nhiên, không giống hoàn toàn như mạng thần kinh của con người, mạng neuron nhân tạo đã được cải thiện hơn, nó có các lớp rời rạc, các kết nối, hướng truyền dữ liệu được mở rộng nhằm giải quyết nhiều nhu cầu hơn Và rồi sau đó, đến năm 2010, dựa trên mạng neuron cơ bản, mô hình mạng AlexNet đã giành chiến thắng tại cuộc thi ImageNet với kết quả bỏ xa các mô hình khác Hai năm sau tại google, Andrew Ng đã đưa các mạng neuron này lên tầm cao mới, làm cho chúng trở nên to hơn bằng cách tăng số lớp và số lượng các neuron, sau đó chạy qua khối lượng lớn dữ liệu từ Youtube (10 triệu video) để huấn luyện mô hình Ng đã đặt thêm từ “deep” vào việc học (learning) để tạo ra một bước khởi đầu cho sự phát triển mạnh mẽ của Deep Learning cho đến giờ Tổng quan mô hình:
Mạng neuron được cấu thành từ các neuron đơn lẻ ban đầu được gọi là Perceptron Sau đó mạng neuron càng phát triển hơn bằng cách kết hợp các tầng Perceptron và được gọi là Perceptron đa tầng (Multilayer Perceptron – MLP)
Trang 23Hình 2 3 Kiến trúc mạng Mutil Layber Perceptron(MLP)
Một mạng Neural Network-NN sẽ có 3 tầng chính là:
• Tầng vào (input layer): là tầng cho các đầu vào của mạng
• Tầng ra (output layer): là tầng cho các đầu ra của mạng
• Tầng ẩn (hidden layer): là tầng giữa vào và tầng ra, thể hiện cho việc tính toán, suy luận của mạng để tìm ra các đặc trưng
Ngoài ra còn có một hàm quan trọng để đánh giá xem hệ thống học máy đã mô hình hóa dữ liệu tốt đến mức nào là hàm mất mát (Loss function) Đây là hàm được dùng để tính toán lỗi dự đoán của mô hình trong quá trình đào tạo Nó cho biết độ sai khác giữa thực tế và kết quả dự đoán Từ đó nó sẽ tối ưu hóa mô hình của mạng bằng cách cực tiểu giá trị này Một số hàm loss có thể kể đến là Cross entropy loss hay Softmax loss function, Euclidean Loss Function, Hinge Loss Function, Hàm chi phí (cost function)
là trung bình của hàm mất mát áp dụng trên một tập các quan sát
Thuật toán suy giảm độ dốc Gradient Descent là một thuật toán tối ưu được sử dụng nhiều trong các bài toán Deep Learning với mục tiêu là tìm được mô hình đưa ra dự đoán chính xác nhất Trong đó:
- Gradient: là tỉ lệ độ nghiêng của đường dốc Về mặt toán học, Gradient của một hàm số là đạo hàm của hàm số đó tương ứng với mỗi biến của hàm
- Descent: là từ viết tắt của descending nghĩa là giảm dần Gradient Descent có nhiều dạng khác nhua như Stochatstic Gradient Descent (SGD), Batch Gradient Descent, Mini-batch Gradient Descent, … nhưng về cơ bản đều được thực hiện theo các bước:
Trang 24+ Bước 1: Khởi tạo các tham số Thường là các hệ số nhỏ hoặc là hệ số ngẫu nhiên hoặc bằng 0 Ví dụ:
+ Bước 2: Tính đạo hàm của hàm loss theo các biến:
+ Bước 3: Cập nhập các tham số mới bằng cách đi ngược với gradient
+ Bước 4: Lặp lại bước 1 và 2 đến khi thỏa mãn điều kiện dừng Trong đó:
• : là các tham số cần cập nhật và
• kí hiệu cho tham số tại bước cập nhật lần k khi thực hiện GD
• : là hàm mục tiêu cần cực tiểu
• : là tỉ lệ học với Điều kiện dừng của GD có thể là:
+ Kết thúc tất cả các epochs (đây là siêu tham số trong mô hình được dùng để định nghĩa số lần học được toàn bộ dữ liệu huấn luyện) đã định sẵn + Hàm mất mát có giá trị không thay đỏi sau một số lần hữu hạn epochs + Gía trị của hàm mất mát đủ nhỏ và độ chính xác của model đủ lớn
Gradient Descent phụ thuộc rất nhiều vào điểm khởi tạo và tốc độ học (learning rate) ở bước 1
Hình 2 4 Vai trò của tốc độ học – Learning Rate 2.2.2 Mạng neuron tích chập - CNN
Trang 25Hình 2 5 Mô hình tổng quan của CNN
Mạng neuron tích chập (Convolutional Neural Network - CNN) là mạng thường được dùng phổ biến trong bài toán xử lý ảnh Nó ra đời để nâng cao khả năng trích chọn đặc trưng trong ảnh bằng cách tìm các mối tương quan giữa những điểm ảnh kề cận với nhau Mạng CNN bao gồm các tầng Convolution, Pooling và các hàm kích hoạt Activation function được sắp xếp theo một thứ tự thích hợp tùy từng loại cấu trúc Dưới đây ta sẽ đi qua lần lượt các tầng trong đó:
Convolutional layer (CONV): gọi là tầng tích chập, đây là tầng đầu tiên để bóc tách các đặc trưng của ảnh đầu vào Sử dụng một bộ lọc (filter hoặc kernel) thường có kích cỡ MxM trượt qua bức ảnh Phần của bức ảnh mà bô lọc trượt qua được gọi là receptive field, tức là vùng mà một neural có thể nhìn thấy và đưa ra quyết định Đầu ra của quá trình là một ma trận đặc trưng (Feature map) có chứa thông tin của bức ảnh như
là góc và cạnh Sau đó feature map được đưa đến các tầng tiếp theo để học những đặc điểm khác
Pooling layer (POOL): gọi là tầng tổng hợp, đây thường là tầng sau Convolution layer Nó sẽ xác định đặc trưng chính hay quan trọng nhất trong mỗi vùng của ảnh Tầng này nhằm mục đích giảm kích thước của feature map để giảm chi phí tính toán Nó được thực hiện bằng cách giảm số kết nối giữa những tầng và các tính toán độc lập trong feature map Một số loại pooling:
- Max pooling: lấy các thành phần giá trị lớn nhất trong mỗi khu vực feature map
- Average pooling: lấy trung bình của các thành phần trong mỗi khu vực feature map
- Global average pooling: lấy trung bình toàn bộ feature map
- Sum pooling: lấy tổng hợp các thành phần trong một khu vực của feature map Đây thường là tầng kết nối giữa Convolutional layer và Fully connected layer
Trang 26Hình 2 6 Một số loại Pooling
Fully connected layer (FC) hay Dense layer: gọi là tầng kết nối hoàn toàn, nó được dùng để kết nối các neuron với tất cả neuron của tầng trước đó Tầng này thường được đặt trước đầu ra của mạng CNN Thông thường đầu vào từ tầng trước đó sẽ được làm phẳng (flatten) và đưa vào tầng Fully connected Trong đây sẽ thực hiện các phép toán để phân loại dựa theo các bài toán
Activation functions hay Activation layer: gọi là hàm kích hoạt hay tầng kích hoạt Đây là hàm quan trọng của mô hình CNN Nó được sử dụng để học và xác định gần đúng về mối quan hệ phức tạp giữa các biến (variable) của mạng Nó sẽ quyết định xem thông tin nào sẽ được truyền tiếp và thông tin nào không cần Nó là một hàm phi tuyến Một số hàm thường dùng:
+ Sigmoid: đầu vào là số thực, đầu ra giới hạn trong khoảng (0,1)
+ Tanh tương tự như hàm sigmoid, đầu vào là các số thực nhưng đầu ra trong khoảng (-1,1)
+ Relu: (tên đầy đủ là Retified Linear Unit) là hàm kích hoạt thường được dùng kèm với mạng CNN Nó biến toàn bộ giá trị đầu vào thành số dương Điểm mạnh của hàm này là việc chi phí tính toán thấp
Trang 27+ Softmax: là hàm trung bình mũ Nó thường được sử dụng để tính xác suất xảy ra của một sự kiện Hay tổng quát hơn là hàm softmax tính khả năng xuất hiện của một class trong tổng số tất cả các class có thể xuất hiện Sau đó, xác suất này được sử dụng để xác định class mục tiêu cho các đầu vào Đầu ra của hàm sẽ là một giá trị trong khoảng (0,1] Do đó hàm softmax thường được sử dụng ở những layer cuối của mạng classification nhằm đánh giá xác suất phân loại Với n là số class thì ta có công thức, i=1,2, ,n:
Hình 2 7 Đồ thị các hàm kích hoạt Sigmoid, Tanh, ReLU
Hình 2 8 Hàm Softmax với bài toán phân loại nhiều lớp
Batch normalization: đây là phương pháp chuẩn hóa dữ liệu được sử dụng phổ biến trong mô hình DL Nó là một trong những kiểu chuẩn hóa của tầng Normalization layer, thường được đặt giữa Convolutional layer và Pooling layer Nó cho phép mô hình đào tạo nhanh hơn và ổn định hơn bằng cách thống nhất sự phân bố đầu vào các tầng trong quá trình huấn luyện Ngoài ra nó còn làm giảm sự phụ thuộc của gradients vào tỉ lệ của các tham số hoặc giá trị ban đầu
Dropout: đây là cơ chế bỏ qua ngẫu nhiên một số đơn vị (unit) hoặc kết nối (connection) với một xác suất xác định
Trang 28Hình 2 9 Mạng NN trước và sau khi Dropout 2.2.3 Mạng neuron hồi quy – RNN
Các mạng hồi quy còn được biết đến như Recurrent Neural Network - RNN là
một lớp của mạng neuron cho phép đầu ra được sử dụng như đầu vào trong khi có các trạng thái ẩn Nếu như các mạng CNN đa phần được giải quyết các bài toán với đầu vào
là các dữ liệu độc lập và có phân phối giống nhau (independently and identically distributed – i.i.d) như hình ảnh, thì mạng RNN được ra đời để giải quyết những đầu vào có tính thời gian, theo dạng chuỗi gọi chung là những đối tượng có tính tuần tự ví
dụ là các tín hiệu âm thanh, hành vi của một người, Ý tưởng chính của phương pháp
là mạng RNN sẽ đọc các đầu vào của dữ liệu tại mỗi bước thời gian nhất định (gọi là time-step) Đầu ra tại mỗi bước sẽ được đưa vào mạng và mạng sẽ ghi nhớ trạng thái này coi là trạng thái trước đó và sẽ ảnh hưởng đến đầu ra của bước tiếp theo Cứ thế, quá trình này được gọi là quá trình “hồi tiếp”
Hình 2 10 Kiến trúc mạng RNN
Trang 29Đi sâu vào chi tiết hơn, ta có thể thấy qua hình trên Nếu như mạng neuron thông thường khi input x đi qua các hidden layer h và cho ra output là y với fully connected giữa các tầng thì với RNN, các input xt sẽ được kết hợp với hidden layer ht-1 bằng hàm
fw để tính toán ra hidden layer hiện tại và output yt sẽ được tính ra từ ht , W là tập các trọng số Như vậy kết quả từ các quá trình tính toán trước đã được nhớ bằng cách kết hợp thêm ht-1 tính ra ht nhằm cải thiện độ chính xác của việc dự đoán ở bước hiện tại
Với:
fw là hàm tanh ngoải ra có thể sử dụng một số hàm phi tuyến khác như ReLU, …
Whh , Wxh , Why : là 3 ma trận trọng số cho 2 quá trình tính toán là Whh kết hợp với bộ nhớ trước ht-1 và Wxh kết hợp với xt để tính ra bộ nhớ của bước hiện tại ht từ đó kết hợp
Why để tính ra yt
Một số cấu trúc mở rộng của RNN:
LSTM (Long Short Term Memory): là mạng bộ nhớ dài ngắn Được đưa ra để giải quyết vấn đề các gradient có xu hướng bị mất mát – vanish (các giá trị tiến về 0) hay bùng nổ
- explode (đạt đến một giá trị quá lớn) đối với chuỗi đầu vào dài
BiLSTM (Bidirectional LSTM): là mạng bộ nhớ dài ngắn hai chiều Cấu trúc này giúp
mô hình học được cả vào ngữ cảnh quá khứ (trái sang phải – forward LSTM) và tương lai (phải sang trái – backward LSTM) Khiến cho mô hình dự đoán chính xác hơn tuy nhiên cần nhiều dữ liệu hơn
Hình 2 11 Cấu trúc BiLSTM
Trang 302.2.4 Một số cấu trúc mạng CNN hiện nay
Hình 2 12 Lịch sử phát triển các cấu trúc mạng CNN
Từ khi Machine Learning, Deep Learning phát triển cho đến nay có rất nhiều mô hình mạng neuron được phát triển dựa trên kiến trúc CNN Sau đây em xin trình bày 3
mô hình là Alexnet, VGGNet và ResNet Trong đó 2 kiến trúc VGGNet và ResNet thường xuyên được áp dụng làm khung (backbone) cho các mô hình xử lý hình ảnh (computer vision - CV) mà OCR là bài toán con.[14]
2.2.4.1 Alexnet(2012)
Hình 2 13 Kiến trúc mạng Alexnet
AlexNet [10] là mạng CNN được giới thiệu vào năm 2012 bởi Alex Krizhevsky, Ilya Sutskever và Geoff Hinton Mạng AlexNet có 5 tầng convolution và 3 tầng fully connected với 60 triệu tham số.[14] Điểm nổi bật so với các mô hình trước đó như LeNet (một trong những mạng tích chập được công bố đầu tiên được triển khai các tầng tích chập):
Trang 31+ Tăng kích thước đầu vào và độ sâu của mạng
+ Sử dụng các bộ lọc với kích thước giảm dần qua các tầng để thích ứng với kích thước các đặc trưng cục bộ và toàn cục
+ Đây là mô hình đầu tiên triển khai activation function là ReLU
+ Có sử dụng Dropout và batch normalization
2.2.4.2 VGG(2014)
Hình 2 14 Kiến trúc mạng VGG-16
Trong khi AlexNet tập trung vào các đặc trưng từ lớp Convolution đầu tiên qua kích cỡ filter và stride nhỏ hơn thì VGG [11] lại quan tâm đến một vấn đề khác là 20 độ sâu VGG là viết tắt của Visual Geometry Group với 13 tầng Convolution và 3 tầng Fully connected.[14]
Chi tiết kiến trúc của VGG bao gồm:
- Đầu vào: VGG nhận đầu vào là ảnh RGB kích cỡ 224x224 pixel
- Convolutional layers: tầng này ở VGG sử dụng receptive field (3x3) Ngoài ra cũng có các bộ lọc 1x1 để biến đổi tuyến tính các đầu vào và được theo sau bởi ReLU Stride được đặt là 1
- Fully connected layer: VGG có 3 tầng fully connected với 2 tầng đầu là 4096 kênh, tầng cuối là 1000 kênh
- Hidden layer: tất cả các lớp ẩn của VGG đều dùng ReLU (đây là một cải tiến lớn
so với AlexNet giúp cắt giảm thời gian) VGG cũng không thường sử dụng Local Response Normalization (LRN), do LRN làm tăng bộ nhớ và thời gian đào tạo
mà không tăng được độ chính xác như mong đợi
Mặc dù VGG được xây dựng dựa trên AlexNet nhưng cũng có những điểm khác biệt:
- Thay vì sử dụng receptive field (11x11 với stride là 4 hay 7x7), VGG sử dụng receptive field nhỏ hơn (3x3 với stride là 1) Do nó sử dụng 3 bộ ReLU thay vì một của AlexNet, khiến cho khả năng đưa ra phân biệt các lớp tốt hơn Ngoài ra số lượng tham số của nó cũng ít hơn Do
+ 2 tầng với bô lọc 3x3 có thể bao như bộ lọc 5x5
+ 3 tầng với bộ lọc 3x3 có thể bao như bộ loc 7x7
+ 5 tầng với bộ lọc 3x3 có thể bao như bộ lọc 11x11
Trang 32- Tuy nhiên một điểm yếu của VGG là mô hình khá nặng (khoảng 500MB) với
138 triệu tham số
Một số mô hình VGGNet: VGG-16, VGG-19, VGG-11, VGG-13, …
2.2.4.3 ResNet(2015)
Hình 2 16 Cấu trúc mạng ResNet
Với những cấu trúc trước thời ResNet, việc cải tiến mô hình thường dựa trên việc tăng số lượng tầng trong thiết kế để đạt được hiệu quả tốt hơn Tuy nhiên việc tăng số lượng các tầng càng về sau càng trở nên bão hòa độ chính xác, nó không chỉ không tăng
mà còn giảm nhanh (hiện tượng vanishing/exploding gradients) Do đó các nhà nghiên cứu đến từ Microsoft đã giải quyết vấn đề này bằng cấu trúc ResNet (tên đầy đủ là Residual Network) – nó sử dụng các skip connection (nó sẽ bỏ qua hay nối tắt đến các phần khác) trong khi xây dựng mô hình sâu hơn ResNet là một trong những mô hình đầu tiên áp dụng Batch normalization Điều này làm kích cỡ của mô hình giảm đáng kể, chỉ với 26 triệu tham số Nền tảng của ResNet là khối CONV và khối xác định (identity hay là botteneck)
Trang 33Hình 2 17 Chi tiết bên trong khối Identity
Điểm mạnh của cấu trúc:
• Sử dụng skip connection
• Thiết kế mạng CNN có thể sâu tới 152 tầng mà không ảnh hưởng đến độ hiệu quả của mô hình
• Một trong số cấu trúc đầu tiền sử dụng Batch normalization
Một số hô hình ResNet: ResNet-18, ResNet-34, ResNet-50, ResNet-101, …
2.2.5 Một số cơ chế quan trọng
2.2.5.1 Cơ chế CTC
Cơ chế CTC (tên đầy đủ là Connectionist Temporal Classification) lần đầu tiên được giới thiệu vào năm 2006 bởi Graves [13] Ban đầu cơ chế này được sử dụng để nhận dạng giọng nói với dữ liệu là tuần tự theo thời gian Đến khi áp dụng vào bài toán nhận diện chữ thì các ảnh đầu vào được coi là một chuỗi các khung pixel dọc của ảnh Một mạng có đầu ra sẽ dự đoán của mỗi khung, nó cho biết phân phối xác suất của nhãn ở mỗi khung Quy tắc CTC sau đó được áp dụng để chỉnh sửa dự đoán ở mỗi khung thành một chuỗi văn bản Trong quá trình đào tạo, hàm mất mát được tính là tổng logarit âm của xác suất của tất cả các dự đoán có thể trên mỗi khung mà nó sinh một chuỗi mục tiêu bởi quy tắc CTC Do đó CTC là phương pháp có thể đào tạo từ đầu đến cuối chỉ với nhãn ở cấp độ từ mà không cần đến nhãn ở mức ký tự Ứng dụng đầu tiên của CTC trong OCR có thể được tìm thấy trong hệ thống nhận dạng chữ viết tay cũng của Graves vào năm 2008 [14] Sau đó được mở rộng và phát triển với chữ ngoài đời thật như [15]
Điểm mạnh:
• CTC cho thấy được hiệu quả tố và tính ổn định hơn khi sử dụng
Điểm yếu:
Trang 34• Phương pháp CTC rất phức tạp dẫn đến chi phí tính toán lớn đối với những chuỗi văn bản dài
• CTC còn gặp phải các vấn đề liên quan đến vấn đề phân phối đỉnh (the peaky distribution problems) [17] và hiệu quả của nó thường suy giảm khi các mẫu bị lặp lại
• Nhận dạng chữ ngoài tự nhiên còn kém do thiếu thông tin ngữ cảnh
2.2.5.2 Cơ chế Attention
Trước khi đi vào chi tiết cơ chế Attention Chúng ta sẽ cùng tìm hiểu qua một cấu trúc mạng có liên quan lớn đến cơ chế này là cấu trúc Sequence-To-Sequence (Seq2Seq) bao gồm phần Encoder và Decoder
a) Cấu trúc Seq2Seq
Mạng Seq2Seq gồm có 2 phần chính là Encoder và Decoder Trong đó:
+ Bộ mã hoá (Encoder): Sẽ đảm nhiệm việc trích xuất thông tin từ chuỗi đầu vào và cung cấp nó cho Decoder Đầu ra là một vector biểu diễn duy nhất mang toàn bộ thông tin
+ Bộ giải mã (Decoder): Sẽ thực hiện quá trình sinh chuỗi mới từ những thông tin mà Encoder đưa vào
Hình 2 18 Ví dụ Seq2Seq trong dịch máy
Việc xây dựng mạng Encoder và Decoder này rất đa dạng có thể được xây theo nhiều kiểu kiến trúc mạng như RNN, LSTM, GRU, BiLSTM, tuỳ thuộc từng bài toán
Trang 35Hình 2 19 Mô hình mạng Encoder-Decoder
b) Cơ chế Attention
Cơ chế chú ý lần đầu tiên được trình bày trong [16] để cải thiện hiệu suất của hệ thống dịch máy bằng mạng thần kinh và phát triển mạnh mẽ trong nhiều ứng dụng Machine Learning và Deep Learning bao gồm cả nhận dạng chữ viết Lý do:
+ Mô hình Seq2Seq với RNN thì với một chuỗi thông tin dài mà Encoder phải nén toàn bộ thông tin vào 1 vector biểu diễn duy nhất, rất khó và sẽ gây ra tình trạng
“nghẽn” (bottleneck) làm “quên” thông tin
+ Tại mỗi time-step thì Decoder chỉ nhìn thấy một vector biểu diễn đầu vào duy nhất mặc dù các phần khác nhau của chuỗi vào có thể tốt hơn
Mục đích: Attention được ra đời để giải quyết các vấn đề trên Việc đưa ra các dự đoán, quyết định dựa trên một hoặc nhiều thành phần của thông tin đầu vào (không phải tất cả) Hay nói cách khác là những đặc điểm nổi bật nhất của nó
Cơ chế: Mô hình Seq2Seq khi áp dụng cơ chế Attention vào sẽ có cấu trúc như Hình 1.20
Trang 36Hình 2 20 Mô hình Seq2Seq áp dụng cơ chế Attention
Các bước thực hiện decoder tại time-step[6]:
+ Bước 1: Nhận vector trạng thái ẩn tại decoder ht và vector trạng thái ẩn của hs.
+ Bước 2: Tỉnh điểm attention Vói mỗi vector trạng thái ẩn của encoder thì ta cần tính điểm thể hiện sự liên quan với vector trạng thái ẩn ht của decoder Cụ thể, ta sẽ áp dụng một phương trình tính “điểm” attention với đầu vào là vector trạng thái ẩn decoder – ht va một vector trạng thái
ẩn của encoder ẩn của encoder – hs và trả về một giá trị vô hướng score(ht, hs)
+ Bước 3: Tính trọng số attention Áp dụng hàm softmax với đầu vào là điểm attention:
+ Bước 4: Tính toán vector bối cảnh ct là tổng của các trọng số attention nhân với vector trạng thái ẩn của decoder tại time-step tương ứng:
Trang 37Cuối cùng, các vector attention at dùng để đưa ra đầu ra được tính dựa trên vector bối cảnh ct và vector
+ Các loại Attention Ta có thể chia các loại Attention theo hàm tính score
Hình 2 21 Một số kiểu Attention
Hình 2 22 Một số kiểu tính score của Attention
Một số ví dụ Attention trong OCR:
+ Attention OCR:
Trang 38Hình 2 23 Mô hình Attention-OCR
+ Mô hình CRNN + Attention [16], [20]:
Trang 39+ Có thể huấn luyện mô hình ở mức từ thay vì ký tự
+ Bản chất các mô hình sử dụng cơ chế attention ngầm được hiểu là mô hình ngôn ngữ và thế nên nó có thể kết hợp với các mô hình ngôn ngữ khác
+ Những năm gần đây, phương pháp tiếp cận dự đoán dựa trên Attention đã vượt trội hơn CTC trong đa số trường hợp
Điểm yếu:
+ Cần nhiều dữ liệu với vốn từ vựng lớn do đối với những chuỗi văn bản dài, cơ chế attention khó để huấn luyện từ đầu do sư sai khác giữa ảnh ban đầu và output của chuỗi văn bản do hiện tượng mất chú ý (the attention drift phenomenon) [21] Với những chuỗi văn bản dài, module attention căn chỉnh (alignment) nhãn cần khả năng lưu trữ và tính toán nhiều
+ Mô hình có thể không tốt khi gặp những dạng từ khác biệt lớn với tập huấn luyện Ngược lại thì CTC ít phụ thuộc hơn vào các mô hình ngôn ngữ và tốt hơn việc alignment từng pixel ký tự nên nó đọc tốt hơn ở các ngôn ngữ tiếng Trung và tiếng Nhật (những ngôn ngữ có lượng ký tự lớn)
Trang 40Hình 2 25 Ảnh trước và sau khi áp dụng cơ chế NMS
Đầu tiên ta sẽ đề cập đến khái niệm về IOU (Intersection over Union) trước IOU
là một chỉ số được sử dụng để đo độ chồng lên nhau giữa 2 bounding boxes
Giả sử ta có 2 boxes với:
• Box 1: tọa độ trái trên là (x1, y1) tạo độ phải dưới là (x2, y2)
• Box 2: tạo đọ trái trên là (x3, y4) tạo độ phải dưới là (x4, y4)