手寫輸入作為與設備的一種重要交互方式一直都受到各個廠商的重視,特別是對於中老年朋友來說,更喜歡通過手寫而不是鍵盤的方式來進行輸入。此外,對於一些複雜的語言、交互演示場景、試教等,手寫輸入扮演着不可或缺的作用。

Google 手寫界面


15年時谷歌曾經推出了支持82種語言的手寫輸入,並在去年升級為100種語言。但隨着機器學習的迅速發展,研究人員也在不斷重構着以往的方法為用戶帶來更快更準的體驗。

Google 手寫支持100種語言

先前的模型基於人工設計的方法,將輸入筆畫切分成單個字符並利用對應的解碼器進行理解。為了提高準確率和速度,研究人員開發了基於循環神經網絡的端到端手寫識別系統,通過將輸入筆畫轉為貝塞爾曲線序列進行分析處理,利用RNN得到了準確率更高的識別結果。在這篇文章中,研究人員以拉丁字母為例詳解了新型手寫字符識別背後的故事。

Google 手寫輸入實例

觸點、曲線和循環神經網絡

任何手寫字符識別系統都需要從識別手指/輸入設備的觸點。我們在屏幕或者手寫板上輸入的筆畫可以看做是一系列包含時間戳的出觸點序列。考慮到輸入的設備在尺寸、分辨率上各不相同,研究人員首先對輸入的觸點坐標進行了歸一化處理。而後利用三次貝塞爾曲線來對觸點序列進行描述,以便RNN能夠更好的理解筆畫序列的形狀。

貝塞爾曲線在手寫識別中有着很長的應用歷史


貝塞爾曲線在手寫識別中有着很長的應用歷史,基於貝塞爾曲線可以對輸入數據進行更加連續的表達,對於不同的採樣率和分辨率更加魯棒。在貝塞爾曲線表達中,每一條曲線可以被表示為起始點、終止點和兩個控制點的多項式,較少的參數精確的表達輸入筆畫。

字母g可以用圖中的黃色、藍色、粉色和綠色點來表示四條三次貝塞爾曲線的序列

這種方法代替了谷歌先前基於分割-解碼的方案,先前的方案需要先將輸入的筆畫分割成單個字符,而後利用解碼的方式尋找最有可能的字符。使用貝塞爾曲線表達輸入筆畫的另一個優點在於它可以更加緊緻的表述輸入的觸點序列,這將便於模型從輸入中抽取輸入的時序依賴性。上圖中顯示了利用貝塞爾曲線擬合“go”字符的過程。原始的輸入點集包含了186個觸點坐標,其中對於字母g可以用圖中的黃色、藍色、粉色和綠色點來表示四條三次貝塞爾曲線的序列,而對於字母o可以用橙色、翠綠色和白色表示的三條貝塞爾曲線序列來描述。

在貝塞爾曲線序列表示的輸入基礎上,我們需要對序列進行解碼才能得到所表示的字符。RNN是處理序列輸入的有效方式,所以研究人員利用了多層RNN來對序列數據進行解碼,並為每一個輸入序列生成一個表示其所代表字母可能性的矩陣,從而計算出手寫筆畫代表的字符。

多層RNN來對序列數據進行解碼


在實際過程中,研究人員選擇了一種雙向的准循環神經網絡來作為處理模型,這種模型中具有交替的卷積和回歸層在理論上具有並行處理的可能性,同時也在網絡權重較少的情況下保持模型的能力。由於手寫字符識別更多的是在移動設備上進行,小尺寸的模型是保持速度的關鍵所在。

為了對曲線序列進行解碼,識別出對應的字符,循環神經網絡會生成一個表示字母可能性的解碼矩陣。矩陣的每一列代表了一條貝塞爾曲線,而每一行則代表了對應輸入曲線對應的字母可能性。在上圖中的解碼矩陣中,對於每一列我們可以看到它和先前的序列一起構成了26個字母上對應的概率分布。第一到第三條曲線序列都對應着blank(代表還沒有識別出字符,來自於CTC算法),而到了第四條曲線時網絡在g字母處得到了較高的概率,這意味着RNN從前面的四條曲線中識別出了字母g,而後面的第八條曲線上我們又可以看到字母o對應的位置有較高的概率。通過序列處理就能將曲線解碼為對應的字符。

此外還有兩個有趣的現象值得注意,對於字母g的識別,在第四列中y字母(倒數第二個)對應的激活也比較高,這是因為g和y看起來比較類似。而對於o字母的識別,每一條曲線輸入後o對應的概率在不斷提升,這也和我們的直覺相吻合,o代表的圓圈畫的越完整是o的可能性就越大。

此外研究人員還引入了有限狀態語言模型解碼器來對網絡的輸出進行組合,對於某些常見的字符組合會有更大的可能性輸入,這樣就可以快速的將解碼出的字符轉換為單詞輸出。

總結下來新方法一共分為了三個主要步驟,首先將觸點序列轉為緊湊的貝塞爾曲線,隨後利用QRNN進行解碼,最後利用字符結果組合出對應的單詞。雖然看起來很簡單,但這種方法相比原先的方法使得識別的錯誤率下降了20%-40%!

關於模型訓練

模型的訓練分為兩部分,一部分是基於connectionist temporal classification(CTC)損失對模型進行訓練,另一部分是基於貝葉斯優化的解碼器調參。訓練的數據主要包含了三個數據集,分別是IAM-OnDB在線手寫字符數據集,IBM-UB-1英語數據集,以及ICDAR 2013的中文數據集Chinese Isolated Characters,ICFHR2018中的越南語數據集。詳細的數據集鏈接請參看文末參考文獻。

設備部署

對於手寫識別來說,精確的模型沒有速度的保證對於用戶來說是無法忍受的。為了減小手寫輸入的延時,研究人員將模型在tensorflow Lite上進行了實現,通過如量化等一系列手段成功地減小了模型和最終應用安裝包的大小。完善的模型加上小巧的實現將讓手機更容易看懂我們筆跡。如果想要了解更多細節,請參考原文

本文轉自公眾號 將門創投,原文地址