3.4.1 Chuẩn bị dữ liệu
Chuẩn bị dữ liệu là bước cực kì quan trọng, nó quyết đinh rất lớn đến kết qủa thu được, dữ liệu càng đa dạng và tổng quát thì mô hình có tính tổng quát hóa cao, sẽ dự đoán tốt cho những dữ liệu tương lai. Một phần vì thời gian, cũng như dữ liệu thật là có hạn, nên quá trình gán nhãn dữ liệu mất rất nhiều thời gian cũng như là bị hạn chế của dữ liệu thật,bên cạnh đó có nhưng bước tiền xử lý, áp dụng xử lý ảnh để bỏ nhiễu cũng như làm giàu dữ liệu, bằng cách xoay ảnh với các góc khác nhau như 0,𝜋2, 𝜋,3𝜋2 trích tầng vùng trên bức ảnh với các vùng có diện tích tỉ lệ từ 0.1 đến 1. Sau đó thay đổi kích thước ảnh vềkích thước đầu vào chuẩn kích thước là: 512 𝑥 512
31 Dữ liệu để train với Pixellink được chia thành hai phần đó là dữ liệu tự gán nhãn và dữ liệu được sinh ra.
3.4.2 Dữ liệu thật:
Từ các ảnh, sử dụng công cụ là phần mềm LabelImg để xác định hộp cho các chuỗi, phần mềm này ứng với mỗi ảnh sẽ sinh ra một tệp có định dạng *.xml tương ứng, từ tệp *.xml mình chuyển về định dạng mong muốn đầu vào của mạng và lưu dưới tệp định dạng .txt
Chú ý: Nếu quá trình xác định hộp cho dữ liệu thật mà nội dung của hộp đó không thể xác định bằng mắt thường thì được xem là nhiễu, khi đó nội dung đó được gán nhãn là ###, để quá trình đào tạo ở mạng lúc tính toán mất mát sẽ xem nhưng hộp đó có chi phí bằng 0, sẽ không ảnh hưởng đến quá trình cập nhật trên các bộ tham số của mô hình. Dưới đây là hình ảnh minh họa của quá trình xác định hộp cũng như gán nhãn cho hộp
Hình 3.0.4 Hình minh họa của quá trình xác định hộp
32 Mỗi tệp tin có định dạng *.txt có cấu trúc như sau:
Giải thích nội dung tệp *.txt
Mỗi hàng ứng với mỗi hộp tương ứng trên hình đã được đánh nhãn hộp, tám phần tử đầu tiên từ trái sang phải lần lượt là tọa độ của các hộp tương ứng, phần tử sau cùng là nội dung của hộp đó chứa. Việc dánh nhãn nội dung ứng với tầng hộp sẽ có thể tái sử dụng cho quá trình đào tạo mạng nhận dạng.
3.4.3 Dữ liệu được sinh ra
Bởi vì sự hạn chế của dữ liệu thật, cũng như là thời gian đánh hộp dữ liệu, qua tìm hiểu thì để sinh dữ liệu có nhưng mạng nỗi tiếng như GAN, nhưng do một số hạn chế nên sử dụng các kỹ thuật trong xử lý ảnh để tạo ra dữ liệu, nó được thực hiện một cách tự động từ việc sinh nội dung và gán nhãn nội dung cho tầng hộp. Sau đây tôi trình bày tầng bước trong quá trình sinh dữ liệu của mình
Cần có các phông chữ hỗ trợ ngôn ngư mình muốn nhận dạng và phát hiện, cụ thể nếu ngôn ngư là tiếng Việt thì sử dụng các phông hỗ trợ tiếng Việt, và các nền mình muốn sinh dữ liệu lên đó, và một bộ từ điển
Và dữ liệu thật sẽ không bao giờ là sạch, chúng sẽ chứa nhiễu, cũng như tác động bởi môi trường bên ngoài như ánh sáng, chất lượng hình ảnh đầu vào khác nhau.
Bước 1: Sử dụng kỹ thuật xử lý ảnh để sinh các chuỗi chứa trong từ điển lên nền
33
Bước 2:Áp dụng các kỹ thuật xử lý ảnh để tạo các hiệu ứng, mô phỏng các hiệu ứng giống với dữ liệu thật.
Bước 3:Xác định vùng hộp cho các chuỗi được sinh ra và lưu dưới định dạng là tệp .txt. Tệp này có cấu trúc nội dung giống như cấu trúc tệp .txt của dữ liệu thật.
Dưới đây là mẫu của dữ liệu sinh gồm ảnh và nội dung tệp .txt tương ứng.
Hình 3.0.5 Dữ liệu sinh ra
Hình 3.0.6 Nhãn của dữ liệu sinh
3.4.4 Tiền xử lý dữ liệu:
Do Pixellink dựa vào phân loại các điểm ảnh và sau đó phân tách tầng nhóm điểm ảnh theo các nhóm khác nhau dựa vào điểm liên kết. Nhưng thực tế dữ liệu
34 thường chứa nhiễu nên chúng ta cần tiền xử lý trước khi đưa vào mạng để đào tạo, một số cách được áp dụng cho tiền xử lý như sau
• Sử dụng bộ lọc Gaussian, bộ lọc median để bỏ nhiễu • Loại nhưng hộp có diện tích bé
3.4.5 Quá trình đào tạo
• Dữ liệu thật 500 mẫu, dữ liệu sinh 1000 mẫu và đào tạo trong 72h
3.4.6 Tối ưu:
• Sử dụng SGD với momentum là: 0.9 và weight decay là 0.0005
• Tốc độ học được gán bằng 0.001 cho 100 vòng lặp đầu, sau đó được gán bằng 0.01
Dưới đây cấu hình máy cho quá trình đào tạo:
• Máy tính xách tay/Laptop Geforce GTX 1060, core i5, bộ nhớ RAM 8,0 GB
35 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 Pixellink
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
36 • Ả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ó.
37
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 toán này khác nhiều so với bài toá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 toá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ổitiếng như Deep Convolution Neural Networks (DCNN) không thể áp dụng trực tiếp cho bài toá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 toá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.
38 • 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 quá 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
39 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 toá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ự đoá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 các kí tự đơn lẻ ví dụ như chữ cái “i” và chữ cái “l”
40 • 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 toá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 toá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 RNN 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 đó
41 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
2 Phép toán
42
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
Một khối mạng đều có khả năng ghi nhớ cũng như bỏ đi các thông tin không cần 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
43 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
44 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 đó
45
Hình 4.0.8 Hình mô tả quá 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
Hình 4.0.9 Hình mô tả qúa trình xác định đầu ra
46 Tầng transcription là quá trình chuyển mỗi kết quả dự đoá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