matlab实现疲劳驾驶监测
第2章 人臉的檢測與定位
本論文通過人眼狀態來判斷疲勞狀態,在判斷是否疲勞之前要先進行人臉與人眼的檢測與定位。整個流程,要先進行人臉的檢測,在檢測人臉的基礎上識別出人眼并定位,在此基礎上,實現了對眼球運動的跟蹤,從而得到了眼球的狀態信息。人體的眼睛有兩種常見的檢測方式,一種是通過紅外光來確定眼球的位置,然后再進行下一步的測量;其次,可以首先識別出臉部,縮小在圖片中的搜索范圍,然后在被探測到的面部中尋找眼球的所在。第一種是通過硬體進行虹膜的位置,如果眼球的辨識錯誤,則會導致該系統無法正常工作;如果能夠精確的探測到臉部,那么眼睛的具體方位就可以確定了。
本研究的重點在于對人體眼睛和面部的位置進行了研究,因為該研究主要是根據眼睛的狀況來判定人體的疲勞程度,因此在此基礎上,首先要對臉部和眼睛進行位置的確定。該過程采用了一種基于序列分類的方法,首先對臉部進行識別和定位,然后對眼球進行識別,從而得到眼球的特征信息。眼睛的探測有多種方式,例如利用特殊的儀器,利用紅外線光源,可以直接探測到眼睛的具體方位;由此確定眼球位置,并進行下一步的檢測;利用級聯分類器,首先識別出人臉,減少在圖像中的搜尋距離,然后對所探測到的面部進行檢索,從而確定人眼位置。第一種方法是采用硬件裝置進行位置測量,但精度不高。因此,我們提出了一種基于層次分類算法的人臉識別算法,該算法首先探測到臉部的具體方位,再對臉部進行識別。
2.1 人臉檢測技術的概述
人臉識別主要技術就是利用對各種背景信息進行準確識別,并對其實施具體分類,進而識別出人臉的準確位置[3]。光照環境、噪聲、擺動頭部和其它外界因素是主要的因素。面部準確識別是疲勞駕駛檢測的首要步驟,也是最基本的步驟,只要能夠精確地檢測和定位到圖像中的面部,那么接下來的工作就可以進行了。在現實生活中,人臉識別技術已經得到了廣泛的運用。主要步驟是通過對被檢測的區域進行遍歷,然后將其與已建立的人臉模型進行比對,輸出我們想要的人臉區域。目前,人臉識別技術主要有兩種,一種是基于圖像的人臉識別,另一種是基于特征的人臉識別。
2.1.1?基于圖像的人臉檢測方法
基于圖像的人臉檢測方法主要是利用常規的模式識別算法,將圖像作為輸入,經過算法處理,輸出結果為人臉和非人臉兩種類型,然后用算檢測的區域進行模型匹配,實現我們需要的人臉匹配檢測出。比較常用的圖像檢測法主要有以下兩種:
(1)線性子空間方法
可以將人臉圖像看成處于整幅圖像的一個子空間中。通常用神經學的方法表示子空間,也可以用諸如主元分析以及線性判定分析等方法來表示[4]。
(2)神經網絡方法
神經網絡法由模式識別中提出,也常用于人臉的檢測與定位算法,具備統計學習的一般優勢,且其自適應性比較好,相較于線性子空間方法,其運算速度大大提升,魯棒性更好。
2.1.2?基于特征的人臉檢測方法
這一類人臉檢測方法加入了特征提取與特征匹配,基于特征的人臉檢測方法主要有以下三種[5]:
(1)特征分析的方法
基于特征分析主要有兩種方法:第一種是依據臉部的固定位置來遍歷我們需要的特征信息,再匹配已有的模板。另一種是利用各種常用的人臉模型對人臉特征進行分類,建立不同的分組。例如,它屬于特征搜索和構象分析方法。
(2)利用活動形狀模型的方法
ASM是目前較為流行的用于面部特征點的識別技術。運動形態模型可以通過對模型進行訓練,獲得相應的圖像特征,從而將待匹配的圖像控制在合理的范圍內。運動形態模型可分為訓練和搜索兩大類。在模型的訓練階段,利用人工標定特征點的坐標位置,對全局形狀模型進行整體建模,并對其進行局部化處理;在檢索過程中,首先利用局部模型來確定目標區域的位置,然后在所有特征點的搜索完成后,利用全局形狀模型對目標區域進行約束,直至找到目標的具體位置,或重復次數達到一定程度,則完成搜索。
(3)底層分析的方法
底層分析的關鍵是提取圖像的底層特征,再對其進行比較,來獲取我們需要的特征信息。提取良好的特征是模式識別的基本問題。按照特征提取方式的不同,共有自然特征與人工特征兩種。
人工特征是經過計算得出的特征,而自然特征是在處理過程中圖像本身具有的特征。在人臉識別中,通過對人臉特征進行檢測,就能夠進行對人臉的另一種表述,也就是用測量空間中的一個點來描述某個人臉。而利用這樣的特性,就能夠使用基于灰度信息的方式實現檢測,即利用在水平方向上或者垂直方向上的積分投影來定位瞳孔或者眉毛以外的部位,從而實現對眼睛的測量和定位。
2.2?利用Viola-Jones算法實現人臉的檢測與定位
2.2.1?Viola-Jones?算法背景
Viola-Jones算法由Viola 和 Jones兩人合作共同提出,2001年兩人在國際會議CVPR上發表有關文章并正式推出,算法核心就是在AdaBoost算法的基礎上,利用矩形特征、積分圖計算以及級聯分類器檢測實現人臉識別[6]。
?Viola-Jones算法在常規的電腦上其檢測速度已經達到了每秒15幀,比之前的算法在速度上有了很大的提升,足以滿足此設計的要求。在滿足高速率的同時,其檢測準確率并沒有因此而下降,依舊保持了較高的識別精度。
后來,這個檢測器的矩形特征得以擴展,算法效率得到了大幅度的提高,這個算法也被寫入到Matlab的視覺工具箱中,可以直接調用,為用Matlab做人臉識別技術提供了很大的便利,Viola-Jones框架也成為了人臉檢測的主流技術。
2.2.2?矩形特征
矩形特征即常說的Haar-like特征,是人臉檢測中的主要特征,就是利用一個一個的矩形將人臉區域進行劃分,比如兩個眼睛就可以劃分為一個矩形,鼻子也可以化為一個矩形。稱之為Haar-like特征,是因為這里所說的特征類似于之前的Haar小波,在矩形特征未出現之前,最流行的是Haar小波用來表示人臉的局部特征,就是利用Haar函數來對人臉進行細節分解,提取所需的特征[7]。后來,Viola和Jones 對這種Haar小波進行了空間變化,即使這種特征更加多樣化,經過不斷的發展,形成了擴展后的矩形特征。現有的Haar特征模板主要如圖2.1所示:
圖2.1 Haar特征模板
矩形特征在上圖中就是黑色區域與白色區域的像素差值的和。矩形特征對一些簡單的圖形結構,臉部或者眼睛的一些特征能夠由矩形特征簡單的描繪[8]。圖2.2就可以直觀的看出矩形特征在人臉區域特征提取的作用,這是利用算法篩選出來的對人臉檢測有實際意義的特征。
圖2.2 人臉的有效矩形特征
2.2.3?積分圖
在上一小節對人臉區域進行特征提取之后,需要對包圍盒進行標注、濾波跟卷積等一系列處理,這里就用到了積分圖,核心就是將需要處理的圖像內部區域部分矩形的像素和儲存,其儲存形式是作為數組的元素,在用到這一部分時,直接調用儲存在數組的元素即可,無需再進行像素值的計算。
下面為積分圖的使用方法:
積分圖可以一次性提前算好,當需要求某個子矩陣的和時,只需要查詢4個數字,就得以得到子矩陣的和。例如圖2.3中,想要計算矩陣內像素的和,在積分圖內找到四個位置對應的值,根據公式就可以得到。
圖2.3 計算區域內像素值的和
2.2.4?AdaBoost算法
AdaBoost算法于1995年被提出,是一種改進后的人臉檢測算法。AdaBoost算法之所以適用于人臉檢測,是因為算法訓練了大量的弱分類器而組成一個強分類器,在實現過程中同時進行了特征選擇,剔除了不利于人臉訓練的特征。
算法描述如下:
已知有多個訓練樣本的訓練集:,以及其中對應樣本的假與真:。在訓練樣本中有個假樣本,個真樣本,待分類物體中有個簡單特征,表示為,其中.,對于第個樣本,它的個特征的特征值為,對第一個輸入的特征的特征值有一個簡單二值分類器。對這個特征的弱分類器有一個閾值,由一個特征值和一個分類符構成[9]。
2.2.5?級聯檢測實現人臉檢測與定位
為了減少減少計算中不必要的浪費,將級聯檢測器加入到Viola-Jones算法中,即在檢測過程中,將無效的背景以及窗口都剔除掉,只留下與人臉相關的目標這樣,就提高了計算效率。在上一小節中由AdaBoost訓練完成的分類器的檢測率比較低,這是由于為了保證較低的容錯率,在訓練分類器時,高檢測率會導致高誤識率,傳統的分類器訓練過程是有一個矛盾點的,即檢測率與誤識率兩點是相互沖突的,不能在保證高檢測率的同時降低誤識率,級聯檢測器就解決了這一矛盾。
上面已經說到了級聯檢測器的一大優點,另外利用級聯檢測還能提高計算效率,節省大量的時間,是因為在經過強分類器時,可以剔除掉分人臉的特征,將類人臉窗口發送到下一過程,從而減少了需要檢測的無效人臉樣本,將計算更多的利用在人臉窗口的偵測上,從而提高了檢測效率。
級聯檢測的過程可以看成一個樹狀結構。如圖2.4所示:首先將所有的人臉窗口輸入,第一個節點處會對人臉窗口進行判別,達到設定的閾值的窗口就會被送到下一個節點,不符合要求的就會被剔除掉,送到下個節點的人臉窗口會進行下一步的判別,然后再進行第三個節點的處理,然后輸出深度處理后的結果。上文所說的節點即是級聯檢測中的分類器。
圖2.4 級聯分類器的決策樹
訓練級聯分類器是為了能在檢測時提高準確度。檢測時,需要以現實中的一幅大圖片作為輸入,然后再進行所需要的檢測,一般這種檢測是多區域、多尺度的。多區域檢測是將檢測窗口劃分為多個區域進行遍歷檢測;多尺度檢測就是對搜索窗口的多個方向、多個尺度進行遍歷搜索,有以下兩種方法:第一種縮放照片,但搜索窗口的大小是不變的,每一次搜索都要對窗口內的像素值進行搜索,導致效率并不高,另一種是,不斷擴大搜索窗口進行搜索,但不改變圖像的大小。
本論文在進行訓練級聯分類器時利用了篩選子窗口圖像的方法,克服了效率不高的問題即第二種方法:
(2)檢測窗口放大的同時也會時矩形特征隨之放大,這時,矩形特征也便于檢測。
圖2.5 子窗口圖像的篩選
2.3?結果分析
經過上述的實驗步驟以后,可以快速的檢測到人臉并定位,圖2.6為網絡庫的人臉檢測與定位的實例效果圖,圖2.7為本設計的實際檢測效果圖。可以看出,經過VJ算法處理之后基本可以滿足我們對人臉檢測與定位的需求。
總結
以上是生活随笔為你收集整理的matlab实现疲劳驾驶监测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kettle 将查询SQL导出的 Exc
- 下一篇: matlab人脸追踪,求大神帮助我这个菜