1.一種基于分布式大數(shù)據(jù)平臺的行人檢測方法,其特征在于,包括以下步驟:
S1:通過消息采集機制Kafka接收來自行人檢測的圖像集;
S2:啟動Spark集群,創(chuàng)建SparkContext;預(yù)處理圖像集,然后得到正負樣本的圖片流,使用行人檢測框?qū)D片流生成多個彈性分布式數(shù)據(jù)集RDD,對每個RDD進行獨立計算;
S3:將RDD中的數(shù)據(jù)集通過線性SVM檢測算法,來確定對應(yīng)檢測框是否為行人,如果是行人,將檢測框的位置保存在新的RDD中;
S4:AdaBoost算法迭代循環(huán)T個弱SVM分類器,將各個訓(xùn)練得到的弱SVM分類器合成強分類器;
S5:所有檢測為行人的RDD合并成一個新的RDD,將所有檢測框中為同一個行人的檢測框合并;
S6:在圖片上繪制合并后的檢測框的位置,并保存至分布式文件存儲系統(tǒng)HDFS。
2.根據(jù)權(quán)利要求1所述的行人檢測方法,其特征在于:采用Kafka消息收集機制,行人檢測正負樣本集由Kafka消息接受機制,然后由Sparkcontext的RDD接受處理。
3.根據(jù)權(quán)利要求1所述的行人檢測方法,其特征在于:所述的步驟S2具體為:
(1):構(gòu)建Spark Application的運行環(huán)境,啟動SparkContext;
(2):SparkContext向資源管理器申請運行Executor資源,并啟動StandaloneExecutorbackend,Executor向SparkContext申請Task;
(3):SparkContext將應(yīng)用程序分發(fā)給Executor;
(4):SparkContext構(gòu)建成DAG圖,將DAG圖分解成Stage、將Taskset發(fā)送給Task Scheduler,最后由Task Scheduler將Task發(fā)送給Executor運行;
(5):Task在Executor上運行,運行完釋放所有資源。
4.根據(jù)權(quán)利要求1所述的行人檢測方法,其特征在于:所述步驟S2還包括:HOG特征提取方法,具體為:
1)灰度化,將圖像看做一個(x,y,z)灰度的三維圖像;
2)采用Gamma校正法對輸入圖像進行顏色空間的標準化或歸一化;目的是調(diào)節(jié)圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的干擾;
3)計算圖像每個像素的梯度,包括大小和方向;主要是為了捕獲輪廓信息,同時進一步弱化光照的干擾;
4)將圖像劃分成小cells;
5)統(tǒng)計每個cell的梯度直方圖,即可形成每個cell的圖像描述子descriptor;
6)將每幾個cell組成一個block,一個block內(nèi)所有cell的特征descriptor串聯(lián)起來便得到該block的HOG特征descriptor;
7)將圖像image內(nèi)的所有block的HOG特征descriptor串聯(lián)起來就可以得到目標的HOG特征descriptor,這個就是最終的可供分類使用的特征向量。
5.根據(jù)權(quán)利要求4所述的行人檢測方法,其特征在于:所述步驟S3具體為:
(1)創(chuàng)建分布式彈性數(shù)據(jù)集RDD對象;
(2)DAG調(diào)度DAGScheduler模塊介入運算,計算RDD之間的依賴關(guān)系,RDD之間的依賴關(guān)系就形成了DAG;
(3)每一個Job被分為多個工作階段Stage;劃分Stage的一個主要依據(jù)是當(dāng)前計算因子的輸入是否是確定的,如果是則將其分在同一個Stage,避免多個Stage之間的消息傳遞開銷。
6.根據(jù)權(quán)利要求4所述的行人檢測方法,其特征在于:所述步驟S4具體為:
(1)初始化所有訓(xùn)練樣例的權(quán)重為1/N,N為輸入圖片數(shù);
(2)循環(huán)迭代m=1,......M:
a)訓(xùn)練弱分類器ym(),使其最小化誤差函數(shù)
其中,Xn樣本集,Wn初始權(quán)重,N樣例數(shù),εm為誤差;tn表示真實分類,m迭代次數(shù),n樣本集的數(shù)量;
b)計算該弱分類器的話語權(quán)α:
C)更新權(quán)重:
其中,Zm是規(guī)范化因子,wm+1,i為第m+1次迭代的權(quán)重;ti表示第i個的分類類型;
其中Zm:
是規(guī)范化因子,使所有w的和為1
3)得到最后的分類器: