什么是文檔圖片彎曲矯正?
用戶有時候會有這種需求痛點:看書時特別喜歡其中的某些段落,想摘抄下來,但發(fā)現(xiàn)篇幅很長,用手機拍攝的話書本又不能完全鋪平。
手持一份裝訂過的合同,著急發(fā)給老板,卻沒有工具拆開裝訂釘。拍出來的圖里頁面是彎曲的,里邊的文字看起來很費勁...
你也不可能隨時隨地帶著掃描儀。那該怎么辦呢?市面上大部分 APP 是把視角歪掉的圖片矯正為正視圖,如下圖:
在很多場合確實可以幫助到用戶。但是它只是解決了透視變化的問題。如果是彎曲的頁面,還是不能很好的矯正。
WPS 對這個需求很上心,希望可以讓用戶做到隨手一拍就獲得完美鋪平的電子文檔。歷經(jīng)幾個月的開發(fā)周期,結(jié)合了本地 AI 和云端 AI 能力打造了一個功能:文檔矯正。這個貼心的功能能讓剛才那些棘手的問題輕松被稿定。直接看效果吧。還是剛才那張拍攝的書本照片,經(jīng)過文檔彎曲矯正后。就可以立刻得到鋪平的圖片,甚至連頁面區(qū)域都給你自動裁剪好了,背景干擾全無,完美!
這個彎曲矯正對于 OCR 識別也有很大的幫助,因為很多 OCR 識別對于文本彎曲的情況下識別會有很多亂碼,經(jīng)過彎曲矯正變成規(guī)規(guī)整整的文本行后,OCR 識別準確度會大大提高。
以上就是我們新推出的這個功能的應(yīng)用場景和使用效果。那么下面我們就來聊一聊為什么這個功能背后是本地 AI 和云端 AI 的結(jié)合。
云+端 AI ,共建文檔矯正功能
目前其他第三方以及我們 WPS 里上一個版本的文檔矯正都是通過檢測出文檔的邊緣或者四個角,然后施行透視變化進行矯正的。其中的計算量雖然也會比較大,但現(xiàn)在的移動端計算能力還能夠覆蓋,實時檢測預覽起來也還比較流暢。然而彎曲矯正背后的計算量非常大,我們不得不將其部署在計算集群上,通過網(wǎng)絡(luò)傳輸壓縮和加密的原圖以及相應(yīng)的參數(shù)到服務(wù)器上進行計算,然后將計算結(jié)果傳輸回用戶的手機端再呈現(xiàn)。這個過程原本也可以設(shè)計成全部在云端計算,那樣我們的工作量就會少很多,但是為了獲得更好的用戶體驗,能夠讓用戶直觀的看到實時檢測的文檔區(qū)域,我們將文檔檢測的部分放在了本地。在用戶開啟相機進行預覽時我們的深度學習模型就在后臺進行運行,逐幀去檢測文檔區(qū)域,并將檢測結(jié)果渲染在屏幕上。為了實現(xiàn)準確穩(wěn)定的文檔區(qū)域檢測,我們將傳統(tǒng)的邊緣檢測算法升級為深度學習模型,隨著模型的不斷迭代,雖然識別效果越來越好,但模型體積也越來越大,計算量也越來越大。為了兼顧中低端手機的運算能力,我們在網(wǎng)絡(luò)模型設(shè)計時做了相應(yīng)的優(yōu)化,參考 SqueezeNet 的結(jié)構(gòu)設(shè)計了一個 7 層的卷積神經(jīng)網(wǎng)絡(luò)替代最初采用的更深的開源預訓練網(wǎng)絡(luò),雖然網(wǎng)絡(luò)變淺導致準確度上稍微有些損失,但速度有大幅提升,內(nèi)存占用也減少不少,這使得低端手機也能達到每秒數(shù)幀的速度,而高端手機則可以達到每秒 30 幀滿幀的速度。同時為了彌補準確度損失帶來的檢測不準而引起的抖動,我們在網(wǎng)絡(luò)外邊增加了濾波器,讓檢測結(jié)果在視覺上看起來更穩(wěn)定。
整套網(wǎng)絡(luò)和代碼完成后,我們發(fā)現(xiàn)其實 SDK 包的體積已經(jīng)有一些大了,除了對代碼和依賴庫的精簡,我們還需要對推理框架進行精簡。我們需要一套速度快而又輕量級的移動端推理框架。我們當時做了很多選擇和嘗試,最后選擇了 Tensorflow Lite。Tensorflow Lite 是 Google 出品的對移動端非常友好的深度學習框架,其架構(gòu)設(shè)計和訓練部署思路都和 Tensorflow 非常相像,同時又非常小巧,容易上手。我們直接在 PC 架構(gòu)的訓練機器上訓練好模型,經(jīng)過 Google 提供的工具 TOCO 進行轉(zhuǎn)化,即可獲得一個體積很小而且速度很快的手機端模型,而運行的效果和準確度卻沒有打多少折扣。從模型訓練到移動端部署的流程非常通暢,這讓我們非常喜歡 Tensorflow Lite 這個框架,畢竟我們可以減少工程部署的時間,而把精力更多放在算法優(yōu)化和模型優(yōu)化上。
除了獲取文檔區(qū)域,為了實現(xiàn)彎曲矯正,我們還設(shè)計了一整套復雜的算法系統(tǒng),經(jīng)過評估,我們確定很難在移動端進行那樣高強度的計算,于是我們選擇了計算能力更強的云服務(wù)方案。核心算法部署在計算集群上可以獲得更充沛的算力,同時也為該業(yè)務(wù)算法的優(yōu)化和升級預留了比較大的空間,畢竟現(xiàn)在只是第一版,以后我們還會對其進行持續(xù)升級和優(yōu)化。
目前我們的整體設(shè)計框架是將本地相應(yīng)的 AI 能力封裝成一個 SDK 提供給業(yè)務(wù)方的客戶端,客戶端通過 API 接口調(diào)用 SDK 里相應(yīng)的能力,數(shù)據(jù)和參數(shù)也是通過 API 接口和 SDK 進行交互,同時 SDK 也接管了訪問云服務(wù)器的能力,統(tǒng)一的進行管理,在保障了信息安全的同時也有相應(yīng)的容錯和異常處理能力。這套系統(tǒng)的流程圖如下所示:
云和端的選擇以及未來的期許
因為需求的特殊性和不同算法的復雜程度以及平臺的計算能力評估,我們因地適宜的選擇了讓一部分計算在本地利用 TensorFlow Lite 進行,一部分計算放在云端計算集群上進行。相信隨著手機算力不斷的提升,以后也許單純依靠端上的算力就能完成如此復雜程度的計算。那一天應(yīng)該很快到來。當然,隨著 5G 的普及,也許以后云端的計算借助更高帶寬極快速的網(wǎng)絡(luò)傳輸能力也能夠體驗到端上的體驗。到時候普通用戶再也感受不到云和端的區(qū)別,那將會給更復雜更強大的算法更多落地的機會。我們很期待這些條件更快滿足,我們也會努力帶給大家更多強大好用的算法功能。
-
AI
+關(guān)注
關(guān)注
88文章
35164瀏覽量
280018 -
云服務(wù)
+關(guān)注
關(guān)注
0文章
855瀏覽量
39711 -
TensorFlow Lite
+關(guān)注
關(guān)注
0文章
26瀏覽量
748
原文標題:金山WPS:基于本地TensorFlow Lite和AI云服務(wù)的文檔矯正功能
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在阿里云Kubernetes容器服務(wù)上打造TensorFlow實驗室
使用RTL8722DM運行 TensorFlow Lite Hello World 示例
如何將TensorFlow Lite應(yīng)用程序移植到Arm Cortex-M55系統(tǒng)上
tensorflow lite上的未定義引用是怎么回事?
是什么導致TensorFlow Lite的NNAPI Delegate被棄用?
tensorflow-lite可以通過NPU加速運行嗎?
如何使用meta-imx層中提供的tensorflow-lite編譯圖像?
如何使用pycoral、tensorflow-lite和edgetpu構(gòu)建核心最小圖像?
TensorFlow Lite 微控制器

谷歌推出TensorFlow Lite,可為AI調(diào)整最新模型
TensorFlow Lite 構(gòu)建的無人駕駛微型汽車

本地云服務(wù)將成為未來云服務(wù)的重要選擇
基于TensorFlow Lite的幾項技術(shù)更新
Tensorflow Lite 使用與優(yōu)化

評論