我們教電腦識別視頻字幕
麻文華,博士畢業(yè)于中國科學院自動化研究所模式識別與人工智能專業(yè)。主要從事圖像識別、目標檢測跟蹤等理論和應(yīng)用研究,在領(lǐng)域內(nèi)重要學術(shù)會議、期刊上發(fā)表論文4篇,申請相關(guān)專利2項。工作期間曾從事OCR、自然場景OCR應(yīng)用研究,提出基于文字背景區(qū)域檢測和自適應(yīng)分級聚類的文字檢測方法,研究成果申請美國專利2項,日本專利2項,中國專利5項。目前主要從事證件識別、自然場景文本識別等研究工作。
研究背景
隨著便攜式拍攝設(shè)備的普及以及自媒體、網(wǎng)絡(luò)直播平臺的興起,數(shù)字視頻迎來了爆炸式的增長。視頻的有效編目和檢索成為迫在眉睫的需求。然而,視頻來源多種多樣,很多并不具備規(guī)范化的描述信息(比如字幕文件)。基于純粹的圖像識別技術(shù)理解視頻內(nèi)容需要跨越 圖像到語義理解的鴻溝,目前的技術(shù)尚不完善。另一方面,視頻中的字幕往往攜帶了非常精準關(guān)鍵的描述信息,從識別字幕的角度去理解視頻內(nèi)容成為了相對可行的途徑。
識別字幕文本通常需要兩個步驟:字幕定位、文本識別。
字幕定位,即找出字幕在視頻幀中所處的位置,通常字幕呈水平或豎直排列,定位的結(jié)果可以采用最小外接框來表示,如圖1所示。字幕文本識別,即通過提取字幕區(qū)域的圖像特征,識別其中的文字,最終輸出文本串。
圖1:視頻字幕識別的一般流程
技術(shù)路線
字幕定位
字幕定位需要區(qū)分字幕區(qū)域和背景區(qū)域,有效的區(qū)分特征包括以下幾點:
- 字幕的顏色、字體較為規(guī)整,且與背景有較為明顯的顏色差異;
- 字幕區(qū)域的筆畫豐富,角點和邊緣特征比較明顯;
- 字幕中字符間距固定,排版多沿水平或豎直方向;
- 同一視頻中字幕出現(xiàn)的位置較為固定,且同一段字幕一般會停留若干秒的時間。
這其中,前三點是字幕外觀特征,第四點是時間冗余性的特征。利用這些特征,一種可行的字幕定位方案如下:
圖2:基于邊緣密度的字幕定位
首先,對于視頻幀灰度圖像進行邊緣檢測,得到邊緣圖。
然后,在邊緣圖上分別進行水平和豎直方向的投影分析,通過投影直方圖的分布,大致確定字幕的候選區(qū)域。如果存在多個候選區(qū)域,則根據(jù)字幕區(qū)域的尺寸和寬高比范圍濾除不合理的檢測結(jié)果。最后,通過多幀檢測結(jié)果對比融合,進一步去除不穩(wěn)定的檢測區(qū)域。這樣,基本可以得到可信的檢測結(jié)果。
在某些復(fù)雜場景下,上述方法檢測的區(qū)域可能會存在字幕邊界檢測不準的情況,尤其是垂直與字幕方向的兩端邊界。這時,可以進一步借助連通域分析的方法,求出字幕所在行區(qū)域的連通域,通過連通域的顏色、排列規(guī)整性來微調(diào)檢測結(jié)果。
字幕文本識別
字幕文本識別通常采用的方法是首先根據(jù)行區(qū)域內(nèi)的灰度直方圖投影,切分單字區(qū)域,然后針對每個單字區(qū)域進行灰度圖像歸一化、提取梯度特征、多模版匹配和MCE(最小分類誤差)分類。然而這種傳統(tǒng)的基于特征工程的分類識別方法難以應(yīng)對背景紋理復(fù)雜,以及視頻本身的噪聲和低分辨率等問題。
一種改進的思路是采用基于深度學習的端到端的串識別方案:CRNN (Convolutional Recurrent Neural Network)。其方法流程如圖3所示:
圖3:CRNN實現(xiàn)end-to-end word recognition
首先,輸入高度固定、寬度不限的單詞圖像(無需單字區(qū)域信息),在訓(xùn)練過程中,將圖像統(tǒng)一歸一化到32*100;
然后,通過CNN層提取圖像特征,利用Map-to-Sequence形成特征向量,輸出為的feature map。這里,
和
與輸入圖像的尺寸成比例相關(guān)。論文中,feature map的尺寸為:
。這相當于對圖像進行了過切分,將其劃分為26個條狀區(qū)域,每個區(qū)域用512維的特征來表示。其中,26被認為是英文單詞的長度上限。值得一提的是,由于卷積性質(zhì),這里的條狀區(qū)域是“軟邊界”且存在交疊的,其寬度對應(yīng)最后一層卷積的感受野。
接著,通過RNN層提取條狀區(qū)域的上下文特征,得到類別概率分布。這里采用的是雙層雙向的LSTM,LSTM的單元個數(shù)與一致。RNN的輸出為
的概率矩陣,其中,
對應(yīng)于類別個數(shù),考慮26個英文字母+10個數(shù)字+1個負類(對應(yīng)于字母之間的模糊地帶),類別個數(shù)取37即可。
最后,通過CTC層將概率矩陣轉(zhuǎn)化為對應(yīng)某個字符串的概率輸出。CTC層本身沒有參數(shù),它利用一種前向后向算法求解最優(yōu)的label序列,使得理論上龐大的窮舉計算成為可能。
從上面的分析可以看出,CRNN的亮點主要在于:將切分和識別合并為一個模塊,避免了誤差累積;可以端到端訓(xùn)練。在我們前期的實踐中,發(fā)現(xiàn)其性能比傳統(tǒng)方法的確有明顯提升,主要表現(xiàn)為對于藝術(shù)字體、手寫字體等切分困難情況優(yōu)異的識別性能。但是,針對實際應(yīng)用場景的分析讓我們最終放棄了這個方案,原因有二:
時效:基于我們在英文單詞上面的實驗對比,CRNN的耗時約為傳統(tǒng)方法的2~3倍,不能滿足視頻處理的實時性要求;
性能:CRNN擅長處理難以切分的字符串,而字幕文本間距和字體均較為規(guī)整,很少出現(xiàn)字間粘連的情況,所以并不能體現(xiàn)CRNN的優(yōu)勢。
綜上考慮,我們最終采用筆畫響應(yīng)加投影統(tǒng)計方法進行切分,而在單字識別環(huán)節(jié)采用CNN,提升復(fù)雜場景下的識別性能。下面簡單介紹該流程:
切分環(huán)節(jié)包括三個步驟:
- 求取字幕區(qū)域圖像的筆畫響應(yīng)圖;
- 統(tǒng)計筆畫響應(yīng)圖水平方向的灰度投影直方圖;
- 根據(jù)字幕區(qū)域的高度預(yù)估單個字符的寬度,并以此為依據(jù),在投影直方圖上尋找一系列最優(yōu)切點。
圖4:字幕區(qū)域的切分
切分環(huán)節(jié)給出了單個字符區(qū)域,針對該區(qū)域,采用CNN模型提取特征來進行單字識別。這里需要考慮兩點:
模型選擇:經(jīng)過實驗,包含3~5層卷積-池化單元的簡單CNN模型即可將傳統(tǒng)識別方法的性能提高10個百分點左右。當然,層次更深的網(wǎng)絡(luò),如resnet,會進一步提升性能。實用場景下,模型選擇需要根據(jù)需求在速度和性能之間進行權(quán)衡。
數(shù)據(jù)來源:基于深度學習的方法,性能關(guān)鍵在于海量可靠的訓(xùn)練樣本集。在訓(xùn)練過程中,我們采用的樣本集在百萬量級,而這些樣本僅靠人工搜集和標注顯然是不現(xiàn)實的。所以,在深度學習的多次應(yīng)用中,我們均采用了合成樣本訓(xùn)練,實際樣本驗證的模式,并證明了其可行性。
以合成字幕文本為例:我們通過分析字幕文件的格式,將待生成的文本寫入字幕文件,通過播放視頻時自動載入字幕,將文字疊加到視頻上面。這樣,可以同時完成數(shù)據(jù)的生成和標注。我們還根據(jù)需要定制了不同字體,添加了陰影、模糊等附加效果。這樣,理論上我們就可以得到無限多的合成樣本了。
圖5:字幕文字樣本的合成
雖然識別模塊的性能強悍,但是對于形似字難免仍然存在識別錯誤的情況。這時就要發(fā)揮語言模型的威力了。語言模型又稱為n-gram模型,通過統(tǒng)計詞庫中字的同現(xiàn)概率,可以確定哪個字序列出現(xiàn)的可能性更大。N-gram中的n代表統(tǒng)計的詞(字)序列的長度,n越大,模型越復(fù)雜。在字幕識別系統(tǒng)中,我們用了最簡單的2-gram模型,將最終的識別正確率又提升了2個百分點。
圖6:基于語言模型的結(jié)果校正
小結(jié)
我們采用上述系統(tǒng)在實際視頻樣本上進行測試,單字識別準確率達到99%,CPU上單字識別耗時2ms,基本達到實用需求。作為對于深度學習方法應(yīng)用在實際業(yè)務(wù)中的一次粗淺嘗試,我們有兩點心得:
關(guān)于方法選擇,要從問題出發(fā),具體分析難點在哪里,選擇最簡單有效的方法,避免貪大求新,本末倒置;
關(guān)于數(shù)據(jù)合成,合成數(shù)據(jù)用于訓(xùn)練,實際數(shù)據(jù)用于微調(diào)和測試,可謂是訓(xùn)練深度學習網(wǎng)絡(luò)性價比最高的方式。當然,不需要考慮時間人力消耗的土豪隨意。在操作過程中,一定要注意保持合成樣本和實際樣本盡量相似,可以采用多次驗證調(diào)整,選擇最佳的合成方法。
原文鏈接:http://t.cn/R0w2Z6L
作者:麻文華
【本文是51CTO專欄作者“騰訊云技術(shù)社區(qū)”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系原作者獲取授權(quán)】