劉繼興,周 昕,張帥峰,曾令輝,段珍靈,沈順權(quán)
(哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
隨著社會(huì)的發(fā)展,人們的交際需求日益提高。健康人可以使用口語(yǔ)進(jìn)行交流,而聽障人士(失聰)則需要通過手語(yǔ)交流。由于大部分普通人日常生活中并沒有學(xué)習(xí)過或接觸過手語(yǔ),在人與人之間的聯(lián)系愈發(fā)密切的當(dāng)代社會(huì),聽障人士與非聽障人士的溝通需求愈發(fā)迫切。使用人工智能進(jìn)行手語(yǔ)翻譯可以為聽障人士和非聽障人士的溝通提供一定的便利。因此,人工智能手語(yǔ)翻譯有著重要的理論價(jià)值、應(yīng)用價(jià)值及社會(huì)意義。本手語(yǔ)翻譯系統(tǒng)能夠識(shí)別《國(guó)家通用手語(yǔ)常用詞表》中單獨(dú)手勢(shì)以及特定情況下連續(xù)的手語(yǔ)視頻,并將之翻譯成較為符合語(yǔ)境且具有可讀性的漢語(yǔ),減輕聽障人士與非聽障人士溝通障礙。
系統(tǒng)能夠?qū)崿F(xiàn)相對(duì)簡(jiǎn)單且連續(xù)的手語(yǔ)圖像和視頻的采集與翻譯。當(dāng)聽障人士在攝像頭可識(shí)別的范圍內(nèi)用手語(yǔ)與他人進(jìn)行溝通,客戶機(jī)會(huì)通過攝像頭采集手語(yǔ)視頻,將數(shù)據(jù)上傳到云服務(wù)器。服務(wù)器會(huì)對(duì)數(shù)據(jù)流進(jìn)行預(yù)處理、提取關(guān)鍵幀等處理并生成相應(yīng)文字,然后將生成的文本發(fā)送給客戶機(jī)??蛻魴C(jī)接收到文字信息,顯示文字并通過語(yǔ)音模塊進(jìn)行播放。
整個(gè)系統(tǒng)可以分為客戶機(jī)和云服務(wù)器,如圖1所示。主控板收集攝像頭采集到的手語(yǔ)視頻,基于幀間差分算法在連續(xù)手語(yǔ)視頻幀中提取出關(guān)鍵幀。使用Tcp socket方式將關(guān)鍵幀數(shù)據(jù)發(fā)送給云服務(wù)器。云服務(wù)器得到幀數(shù)據(jù)后,對(duì)數(shù)據(jù)流進(jìn)行解析,使用YOLOv5自訓(xùn)練手部模型和OpenPose開源庫(kù)對(duì)圖像進(jìn)行識(shí)別,生成相應(yīng)的孤立的文字結(jié)果,然后采用隱馬爾可夫模型對(duì)離散的識(shí)別結(jié)果進(jìn)行處理,將最終的文本結(jié)果發(fā)送給客戶機(jī)??蛻魴C(jī)接收到信息,將文字顯示到顯示屏并通過語(yǔ)音播放模塊播放語(yǔ)音。
圖1 手語(yǔ)翻譯系統(tǒng)整體架構(gòu)圖
采集到的原始圖像中存在大量噪聲,因此需對(duì)圖像進(jìn)行預(yù)處理以減少噪聲干擾,使其突出肢體運(yùn)動(dòng)區(qū)域信息。預(yù)選出2種方法。第一種是將輸入圖像閾值化為二值圖像,然后采用高斯濾波對(duì)圖像中的每一個(gè)像素點(diǎn)進(jìn)行卷積計(jì)算,并加入到原始圖像中進(jìn)行噪聲點(diǎn)覆蓋;第二種是采用索貝爾算子進(jìn)行邊緣計(jì)算,對(duì)肢體部分進(jìn)行邊緣銳化,增強(qiáng)圖像關(guān)鍵信息。但由于第一種方法會(huì)造成圖像中的像素點(diǎn)與周圍像素點(diǎn)相似,降低圖像清晰度。所以綜合考慮使用索貝爾算子增強(qiáng)關(guān)鍵信息,以減少原始圖像中噪聲的干擾。
利用Opencv庫(kù)可以從手語(yǔ)視頻中提取出每一幀圖像,但如果對(duì)全視頻的幀進(jìn)行處理會(huì)非常耗時(shí),所以采取提取有效關(guān)鍵幀的做法降低處理幀數(shù)。關(guān)鍵幀的提取是基于幀間差分算法。幀間差分算法的原理是將兩幀圖像進(jìn)行差分,得到圖像的平均像素強(qiáng)度來衡量?jī)蓭瑘D像的變化大小?;趲g差分的平均強(qiáng)度,每當(dāng)視頻中的某一幀與前一幀畫面內(nèi)容產(chǎn)生了大的變化,便認(rèn)為它是關(guān)鍵幀,并將其提取出來。
基于幀間差分算法提取關(guān)鍵幀的方案如下。
對(duì)所有幀按照平均幀間差分強(qiáng)度進(jìn)行排序,選擇平均幀間差分強(qiáng)度最高的若干張圖片作為視頻的關(guān)鍵幀。
選擇平均幀間差分強(qiáng)度高于預(yù)設(shè)閾值的幀作為視頻的關(guān)鍵幀。
選擇具有平均幀間差分強(qiáng)度局部最大值的幀作為視頻的關(guān)鍵幀。
在這里,選擇第三種方案,將具有平均幀間差分強(qiáng)度局部最大值的幀作為視頻的關(guān)鍵幀。
數(shù)據(jù)的傳輸使用Tcpsocket網(wǎng)絡(luò)編程。在整個(gè)系統(tǒng)中多臺(tái)客戶機(jī)與云服務(wù)器進(jìn)行通訊,對(duì)后臺(tái)服務(wù)程序提出了并發(fā)要求。處理并發(fā)網(wǎng)絡(luò)編程常用的幾種方案如下。
服務(wù)端程序只有一個(gè)進(jìn)程/線程,沒有客戶端連接時(shí)會(huì)阻塞當(dāng)前進(jìn)程/線程。當(dāng)檢測(cè)到新連接時(shí)會(huì)解除阻塞,與客戶端連接,進(jìn)行收發(fā)數(shù)據(jù)。
服務(wù)端程序有多個(gè)進(jìn)程,進(jìn)程間具有父子關(guān)系。父進(jìn)程負(fù)責(zé)監(jiān)聽,處理客戶端的連接請(qǐng)求,創(chuàng)建子進(jìn)程和回收子進(jìn)程資源。子進(jìn)程負(fù)責(zé)與客戶機(jī)收發(fā)信息。
和多進(jìn)程并發(fā)類似,此時(shí)主線程負(fù)責(zé)監(jiān)聽,處理客戶端的連接請(qǐng)求,創(chuàng)建子線程和回收子線程資源。子線程負(fù)責(zé)與客戶機(jī)收發(fā)信息。
epoll的好處就在于單個(gè)進(jìn)程就可以同時(shí)處理多個(gè)網(wǎng)絡(luò)連接的IO。其基本原理就是epoll這個(gè)function會(huì)不斷地輪詢所負(fù)責(zé)的所有socket,當(dāng)某個(gè)socket有數(shù)據(jù)到達(dá)了,就通知用戶進(jìn)程。用一個(gè)進(jìn)程就能實(shí)現(xiàn)服務(wù)器并發(fā)。
使用YOLOv5和OpenPose人體資態(tài)識(shí)別開源庫(kù)對(duì)圖像進(jìn)行識(shí)別。YOLO(You Only Look Once)是目前流行的目標(biāo)檢測(cè)模型之一,在業(yè)界的應(yīng)用也很廣泛。YOLO的基本原理是:首先對(duì)輸入圖像劃分成7×7的網(wǎng)格,對(duì)每個(gè)網(wǎng)格預(yù)測(cè)2個(gè)邊框,然后根據(jù)閾值去除可能性比較低的目標(biāo)窗口,最后再使用邊框合并的方式去除冗余窗口,得出檢測(cè)結(jié)果。OpenPose人體資態(tài)識(shí)別項(xiàng)目是美國(guó)卡耐基梅隆大學(xué)(CMU)基于卷積神經(jīng)網(wǎng)絡(luò)和監(jiān)督學(xué)習(xí)并以caffe為框架開發(fā)的開源庫(kù)??梢詫?shí)現(xiàn)人體動(dòng)作、面部表情和手指運(yùn)動(dòng)等資態(tài)估計(jì)。
手語(yǔ)圖像識(shí)別流程如圖2所示。
圖2 手語(yǔ)圖像識(shí)別流程圖
輸入圖片經(jīng)YOLOv5處理,檢測(cè)出圖片中手部所在位置,得到手部方框左上角橫-縱坐標(biāo)以及方框的寬-高,如圖3所示。
圖3 手部方框圖
同時(shí),輸入圖片經(jīng)過OpenPose處理后,提取出圖片中的人員手部骨架關(guān)節(jié)點(diǎn)坐標(biāo),如圖4所示。
圖4 手部骨架關(guān)節(jié)點(diǎn)圖
最終用手語(yǔ)識(shí)別算法處理上述信息得到相應(yīng)的離散的手語(yǔ)識(shí)別結(jié)果。
HMM是一種基于貝葉斯的統(tǒng)計(jì)模型,主要用于處理基于時(shí)間序列或狀態(tài)序列的問題。早期HMM在語(yǔ)音識(shí)別和手寫字體識(shí)別中得到了良好的識(shí)別效果。基本的HMM技術(shù),可以處理單個(gè)的時(shí)間序列特征向量。而手勢(shì)識(shí)別面對(duì)的是更加復(fù)雜的手勢(shì)信號(hào),包括手形和運(yùn)動(dòng)軌跡等。因此,在手勢(shì)識(shí)別中,需要采用合適的數(shù)據(jù)融合方法對(duì)各種手語(yǔ)信息進(jìn)行有效融合。一般在模式識(shí)別領(lǐng)域常用的數(shù)據(jù)融合方法有2種,一種是特征層融合,就是把多個(gè)數(shù)據(jù)流的特征向量組合在一起構(gòu)成一個(gè)新的向量;另外一種就是分類器融合。多數(shù)據(jù)流模型可以獨(dú)立地處理多個(gè)數(shù)據(jù)流,每個(gè)數(shù)據(jù)流獨(dú)立地進(jìn)行訓(xùn)練,并允許數(shù)據(jù)流之間異步。同時(shí)在手語(yǔ)識(shí)別方面,Deng和Vogler提出利用并行HMMs來擴(kuò)展可識(shí)別的手語(yǔ)詞匯量,實(shí)驗(yàn)說明Pa HMM比傳統(tǒng)HMM在識(shí)別方面更具魯棒性。
在多流HMM中各個(gè)數(shù)據(jù)流是相互獨(dú)立處理的,每個(gè)數(shù)據(jù)流獨(dú)立地進(jìn)行訓(xùn)練,在識(shí)別時(shí)按照前述對(duì)幾個(gè)數(shù)據(jù)流進(jìn)行融合,再計(jì)算與每個(gè)模型的匹配概率,匹配概率最大的模型即為識(shí)別結(jié)果。
本文提出了一種手語(yǔ)翻譯系統(tǒng)設(shè)計(jì)方案,使用YOLOv5和OpenPose開源庫(kù)對(duì)圖像進(jìn)行識(shí)別。系統(tǒng)采用了C/S架構(gòu),服務(wù)器在云端部署,多臺(tái)客戶機(jī)可同時(shí)工作。使用YOLOv5得到圖片中手部位置坐標(biāo),使用OpenPose提取圖片中手部骨架關(guān)節(jié)點(diǎn)坐標(biāo)。這些信息作為手語(yǔ)識(shí)別算法的輸入,最終輸出手語(yǔ)對(duì)應(yīng)的文字。接下來將進(jìn)一步探尋手部骨架關(guān)節(jié)點(diǎn)坐標(biāo)、手部位置與手語(yǔ)之間的聯(lián)系,設(shè)計(jì)出合適的手語(yǔ)識(shí)別算法。