内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

數(shù)平精準(zhǔn)推薦|OCR技術(shù)之系統(tǒng)篇-創(chuàng)新互聯(lián)

導(dǎo)語:如果說算法和數(shù)據(jù)是跑車的發(fā)動機(jī)和汽油,那么系統(tǒng)則是變速箱,穩(wěn)定而靈活的變速箱,是圖像識別服務(wù)向前推進(jìn)的基礎(chǔ)。算法、數(shù)據(jù)、系統(tǒng)三位一體,隨著算法的快速發(fā)展和數(shù)據(jù)的日益積累,系統(tǒng)也在高效而穩(wěn)定地升級。

成都創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10余年,專業(yè)且經(jīng)驗(yàn)豐富。10余年網(wǎng)站優(yōu)化營銷經(jīng)驗(yàn),我們已為成百上千中小企業(yè)提供了成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)解決方案,按需設(shè)計(jì),設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!

一、背景介紹

前面的系列文章分別介紹了算法和數(shù)據(jù),如果說算法和數(shù)據(jù)是跑車的發(fā)動機(jī)和汽油,那么系統(tǒng)則是變速箱,穩(wěn)定而靈活的變速箱,是圖像識別服務(wù)向前推進(jìn)的基礎(chǔ)。算法、數(shù)據(jù)、系統(tǒng)三位一體,組合成完整的OCR在線服務(wù)。伴隨著算法的升級和業(yè)務(wù)的持續(xù)接入,系統(tǒng)也經(jīng)歷了從單機(jī)版升級到分布式版本;從為了每個(gè)算法定制系統(tǒng)模塊,到分離框架和算法邏輯,提高算法的運(yùn)行效率和模塊的可重用性;從單一的運(yùn)行環(huán)境,升級到CPU/GPU異構(gòu)并行。除了一般分布式系統(tǒng)所需要提供的功能,我們還結(jié)合算法和運(yùn)維特性,增加了單點(diǎn)熱更新和集群快照等特性。


二、我們面臨的挑戰(zhàn)

圖像識別服務(wù)框架作為一個(gè)提供在線服務(wù)的系統(tǒng),既面臨一般的業(yè)務(wù)系統(tǒng)或平臺所面臨的挑戰(zhàn),也面臨作為算法系統(tǒng),需要支撐復(fù)雜算法和業(yè)務(wù)的挑戰(zhàn),主要表現(xiàn)在以下幾點(diǎn):


1.高性能與高可靠

任何在線系統(tǒng)都面臨性能和可靠性的挑戰(zhàn)。在我們系統(tǒng)中,圖像識別服務(wù)作為在線服務(wù),需要能夠迅速響應(yīng)并返回,并且不管在框架層還是算法層,都要保證高可用性。

2.系統(tǒng)解耦&高可擴(kuò)展性

作為一個(gè)分布式的算法系統(tǒng),算法模塊與框架的解耦,可以使算法與后臺人員更高效的同步開發(fā),分別對算法與框架進(jìn)行更新迭代。而高可擴(kuò)展性,既要求框架在集群上支持資源可擴(kuò)展,又要求做到單機(jī)算法的迅速接入與替換。

3.復(fù)雜業(yè)務(wù)與算法的支撐

隨著業(yè)務(wù)的持續(xù)接入和算法的復(fù)雜化,需要在框架層靈活的支撐算法,高效的算法模塊重用以及迅速適配新算法并接入新業(yè)務(wù)。

4.不同運(yùn)行環(huán)境的支持

算法系統(tǒng),尤其是圖像識別算法系統(tǒng),運(yùn)行環(huán)境包括CPU與GPU,框架除了要支持不同環(huán)境的高效運(yùn)行,也要支持不同環(huán)節(jié)運(yùn)行在不同硬件環(huán)境,以保證資源合理高效的使用。

三、我們的解決方案

圖像識別從算法研究、模型訓(xùn)練到規(guī)?;奶峁┓?wù),需要處理的流程比較多,我們將開發(fā)階段主要分為如下兩個(gè)階段:


算法研究&模型訓(xùn)練:

算法人員進(jìn)行算法研究、模型訓(xùn)練,以及業(yè)務(wù)對接。算法無需關(guān)心框架以及系統(tǒng)的調(diào)度,只需輸出單個(gè)模塊的算法SO和訓(xùn)練好的模型文件。

框架開發(fā)&算法集成:

后臺開發(fā)人員進(jìn)行服務(wù)框架的開發(fā)及算法SO的集成運(yùn)行,即把算法研究人員研究好的算法及模型文件集成到服務(wù)框架中,提供穩(wěn)定的在線圖像識別服務(wù)。

接下來將重點(diǎn)介紹系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。

四、圖像識別服務(wù)框架

4.1 系統(tǒng)架構(gòu)

框架層使用Java編碼,算法層采用插件化設(shè)計(jì),可以加載jar包、so或者其他腳本,這是一個(gè)多語言的混編系統(tǒng)。圖像識別算法一般都是計(jì)算密集型,并且一部分需要運(yùn)行在GPU上,所以在算法層,我們使用CUDA C++編寫so,使用JNI掛載so進(jìn)行算法的執(zhí)行和調(diào)度。如圖1,架構(gòu)上主要分為三層:接入層、框架層、算法層,再加上評測系統(tǒng)、存儲系統(tǒng)、監(jiān)控告警系統(tǒng)、日志系統(tǒng)等周邊系統(tǒng)構(gòu)成一套完整的圖像識別服務(wù)系統(tǒng)。

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

圖1  圖像識別服務(wù)框架系統(tǒng)構(gòu)架圖

接入層:包括協(xié)議轉(zhuǎn)換、參數(shù)輸配和結(jié)果適配等

框架層:圖像識別服務(wù)運(yùn)行的系統(tǒng)框架,加載運(yùn)行算法SO,提供穩(wěn)定的識別服務(wù),包括

  • Master:接收接入層的請求,進(jìn)行請求拆分、請求調(diào)度、結(jié)果合并等

  • Worker:實(shí)際執(zhí)行算法的進(jìn)程載體,主要包含算法SO/模型的加載、更新,進(jìn)行算法的執(zhí)行

  • Zookeeper:存儲worker心跳信息、算法映射關(guān)系、算法執(zhí)行計(jì)劃、算法靜態(tài)/動態(tài)快照信息等

  • ConfigServer:監(jiān)聽worker心跳并實(shí)時(shí)更新動態(tài)動態(tài)路由表,觸發(fā)master更新路由規(guī)則及連接池


算法層:算法人員提供各種算法模型及算法so

周邊系統(tǒng)

  • 評測系統(tǒng):提供版本評測功能

  • 存儲系統(tǒng):非敏感圖片及badcase存儲

  • 監(jiān)控告警:監(jiān)控服務(wù)的運(yùn)行狀態(tài),在異常時(shí)進(jìn)行告警

  • 日志系統(tǒng):請求日志的存儲,為問題的跟蹤排查提供依據(jù)框架運(yùn)行時(shí)


4.2 系統(tǒng)運(yùn)行態(tài)

本節(jié)將結(jié)合實(shí)際的OCR預(yù)測請求剖析框架的運(yùn)行態(tài)。

1)   一個(gè)OCR識別實(shí)例

如圖2,我們以STR(Scene Text Recognition,場景文字識別)為例,一個(gè)典型的使用場景為廣告圖片素材理解。在任務(wù)中,我們將識別圖片中文字,并給出具體坐標(biāo)。

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

圖2  一個(gè)OCR識別實(shí)例

2)  系統(tǒng)運(yùn)行態(tài)

如圖3,我們詳細(xì)剖析上述實(shí)例在框架中的運(yùn)行過程

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

 圖3 系統(tǒng)運(yùn)行態(tài)


1. 業(yè)務(wù)側(cè)的請求攜帶圖片內(nèi)容(或圖片URL)、bid(標(biāo)識不同的業(yè)務(wù))及tid(標(biāo)識不同算法大類)。

2.  在master節(jié)點(diǎn)找到對應(yīng)的算法,然后找到相應(yīng)執(zhí)行計(jì)劃,執(zhí)行計(jì)劃中定義了算法的執(zhí)行步驟;根據(jù)各個(gè)步驟找到相應(yīng)的路由節(jié)點(diǎn),master將請求拆分/打包/路由到相應(yīng)的worker

3. master將原始圖片路由分發(fā)到檢測子系統(tǒng)。檢測過程運(yùn)行在GPU上,算法so檢測出模塊中各個(gè)圖片框(如圖2中的“京東”、“內(nèi)外真皮”等),切分好之后將結(jié)果返回給master

4. master將檢測結(jié)果拆分,并行分發(fā)到識別子系統(tǒng)。識別過程運(yùn)行在GPU上,算法so將識別出單個(gè)圖片框的文字,分別返回給master

5.  master將識別結(jié)果匯總,一起發(fā)送到重排序子系統(tǒng)。重排序子系統(tǒng)運(yùn)行在CPU上,算法so將結(jié)果返回給master

6.  master將最終結(jié)果封裝并返回

每個(gè)模塊在整個(gè)過程中的作用為:

  • 算法映射:由bid+tid映射到一個(gè)具體的子算法。相同的tid與不同的bid組合,可以支持不同業(yè)務(wù)對同類算法的定制

  • 執(zhí)行計(jì)劃:定義算法的執(zhí)行步驟,比如圖中STR圖片文字識別,包含三個(gè)步驟:檢測、識別和重排序

  • 動態(tài)快照:即動態(tài)路由表,定義了算法每個(gè)階段映射到的具體節(jié)點(diǎn)。worker上報(bào)心跳,由ConfigServer整理生成動態(tài)路由表,由Master節(jié)點(diǎn)監(jiān)聽路由表的變更

4.3  容災(zāi)與集群熱更新

熱更新能力是一個(gè)系統(tǒng)提供可靠和穩(wěn)定服務(wù)的基礎(chǔ)功能,即可以保證系統(tǒng)的無損升級,又可以保障系統(tǒng)的容災(zāi)能力。如圖4,系統(tǒng)主要借助zookeeper和worker的心跳機(jī)制實(shí)現(xiàn)集群熱更新。

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

圖4  集群熱更新

  • Worker:在啟動的時(shí)候與zookeeper建立臨時(shí)節(jié)點(diǎn)維持心跳信息

  • Configserver:監(jiān)聽worker在zookeeper的心跳信息,如果worker斷連或重連,configserver立刻感知到并修改動態(tài)快照

  • Master:監(jiān)聽zookeeper上的動態(tài)快照信息,動態(tài)快照變更立刻觸發(fā)路由規(guī)則及路由連接池的更新


通過這幾個(gè)角色的配合,在worker節(jié)點(diǎn)出現(xiàn)異常的情況下,master迅速就完成了切換,保證了系統(tǒng)的穩(wěn)定。這種機(jī)制也支持了集群的熱更新,在需要對某個(gè)worker進(jìn)行更新時(shí),先對worker進(jìn)行下線,master感知后不向此worker發(fā)請求,完成更新啟動后,master再跟其重新建立連接并發(fā)送請求。

4.4 單點(diǎn)熱更新

單點(diǎn)熱更新,指的是在不重啟服務(wù)的前提下,對進(jìn)程內(nèi)單個(gè)或多個(gè)模塊進(jìn)行替換升級。與其他業(yè)務(wù)系統(tǒng)不一樣的,在算法平臺下,考慮以下兩種場景:

1)  一個(gè)進(jìn)程內(nèi)加載了多個(gè)算法SO,需要對其中一個(gè)算法模塊進(jìn)行更新;

2)   算法鏈上串行多個(gè)模塊,需要對其中一個(gè)模塊進(jìn)行實(shí)驗(yàn)或更新。

這兩種場景下,使用集群熱更新或者對進(jìn)程進(jìn)行重啟,就有點(diǎn)重了,所以我們實(shí)現(xiàn)了一套進(jìn)程內(nèi)單個(gè)so的動態(tài)更新方案。通過Java代碼是無法直接實(shí)現(xiàn)SO的動態(tài)加載的,如圖4,我們引入了代理so,通過在代理so進(jìn)行(dlopen,dlsym和dlclose)操作,從而達(dá)到動態(tài)加載SO的目的。同時(shí)在代理so中,我們封裝了所有JNI轉(zhuǎn)換和算法需要使用的接口,很好的進(jìn)行了框架和算法的解耦。除了so的動態(tài)加載,我們還實(shí)現(xiàn)了模型的動態(tài)加載。

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

圖5  單點(diǎn)熱更新


4.5 靜態(tài)快照

通常在分布式框架中,是不需要靜態(tài)快照的。但在算法系統(tǒng)中,我們通常需要頻繁上下線一批so,而這些so會分布在不同機(jī)器不同節(jié)點(diǎn)上。雖然簡單的通過上傳/刪除服務(wù)器上的本地so文件,可以觸發(fā)相關(guān)進(jìn)程的動態(tài)加載/卸載,但這種操作繁復(fù),在算法復(fù)雜,一個(gè)進(jìn)程加載了很多so的時(shí)候,操作容易出錯(cuò)。所以,這里我們需要在運(yùn)維上對系統(tǒng)進(jìn)行優(yōu)化,提高系統(tǒng)可運(yùn)維性。

如圖5,我們在動態(tài)快照的同時(shí)還引入了靜態(tài)快照,靜態(tài)快照由運(yùn)維通過腳本或配置文件寫入靜態(tài)路由表,將一個(gè)集群的預(yù)期初始狀態(tài)配置到zookeeper上。ConfigServer整理靜態(tài)快照和worker上報(bào)的心跳信息,生成最終的動態(tài)快照。

數(shù)平精準(zhǔn)推薦 | OCR技術(shù)之系統(tǒng)篇

圖6  靜態(tài)快照

這種動靜態(tài)快照結(jié)合的集群快照機(jī)制相比只有動態(tài)快照在運(yùn)維上會稍微復(fù)雜,但可以通過運(yùn)維工具降低復(fù)雜度。動靜態(tài)集群快照機(jī)制優(yōu)勢也很明顯,第一、在復(fù)雜算法下,不容易出錯(cuò);第二、可以在動態(tài)快照之余快速上下線一些算法或者更改算法流程。

五、框架的一些思考

我們成功地將Java與CUDA C++混編系統(tǒng)作為圖像識別服務(wù)框架,并且支撐了眾多業(yè)務(wù)。成熟穩(wěn)定的框架,可以解放更多的人力用于算法開發(fā)和業(yè)務(wù)接入。依托于Java成熟的開源工具,可以迅速開發(fā)出框架和進(jìn)行維護(hù),使用Java作為框架調(diào)度層和網(wǎng)絡(luò)層,對比傳統(tǒng)C++框架并沒有性能差異;而使用CUDA C++編寫SO的方式,可以更好的適配GPU環(huán)境和深度學(xué)習(xí)框架,更高效地利用機(jī)器計(jì)算資源。當(dāng)然,我們的系統(tǒng)還在持續(xù)進(jìn)化,后續(xù)將進(jìn)一步在資源利用率、調(diào)度效率、業(yè)務(wù)接入速度和運(yùn)維精細(xì)化等方向繼續(xù)努力。


六、結(jié)束語

我們推出了OCR技術(shù)系列文章總共包括了《OCR技術(shù)之檢測篇》、《OCR技術(shù)之識別篇》、《OCR技術(shù)之?dāng)?shù)據(jù)篇》、《OCR技術(shù)之系統(tǒng)篇》等4篇文章,希望通過這些文章能夠與大家一同探討OCR領(lǐng)域的一些技術(shù)與應(yīng)用。在后續(xù)的工作中,團(tuán)隊(duì)也將繼續(xù)在OCR領(lǐng)域深耕細(xì)作,不斷前行,持續(xù)提升技術(shù)水平與服務(wù)質(zhì)量,為OCR技術(shù)的發(fā)展貢獻(xiàn)微薄之力。


另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前標(biāo)題:數(shù)平精準(zhǔn)推薦|OCR技術(shù)之系統(tǒng)篇-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.rwnh.cn/article8/igcip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、軟件開發(fā)虛擬主機(jī)、云服務(wù)器、微信公眾號、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
高邑县| 水富县| 泾源县| 东城区| 睢宁县| 石棉县| 那曲县| 大厂| 金秀| 班玛县| 彰武县| 锦屏县| 河间市| 姚安县| 民和| 疏勒县| 平顺县| 蕉岭县| 白城市| 邹城市| 伊吾县| 阳东县| 宁晋县| 新野县| 龙泉市| 仪陇县| 寿光市| 上高县| 大安市| 十堰市| 丽水市| 汝南县| 全椒县| 抚远县| 云林县| 托里县| 神池县| 绍兴县| 石楼县| 博乐市| 西乡县|