本文轉自 AI科技大本營。

【導讀】脣語識別系統使用機器視覺技術,從圖像中連續識別出人臉,判斷其中正在說話的人,提取此人連續的口型變化特徵,隨即將連續變化的特徵輸入到脣語識別模型中,識別出講話人口型對應的發音,隨後根據識別出的發音,計算出可能性最大的自然語言語句。

脣語識別並非最近纔出現的技術,早在 2003 年,Intel 就開發了脣語識別軟體 Audio Visual Speech Recognition(AVSR),開發者得以能夠研發可以進行脣語識別的計算機;2016 年 Google DeepMind 的脣語識別技術就已經可以支持 17500 個詞,新聞測試集識別準確率達到了 50% 以上。

大家一定很好奇脣語識別系統要怎麼實現。Amirsina Torfi 等人實現了使用 3D 卷積神經網路的交叉視聽識別技術進行脣語識別,並將代碼託管到 GitHub 上開源:

傳送門:

github.com/astorfi/lip-

接下來就為大家介紹如何使用 3D 卷積神經網路的交叉視聽識別技術進行脣語識別,完整的論文可參閱:

ieeexplore.ieee.org/doc

下面是進行脣語識別的簡單實現方法。

用戶需要按照格式準備輸入數據。該項目使用耦合 3D 卷積神經網路實現了視聽匹配(audio-visual matching)。脣語識別就是這個項目的具體應用之一。

概況

當音頻損壞時,視聽語音識別(Audio-visual recognition,AVR)被認為是完成語音識別任務的另一種解決方案,同時,它也是一種在多人場景中用於驗證講話人的視覺識別方法。AVR 系統的方法是利用從某種模態中提取的信息,通過填補缺失的信息來提高另一種模態的識別能力。

問題與方法

這項工作的關鍵問題是找出音頻和視頻流之間的對應關係。我們提出了一種耦合 3D 卷積神經網路架構,該架構可以將兩種模式映射到一個表示空間中,並使用學到的多模態特徵來判斷視聽流間的對應關係。

如何利用 3D 卷積神經網路

我們提出的該架構將結合時態信息和空間信息,來有效地發現不同模態的時態信息之間的相關性。我們的方法使用相對較小的網路架構和更小的數據集,並在性能上優於現有的視聽匹配方法,而現有方法主要使用 CNN 來表示特徵。我們還證明瞭有效的對選擇(pair selection)方法可以顯著提高性能。

代碼實現

輸入管道須由用戶提供。其餘部分的實現包含基於話語的特徵提取的數據集。

脣語識別

就脣語識別來講,必須將視頻作為輸入。首先,使用 cd 命令進入相應的目錄:

運行專用的 python file 如下:

運行上述腳本,通過保存每個幀的嘴部區域來提取脣部動作,並在畫框圈出嘴部區域來創建新的視頻,以便進行更好的可視化。

所需的 arguments 由以下 Python 腳本定義, VisualizeLip.py 文件中已定義該腳本:

一些已定義的參數有其默認值,它們並不需要進一步的操作。

處理

視覺部分,視頻通過後期處理,使其幀率相等,均為 30f/s。然後,使用 dlib 庫跟蹤視頻中的人臉和提取嘴部區域。最後,所有嘴部區域都調整為相同的大小,並拼接起來形成輸入特徵數據集。數據集並不包含任何音頻文件。使用 FFmpeg 框架從視頻中提取音頻文件。數據處理管道如下圖所示:

輸入管道

我們所提出的架構使用兩個不相同的卷積網路(ConvNet),輸入是一對語音和視頻流。網路輸入是一對特徵,表示從 0.3 秒的視頻中提取的脣部動作和語音特徵。主要任務是確定音頻流是否與脣部運動視頻在所需的流持續時間內相對應。在接下來的兩個小節中,我們將分別講解語音和視覺流的輸入。

語音網路(Speech Net)

在時間軸上,時間特徵是非重疊的 20ms 窗口,用來生成局部的頻譜特徵。語音特徵輸入以圖像數據立方體的形式表示,對應於頻譜圖,以及 MFEC 特徵的一階導數和二階導數。這三個通道對應於圖像深度。從一個 0.3 秒的視頻剪輯中,可以導出 15 個時態特徵集(每個都形成 40 個 MFEC 特徵),這些特徵集形成了語音特徵立方體。一個音頻流的輸入特徵維數為 15x40x3。如下圖所示:

語音特徵使用 SpeechPy 包進行提取。

要了解輸入管道是如何工作的,請參閱:

code/speech_input/input_feature.py

視覺網路(Visual Net)

在這項工作中使用的每個視頻剪輯的幀率是 30 f/s。因此,9 個連續的圖像幀形成 0.3 秒的視頻流。網路的視頻流的輸入是大小為 9x60x100 的立方體,其中 9 是表示時態信息的幀數。每個通道是嘴部區域的 60x100 灰度圖像。

架構

該架構是一個耦合 3D 卷積神經網路,其中必須訓練具有不同權重的兩個網路。在視覺網路中,脣部運動的空間信息和時態信息相結合,以此來利用時間相關性。在音頻網路中,提取的能量特徵作為空間維度,堆疊的音頻幀構成了時間維度。在我們提出的 3D 卷積神經網路架構中,卷積運算是在連續的時間幀上對兩個視聽流執行的。

訓練 / 評估

首先,克隆存儲庫。然後,用 cd 命令進入專用目錄:

最後,必須執行 train.py 文件:

對於評估階段,必須執行類似腳本:

運行結果

下面的結果表明了該方法對收斂準確度和收斂速度的影響。

最好的結果,也就是最右邊的結果,屬於我們提出的方法。

所提出的在線對選擇方法的效果如上圖所示。

分析到這,希望大家可以到 Github 上找到源碼,開始練起!附上作者給的代碼演示。

DEMO 演示地址

1.Training/Evaluation :asciinema.org/a/kXIDzZt2.Lip Tracking:asciinema.org/a/RiZtscE

原文鏈接:

計算機視覺方向簡介 | 脣語識別技術?

mp.weixin.qq.com
圖標

推薦閱讀:
相關文章