沈繼忱,劉志杰,邸建銘,趙世榮
(東北電力大學(xué)自動(dòng)化工程學(xué)院,吉林吉林132012)
隨著風(fēng)力發(fā)電的大規(guī)模建設(shè),風(fēng)力發(fā)電表現(xiàn)出了面廣、點(diǎn)多的特點(diǎn)。因此,隨著風(fēng)力發(fā)電系統(tǒng)并網(wǎng)技術(shù)不斷深入,必須加強(qiáng)風(fēng)力機(jī)葉片的跟蹤與識別,以使風(fēng)力機(jī)能夠安全可靠運(yùn)行,保證電網(wǎng)系統(tǒng)穩(wěn)定并在出現(xiàn)故障時(shí)快速恢復(fù)穩(wěn)定的供電能力[1]。
傳統(tǒng)模式識別技術(shù)一般包括模板匹配法[2-5]、統(tǒng)計(jì)特征法等。在20世紀(jì)90年代前期,隨著計(jì)算機(jī)視覺技術(shù)的快速發(fā)展,開始出現(xiàn)目標(biāo)識別的系統(tǒng)化研究。1990年A.S.Johnson等運(yùn)用圖像處理方法實(shí)現(xiàn)了目標(biāo)的自動(dòng)識別。1990年R.A.Lotufo等使用視覺識別技術(shù)分析所獲取的圖像,實(shí)現(xiàn)了目標(biāo)的跟蹤[6]。這個(gè)時(shí)期應(yīng)用在識別正確率方面有所突破,但還沒有考慮到識別實(shí)時(shí)性的要求,識別的速度有待進(jìn)一步提高。1994年M.M.M.FAHMY等成功地運(yùn)用了BAM神經(jīng)網(wǎng)絡(luò)方法對目標(biāo)進(jìn)行自動(dòng)識別。由于神經(jīng)網(wǎng)絡(luò)技術(shù)能夠較好對處理和解決問題進(jìn)行記憶、聯(lián)想、推理,避免了繁重的數(shù)據(jù)分析和數(shù)學(xué)建模工作,大大提高了運(yùn)行速度,因此越來越受到人們的廣泛關(guān)注,但其沒能力來解釋自己的推理過程和推理依據(jù)、不能向用戶提出必要的詢問、理論和學(xué)習(xí)等缺點(diǎn),制約著其發(fā)展。對此,本文利用Adaboost識別算法對風(fēng)力機(jī)葉片進(jìn)行了跟蹤與識別的研究。
AdaBoost算法是在整個(gè)訓(xùn)練集上維護(hù)一個(gè)分布權(quán)值向量wt,用賦予權(quán)值的訓(xùn)練集通過弱分類算法產(chǎn)生簡單分類器hi(x),然后計(jì)算出其錯(cuò)誤率,用得到的錯(cuò)誤率去更新分布權(quán)值向量wt,錯(cuò)誤分類的樣本賦予更大的權(quán)值,正確分類的樣本分配更小的權(quán)值。每次更新后用相同的簡單分類器產(chǎn)生新的分類假設(shè),這些分類假設(shè)的序列構(gòu)成多分類器。對這些多分類器用加權(quán)的方法進(jìn)行聯(lián)合,最后得到?jīng)Q策結(jié)果。AdaBoost算法的任務(wù)就是完成將容易找到的識別率不高的簡單分類器提升為識別率很高的強(qiáng)分類器,在分類時(shí),只要找到一個(gè)比隨機(jī)猜測略好的簡單分類器,就可以將其提升為強(qiáng)分類器,而不必直接去找通常情況下很難獲得的強(qiáng)分類器,也就是給定一個(gè)簡單分類算法和訓(xùn)練集,在訓(xùn)練集的不同子集上,多次調(diào)用簡單分類器,最終按加權(quán)方式聯(lián)合多次簡單分類器的預(yù)測結(jié)果得到最終學(xué)習(xí)結(jié)果。
在Adaboost算法中,每一個(gè)訓(xùn)練樣本都被賦予一個(gè)權(quán)值,表明它被某個(gè)簡單分類器選入訓(xùn)練集的概率。如果某個(gè)樣本點(diǎn)己經(jīng)被準(zhǔn)確地分類,那么在構(gòu)造下一個(gè)訓(xùn)練集的過程中,它被選入的概率就被降低;相反,如果某個(gè)樣本點(diǎn)沒有被正確分類,那么它的權(quán)值就得到提高。在具體實(shí)現(xiàn)上,最初令每個(gè)樣本的權(quán)值相等,對于第t次迭代操作,根據(jù)這些權(quán)值來選取樣本點(diǎn),進(jìn)而訓(xùn)練分類器ht。利用這個(gè)分類器,提高被它錯(cuò)分的那些樣本點(diǎn)的權(quán)值,降低被正確分類的樣本權(quán)值,然后權(quán)值更新過的樣本集被用來分類下一個(gè)分類器ht+1,整個(gè)訓(xùn)練過程如此進(jìn)行下去[7],算法的示意圖如圖1所示。
圖1 AdaBoost算法框架
設(shè)給出的樣本圖像集為(x1,y1),…,(xn,yn),yi={0,1}(i=1,2,…,n)對應(yīng)負(fù)樣本和正樣本。對于第i個(gè)訓(xùn)練樣本xi,其特征值為fi(xi)。yi=0時(shí)時(shí);其中m表示負(fù)樣本圖像個(gè)數(shù);l表示正樣本圖像的個(gè)數(shù)。重復(fù)以下過程T次,t=1,…,T。
2)選取具有最小的錯(cuò)誤率的εt,并將其對應(yīng)的弱分類器作為ht。
4)求得強(qiáng)分類器:
由上所述可以得出,如果每一次篩選出來特征ht+1的錯(cuò)誤為εt+1≤0.5,否則下一次篩選出來的特征必為 ht,又得出 ε ≤1。因?yàn)閠+1wt+1,i←wt+1,iβt+1,如果得到的被 ht+1分類的樣本是正確的,那么所有的權(quán)值都變會(huì)變小。相反,被錯(cuò)誤分類的樣本權(quán)值都會(huì)變大,原因在于 w′t+1,i←對于新的 h一定是相對于t+2ht+1能更多地正確分類出弱分類器,因?yàn)樗蟹诸惼鱤的錯(cuò)誤率ε只由錯(cuò)誤分類的樣本的權(quán)值來決定,所以,只有這樣才能達(dá)到減小錯(cuò)誤率的效果。
在樣本的訓(xùn)練過程中,樣本數(shù)量非常多,因此需要的時(shí)間和空間比較大。對于每個(gè)樣本特征值在每一輪循環(huán)中都要進(jìn)行計(jì)算,此外,還要加上每輪循環(huán)運(yùn)算中選擇最佳閾值時(shí)必須進(jìn)行的排序、遍歷等運(yùn)算時(shí)間,使得在訓(xùn)練過程中消耗大量的時(shí)間。
對于每個(gè)特征j,訓(xùn)練出其簡單分類器hj的過程比較耗時(shí),因?yàn)樵撨^程中需要確定閾值θj,偏置pj,并使目標(biāo)函數(shù)達(dá)到最小,從確定的簡單分類器中,找出一個(gè)具有最小的錯(cuò)誤εt的簡單分類器ht。對于每個(gè)簡單分類器都有上萬個(gè)訓(xùn)練樣本,而訓(xùn)練一個(gè)簡單分類器需要對這些樣本進(jìn)行分析并確定閾值θj和偏置pj。提取完最優(yōu)簡單分類器后,訓(xùn)練樣本的概率分布已經(jīng)改變,那么下一次進(jìn)行訓(xùn)練簡單分類器時(shí),所有的簡單分類器必須完全重新訓(xùn)練,如此反復(fù)。
針對訓(xùn)練樣本耗時(shí)的缺點(diǎn),本文提出了一種訓(xùn)練簡單分類器快速訓(xùn)練算法,可以有效地避免迭代訓(xùn)練以及統(tǒng)計(jì)概率分布耗時(shí)的過程[9]。
若訓(xùn)練樣本分別用(x1,y1),…,(xn,yn)表示,一共有n個(gè)。yi=0,1分別表示樣本的負(fù)樣本和正樣本。設(shè)在訓(xùn)練樣本中負(fù)樣本有m個(gè),正例樣本l個(gè)。
計(jì)算特征fj的簡單分類器hj時(shí),同時(shí)計(jì)算出閾值偏置pj和θj。有前面的分析可知,簡單分類器εj與 θj和 pj為函數(shù)關(guān)系,即 εj(θj,pj)。pj可分為 ± 1兩種情況進(jìn)行討論。
特征fj的值小于閾值θj時(shí)為真,則
把所有的訓(xùn)練的特征樣本fi按照從小到大的順序進(jìn)行排列,得到一個(gè)次序表S。最小的樣本特征fi的值的序號用S(1)來表示,用fj(x(s(1)))來表示其相應(yīng)的特征所得到的值,假設(shè)其所得的值就是該值的閾值,有:
特征fi的值次小的訓(xùn)練樣本x(S(2)),根據(jù)式(5)得出:
由式(5)知,y(S(2))=1時(shí),δ= -1;y(S(2))=0時(shí),δ=1;可知:
根據(jù)式(8),可以得出各個(gè)不同閾值下的εj(θ,1),最后篩選出最小的 εjmin(θ,1)。此刻 θ值定義為 θ1,有 θ1= θj|εj=εjmin(θ,1)的值就是對應(yīng)特征 j分類器的最優(yōu)閾值。
2) 當(dāng) pj= -1 時(shí),可求得 εj(θ,1),εj(θ,1)的值和pj=1時(shí)互補(bǔ),有 εj(θ,-1)=1-εj(θ,1),也就是 εjmin(θ,-1)=1 - εjmax(θ,1)。
由此可知,只要利用式(8)累加一次,再比較εjmin(θ,1)與1 - εjmax(θ,1),就能確定簡單分類器的最優(yōu)閾值、偏置和εj。
本實(shí)驗(yàn)在OpenCV平臺上,對Adaboost原程序和改進(jìn)后的算法進(jìn)行了分類器的訓(xùn)練[10-11],在實(shí)驗(yàn)中共用到1 000幅40×40的葉片樣本和不包含建筑物、大樹、藍(lán)天等圖片中截取而來的1 000幅40×40非葉片樣本,原算法和改進(jìn)后的算法的訓(xùn)練樣本數(shù)目、訓(xùn)練時(shí)間如表1所示。
在檢測速度上,取大小為596×486圖像50幅作統(tǒng)計(jì),原算法的平均檢測時(shí)間為1.426 s,改進(jìn)后的平均檢測時(shí)間為0.685 s。
表1 Adaboost算法訓(xùn)練結(jié)果
本實(shí)例對單個(gè)葉片和多個(gè)葉片進(jìn)行了檢測,圖2是對單個(gè)葉片的檢測結(jié)果,圖3為多葉片檢測結(jié)果,圖4是在有干擾的情況下進(jìn)行的檢測。
圖2 單個(gè)葉片的檢測結(jié)果
從測試的結(jié)果來看,對于單個(gè)葉片的檢測(圖2)準(zhǔn)確性相當(dāng)好,對葉片的中心定位也相當(dāng)準(zhǔn)確。但存在的最大缺點(diǎn)就是算法復(fù)雜度太高,檢測處理時(shí)間太長。在多個(gè)葉片存在的情況下也能準(zhǔn)確的檢測出來(見圖3)。但是在圖像模糊或有樹木及其它情況下未能檢測出來(見圖4)。
由于本文在訓(xùn)練分類器時(shí)采集的樣本不夠多,可能造成檢測的失敗和漏檢,要增加精確程度,還需要進(jìn)一步增加樣本的數(shù)目。
通過對Adaboost弱分類器中目標(biāo)函數(shù)的直接求解,避免了統(tǒng)計(jì)和迭代訓(xùn)練長耗時(shí)過程,提高了訓(xùn)練和分類的速度,同時(shí),利用少量的弱分類器構(gòu)成的強(qiáng)分類器,較好地簡化了系統(tǒng)結(jié)構(gòu),減少了訓(xùn)練時(shí)間,提高了檢測速度,實(shí)現(xiàn)了對風(fēng)力機(jī)葉片的實(shí)時(shí)跟蹤與識別。另外,通過圖像分析檢測葉片運(yùn)行狀態(tài),可以及時(shí)做出準(zhǔn)確的操作,避免風(fēng)機(jī)葉片損害。
[1]吳越明.發(fā)電機(jī)組對電網(wǎng)穩(wěn)定的適應(yīng)能力分析[J].華東電力,2004,32(10):646 -648.
[2]王哲峰.基于提升小波變換的圖像匹配算法研究[D].吉林:吉林大學(xué),2006:19-26.
[3]劉雅軒,蘇秀琴,王萍.一種基于局部投影熵的圖像匹配新算法[J].光子學(xué)報(bào),2004,33(1):105-107.
[4]薛嬌.基于改進(jìn)遺傳算法的圖像匹配方法研究[D].太原:太原理工大學(xué),2011:25-29.
[5]鄭軍,諸靜.基于自適應(yīng)遺傳算法的圖像匹配[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2003,37(6):689 -692.
[6]王晗.基于Adaboost算法的車牌識別研究[D].太原:太原理工大學(xué),2011:25 -29.
[7]嚴(yán)超,蘇光大.人臉特征的定位與提取[J].中國圖像圖形學(xué),1998,3(5):375 -380.
[8]李蘇.基于Adaboost算法的人臉檢測技術(shù)研究[D].哈爾濱:哈爾濱理工大學(xué),2010:21-23.
[9]魏冬生,李林青.Adaboost人臉檢測方法的改進(jìn)[J].計(jì)算機(jī)應(yīng)用,2006,26(3):619 -621.
[10]蒙豐博.快速人臉檢測與跟蹤[D].天津:天津大學(xué),2010:32-36.
[11]秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測試,2011,7:39 -41.