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