本發(fā)明涉及機器學習算法并行化領(lǐng)域,特別涉及一種基于spark分布式計算平臺的行人檢測方法。
背景技術(shù):
傳統(tǒng)的行人檢測方法采用視頻背景建模方法,運動幀差檢測法,光流目標檢測法,這些方法都是先提取出目標,然后通過分類的方法提取行人。這些方法適合于背景比較簡單的場景,但是在背景比較復雜的情況下,提取的目標會出現(xiàn)粘連現(xiàn)象,在分類時將其誤認為是其他目標,還有背景收到光照的影響,會將背景誤檢為目標。
基于現(xiàn)有的模型,比如說:快速線性SVM模型,Adaboost檢測hog特征模型,卷積神經(jīng)網(wǎng)絡,非線性SVM模型,DPM模型,深度神經(jīng)網(wǎng)絡模型都可以具有相當好的精度,但是問題就是計算速度比較慢,訓練模型比較慢。
AdaBoost是一種貪婪迭代算法,實現(xiàn)方式如下:首先,AdaBoost算法將訓練集中的每一個樣本集賦予一個相同的權(quán)重W。然后,該算法進行迭代運算。根據(jù)每次迭代運算中樣本集的分類錯誤率εt,AdaBoost對訓練集中的每一個樣本集重新賦予一個新的權(quán)重值Wt。Wt是一個與εt相關(guān)的函數(shù),即分類錯誤率εt小的樣本集權(quán)重值Wt小,反之分類錯誤率εt大的樣本集權(quán)重值Wt大。利用重新賦予權(quán)值的方法可以成功的使AdaBoost算法聚焦于分類錯誤率大的樣本集,最終使樣本集的分類錯誤率達到設定的合理值。AdaBoost算法針對同一的訓練集訓練出不同的分類器(即弱分類器),進而把這些弱分類器集合起來,構(gòu)成一個更強大的分類器(即強分類器)。該算法僅僅要求弱分類器的錯誤率小于50%(略好于隨機猜測),則通過迭代運算整體的分類錯誤率將以指數(shù)的方式降低到指定值。
Spark是Apache推出的分布式實時計算框架,提供了并行編程模型,用戶只需調(diào)用相關(guān)的API即可完成分布式處理程序,為大數(shù)據(jù)的處理提供了有利的條件,因此,基于分布式spark實時計算框架的行人檢測,能夠極大的提供訓練速度,圖像處理速度,大大改善因為硬件設備導致的精度,速度問題。
SVM是一種基于統(tǒng)計學習理論的VC維理論和結(jié)構(gòu)風險最小原理基礎(chǔ)上的機器學習系統(tǒng),主要用來處理二元樣本的分類問題,根據(jù)有限的樣本信息在模型的復雜性和學習能力之間尋求最佳折衷,以期獲得最好的推廣能力。算法采用核函數(shù)映射的方法,將原始空間的樣本映射到高維特征空間,在高維特征空間內(nèi),尋找一個超平面,使此超平面正確分類樣本,并且使正負樣本之間的間隔最大。
在行人檢測的過程中,由于擁有的特征數(shù)多和訓練樣本不平衡等問題,使用單一弱分類器的AdaBoost算法容易引發(fā)訓練時間過長和過擬合等問題。本文針對傳統(tǒng)AdaBoost算法的不足,提出利用SVM代替單一弱分類器的AdaBoost算法(SVM-AdaBoost)增強分類器的分類能力。
技術(shù)實現(xiàn)要素:
一種基于分布式大數(shù)據(jù)平臺的行人檢測方法,其特征在于,包括以下步驟:
為了能更好的解決海量數(shù)據(jù)條件下的訓練效率問題,本發(fā)明提出了一種基于分布式Spark實時計算框架,提高SVM-AdaBoost的行人檢測并行化計算方法,采用新一代并行計算技術(shù),在不影響訓練精度的條件下,提高SVM的訓練速度,提高訓練效率,實現(xiàn)SVM-AdaBoost在多個節(jié)點上并行計算。
通過消息采集機制Kafka接收來自行人檢測的圖像集,啟動Spark集群,創(chuàng)建SparkContext。
接著圖像數(shù)據(jù)預處理,將正負樣本集的圖片訓練切分成多個子集的和,將圖片流生成多個彈性分布式數(shù)據(jù)集RDD,對每個RDD進行獨立計算。
hog特征提取首先將圖像分為小的細胞單元,然后在每個細胞單元上計算梯度直方圖,并使用一種逐塊的模式來歸一化計算的結(jié)果,最后對每一個細胞單元返回相應的特征描述子。
本方法采用徑向基函數(shù)作為SVM的核函數(shù):
方法的主要步驟為:
步驟1:給定訓練集樣本S={(x1,y1),...,(xn,yn)},循環(huán)次數(shù)T,SVM核函數(shù)的參數(shù)σ={σ1,σ2,...},C={C1,C2,...}.
步驟2:設定訓練集樣本權(quán)重:Wi1=1/N,i=1,....,N
步驟3:訓練一個基于徑向基核函數(shù)的SVM(RBFSVM)弱分類器。
步驟4:計算訓練錯誤率ht:如果ξt大于50%,則返回步驟3,否則進行步驟5.
步驟5:根據(jù)錯誤率重置RBFSVM弱分類器的權(quán)重ht:
步驟6:重置訓練樣本集的權(quán)重
i=1,K,N,Ct為歸一化參數(shù)。
步驟7:T次循環(huán)或達到指定精確度后,輸出訓練后的分類器
將樣本的初始化重用樣本所在類的規(guī)模來標記,表示為wi=1/Cn,這樣稀有類的樣本具有較高的權(quán)值,在規(guī)則抽樣中被選中的概率較大,在迭代過程中叫容易被抽到,避免了分類器忽略稀有類的現(xiàn)象。對多類SVM的1-r,輪換將其中的任意一類作為正類,其他作為負類,若有m個類,進行m次以下步驟:
(1)w={w=1/Cn|j=1,2,...,n},{初始化N個樣本的權(quán)值,Cn是樣本所屬類中樣本的個數(shù)}
(2)令k表示迭代的輪數(shù)
(3)For i=1 to k do
(4)根據(jù)wi通過對D進行抽樣(有放回)產(chǎn)生訓練集Di
(5)在Di上訓練基分類器Ci
(6)用Ci對原訓練集D中的所有樣本分類
(7)根據(jù)計算加權(quán)誤差
(8)ifεi>0.5then
(9)w={wj=1/Cn|j=1,2,...N}{重新設置N個樣本的權(quán)值}
(10)返回4
(11)End if
(12)根據(jù)調(diào)整每個樣本的權(quán)值
(13)End for
從直觀上理解,首先,當錯誤率越大時,分類器的權(quán)重越小,這符合一般解釋及分類器性能越高置信度也就越大,在最終的表決中所占比重也就越大。其次,在新樣本分布的更新過程中,分類正確的樣本在下次分類器學習中作用越小,而分錯的樣本在下次分類器學習中的作用越大,這樣可以是新的分類器設計更集中在之前錯分的樣本分類上,使整體的分類性能提高。
附圖說明
圖1分布式行人檢測視頻檢測流程圖。
具體實施方式
為使本發(fā)明的目的,技術(shù)方案和優(yōu)點更加清楚明了,下面結(jié)合具體實施方式并參照附圖,對本發(fā)明進一步詳細說明。
搭建spark平臺集群,使用一臺服務器作為Master,4臺服務器作為Slaver。其中Master主要記錄了數(shù)據(jù)流之間的依賴關(guān)系并負責任務調(diào)度以及生成新的RDD,Slaver主要是實現(xiàn)算法的計算和數(shù)據(jù)的存儲。Kafka來接收視頻流,通過zookeeper來集群管理spark平臺集群,可以達到穩(wěn)定,提高容錯性能。
為驗證算法的優(yōu)越性,我們采用具有挑戰(zhàn)性的MIT行人庫和INRIA行人庫兩個庫的樣本,其中MIT行人庫包含19240個行人正樣本彩色圖像,不含負樣本,INRIA行人庫包含一個訓練庫和一個測試庫,其中訓練庫包含4416個正樣本,測試庫包含2126個正樣本,本次試驗選取其中部分樣本作為訓練及測試樣本,測試樣本用來評估訓練樣本的誤檢率和漏檢率。
行人視頻流通過Kafka消息采集,接著初始化,啟動SparkContext,SparkStreaming。
將接受到的圖片轉(zhuǎn)換成spark streaming,然后按照行人檢測框?qū)D片流分成多個RDD來分片處理。
RDD彈性數(shù)據(jù)集中對視頻流進行hog特征提取,本發(fā)明中的樣本集的圖片64*128像素,hog特征提取后則為3781維描述子。
具體特征提取如下:
1)灰度化(將圖像看做一個(x,y,z)(灰度)的三維圖像);
2)采用Gamma校正法對輸入圖像進行顏色空間的標準化(歸一化);目的是調(diào)節(jié)圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的干擾;
3)計算圖像每個像素的梯度(包括大小和方向);主要是為了捕獲輪廓信息,同時進一步弱化光照的干擾。
4)將圖像劃分成小cells(例如6*6像素/cell);
5)統(tǒng)計每個cell(細胞單元)的梯度直方圖(不同梯度的個數(shù)),即可形成每個cell的descriptor;
6)將每幾個cell組成一個block(塊),一個block內(nèi)所有cell的特征descriptor串聯(lián)起來便得到該block的HOG特征descriptor。
運用基于SVM-Adaboost的行人檢測模型來訓練學習樣本集,非線性SVM模型選用的是徑向基核函數(shù)。
模型函數(shù)為:
運用了對偶形式將其轉(zhuǎn)化為
其中<φxi.φ(x)>為內(nèi)積
利用Adaboost來增強提升SVM分類效果。算法步驟如下:
1)開始初始化D={xi,y1,.......,xn,yn},kmax,Wi(i)=1/n,i=1,....n
2)K<-0
3)do K<-K+1
4)訓練使用按照Wk(i)采樣的D的弱學習器Ck
5)Ek<-對使用Wk(i)的D測量的Ck的訓練誤差
6)
7)
8)Until k=kmax
9)Return Ck和ak k=1,........kmax(帶權(quán)值分類器的總體)
10)end
通過判斷檢測模型的結(jié)果yi,如果大于0,則認為該檢測框里是行人,反之,則認為該檢測框是背景。
對檢測到的為行人的檢測框通過spark中的join將檢測框的數(shù)據(jù)放到一個新的RDD中,然后在對檢測框進行合并,其中合并比較近的檢測框,刪除比較大和比較小的檢測框。最后將檢測后的行人檢測框的圖片保存到HDFS分布式文件系統(tǒng)。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。