選自KDD 2018,作者:Fedor Borisyuk等,機(jī)器之心編譯,參與:路、曉坤。
人們在社交網(wǎng)絡(luò)上分享和獲取信息的主要途徑之一是視覺媒介,如照片和視頻。近年來,上傳至社交媒體的照片數(shù)量成指數(shù)級增長,每天可達(dá)數(shù)億張 [27],處理日漸增多的視覺信息成為一大技術(shù)挑戰(zhàn)。圖像理解的挑戰(zhàn)之一是從圖像中檢索文本信息,也叫光學(xué)字符識別(OCR),表示將包含鍵入、印刷或場景文本的電子圖像轉(zhuǎn)換成機(jī)器編碼文本的過程。從圖像中獲取此類文本信息很重要,因?yàn)檫@可以促進(jìn)很多不同的應(yīng)用,如圖像搜索和推薦。 在 OCR 任務(wù)中,給出一張圖像,OCR 系統(tǒng)可以準(zhǔn)確地提取出印刷或嵌入圖像中的文本。隨著大量字體、語言、詞典和其他語言變體(包括特殊符號、不在詞典內(nèi)的單詞,以及 URL 和電郵 id 等特殊信息)出現(xiàn)在圖像中,圖像質(zhì)量隨著文本出現(xiàn)的背景不同而出現(xiàn)變化,OCR 任務(wù)的難度增大。另一個原因是每天上傳至社交媒體、需要處理的圖像規(guī)模非常巨大。由于下游應(yīng)用的本質(zhì),人們對 OCR 任務(wù)的期待是實(shí)時處理,這要求我們花費(fèi)大量時間優(yōu)化系統(tǒng)各部分,以在合理的延遲時間內(nèi)執(zhí)行 OCR 任務(wù)。因此,OCR 任務(wù)的相關(guān)問題可以描述如下:構(gòu)建穩(wěn)健、準(zhǔn)確率高的 OCR 系統(tǒng),能夠?qū)崟r處理每天數(shù)以億計(jì)的圖像。 今天介紹的這篇論文展示了 Facebook 的可擴(kuò)展 OCR 系統(tǒng) Rosetta,該系統(tǒng)已經(jīng)被實(shí)現(xiàn)和部署在生產(chǎn)中,并主導(dǎo)了 Facebook 內(nèi)的下游應(yīng)用。Rosetta 遵循當(dāng)前最優(yōu) OCR 系統(tǒng)的架構(gòu),分為文本檢測階段和文本識別階段兩部分。文本檢測方法基于 Faster-RCNN 模型 [24],負(fù)責(zé)檢測圖像中包含文本的區(qū)域。文本識別方法使用全卷積字符識別模型,處理檢測到的區(qū)域,并識別這些區(qū)域所包含的文本內(nèi)容。圖 1 展示了 Rosetta 生成的一些結(jié)果。 圖 1:使用 Rosetta 系統(tǒng)的 OCR 文本識別?;?Faster-RCNN 的方法檢測出單個單詞,然后全卷積 CNN 生成每個單詞的轉(zhuǎn)錄。 論文:Rosetta: Large Scale System for Text Detection and Recognition in Images
摘要:本論文展示了一個已部署的可擴(kuò)展光學(xué)字符識別(OCR)系統(tǒng) Rosetta,該系統(tǒng)旨在 Facebook 每天上傳圖像數(shù)量級的圖像處理。圖像內(nèi)容分享已經(jīng)成為目前互聯(lián)網(wǎng)用戶在社交網(wǎng)絡(luò)上最主要的信息交流方式,理解圖像(包括其文本信息)對于搜索和推薦應(yīng)用來說至關(guān)重要。我們展示了高效圖像文本檢測和識別的建模技術(shù),介紹了 Rosetta 的系統(tǒng)架構(gòu)。我們對現(xiàn)有技術(shù)進(jìn)行了大量評估,解釋了構(gòu)建大規(guī)模 OCR 系統(tǒng)的有效實(shí)用方法,并基于 Rosetta 系統(tǒng)的開發(fā)和部署過程解釋了特定組件的工作原理。 3. 文本提取模型 OCR 過程分兩個獨(dú)立步驟:檢測和識別。第一步中,我們檢測圖像中有可能包含文本的矩形區(qū)域。第二步執(zhí)行文本識別,即使用 CNN 對檢測出的每一個區(qū)域中的文字進(jìn)行識別和轉(zhuǎn)錄。這個流程有諸多好處,如分離訓(xùn)練過程和文本檢測、識別模型的部署更新、并行運(yùn)行文本識別,以及獨(dú)立支持對不同語言的文本識別。詳見圖 2。 Figure 2: Two-step model architecture. The first step performs word detection based on Faster-RCNN. The second step performs word recognition using a fully convolutional model with CTC loss. The two models are trained independently. 圖 2:模型架構(gòu)(包含兩個步驟)。第一步基于 Faster-RCNN 執(zhí)行文本檢測。第二步使用帶 CTC 損失的全卷積模型執(zhí)行文本識別。兩個模型分開訓(xùn)練。 圖 3:文本識別模型架構(gòu)。 圖 4:在 CTC 文本識別模型的訓(xùn)練中,學(xué)習(xí)率、圖像寬度和最大單詞長度的行為的可視化圖示。 算法 1:CTC 文本識別模型的訓(xùn)練過程。 4. 系統(tǒng)架構(gòu) 這部分主要介紹 Facebook 的實(shí)時大規(guī)模 OCR 系統(tǒng) Rosetta 的系統(tǒng)架構(gòu)。圖 5 展示了 Rosetta 的架構(gòu)。Rosetta 使用拉式模型(pull-based model),將客戶端應(yīng)用程序上傳的圖像(圖 5 第一步)添加到分布式處理序列中。當(dāng)資源可用時,Rosetta 中的這一推斷器承擔(dān)將圖像添加到隊(duì)列的工作,然后進(jìn)行異步處理。執(zhí)行添加隊(duì)列工作時,用戶可以注冊回調(diào)。每次添加結(jié)束后,Rosetta 可以啟用回調(diào),實(shí)現(xiàn)下游應(yīng)用對結(jié)果的直接使用。該處理序列已經(jīng)得到優(yōu)化,以適應(yīng)高吞吐量和可用性,且使用 RocksDB [8] 保障持續(xù)性。這種拉式異步架構(gòu)具備很多優(yōu)勢,包括更好的負(fù)載平衡、請求峰值場景中的限速情況(例如,F(xiàn)acebook 上圖像上傳數(shù)的激增),以及優(yōu)化系統(tǒng)以適應(yīng)高吞吐量的能力。 圖 5:Rosetta 架構(gòu)。 Rosetta 內(nèi)的在線圖像處理流程包含以下步驟:
5. 實(shí)驗(yàn) 我們對 Rosetta OCR 系統(tǒng)進(jìn)行了大量評估。我們首先定義用于判斷系統(tǒng)準(zhǔn)確率和處理時間的指標(biāo),然后介紹用于訓(xùn)練和評估的數(shù)據(jù)集。我們遵循標(biāo)準(zhǔn)做法,在獨(dú)立的留出數(shù)據(jù)集上進(jìn)行模型訓(xùn)練和評估。我們介紹了模型評估過程,解釋了為準(zhǔn)確率和推斷速度之間的權(quán)衡所做的設(shè)計(jì)決策。最后我們分享了在 Rosetta 開發(fā)和部署過程中學(xué)到的經(jīng)驗(yàn),這些經(jīng)驗(yàn)幫助我們可以處理 Facebook 級別的圖像。 6. 部署 Rosetta 服務(wù)已在 Facebook 中部署,為圖像文本提取提供了一個云 API,處理每天上傳至 Facebook 的海量圖像。在 Rosetta 中,圖像的大小被調(diào)整到 800px,然后傳輸?shù)綑z測模型中,輸出每個單詞的邊界框坐標(biāo)。這些單詞塊被裁剪下來,將高度調(diào)整至 32px,保持原來的寬高比,最后使用識別模型進(jìn)行處理。識別模型的推斷運(yùn)行時間取決于圖像中檢測到的單詞數(shù)量。 Rosetta 服務(wù)已被逐漸應(yīng)用到客戶端應(yīng)用程序中,部署計(jì)劃包括每周增加服務(wù)于預(yù)定義內(nèi)部用戶的流量,然后向公眾流量開放,從 1%、5%、10%、25%、40%、80%,直至 100%。我們繼續(xù)評估資源使用,并漸進(jìn)式地向處理機(jī)群增加更多機(jī)器,直到服務(wù)部署范圍達(dá)到 100%。 Faster-RCNN 檢測模型使用近期開源的 Detectron 框架 [5] 訓(xùn)練,它是基于 Caffe2 [2] 構(gòu)建的。文本識別模型使用 PyTorch [1] 訓(xùn)練,因其在快速原型和序列建模場景中的靈活性。這兩個模型都使用 Caffe2 部署到生產(chǎn),使用中間 ONNX 格式 [4] 將文本識別模型從 PyTorch 轉(zhuǎn)到 Caffe2。 |
|