Hình 3.0.8 hàm mất mát liên kết 3.4.7 Kết quả đạt được:
Hình 3.0.9 Hình kết quả của mơ hình Pixellink3.4.8 Hạn chế của mơ hình 3.4.8 Hạn chế của mơ hình
Bên cạnh nhưng nét tích cực của mơ hình thì Pixellink có nhưng điểm yếu nhất định, sau đây tôi xin nêu ra nhưng điểm yếu của mơ hình mà trong thực nghiệm tơi nhận thấy được
• Ảnh đầu vào có kích thước bé nhưng để phù hợp với kích đầu vào của mạng, cần biến đổi kích thước về chuẩn. Như vậy ảnh sẽ dễ bị vỡ và kết quả không tốt.
3.5 Kết luận chương
Trong chương 3 luận văn đề cập đến thuật toán Pixellink đây là một thuật toán sử dụng học sâu, thuật toán để xác định và phát hiện văn bản. Thuật tóa Pixellink thực hiện gán nhãn ở mức độ cụm sử dụng hai cơ chế đó lf phân loại các điểm ảnh và tính số điểm ảnh liên kết giũa các điểm ảnh kề nó.
CHƯƠNG 4. GIỚI THIỆU VỀ CONVOLUTION RECURRENT NEURAL NETWORK
4.1Giới thiệu bài toán và lợi thế của CRNN
Nếu muốn máy tính nhận dạng văn bản, NN là một lựa chọn tốt hơn tất cả các cách tiếp cận khác tại thời điểm hiện tại, Sử dụng NN ở đây là bao gồm CNN để trích xuất các đặc trưng chuỗi và sử dụng RNN để thu được thông tin qua đặc trưng chuỗi đó.
Nhận dạng chuỗi ký tự trên ảnh được nghiên cứu từ lâu, mạng CRNN giải quyết vấn đề nhận dạng các ký tự trên bức ảnh, bài toán này là một trong những thách thức và rất quan trọng trong nhận dạng chuỗi các ký tự trên các hình ảnh. bài tốn này khác nhiều so với bài tốn nhận dạng đối tượng tổng quát, bài toán nhận dạng chuỗi thường yêu cầu hệ thống dự đoán một chuỗi của các nhãn, thay vì một nhãn đơn lẻ. Vậy có thể xem nhận dạng đối tượng là một phần của bài tốn nhận dạng chuỗi, một trong những thuộc tính chuỗi đó là độ dài chuỗi thay đổi khác nhau. Như từ "ok" có độ dài là 2 kí tự nhưng từ " congratulation " có độ dài lên tới mười lăm kí tự như vậy nhưng kiến trúc mạng nổi tiếng như Deep Convolution Neural Networks (DCNN) khơng thể áp dụng trực tiếp cho bài tốn này
Vì đầu vào của mạng trên có chiều của đầu vào và đầu ra cố định. Trong khi đó nhãn của chuỗi có độ dài thay đổi. Do vậy, mơ hình Recurrent neural networks (RNN) ra đời, nhằm giải quyết bài tốn có tính chất chuỗi. Một trong nhưng lợi thế của RNN đó là khơng cần biết vị trí chính xác của các phần tử của chuỗi trong ảnh trong lúc đào tạo cũng như kiểm tra. Nhưng ở bước tiền xửa lý phải chuyển ảnh đầu vào có kích thước chiều cao cố định. Như vậy sự kết hợp của DCNN [8] và RNN tạo nên cấu trúc CRNN [9], Vậy nên mạng CRNN [9] có những lợi thế hơn các cấu trúc khác đó là:
• Có thể học trực tiếp chuỗi mà khơng cần chính xác vị trí của các phần tử trong chuỗi.
• Trích xuất trực tiếp đặc trưng từ ảnh không yêu cầu xử lý thủ cơng cũng như tiền xử lý.
• Có tính chất của RNN có thể sinh ra một chuỗi của các đối tượng.
• Khơng bị ràng buộc bởi độ dài của chuỗi, chỉ yêu cầu chuẩn hóa về chiều cao trong cả hai q trình đào tạo và kiểm tra.
• Cần ít tham số hơn mạng DCNN [8] tiêu chuẩn, tiêu tốn bộ nhớ ít hơn.
4.2 Cấu trúc
Cấu trúc của mạng CRNN [9] gồm ba phần từ dưới lên trên lần lượt là:
• Tầng convolution
• Tầng recurrent
• Tầng transcription
Tầng transcription là tầng cao nhất của CRNN, nhiệm vụ chuyển từ các đặc trưng của tầng recurrent trước đó về dạng chuỗi.
4.3 Tầng trích xuất đặc trưng chuỗi
Đặc trưng của một bức ảnh là một thành phần rất quan trọng, trích xuất đặc trưng là một bước bản lề cho các bước sau của thuật tốn. Hiện nay sự phát triển của DL trong đó có mạng CNN, là một mạng khá nổi tiếng để trích xuất đặc trưng từ bức ảnh. Ở mơ hình mạng CRNN [9] là sự kết hợp của mạng CNN và mạng RNN, dựa vào cấu trúc mạng, dễ nhận thấy rằng đã sử dụng CNN để trích xuất đặc trưng.
Ở tầng dưới cùng ở hình 4.0.1, thành phần bao gồm các convolutional và max- pooling và bỏ đi tầng kết nối đầy đủ, tầng trích xuất đặc trưng sử dụng để
trích xuất đặc trưng chuỗi trên ảnh đầu và trước khi đưa vào mạng thì các ảnh đầu vào phải đưa về cùng chiều cao. Bởi vì mỗi véc tơ đặc trưng phải cùng số chiều với nhau, sau đó các véc tơ của đặc trưng chuỗi được trích xuất từ feature maps là đầu vào của tầng tiếp theo. Cụ thể, mỗi véc tơ từ trái sang phải theo cột, nghĩa là véc tơ thứ � là sự nối nhau của các cột thứ i của tất các feature maps, độ rộng của mỗi cột là một điểm ảnh. Vì sử dụng max-pooling nên mỗi cột của feature maps tương ứng là các hình chữ nhật trên ảnh gốc (trên trường tiếp nhận). Dễ nhận ra, mỗi véc tơ của đặc trưng chuỗi là một hình chữ nhật đó trên ảnh gốc
4.4 Gán nhãn trình tự
Một bidirectional Recurrent Neural Network được xây dựng trên đỉnh của các tầng Convolutinal, được xem như tầng recurrent, tầng recurrent có nhiệm vụ dự đốn một phân phối �� cho mỗi frame của chuỗi đặc trưng = � 1, … … �� Những lợi thế của tầng recurrent là:
• Mơ hình RNN có khả năng mạnh mẽ trong lưu giư nội dung dạng chuỗi.
• Xử lý trên nội dung chuỗi là phù hợp và hưu dụng hơn nhiều so với xử lý trên tầng kí tự riêng lẻ. Bởi vì ví dụ như nhận dạng chuỗi trên bức ảnh thì việc xác định tầng kí tự rất khó khăn và khi ấy có nhiều trường sẽ dễ bị nhầm lẫn giưa
• Việc tối ưu của RNN là tối ưu hàm mất mát CTC, có thể sử dụng thuật tốn lan truyền ngược để tìm nghiệm tối ưu cho hàm mất mát này. Điều này dẫn đến sự kết hợp với các tầng convolution để tạo thành một mạng thống nhất.
• RNN có thể thực hiện trên các chuỗi với độ dài thay đổi
Để hiểu thêm về tầng này, dưới đây sẽ trình bày ngắn gọn về mạng RNN và sử dụng LSTM để khắc phục nhưng hạn chế của RNN.
Nếu sử dụng DL với đầu vào là ảnh thì có hai mạng nổi tiếng đó là CNN và RNN, trong đó RNN cho bài tốn dữ liệu đầu vào là chuỗi, bởi vì một chuỗi các sự kiện sẽ có mối liên quan lẫn nhau. Nên chỉ xử lý tầng thời điểm riêng lẻ sẽ khơng có đủ thơng tin để đưa ra câu trả lời chính xác nên từ đó mạng RNN ra đời nhằm giải quyết vấn đề này, dưới đây là cấu trúc của mạng RNN
Hình 4.0.2 Mơ hình RNNCác thuộc tính Các thuộc tính
• �1là đầu vào tại bước
• ��là trạng thái ẩn tại bước t , đó là bộ nhớ của mạng. �� được tính dựa trên trạng thái trước đó và đầu vào tại đó
Hàm f thường dùng là một hàm phi tuyến, thường sử dụng hàm ���ℎ hoặc ở thời điểm đầu tiên là �−1 thường được khởi tạo là 0
�� là đầu ra tại thời điểm t , như vậy muốn xác định từ xuất hiện tiếp theo thì �� là xác xuất của các từ trong từ điển, hay
�� ( ( ( ( ( ( ( ( ( ( ( ( ( ( (= �)
Nhưng thực tế RNN không thể xử lý với các phụ thuộc xa, đó là một vấn đề đã được chứng minh của Hochreiter và Bengio được trình bày trong bài báo của mình.
Từ nhưng hạn chế của RNN mạng LSTM ra đời nhằm giải quyết nhưng nhược điểm trên, LSTM là một dạng đặc biệt của RNN
Việc ghi nhớ thơng tin là một tính chất của mạng LSTM, sau đây là cấu trúc mạng
Hình 4.0.3 Cấu trúc mạng LSTM
TT Kí hiệu Nội dung
1 Tầng mạng
3 Chuyển tiếp nội dung
4 Kết hợp nội dung
5 Sao chép nội dung
Bảng 4.1 Các kí hiệu
Để giải thích rõ tại sao LSTM làm việc hiệu quả, tơi xin trình bày sơ qua về các thành phần trong mỗi khối mạng
Trạng thái của các khối mạng như một băng chuyền, nó chuyền từ khối này sang khối tiếp theo trong mạng. Gần như thơng tin ít bị thay đổi bởi ở các mắt xích chỉ tương tác tuyến tính.
Hình 4.0.4 Hình minh họa thơng tin được truyền đi
thiết bằng các cổng của nó, điều này được thực hiện bởi tầng mạng � ��� ��� và một phép nhân
Hình 4.0.5 Tầng mạng và phép nhân
Số lượng thơng tin có thể đi qua được quyết định bởi hàm số ������� , miền giá
trị của hàm ������� nằm trong khoảng [0,1]. Nếu là 0 thì khơng cho thơng tin đi qua, nếu là 1 nghĩa là cho tất cả thông tin đi qua
Để cho tiết hơn về LSTM sẽ đi sâu vào bên trong LSTM
Đầu tiên là đưa ra quyết định nhưng thông tin cần bỏ từ khối. Điều này được thực hiện bởi hàm �������, hay gọi với một tên khác là “tầng cổng quên”. Với đầu vào là ℎ�−1 và �� đi qua hàm �������, vậy kết quả của hàm ������� là một số thuộc [0, 1] quyết định lượng thông tin đi qua.
Hình 4.0.6 Hình minh họa cổng quên
Sau khi quyết định thơng tin đi qua cổng hay khơng thì bước tiếp theo sẽ là xem xét thông tin nào sẽ lưu lại trong khối. Ở bước này được chia thành hai phần
• Sử dụng sigmoid để quyết định thơng tin được cập nhật, biến đổi thông tin bằng cách sử dụng hàm tạo ra giá trị mới để cập nhật trạng thái.
• Sử dụng kết quả trên để cập nhật trạng thái của khối
Hình 4.0.7 Hình mơ tả cập nhật khối
�� = (((((((((((((((�. [ℎ�−1, ��] + ��)PT 5.2
�̃� = tanh (��. [ℎ�−1, ��] + ��)
Như vậy trạng thái ��−1 cũ trước đó được cập nhật thành trạng thái mới �� . Bằng cách nhân trang thái cũ với ft, bởi ft quyết định lượng thông tin sẽ quên, sau đó thêm thơng tin mới vào, tức là cộng thêm �� ∗ �̃� . Như vậy trạng thái mới phụ thuộc nhiều vào quyết định trước đó
Hình 4.0.8 Hình mơ tả q trình cập nhật trạng thái mới
Phương trình tương đương
�� = �� ∗ ��−1 +
�� ∗ �̃�
PT5.4
Mỗi một trạng thái của khối sẽ quyết định giá trị đầu ra, để xác định giá trị đầu ra cần thực hiện các bước sau
• Dùng tầng sigmoid để xác định thông tin cần đưa ra từ khối, sử dụng hàm ���ℎ chuyển trạng thái tế bào về khoảng [-1, 1]
• Thực hiện phép nhân của kết quả thực hiện bởi hàm tanh ở trên với giá trị đầu ra
Tầng transcription là q trình chuyển mỗi kết quả dự đốn của RNN sang chuỗi dự đoán. Ở đây, transcription tìm nhãn với xác suất lớn nhất trên mỗi dự đoán trên mỗi frame. Trong thực tế tồn tại hai mơ hình để thực hiện việc chuyển đổi từ xác suất dự đốn sang nhãn tương ứng, đó là lexicon-free và lexicon-based. Trong đó lexicon là một tập các chuỗi có nhãn cố định. Người ta sử dụng CTC cho quá trình đào đạo và q trình dự đốn, phương pháp này được đề xuất bởi Graves. Sau đây sẽ trình bày cơ bản về phương pháp này.
Phương pháp này bao gồm hai q trình là mã hóa và giải mã văn bản, q trình từ chuỗi xác suất đưa ra chuỗi văn bản gọi là quá trình giải mã, bởi vì khơng giống q trình đào tạo là sử dụng mã hóa, khi đã biết nhãn của chuỗi trước đó. Q trình giả mã khác q trình đào tạo ở chỗ chúng ta đã có một mơ hình đã được đào tạo và chúng ta sử dụng nó để nhận dạng văn bản khơng nhìn thấy trước đó, nghĩa là chúng dựa vào ma trận đầu ra của mạng để xác định chuỗi. Nhưng chúng ta chưa biết nhãn thực tế của nó, mà đang mong muốn mơ hình xác định nhãn đó. Nếu thử tất cả các trường hợp có thể nếu chỉ có một vài chuỗi cố định, nhưng thực tế thì khơng thể sử dụng cách này. Sử dụng một thuật tốn đơn giản nhưng nó cho kết quả tốt với thực tế, gồm hai bước sau
• Tìm chuỗi tốt nhất bằng cách lấy kí tự có xác suất cao nhất tại tầng frame
• Xóa bỏ nhưng tất cả nhưng “blank” từ chuỗi đó Ví dụ: Các kí tự là “a”, “b” và “-”(blank)
Nhìn vào hình dưới, giả sử có 5 đặc trưng chuỗi, áp dụng đường mã hóa tốt nhất từ ma trận, ở to kí tự phù hợp nhất là “a” tương tự với t1 , t2. blank có điểm số cao nhất tại t3 , và cuối cùng tại t4 là “b”. Như vậy kết quả nhận được là “aaa-b”, sau đó xóa bỏ đi nhưng kí tự lặp lại gần nhau thì kết quả đạt được là “a-b”, sau đó xóa bỏ đi blank kết quả sẽ thu được là “ab”. Vậy đầu ra của nhận dạng chuỗi là “ab”
Hình 4.0.10 Hình mình họa chọn các giá trị có xác suất cao nhất
Nhưng kết quả trên chỉ là một cách xấp xỉ, dễ dàng nhận được kết quả từ cách trên, tuy nhiên thuật toán xấp xỉ thường cho kết quả tốt với thực tế
4.6Hàm mất mát
Định nghĩa tập đào tạo là {{{{{{{{{{{{{{{ = {�� , �}}}}}}}}}}}}}}} trong đó �� là ảnh cho đào tạo, và �� là nhãn của ảnh tương ứng, hàm tối ưu là
� = − ∑ ((((((((((((((( � | ��)
��,,,,,,,,,,,,,,,� �� PT 5.7
Trong đó là chuỗi được sinh ra bởi recunrrent và convolution từ ��
Nhận thấy rằng đầu vào hàm mất mát của mạng là ảnh và nhãn là nội dung trên ảnh đó.
4.7Tóm tắt cấu trúc mơ hình
Kiểu Cấu hình
Transcription -
Bidirectional-LSTM hidden units:256 Bidirectional-LSTM hidden units:256
Map-to-Sequence - Convolution maps:512, k:2 × 2, s:1, p:0 MaxPooling Window:1 × 2, s:2 BatchNormalization - Convolution maps:512, k:3 × 3, s:1, p:1 BatchNormalization - Convolution maps:512, k:3 × 3, s:1, p:1 MaxPooling Window:1 × 2, s:2 Convolution maps:256, k:3 × 3, s:1, p:1 Convolution maps:256, k:3 × 3, s:1, p:1 MaxPooling Window:2 × 2, s:2 Convolution maps:128, k:3 × 3, s:1, p:1 MaxPooling Window:2 × 2, s:2 Convolution maps:64, k:3 × 3, s:1, p:1
Input W × 32 gray-scale image Bảng 4.2 Bảng các thành phần của mơ hình CRNN
4.7.1 Cách tạo dữ liệu và đào tạo
Như đề cập từ trước thành cơng của một mơ hình học máy hay học sâu phụ thuộc rất nhiều vào dữ liệu và chất lượng của dữ liệu. Đầu vào của mạng là một bức ảnh với độ cao cố định là 512, và nội dung của vùng ảnh đó.
Do hạn chế về dữ liệu và thời gian cũng như làm đa dạng dữ liệu, dữ liệu được chia thành hai phần là dữ liệu thật và dữ liệu sinh ra
4.7.2 Dữ liệu thật
Tận dụng dữ liệu đã gán nhãn của việc đào tạo mơ hình pixellink, ở đây sẽ có một chút thay đổi, bởi vì đầu vào của mạng là ảnh có chiều cao 512 và vùng nhãn là nội dung của vùng ảnh đó, nên sau khi cắt từng vùng ảnh từ ảnh gốc thì cần thay đổi kích thước vùng ảnh đó phù hợp với kích thước đầu vào.
Ví dụ về ảnh đầu vào và nhãn của của vùng đó Ảnh đầu vào:
Hình 4.0.11 Hình ví dụ ảnh đầu vào Nhãn của nó là: 459709241360
4.7.3 Dữ liệu sinh
Sử dụng các kỹ thuật xử lý ảnh để vẽ các nội dung lên một bức ảnh, nhưng quá trình này do muốn tạo sự đa dạng của dữ liệu đào tạo nên sử dụng thêm các kỹ thuật xử lý ảnh để tạo mẫu sao giống với dữ liệu thực tế nhất
Tổng số dữ liệu thật là 1000 ảnh
Dữ liệu sinh ra tự động trong lúc đào tạo với tỉ lệ xác suất dùng ảnh thật để đào tạo là 0.7, và tỉ lệ xác suất dùng ảnh sinh để đào tạo là 0.3, quá trình sinh tự