董志勇,李方方,徐志恒
(南京信息職業技術學院,江蘇 南京 210043)
大屏數據展示系統能解決具體應用場景下的實時數據展示與分析,通過對市場調查研究發現,目前大部分大屏數據展示系統只有標準的鍵盤鼠標輸入。隨著人工智能技術的發展,計算機視覺越來越多的應用在各個行業,本文主要介紹圖像識別系統在數據大屏中的應用。本系統通過手勢識別與人臉識別等功能,幫助用戶脫離傳統鍵盤鼠標的交互,具有一定的創新性。
本文主要介紹圖像識別技術包括手勢識別、人臉識別等技術在數據大屏中的應用,其中手勢識別系統是根據站在大屏前面的人所伸出的不同手勢來進行數據的切換,可以不通過硬件就可以更改頁面,查看數據等,可以有效幫助工人脫離硬件完成數據的切換與顯示;人臉識別系統是根據每個站在屏幕前面人物的不同來自動轉跳到不同人物想要看的界面,可以有效節省切換數據的時間,還可以減少數據的泄露;手機遙控系統是根據手機掃描大屏的二維碼來進行對大屏的操控與轉換,可以通過手機來進行遠距離的操控與更改,更符合智能工廠中的大屏戰術。
本文開發的數據大屏展示系統前端采用Vue-Element-admin,Element UI,Vue,Vant,Jquery等框架,后端是基于SpringCloud+Django+Tomcat+Nginx負載均衡+Java的云端服務器搭建+MySQL數據庫技術。
本系統主要使用的物理部件如下:(1)樹莓派3B以及支持樹莓派的攝像頭;(2)智能手機一部;(3)本地Linux系統的服務器若干臺;(4)本地實體顯示器一臺。
本系統基于樹莓派與物聯網技術開發的人機交互的圖像采集智能系統。通過樹莓派上的Linux與python技術來實現硬件獲取大屏實時圖像,并進行相應的分析與保存,將分析后的數據上傳到后端服務器中進行進一步的處理。
樹莓派外形是一個只有信用卡大小,卻具有PC功能的卡片式計算機,它誕生于2012年3月英國劍橋大學Eben Epton之手。樹莓派一經誕生就受到了各個計算機的強烈歡迎。主要是其本身擁有很多其他大型計算機并不具有的屬性。其中,微小性以及可擴展性就是本系統選用作為線下數據采集的重要考慮因素。
本系統使用的樹莓派型號為3B+,在實際生產中可以用其他可以搭載Python 環境以及可以接收攝像頭的數據的物理微型操作硬件代替。樹莓派在本地主要作用是給實際場景下的人臉識別與手勢識別提供物理的技術支持,多用于放到實體顯示器上面以方便實際場景下的人臉信息的獲取以及手勢信息的獲取。
OpenCV是一個基于開源的掛平臺計算機數據庫,它主要實現計算機視覺方面的通用算法,目前是計算機視覺領域最通用以及最有力的研究工具。OpenCV由C/C++類構成,擁有500多個C函數寫成的跨平臺API。OpenCV可以根據需求選擇依賴與不依賴外部庫。更重要的是OpenCV還提供了MLL(Machine Learning Library)機器學習庫,該功能為本系統手勢識別與人臉識別的信息預處理提供了幫助。
本系統通過Python來進行OpenCV的加載與使用,樹莓派中Python的Camera函數來獲取實時的線下生產環境的生產數據,并使用OpenCV進行初步的人臉識別與手勢識別,將收集到的信息轉化成Json數據發送到服務器后端進行進一步操作[1]。
在實際的生產環境當中,傳統的數據輸入設備有很多局限性,比如要物理上接觸才能夠進行修改,不能遠距離操控等。為了解決這一問題,本文設計出了圖像識別系統中的手勢識別系統,通過圖像識別系統中的手勢識別系統來進行對大屏系統的遠程操控。
手勢識別是圖像識別的一個重要子集。手勢識別技術是通過基于視覺手勢系統來完成,主要有圖像采集,預處理,特征提取以及選擇,分類器設計,手勢識別。有3個步驟是識別系統的關鍵技術,它們分別是預處理時手勢的分割技術,特征提取以及選擇技術,手勢跟蹤技術,最后還有手勢識別所采用的算法。
人的手勢其本身就具有豐富的形變,運動還有紋理特征。所以選取合理的特征對于手勢識別起著舉足輕重的作用。目前常用的手勢特征有:輪廓、邊緣、圖像炬,圖像的特征向量、區域直方圖特征等。
在進行特征選取時應該考慮結合多個特征圖,在《基于計算機視覺的手勢識別研究中》中有提到多度模型與矩描繪子相結合的相關算法,其將指尖和重點進行連線,采用了距離公式計算各個指尖到重心的距離,再采用了反余弦公式來計算各個指尖與重心連線之間的夾角,并將距離和夾角來作為選擇的特征,從而提高了識別的正確率,并減少了識別所用的時間。在《基于幾何特征的手勢識別算法研究》中采用的識別算法是幾何矩和邊緣檢測,手勢圖像在經過二值化處理之后,提取手勢圖像中的幾何矩特征,取出其中的幾何矩特征中7個特征分量中的4個分量,形成了手勢的幾何矩特征向量。在灰度圖的基礎上直接進行檢測圖的邊緣,利用其直方圖中表示圖像的邊界的方向特征。在最后,通過系統設置兩個特征的權重來比較計算圖像之間的距離,再對手勢進行分析與識別[2]。
從上述結論中可以看出采用多種特征結合的算法,能夠在計算的復雜度與精確性上有所提高。手勢檢測主要的影響因素有復雜背景、遮掩、外部的反射、直線光源亮度的變化等。手勢識別訓練過程如圖1所示。

圖1 手勢識別訓練過程
手勢識別系統有許多實現的算法,其中最著名的有3種:基于算法的手勢識別,基于神經網絡的手勢識別,基于樣本的識別。
每個手勢識別算法都需要有不同的參數,比如閾值,時間間隔等。尤其是在根據流程識別特定的算法時則更明顯。開發者需要不停地測試以及實驗才能夠確定這一合適的參數。這個過程則是要耗費許多時間以及人力才能夠完成。
當用戶在做手勢的時候,有一些手勢并不能單純地使用對或錯的二值化進行判斷。識別程序會錯誤地認為此手勢會變成其他手勢。使得一部分手勢的定義會變得模糊。同時,如果一個程序要同時進行多個手勢的識別任務,會讓此程序變得混亂難以調試。
基于神經網絡的手勢識別主要步驟是先采集樣本手勢,然后提取樣本特征,通過神經網絡建立模型并且訓練得到一個合適的模型。神經網絡中的每個神經元都對應著不同的算法,根據數據結構進行信息處理,用來判斷不同的手勢,因此基于手勢識別的神經網絡處理速度很高。但是缺點就是計算比較復雜,每個神經元都需要進行參數配置和調優[3]。
基于樣本的手勢識別主要有兩種方法,一種是基于模板庫的,根據模板庫計算手勢之間匹配的精密程度,這種是屬于規范化的識別,但是缺點是受限于模板庫的大小;第二種方法是使用類似的Kinect SDK中的骨骼追蹤系統,這種含有骨骼數據以及景深幀數據,并使用統計方法對產生的影像幀數據進行匹配從而識別出已知的幀數據[4]。
這種方法一般都會高度依賴機器學習。所產生的數據,往往都會根據時間的加長而增多,手勢識別精度也會因此而變得更加準確。此類方法能夠比較快捷地辨別出新手勢,并且與其他兩種方法對比起來,可以更好地識別出復雜的手勢。但是構建該系統并非一件簡單的事,系統需要大量的樣本數據進行訓練。隨著數據的爭奪,識別精度也會變得越來越高。因此系統需要海量資源和處理器以及時間進行手勢的匹配。
選擇手勢識別的方法通常是依賴于項目的需要,如果手勢比較簡單,并且數量不多,就可以采用基于算法或者基于神經網絡的手勢識別。但是本文面對的場景是大屏數據展示系統,面對的手勢較多,因此本文采用基于樣本和算法的手勢識別,算法采用的是高斯混合模型(GMM)算法。本系統采用此功能是在樹莓派上實現的,通過樹莓派上Python語言開發出的識別系統,能夠獲得站在大屏前面手勢的信息。
算法步驟具體為:(1)首先獲取一張背景圖;(2)用樹莓派的攝像頭實時獲取大屏前人的手勢;(3)把獲取到的圖像跟背景圖進行對比;(4)剪出不一樣的地方進行進一步分析(使用高斯混合模型分析算法);(5)為了減少多余的性能消耗,我們將裁剪出來的圖片去掉RGB顏色轉化成黑白圖(使用二分法);(6)最后用一根線描出圖像的外輪廓,用另個顏色的線描繪出圖像的形狀,(7)根據外輪廓與形狀角度的對比,根據手指之間的角度來分辨出手勢,手勢識別的演示效果如圖2所示。

圖2 手勢識別界面
其中高斯混合模型(GMM)算法的關鍵代碼詳細實現如下:
// 采集到的RGB像素數據轉變
//轉變原始的樣本數據
int i= 0;
for (int row = 0;row < height;row++){
for (int col = 0;col < width;col++){
index = row ? width + col;
Vec3b rgbPic = src.at
points.at
points.at
points.at
}
}
em_model->setTermCriteria(TermCriteria (TermCriteria::YFS+ TermCriteria::1,100,0.1));
// 對圖像中每個像素點進行標記顏色并且顯示
Ptr
Ptr
em_model->setClustersNumber(C);
Emwg3_model->setC(EM::5);
設計完手勢識別系統之后,又考慮到一種情景,那就是當用戶因某些特殊的原因無法騰出手來進行遠程操控,所以本系統又開發出了人臉識別系統來解決此問題。系統可以通過人臉來識別站在大屏前面的人物,當多名人物出現時,系統會尋找出權值最高人的人臉并顯示畫面。人臉識別算法主要是包括3個模塊:人臉識別、人臉對齊以及人臉特征表征。
本系統主要使用的是FaceNet來進行人臉的識別。FaceNet是一個通用人臉識別系統,主要采用深度卷積神經網絡(CNN)學習將圖像映射到歐式空間。空間距離直接和圖片相似度相關。一個人的不同圖像在空間距離很小,不同人的圖像在空間中有較大的距離,可以用于人臉驗證、識別和聚類。目前FaceNet在LFW數據集上測試的準確率達到了99.63%。人臉識別的主要過程是首先采集到所有用戶的人臉數據錄入數據庫,接著判斷大屏前面有幾張臉,如果只有一張臉,就提取特征碼,與人臉庫進行一一對比,找出相似度最大的角色,然后根據系統設置的角色權限來修改大屏系統;如果大屏前面有多張臉,那就分別提取各個人臉的特征碼,與人臉庫進行一一比對,找出相似度最大的角色,進而登錄大屏系統。
本文將手勢識別系統、人臉識別系統、手機遙控系統應用在數據大屏展示系統上,讓用戶脫離鼠標和鍵盤對大屏進行操作,有效提高了用戶體驗,具有一定程度的創新。