唇語(yǔ)識(shí)別系統(tǒng)使用機(jī)器視覺(jué)技術(shù),從圖像中連續(xù)識(shí)別出人臉,判斷其中正在說(shuō)話(huà)的人,提取此人連續(xù)的口型變化特征,隨即將連續(xù)變化的特征輸入到唇語(yǔ)識(shí)別模型中,識(shí)別出講話(huà)人口型對(duì)應(yīng)的發(fā)音,隨后根據(jù)識(shí)別出的發(fā)音,計(jì)算出可能性最大的自然語(yǔ)言語(yǔ)句。
唇語(yǔ)識(shí)別并非最近才出現(xiàn)的技術(shù),早在 2003 年,Intel 就開(kāi)發(fā)了唇語(yǔ)識(shí)別軟件 Audio Visual Speech Recognition(AVSR),開(kāi)發(fā)者得以能夠研發(fā)可以進(jìn)行唇語(yǔ)識(shí)別的計(jì)算機(jī);2016 年 Google DeepMind 的唇語(yǔ)識(shí)別技術(shù)就已經(jīng)可以支持 17500 個(gè)詞,新聞測(cè)試集識(shí)別準(zhǔn)確率達(dá)到了 50% 以上。
大家一定很好奇唇語(yǔ)識(shí)別系統(tǒng)要怎么實(shí)現(xiàn)。Amirsina Torfi 等人實(shí)現(xiàn)了使用 3D 卷積神經(jīng)網(wǎng)絡(luò)的交叉視聽(tīng)識(shí)別技術(shù)進(jìn)行唇語(yǔ)識(shí)別,并將代碼托管到 GitHub 上開(kāi)源:
傳送門(mén):
https://github.com/astorfi/lip-reading-deeplearning
接下來(lái)就為大家介紹如何使用 3D 卷積神經(jīng)網(wǎng)絡(luò)的交叉視聽(tīng)識(shí)別技術(shù)進(jìn)行唇語(yǔ)識(shí)別,完整的論文可參閱:
https://ieeexplore.ieee.org/document/8063416
下面是進(jìn)行唇語(yǔ)識(shí)別的簡(jiǎn)單實(shí)現(xiàn)方法。
用戶(hù)需要按照格式準(zhǔn)備輸入數(shù)據(jù)。該項(xiàng)目使用耦合 3D 卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了視聽(tīng)匹配(audio-visual matching)。唇語(yǔ)識(shí)別就是這個(gè)項(xiàng)目的具體應(yīng)用之一。
概況
當(dāng)音頻損壞時(shí),視聽(tīng)語(yǔ)音識(shí)別(Audio-visual recognition,AVR)被認(rèn)為是完成語(yǔ)音識(shí)別任務(wù)的另一種解決方案,同時(shí),它也是一種在多人場(chǎng)景中用于驗(yàn)證講話(huà)人的視覺(jué)識(shí)別方法。AVR 系統(tǒng)的方法是利用從某種模態(tài)中提取的信息,通過(guò)填補(bǔ)缺失的信息來(lái)提高另一種模態(tài)的識(shí)別能力。
▌問(wèn)題與方法
這項(xiàng)工作的關(guān)鍵問(wèn)題是找出音頻和視頻流之間的對(duì)應(yīng)關(guān)系。我們提出了一種耦合 3D 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),該架構(gòu)可以將兩種模式映射到一個(gè)表示空間中,并使用學(xué)到的多模態(tài)特征來(lái)判斷視聽(tīng)流間的對(duì)應(yīng)關(guān)系。
▌如何利用 3D 卷積神經(jīng)網(wǎng)絡(luò)
我們提出的該架構(gòu)將結(jié)合時(shí)態(tài)信息和空間信息,來(lái)有效地發(fā)現(xiàn)不同模態(tài)的時(shí)態(tài)信息之間的相關(guān)性。我們的方法使用相對(duì)較小的網(wǎng)絡(luò)架構(gòu)和更小的數(shù)據(jù)集,并在性能上優(yōu)于現(xiàn)有的視聽(tīng)匹配方法,而現(xiàn)有方法主要使用 CNN來(lái)表示特征。我們還證明了有效的對(duì)選擇(pair selection)方法可以顯著提高性能。
代碼實(shí)現(xiàn)
輸入管道須由用戶(hù)提供。其余部分的實(shí)現(xiàn)包含基于話(huà)語(yǔ)的特征提取的數(shù)據(jù)集。
▌唇語(yǔ)識(shí)別
就唇語(yǔ)識(shí)別來(lái)講,必須將視頻作為輸入。首先,使用 cd 命令進(jìn)入相應(yīng)的目錄:
運(yùn)行專(zhuān)用的python file如下:
運(yùn)行上述腳本,通過(guò)保存每個(gè)幀的嘴部區(qū)域來(lái)提取唇部動(dòng)作,并在畫(huà)框圈出嘴部區(qū)域來(lái)創(chuàng)建新的視頻,以便進(jìn)行更好的可視化。
所需的arguments由以下 Python 腳本定義,VisualizeLip.py文件中已定義該腳本:
一些已定義的參數(shù)有其默認(rèn)值,它們并不需要進(jìn)一步的操作。
▌處理
視覺(jué)部分,視頻通過(guò)后期處理,使其幀率相等,均為 30f/s。然后,使用 dlib 庫(kù)跟蹤視頻中的人臉和提取嘴部區(qū)域。最后,所有嘴部區(qū)域都調(diào)整為相同的大小,并拼接起來(lái)形成輸入特征數(shù)據(jù)集。數(shù)據(jù)集并不包含任何音頻文件。使用 FFmpeg 框架從視頻中提取音頻文件。數(shù)據(jù)處理管道如下圖所示:
▌?shì)斎牍艿?/p>
我們所提出的架構(gòu)使用兩個(gè)不相同的卷積網(wǎng)絡(luò)(ConvNet),輸入是一對(duì)語(yǔ)音和視頻流。網(wǎng)絡(luò)輸入是一對(duì)特征,表示從 0.3 秒的視頻中提取的唇部動(dòng)作和語(yǔ)音特征。主要任務(wù)是確定音頻流是否與唇部運(yùn)動(dòng)視頻在所需的流持續(xù)時(shí)間內(nèi)相對(duì)應(yīng)。在接下來(lái)的兩個(gè)小節(jié)中,我們將分別講解語(yǔ)音和視覺(jué)流的輸入。
語(yǔ)音網(wǎng)絡(luò)(Speech Net)
在時(shí)間軸上,時(shí)間特征是非重疊的 20ms 窗口,用來(lái)生成局部的頻譜特征。語(yǔ)音特征輸入以圖像數(shù)據(jù)立方體的形式表示,對(duì)應(yīng)于頻譜圖,以及 MFEC 特征的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。這三個(gè)通道對(duì)應(yīng)于圖像深度。從一個(gè) 0.3 秒的視頻剪輯中,可以導(dǎo)出 15 個(gè)時(shí)態(tài)特征集(每個(gè)都形成 40 個(gè) MFEC 特征),這些特征集形成了語(yǔ)音特征立方體。一個(gè)音頻流的輸入特征維數(shù)為 15x40x3。如下圖所示:
語(yǔ)音特征使用 SpeechPy 包進(jìn)行提取。
要了解輸入管道是如何工作的,請(qǐng)參閱:
code/speech_input/input_feature.py
視覺(jué)網(wǎng)絡(luò)(Visual Net)
在這項(xiàng)工作中使用的每個(gè)視頻剪輯的幀率是 30 f/s。因此,9 個(gè)連續(xù)的圖像幀形成 0.3 秒的視頻流。網(wǎng)絡(luò)的視頻流的輸入是大小為 9x60x100 的立方體,其中 9 是表示時(shí)態(tài)信息的幀數(shù)。每個(gè)通道是嘴部區(qū)域的 60x100 灰度圖像。
架構(gòu)
該架構(gòu)是一個(gè)耦合 3D 卷積神經(jīng)網(wǎng)絡(luò),其中必須訓(xùn)練具有不同權(quán)重的兩個(gè)網(wǎng)絡(luò)。在視覺(jué)網(wǎng)絡(luò)中,唇部運(yùn)動(dòng)的空間信息和時(shí)態(tài)信息相結(jié)合,以此來(lái)利用時(shí)間相關(guān)性。在音頻網(wǎng)絡(luò)中,提取的能量特征作為空間維度,堆疊的音頻幀構(gòu)成了時(shí)間維度。在我們提出的 3D 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)中,卷積運(yùn)算是在連續(xù)的時(shí)間幀上對(duì)兩個(gè)視聽(tīng)流執(zhí)行的。
訓(xùn)練 / 評(píng)估
首先,克隆存儲(chǔ)庫(kù)。然后,用 cd 命令進(jìn)入專(zhuān)用目錄:
最后,必須執(zhí)行train.py文件:
對(duì)于評(píng)估階段,必須執(zhí)行類(lèi)似腳本:
▌運(yùn)行結(jié)果
下面的結(jié)果表明了該方法對(duì)收斂準(zhǔn)確度和收斂速度的影響。
最好的結(jié)果,也就是最右邊的結(jié)果,屬于我們提出的方法。
所提出的在線(xiàn)對(duì)選擇方法的效果如上圖所示。
分析到這,希望大家可以到 Github 上找到源碼,開(kāi)始練起!附上作者給的代碼演示。
DEMO 演示地址
1.Training/Evaluation :
https://asciinema.org/a/kXIDzZt1UzRioL1gDPzOy9VkZ
2.Lip Tracking:
https://asciinema.org/a/RiZtscEJscrjLUIhZKkoG3GVm
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4809瀏覽量
102826 -
機(jī)器視覺(jué)
+關(guān)注
關(guān)注
163文章
4513瀏覽量
122301 -
識(shí)別技術(shù)
+關(guān)注
關(guān)注
0文章
210瀏覽量
19953
原文標(biāo)題:唇語(yǔ)識(shí)別技術(shù)的開(kāi)源教程,聽(tīng)不見(jiàn)聲音我也能知道你說(shuō)什么!
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于3D數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)的物體識(shí)別

使用Python卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行圖像識(shí)別的基本步驟
基于毫米波雷達(dá)的手勢(shì)識(shí)別神經(jīng)網(wǎng)絡(luò)
【uFun試用申請(qǐng)】基于cortex-m系列核和卷積神經(jīng)網(wǎng)絡(luò)算法的圖像識(shí)別
基于賽靈思FPGA的卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)設(shè)計(jì)
可分離卷積神經(jīng)網(wǎng)絡(luò)在 Cortex-M 處理器上實(shí)現(xiàn)關(guān)鍵詞識(shí)別
卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用
卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介:什么是機(jī)器學(xué)習(xí)?
3D卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別

評(píng)論