王國慶 邵衛(wèi)華 李克祥 夏文培 陳林林
(浙江索思科技有限公司,浙江 溫州 325000)
近年來,隨著中國經(jīng)濟(jì)的高速發(fā)展,社會城鎮(zhèn)化水平也不斷提高,電扶梯作為在公共場所運輸行人和物品的重要工具之一,其保有量逐年增加,越來越多的電扶梯被應(yīng)用于車站、商業(yè)建筑和旅館等場所,已成為生活中不可或缺的部分。復(fù)雜場景下人的運動跟蹤與行為理解研究已經(jīng)成為一個極具吸引力的探索方向,該文針對電扶梯的應(yīng)用場景,研究了保持稀疏重構(gòu)的半監(jiān)督字典學(xué)習(xí)方法,并進(jìn)行了實際場景下人體檢測的實驗,為后續(xù)異常行為分析奠定基礎(chǔ)。
為了解決因噪聲和遮擋而導(dǎo)致運動區(qū)域出現(xiàn)人體誤判的問題,該文擬根據(jù)數(shù)據(jù)本身之間的稀疏結(jié)構(gòu)關(guān)系,利用半監(jiān)督的方法學(xué)習(xí)人體與其他運動目標(biāo)具有區(qū)分性的模板字典,實現(xiàn)對模板字典的在線更新,同時也為下面人體的魯棒跟蹤提供了可靠的模板。稀疏表示理論表明,如果每類樣本都足夠充分的話,那么每個樣本都傾向于能用其所在的類別中的其他樣本線性來表示,而且這種表示方式是稀疏的。此外,同一類樣本共享少量的字典模板,這些字典模板反映了該樣本的本質(zhì)特征。采集一些先驗的人體樣本作為正樣本,將這些樣本所組成的集合記為X+,檢測到的運動區(qū)域樣本為無標(biāo)簽樣本Xunlabel,隨機(jī)采集到的背景樣本集合記為X-。 記X=[XunlabelX+X-],X(X為樣本集合。)在當(dāng)前字典D下的稀疏表示矩陣為A=[AunlabelA+A-](Aunlabel為無標(biāo)簽集合;A+為正樣本;A-為負(fù)樣本)。記G為原始數(shù)據(jù)的稀疏重構(gòu)系數(shù)矩陣,即G的第i行表示樣本xi在X中的稀疏重構(gòu)系數(shù)(其中要求xi不能用它本身來表示,即gii≠0,第i行的稀疏重構(gòu)系數(shù)不能為0。則建立以下優(yōu)化問題,如公式(1)所示。
式中:D為字典;F、p為稀疏系數(shù);λ為特征值。
為了求解上述優(yōu)化問題,引入函數(shù)(如公式(6)所示)(其中A0為A的初始值;J(A,A0)為定義的一個優(yōu)化函數(shù);H為定心矩陣回歸系數(shù),(η1、η3為λ系數(shù)里的分母部分;λ3為λ系數(shù)里的分母部分)。則A的求解可通過如公式(7)所示的迭代進(jìn)行求解(λ、H如公式(8)、公式(9)所示)。
式中:J(A,Ak)為函數(shù)的迭代計算。
公式(7)可通過軟閾值方法獲得解析解。
稀疏編碼(Sparse Coding)是指找到圖像塊在當(dāng)前字典下稀疏表示系數(shù)的過程,即稀疏分解。字典的訓(xùn)練速度性能與稀疏編碼過程的 優(yōu)劣有直接關(guān)系,會影響圖像的重構(gòu)效果。
2.1.1 基于稀疏重構(gòu)的字典訓(xùn)練算法
完備字典構(gòu)造方法可分2類:非自適應(yīng)字典學(xué)習(xí)和自適應(yīng)字典學(xué)習(xí)[1]。非自適應(yīng)字典是通過數(shù)據(jù)模型得到的,其計算速度比較快,但字典結(jié)構(gòu)一般固定不變,稀疏表示信息的能力有限。自適應(yīng)字典學(xué)習(xí)方法可以選擇建立訓(xùn)練樣本,然后在該樣本集的基礎(chǔ)上學(xué)習(xí)得到一個字典,該字典對信號的表示也更為稀疏、簡潔。字典學(xué)習(xí)問題的優(yōu)化稀疏性約束方法,如公式(9)所示。
式中:D為訓(xùn)練數(shù)據(jù)集,D=(x1,x2,...,xn)∈Rm×n(矩陣對每一數(shù)據(jù)表示權(quán)重為X=(a1,a2,...,an)∈Rm×K);x為定心矩陣回歸系數(shù);s、t為矩陣值正則化參數(shù);y為原始樣本;Dx為查字典過程的矩陣乘法表示;ε為任意極小正數(shù)。
也可表示為公式(11)。
式中:||X||0為l0范數(shù),即X中非零值的個數(shù);T0為非零數(shù)目的最大值。
采用光流算法[2]結(jié)合稀疏重構(gòu)對通過一段‘港龍鷹眼’捕獲到的一段汽車視頻進(jìn)行實驗,對比實驗情況可見,結(jié)合稀疏重構(gòu)算法后,對運動目標(biāo)的檢測更加準(zhǔn)確,汽車捕捉數(shù)量明顯增多,如圖1所示。
圖1 稀疏重構(gòu)算法對比實驗
使用行人數(shù)據(jù)訓(xùn)練集1 750張,;測試集數(shù)據(jù)270張,其中標(biāo)注數(shù)據(jù)為70張。先用有標(biāo)簽的數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò),提取該網(wǎng)絡(luò)中所有數(shù)據(jù)的特征,進(jìn)而以這些特征為依據(jù),采用SVM算法[3-4]對無標(biāo)簽數(shù)據(jù)進(jìn)行分類,同時將認(rèn)為分類正確的數(shù)據(jù)揀入數(shù)據(jù)集,再重新進(jìn)行網(wǎng)絡(luò)訓(xùn)練。通過循環(huán)訓(xùn)練,已標(biāo)注的數(shù)據(jù)逐漸增加,分類器的效果逐漸得到提升。下面列出了在半監(jiān)督學(xué)習(xí)數(shù)據(jù)集上對監(jiān)督學(xué)習(xí)算法的評估并給出了實驗場景,運行算法模型擬合帶有標(biāo)注的訓(xùn)練數(shù)據(jù)集,同時在測試數(shù)據(jù)集上對其進(jìn)行評估。
2.2.1 生成算法
2個樣本集合:L={(xi,yj)}和U={xj},L=Llable,表示有標(biāo)注樣本;U=UNlabel,表示無標(biāo)注樣本。
對有標(biāo)注數(shù)據(jù)集L={(xi,yj)}ij和無標(biāo)注數(shù)據(jù)集U={x}1+uj=l+1進(jìn)行 以下操作:1)使用監(jiān)督學(xué)習(xí)從L中訓(xùn)練F模型。2)將F模型應(yīng)用于U中未標(biāo)記的實例。3)從U中刪除一個子集S,將{(x,f(x))|x∈s}加入L。4)重復(fù)上述操作直到U為空集。
算法中用歐式距離來定義表現(xiàn)最好的無標(biāo)記樣本,再用F模型對其進(jìn)行標(biāo)記,將標(biāo)記的數(shù)據(jù)加入L中,同時對F模型也進(jìn)行動態(tài)更新。
2.2.2 半監(jiān)督SVM支持向量機(jī)生成模型
半監(jiān)督SVM支持向量機(jī)[5]生成算法模型為f(x)=wTx+b。
首先,對二分類問題進(jìn)行討論,即定義y{-1,1},其特征空間為RD,決策邊界的定義如下{x|wTx+b=0}(w為決定決策邊界方向和尺度的 參數(shù)向量;wT為模型參數(shù)轉(zhuǎn)置;b為偏移量參數(shù) )。如圖2所示,定義w=(1,1)T,b=-1,可得決策邊界實線a,由圖2可知,決策邊界總是與w向量垂直的。
其次,算法模型為f(x)=wTx+b,決策邊界是f(x)=0,通過sign(f(x))來預(yù)測x的標(biāo)簽,計算實例x到?jīng)Q策邊界的距離,例如原點x=(0,0)到?jīng)Q策邊界的距離為|f(x)|/||w||,如圖2中的實線b。定義有標(biāo)簽實例到?jīng)Q策邊界的有符號距離為1/ 2≈0.707。
圖2 決策邊界線
上述得出的標(biāo)簽預(yù)測器sign(f(x)),對無標(biāo)簽樣本,其預(yù)測標(biāo)簽為sign(f(x)),假定該預(yù)測值就是x的標(biāo)簽,那么就可以直接在x上應(yīng)用hinge損失函數(shù)如公式(12)所示。
由于標(biāo)簽是用f(x)生成的,因此無標(biāo)簽樣本總是能被正確分類,然而hat loss仍然可以懲罰一定的無標(biāo)簽樣本。從公式(12)中可以看出,hat損失函數(shù)更偏愛f(x)≥1orf(x)≤-1(懲罰為0,離決策邊界比較遠(yuǎn)),而懲罰-1<f(x)<1(特別是趨近于0)的樣本可能會被錯誤分類。這樣可以寫出S3VMs在有標(biāo)簽和無標(biāo)簽數(shù)據(jù)上的目標(biāo)方程,如公式(13)所示。
經(jīng)上述推導(dǎo)的結(jié)果是不平衡的(大多數(shù)甚至所有的無標(biāo)簽數(shù)據(jù)可能被分為一個類),一種修正該錯誤的啟發(fā)式方法就是在無標(biāo)簽數(shù)據(jù)上限制預(yù)測類的比例與標(biāo)簽數(shù)據(jù)的比例相同(如公式(14)所示)。
式中:為有標(biāo)簽樣本;yi為無標(biāo)簽樣本。
由于是不連續(xù)的,很難滿足這個約束,因此對其進(jìn)行松弛,轉(zhuǎn)化為包括連續(xù)函數(shù)的約束,如公式(15)所示。
最后,如果僅使用有標(biāo)簽數(shù)據(jù)學(xué)得的決策邊界將穿過密集的無標(biāo)簽數(shù)據(jù),但如果假定2個類是完全分開的,那么期望的決策邊界可以很好地將無標(biāo)簽數(shù)據(jù)分成2類,而且也正確地對有標(biāo)簽數(shù)據(jù)(雖然它到最近的有標(biāo)簽數(shù)據(jù)的距離比SVM?。┻M(jìn)行分類。
通過上述公式的推導(dǎo),將半監(jiān)督SVM算法訓(xùn)練與監(jiān)督算法訓(xùn)練進(jìn)行比較,如圖3所示。圖3(a)表示監(jiān)督學(xué)習(xí)進(jìn)行迭代訓(xùn)練4次,精確度達(dá)到0.8618,圖3(b)表示采用半監(jiān)督學(xué)習(xí)進(jìn)行迭代訓(xùn)練5次,精確度達(dá)到0.9186,可以達(dá)到比較好的效果。
圖3 訓(xùn)練比較
綜合上述算法得出的結(jié)論,使用手扶梯攝像頭拍攝場景視頻輸入,結(jié)合深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)準(zhǔn)確、快速地捕獲人體目標(biāo),從而實現(xiàn)目標(biāo)檢測。
步驟一:獲取視頻輸入得到每幀圖像數(shù)據(jù),創(chuàng)建背景模型內(nèi)核函數(shù)。在整個算法中由于需要對視頻幀進(jìn)行相關(guān)操作,這里需要初始化定義幀的變量。
步驟二:轉(zhuǎn)換幀為灰白圖,也就二值化操作。對圖像進(jìn)行均值濾波高斯[6]模糊處理,并使用背景差法,以移除灰色值。
步驟三:進(jìn)行形態(tài)運算,先創(chuàng)建輪廓列表用于存放目標(biāo)輪廓,判斷目標(biāo)輪廓 是否滿足閥值,添加輪廓列表進(jìn)行排序找到最大輪廓。確定最大輪廓的坐標(biāo)值和數(shù)量,設(shè)置一個數(shù)組來存儲最近的目標(biāo)輪廓邊界值。跟蹤最近目標(biāo)輪廓邊界索引值,比較兩輪廓包圍的接近程度進(jìn)行合并。調(diào)用最接近函數(shù)進(jìn)行檢測找到關(guān)閉盒子的極限值。存儲對角線的點值,找到最近線邊界線的極限值。
步驟四:列出所有目標(biāo)輪廓并畫出目標(biāo),如圖4所示。
圖4 人體檢測
在視覺算法目標(biāo)檢測領(lǐng)域,圖像數(shù)據(jù)的不足是影響目標(biāo)檢測精確的主要根源,稀疏重構(gòu)的半監(jiān)督字典學(xué)習(xí)算法理論在目標(biāo)運動跟蹤中共享少量的字典模板,這樣就將無標(biāo)簽樣本的信息也融入優(yōu)化問題中。實驗所采用的算法雖然在運行目標(biāo)捕獲中有一定成效,但是仍然存在不足。例如在捕獲運動目標(biāo)時不能做出分類預(yù)測。目前也正在驗證與CNN、GAN以及RNN等相關(guān)深度神經(jīng)網(wǎng)絡(luò)結(jié)合的可行性,以期使該算法發(fā)揮出最大的優(yōu)勢。