文字識(shí)別技術(shù)在內(nèi)容安全中的應(yīng)用

導(dǎo)讀:文字在日常生活中發(fā)揮著重要的作用,甚至在考古發(fā)現(xiàn)中文字也作為識(shí)別文明的重要標(biāo)志。特別是在當(dāng)前短視頻和內(nèi)容爆炸的時(shí)代,文字廣泛應(yīng)用于人們觀點(diǎn)的表達(dá)和傳播以及商品營銷等各個(gè)領(lǐng)域。這些內(nèi)容中肯定會(huì)存在一些不良的行為。而內(nèi)容安全是基于AI技術(shù),從中識(shí)別出不良的信息,凈化網(wǎng)絡(luò)環(huán)境。本文的主題為文字識(shí)別技術(shù)在內(nèi)容安全場(chǎng)景應(yīng)用實(shí)踐,主要內(nèi)容包括:①?內(nèi)容風(fēng)險(xiǎn)舉例;②?防控基本流程;③?主流算法;④?部署優(yōu)化。
01
內(nèi)容風(fēng)險(xiǎn)舉例
常見的圖片文字內(nèi)容違規(guī)風(fēng)險(xiǎn)舉例:
圖片中的文字違規(guī)風(fēng)險(xiǎn)主要分為:涉黃、涉暴、涉政、低俗、廣告等幾個(gè)大類。- 涉黃主要是一些小卡片、小電影、常見聊天場(chǎng)景中的違規(guī)內(nèi)容以及打印違規(guī)圖片等一些場(chǎng)景。涉暴場(chǎng)景主要涉及到一些集會(huì)、游行、武裝力量等場(chǎng)景的文字描述或者是一些武器的販賣信息。涉政場(chǎng)景主要涉及一些反動(dòng)、分裂、搞獨(dú)立或者是一些不友好媒體的出版物,同時(shí)也會(huì)存在一些辱罵、抹黑、調(diào)侃領(lǐng)導(dǎo)人或者革命英烈的現(xiàn)象。低俗場(chǎng)景主要是賭毒相關(guān),比如賭場(chǎng)、棋牌這樣的一些場(chǎng)景,包括一些違法商品的售賣、導(dǎo)流的現(xiàn)象。
- 上述場(chǎng)景中的涉黃、涉暴、涉證、低俗等涉及到違反國家法律法規(guī)或者違反社會(huì)公序良俗。
- 廣告場(chǎng)景主要涉及平臺(tái)內(nèi)容生態(tài)治理,雖然不會(huì)違反社會(huì)法律法規(guī),但是在內(nèi)容生態(tài)治理上發(fā)揮著重要的作用。例如微信號(hào)、QQ號(hào)、手機(jī)號(hào)以及它們常見的變體、拼音首字母縮寫、變異的同音字等。還有短視頻、圖片內(nèi)容中存在的水印信息,這些水印存在著導(dǎo)流情況,特別是在競(jìng)爭(zhēng)激烈的平臺(tái)生態(tài)中,不希望平臺(tái)中出現(xiàn)競(jìng)爭(zhēng)對(duì)手的導(dǎo)流信息;
- 廣告法中規(guī)定的限制詞,比如第一,百分之百等這一類的詞,也會(huì)存在違反廣告法的現(xiàn)象。
02
防控基本流程
1.?針對(duì)圖片文字違規(guī)風(fēng)險(xiǎn)的基本防控流程

- 內(nèi)容輸入:主要以圖片輸入為主,針對(duì)視頻輸入可以通過截幀、關(guān)鍵幀算法等方式轉(zhuǎn)化為圖像,然后輸入到識(shí)別系統(tǒng)。
- 文字識(shí)別:文字識(shí)別子系統(tǒng)包括文字檢測(cè)、字條矯正、文字識(shí)別等子模塊,用于提取出文字信息,這些文字信息會(huì)輸入到后續(xù)的文本安全算法模型中,進(jìn)行處理。
- 文本模型:包括常規(guī)的一些NLP算法和比較豐富的關(guān)鍵詞規(guī)則庫。關(guān)鍵詞庫實(shí)現(xiàn)分級(jí)、詞庫分類存儲(chǔ)。
- 風(fēng)險(xiǎn)決策:文本模型輸出的結(jié)果最終會(huì)通過綜合判斷的方式做出風(fēng)險(xiǎn)決策。包含正常、涉證、涉黃、暴恐、廣告、違禁等分類。
2.?文字識(shí)別階段細(xì)分流程

- 文字檢測(cè)模塊:輸入是原始圖像,通過檢測(cè)環(huán)節(jié)定位出圖像中文字的具體位置,產(chǎn)生出字條。
- 字體矯正模塊:識(shí)別出的字條,通過字體矯正模塊,方向調(diào)整,最終以水平方式展現(xiàn)。
- 文字識(shí)別模塊:接收到矯正后的字條之后,通過識(shí)別,最終將圖像翻譯成一段具體的文本內(nèi)容。
03
主流算法
文字定位、文本識(shí)別的主流算法介紹:
1.?文本定位主要算法梳理
目前主流的文本定位算法分為兩大類:基于回歸的算法和基于分割的算法。基于回歸的算法:借鑒通用目標(biāo)檢測(cè)的一些方案,通過網(wǎng)絡(luò)直接回歸計(jì)算出文本行的包圍框信息。主要算法:CTPN、SegLink、Textboxes/Testboxes 、EAST、LOMO、SAST、CRAFT等。- 優(yōu)點(diǎn):規(guī)則形狀的文本效果較好。
- 缺點(diǎn):不規(guī)則的文本,特別是長文本效果較差。例子:1、上圖中使用回歸的方案對(duì)于長文問兩端的定位不是特別準(zhǔn)確,對(duì)后續(xù)的識(shí)別會(huì)造成較大的影響。2、使用回歸方案對(duì)于曲線文本、不規(guī)則的文本識(shí)別都會(huì)存在一些問題。
- 優(yōu)點(diǎn):適用于各種形狀的文本,整體的檢測(cè)效果較好。
- 缺點(diǎn):后處理耗時(shí)大(由于模型輸出的是概率圖,通過概率圖計(jì)算出每一個(gè)文本框的耗時(shí)比較長)、無法處理重疊文本。
2.?文本定位算法BDNet簡(jiǎn)介
DBNet發(fā)表于AAAI 2020,核心思想是對(duì)后處理流程的速度進(jìn)行優(yōu)化,簡(jiǎn)化了文本檢測(cè)方案的流程,在檢測(cè)速度上得到了一個(gè)比較大的提升,在定位效果和速度上實(shí)現(xiàn)了一個(gè)比較好的權(quán)衡。DBNet整體的結(jié)構(gòu),網(wǎng)絡(luò)的Backbone部分是一個(gè)標(biāo)準(zhǔn)的FCN結(jié)構(gòu)。從上到下逐層的一個(gè)下采樣,然后進(jìn)行逐層的上采樣,融合不同尺度的特征,結(jié)合多尺度的特征,做一個(gè)CON-CAT,輸出一個(gè)預(yù)測(cè)的概率圖,這些流程和常用的分割算法大致相同。分割得到概率圖之后,之前的方式是做一個(gè)標(biāo)準(zhǔn)二值化的操作,然后得到一些聯(lián)通域,再對(duì)這些連通域做一些形狀的處理,得到最終的文本框,這里也會(huì)涉及到多個(gè)文本框合并的問題;DBNet創(chuàng)新之處在于引入了一個(gè)threshold map的分支,通過一個(gè)預(yù)測(cè)threshold實(shí)現(xiàn)了一個(gè)自適應(yīng)閾值的二值化過程。之前標(biāo)準(zhǔn)的二值化過程為全圖采樣同一個(gè)二值化閾值,這樣會(huì)造成對(duì)不同區(qū)域的魯棒性不是特別好,對(duì)后續(xù)的定位精度產(chǎn)生影響。DBNet中引入一個(gè)可微分的二值化算子(類似于sigmod函數(shù))進(jìn)行一個(gè)二值化計(jì)算過程,同時(shí)對(duì)概率圖、threshold map、近似的二值化圖進(jìn)行有監(jiān)督的學(xué)習(xí),最終得到一個(gè)比較好的文字邊界識(shí)別效果。論文中也進(jìn)行了一些實(shí)驗(yàn),發(fā)現(xiàn)在推理階段可以直接去掉threshold map這條分支,直接通過一個(gè)標(biāo)準(zhǔn)的二值化操作,就可以得到一個(gè)比較好的效果。這是因?yàn)橛斜O(jiān)督的信息加入之后使得概率圖中文字邊界更加清晰,文字區(qū)域的概率值變高,非文字區(qū)域的概率值變低。總結(jié):目前DBNet是業(yè)界主流的一個(gè)方案,主要還是在性能和效果上進(jìn)行整體權(quán)衡之后,識(shí)別效果比較好。3.?文字識(shí)別基本流程
首先是圖像進(jìn)入圖像矯正模塊進(jìn)行處理,輸出的圖像再輸入到視覺特征提取模塊得到一些視覺feature,后續(xù)會(huì)結(jié)合一些序列特征,最終通過預(yù)測(cè)模塊輸出結(jié)果。文字識(shí)別算法目前主流的方案包括CRNN、STATR-NET、RARE、AttentionOCR等,當(dāng)前比較通用的方案還是以CRNN為主,主要是通過綜合性能和推理速度權(quán)衡之后,從中選出的最佳方案。文本識(shí)別算法的輸入為歸一化之后的文本詞條,通過文本識(shí)別整個(gè)流程之后,輸出就是具體的文字信息。4.?文字識(shí)別主流算法CRNN
CRNN 模型是通過CNN RNN CTC 三個(gè)模型組合,把文本識(shí)別看成一個(gè)圖像序列的預(yù)測(cè)。CRNN模型的優(yōu)點(diǎn):- 通過引入RNN模型增強(qiáng)序列特征的表達(dá)能力。
- 引入CTC識(shí)別模塊簡(jiǎn)化預(yù)測(cè)流程。
- 進(jìn)入CRNN時(shí)代之后,文字識(shí)別從單詞的預(yù)測(cè)變?yōu)槲谋拘械念A(yù)測(cè),實(shí)現(xiàn)預(yù)測(cè)流程的簡(jiǎn)化,同時(shí)文字識(shí)別模型的標(biāo)注成本得到了極大的降低。
部署優(yōu)化
生產(chǎn)環(huán)境具體部署過程中的加速優(yōu)化實(shí)踐,識(shí)別效果舉例。1.?性能優(yōu)化
將整個(gè)文字識(shí)別流程進(jìn)行模塊化分,對(duì)每個(gè)模塊進(jìn)行耗時(shí)統(tǒng)計(jì),找出耗時(shí)的性能瓶頸,明確優(yōu)化的目標(biāo),對(duì)性價(jià)比較高的模塊進(jìn)行針對(duì)性的優(yōu)化。文字識(shí)別模型作為微服務(wù),整體對(duì)外提供能力,整體劃分為CPU計(jì)算、GPU計(jì)算。CPU計(jì)算主要包括文本預(yù)處理、后處理操作以及實(shí)例矯正模塊;GPU處理主要負(fù)責(zé)模型具體推理工作。通過在對(duì)收集的數(shù)據(jù)集上進(jìn)行耗時(shí)統(tǒng)計(jì)分布測(cè)試,通過統(tǒng)計(jì)發(fā)現(xiàn)識(shí)別模型和檢測(cè)模型的推理耗時(shí)是整個(gè)OCR的主要耗時(shí),同時(shí)圖像解碼和檢測(cè)模型的預(yù)處理也占用8%左右的耗時(shí),其他環(huán)節(jié)的整體耗時(shí)比較少,因此我們把優(yōu)化的重點(diǎn)放在耗時(shí)較高的這幾個(gè)方向。2.?性能優(yōu)化方法梳理
通過性能耗時(shí)整體分析,梳理了整體的優(yōu)化手段,優(yōu)化策略:算的少(減少計(jì)算量),算的快(同樣計(jì)算量情況下,算的更快,加快計(jì)算效率)。主要的優(yōu)化手段,分為三大部分:CPU計(jì)算、GPU計(jì)算、系統(tǒng)優(yōu)化。CPU 圖像解碼,通過大量的調(diào)研和比較,發(fā)現(xiàn)opencv的圖像解碼庫的特點(diǎn)是更加傾向于利用多線程的并行能力,對(duì)于CPU的低級(jí)指令相對(duì)較弱,同時(shí)在圖像解碼的過程中加入了一些額外的校驗(yàn)操作,導(dǎo)致整體的解碼過程變慢;在通過調(diào)研和比較之后,選用了Pillow的一個(gè)分支,Pillow-SIMD作為我們的主要圖像解碼庫。CPU 預(yù)處理優(yōu)化,主要是對(duì)輸入圖像的縮放,歸一化操作進(jìn)行優(yōu)化?;赟IMD的圖像編解碼庫本身也會(huì)在圖片預(yù)處理,尤其是在一些大圖縮放上有一些優(yōu)化,另外將一些預(yù)處理的歸一化過程(減均值、除方差等)合并到網(wǎng)絡(luò)模型的第一個(gè)卷積上,類似于BN的一個(gè)合并操作,減少CPU上的一些耗時(shí)。GPU模型簡(jiǎn)化壓縮優(yōu)化。我們對(duì)模型的backbone和 neck部分進(jìn)行一些通道數(shù)量的壓縮優(yōu)化,在保證性能沒有太多降低的情況下,提高優(yōu)化推理的速度。借鑒了業(yè)界比較通用的TensorRT推理引擎,TensorRT會(huì)做很多模型融合的操作,除了做一些通用的BN融合之外還會(huì)做一些更深層次的融合,如卷積,bias,relu操作等都可以合并到同一個(gè)OP中執(zhí)行, 因?yàn)閷?duì)于一些簡(jiǎn)單的操作,它的一個(gè)內(nèi)存提取耗時(shí)與計(jì)算的耗時(shí)是相當(dāng)?shù)?,所以可以把它們合并到卷積結(jié)果存儲(chǔ)之前這樣的一個(gè)過程當(dāng)中,減少一次顯存的訪問。TensorRT會(huì)根據(jù)當(dāng)前部署的硬件資源去選擇最合適的OP實(shí)現(xiàn)方式,從而最大效率的利用顯卡的硬件資源。TensorRT提供的低精度推理方案,F(xiàn)p16和Int8來一步加速模型的效果。低精度推理對(duì)原始結(jié)果也會(huì)有一定的影響,所以需要在效果和速度上進(jìn)行具體的實(shí)驗(yàn),進(jìn)行權(quán)衡。系統(tǒng)優(yōu)化,模型輸入分辨率的調(diào)整,這個(gè)需要結(jié)合整體的一個(gè)性能進(jìn)行調(diào)整,檢測(cè)階段和識(shí)別階段的輸入都可以進(jìn)行相應(yīng)的分辨率調(diào)整;圖片當(dāng)中經(jīng)常會(huì)出現(xiàn)多條文本行,使用多batch方案提高整張圖片整體的推理效率。同時(shí)我們?cè)趦?yōu)化過程中發(fā)現(xiàn),GPU的整體利用率可以通過多實(shí)例的方案得到進(jìn)一步的提升。3.?識(shí)別效果舉例
05
問答環(huán)節(jié)
Q:橫豎排的文字識(shí)別有什么區(qū)別?A:橫豎排的文字在排列上有一些差異,我們模型也會(huì)通過數(shù)據(jù)增強(qiáng)的方式來對(duì)模型識(shí)別能力進(jìn)行補(bǔ)充;有幾種情況,一種是文字旋轉(zhuǎn)型的豎排,可以通過字條矯正的方式,把它變成橫向的文字排列;另外一種就是圖像中的文字本身排列就是豎向的,因?yàn)槟壳昂芏辔淖肿R(shí)別模塊都是通過生成數(shù)據(jù)來進(jìn)行訓(xùn)練的,所以針對(duì)豎排文字識(shí)別可以通過一些針對(duì)性的數(shù)據(jù)生成,相當(dāng)于對(duì)文字進(jìn)行一個(gè)90度的旋轉(zhuǎn)形成豎排文字來進(jìn)行訓(xùn)練,來補(bǔ)充模型的能力。Q:手寫體的識(shí)別對(duì)比于印刷體的識(shí)別,需要額外的做哪些工作?A:我們目前主要是通過數(shù)據(jù)增強(qiáng)的方式來進(jìn)行手寫體的支持,主要還是通過數(shù)據(jù)的方式來進(jìn)行模型能力的提升,現(xiàn)在都是進(jìn)行一個(gè)統(tǒng)一的處理,印刷體和手寫體在識(shí)別流程上是一致的。在進(jìn)行數(shù)據(jù)生成的時(shí),首先需要真實(shí)場(chǎng)景下的一些手寫體的數(shù)據(jù),另外還需要一些類手寫體的一些字體,通過借鑒這些實(shí)現(xiàn)內(nèi)容的自動(dòng)生成。Q:在系統(tǒng)的調(diào)優(yōu)階段對(duì)于batch size的優(yōu)化,詳細(xì)介紹下A:圖片當(dāng)中通常會(huì)出現(xiàn)多條文本,此時(shí)對(duì)于文字識(shí)別模型,我們可以選擇同時(shí)輸入6條、8條或者更多的Batch Size實(shí)現(xiàn)一個(gè)批次的預(yù)測(cè),這樣對(duì)于系統(tǒng)整體的吞吐率會(huì)有一個(gè)提升。由于多行文本中的每一個(gè)詞條的尺寸可能不一樣,我們需要做一個(gè)padding,把它們拼接成相同的長度。Q:數(shù)據(jù)集是自己做的嗎?A:數(shù)據(jù)集是自己做的,因?yàn)楝F(xiàn)在整體上來說,文字識(shí)別領(lǐng)域中業(yè)界公開的數(shù)據(jù)集還是比較小,包括像一些知名的比賽中,整體的數(shù)據(jù)量都不是特別多。所以我們肯定要基于一些業(yè)務(wù)場(chǎng)景做一些數(shù)據(jù)的收集,但文字識(shí)別階段,目前主要的方案還是通過數(shù)據(jù)生成的方式,來擴(kuò)充模型的訓(xùn)練樣本。Q:OCR未來的發(fā)展方向OCR未來的發(fā)展方向我覺得還是在當(dāng)前的一些識(shí)別難點(diǎn)上,像現(xiàn)在比較關(guān)注的任意形狀的文本行識(shí)別,曲線文本,印章等這種大家比較關(guān)注的一些點(diǎn)。另外我覺得數(shù)據(jù)集的生成,或者是模擬真實(shí)場(chǎng)景的數(shù)據(jù)生成這種在工程實(shí)踐上也是有比較實(shí)際的意義。尤其是對(duì)于一些復(fù)雜背景,包括風(fēng)格遷移的一些方案。Q:手寫體識(shí)別有什么好的方法?手寫體有一些背景,比如春聯(lián),繁體字對(duì)于這種識(shí)別有沒有什么好的辦法?A:由于我們目前是采用的是自然場(chǎng)景下的文字識(shí)別技術(shù),它本身就支持一些復(fù)雜背景的方案,它跟傳統(tǒng)的文檔類的OCR或者是一些票據(jù)、證件類的OCR相比,本身會(huì)對(duì)復(fù)雜背景會(huì)有一些魯棒性;復(fù)雜背景會(huì)增加識(shí)別的難度,模型現(xiàn)階段對(duì)于背景的魯棒性還是比較高的,像有一些銀行卡的識(shí)別,銀行卡本身背景也有一些比較復(fù)的圖案同時(shí)還有壓印、突起,光照影響等,像這種識(shí)別其實(shí)都是有比較好的方案。但是如果你的場(chǎng)景越固定,我們通過數(shù)據(jù)的支持,它的整體的識(shí)別效果就會(huì)越好。Q:對(duì)于手寫公式的識(shí)別A:手寫公式應(yīng)該跟手寫體差不多,因?yàn)樗w的符號(hào)數(shù)還是比較限定的,是一個(gè)相對(duì)較小的集合。主要難度應(yīng)該和手寫體字的難度是一樣的,手寫的潦草度和印刷體的一個(gè)差異。如果連筆太多的化,也可能存在一個(gè)比較大的識(shí)別難度。今天的分享就到這里,謝謝大家。分享嘉賓:





