陳 思 蘇松志 李紹滋呂艷萍 曹冬林
(廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院 廈門 361005)(福建省仿腦智能系統(tǒng)重點(diǎn)實(shí)驗(yàn)室(廈門大學(xué)) 廈門 361005)
目標(biāo)跟蹤是人工智能和計(jì)算機(jī)視覺的重要研究課題[1]。然而,由于受到場(chǎng)景中各種復(fù)雜因素的影響,如光照、旋轉(zhuǎn)、移動(dòng)和遮擋等,目標(biāo)跟蹤已成為一項(xiàng)極具挑戰(zhàn)的任務(wù)[2]。目前研究者已經(jīng)提出諸多目標(biāo)跟蹤算法[312]-,大致分為生成式算法[35]-和判別式算法[612]-。判別式目標(biāo)跟蹤算法[612]-將跟蹤視為目標(biāo)和背景的2類分類問題,受到學(xué)者的廣泛關(guān)注?,F(xiàn)有的大多數(shù)判別式目標(biāo)跟蹤算法[68]-,例如在線boosting[6,7]和在線半監(jiān)督 boosting算法[8],利用分類器的預(yù)測(cè)結(jié)果更新分類器自身,即稱為自訓(xùn)練(self-training)[13,14]。此類方法對(duì)類別噪聲比較敏感,容易累積分類錯(cuò)誤。
為了克服自訓(xùn)練目標(biāo)跟蹤算法的不足,本文提出一種基于在線半監(jiān)督boosting的協(xié)同訓(xùn)練目標(biāo)跟蹤算法(Co-training based on online Semisupervised Boosting,簡(jiǎn)稱Co-SemiBoost)。本文的主要?jiǎng)?chuàng)新點(diǎn)如下:(1)提出了一種新的在線協(xié)同訓(xùn)練框架,利用未標(biāo)記樣本協(xié)同訓(xùn)練不同視圖中的弱分類器,能夠在克服目標(biāo)漂移的同時(shí)保持對(duì)目標(biāo)外觀的自適應(yīng)更新;(2)基于半監(jiān)督技術(shù),結(jié)合目標(biāo)先驗(yàn)?zāi)P秃驮诰€分類器迭代預(yù)測(cè)未標(biāo)記樣本的偽類別標(biāo)記和權(quán)重。本文算法能夠魯棒地處理目標(biāo)遮擋、光照變化、快速運(yùn)動(dòng)和復(fù)雜背景等問題。若干具有挑戰(zhàn)性的視頻序列實(shí)驗(yàn)結(jié)果表明,本文提出的算法具有良好的目標(biāo)跟蹤性能。
Co-SemiBoost算法是一種基于檢測(cè)的跟蹤算法(tracking-by-detection)[10]。Co-SemiBoost目標(biāo)跟蹤算法的具體流程如圖1所示。
跟蹤過程中,Co-SemiBoost算法迭代執(zhí)行以下兩個(gè)步驟:(1)分類器更新:在第t幀目標(biāo)位置周圍區(qū)域內(nèi)獲取若干圖像塊作為未標(biāo)記樣本,并依次利用在線協(xié)同訓(xùn)練框架更新強(qiáng)分類器;(2)目標(biāo)檢測(cè):利用更新后的強(qiáng)分類器預(yù)測(cè)第t+1幀中搜索區(qū)域內(nèi)各個(gè)圖像塊的置信度,置信度最高的圖像塊被視為新的目標(biāo)位置。其中,分類器更新是目標(biāo)跟蹤算法的關(guān)鍵步驟。Co-SemiBoost算法采用一種有效的基于在線半監(jiān)督boosting的協(xié)同訓(xùn)練框架來更新強(qiáng)分類器,從而克服自訓(xùn)練跟蹤算法的不足。
協(xié)同訓(xùn)練算法[15,16]首先利用少量有標(biāo)記樣本訓(xùn)練兩個(gè)初始分類器,然后在學(xué)習(xí)過程中,這些分類器挑選若干個(gè)置信度高的未標(biāo)記樣本進(jìn)行標(biāo)記并用于更新對(duì)方分類器,此過程不斷迭代,從而有效提高分類性能。理論已證明[16],當(dāng)數(shù)據(jù)集有兩個(gè)充分冗余的視圖,即兩個(gè)滿足下述條件的特征集:(1)如果訓(xùn)練樣本足夠,在每個(gè)特征集上都足以學(xué)到一個(gè)強(qiáng)分類器;(2)在給定類別標(biāo)記時(shí),每個(gè)特征集都條件獨(dú)立于另一個(gè)特征集,那么協(xié)同訓(xùn)練算法可以有效地利用未標(biāo)記樣本提升分類器的性能。本文利用Haar[17]特征和LBP[18]特征分別描述灰度圖像,獲得兩個(gè)充分冗余的視圖,并在這兩個(gè)視圖上進(jìn)行協(xié)同訓(xùn)練,從而有效提高分類性能。Haar和LBP特征具有不同的目標(biāo)辨別能力。Haar特征主要關(guān)注局部紋理變化信息(即對(duì)目標(biāo)的姿態(tài)、形變等變化比較魯棒),而LBP特征更多關(guān)注邊緣變化信息(即對(duì)光照等變化比較魯棒)。因此,對(duì)Haar特征難以區(qū)分的樣本,LBP特征可能擁有較好的區(qū)分能力,反之亦然。
Co-SemiBoost算法所采用的在線協(xié)同訓(xùn)練框架如圖2所示,其中視圖1和視圖2分別表示Haar和LBP特征視圖。本文使用了“選擇器”[6]的概念,其定義如下:給定一個(gè)M個(gè)弱分類器的集合,一個(gè)選擇器根據(jù)某一優(yōu)化準(zhǔn)則從中選出一個(gè)最優(yōu)弱分類器。訓(xùn)練一個(gè)選擇器意味著M個(gè)弱分類器被更新并從中選出一個(gè)最優(yōu)弱分類器。假設(shè)每個(gè)特征視圖包含N個(gè)選擇器,每個(gè)選擇器包含M個(gè)弱分類器,則第j個(gè)視圖中第n個(gè)選擇器包含的M個(gè)弱分類器記為,其中每個(gè)弱分類器對(duì)應(yīng)該特征視圖下的一個(gè)隨機(jī)特征。
圖1 Co-SemiBoost目標(biāo)跟蹤算法流程圖
圖2 Co-SemiBoost算法的在線協(xié)同訓(xùn)練框架
如圖2所示,Co-SemiBoost算法采用在線學(xué)習(xí)方式[6]將當(dāng)前幀目標(biāo)周圍區(qū)域的未標(biāo)記樣本依次作為協(xié)同訓(xùn)練的輸入樣本,即每次利用一個(gè)未標(biāo)記樣本更新所有選擇器。該算法的在線協(xié)同訓(xùn)練過程具體描述如下:首先,隨機(jī)初始化每個(gè)特征視圖的 N個(gè)選擇器。假設(shè)第1幀的目標(biāo)位置已知,則從第1幀中獲取有標(biāo)記數(shù)據(jù),即目標(biāo)區(qū)域作為正樣本,非目標(biāo)區(qū)域作為負(fù)樣本。初始時(shí),在兩個(gè)特征視圖上分別利用有標(biāo)記數(shù)據(jù)訓(xùn)練先驗(yàn)分類器和,這里采用boosting方法進(jìn)行訓(xùn)練。其次,在兩個(gè)視圖中分別利用先驗(yàn)?zāi)P皖A(yù)測(cè)未標(biāo)記樣本的類別和權(quán)重,并用于更新對(duì)方視圖的選擇器1, 2)中的M個(gè)弱分類器。然后,當(dāng)選擇器中的M個(gè)弱分類器被更新后,利用半監(jiān)督技術(shù)預(yù)測(cè)該未標(biāo)記樣本的偽類別標(biāo)記和權(quán)重,并用于更新對(duì)方視圖的下一個(gè)選擇器中的M個(gè)弱分類器,此步驟不斷迭代,直到更新完第N個(gè)選擇器為止。同時(shí)在上述步驟中,兩個(gè)視圖中的每個(gè)選擇器依次選出最優(yōu)弱分類器并計(jì)算相應(yīng)的投票權(quán)重。最后將各最優(yōu)弱分類器及其權(quán)重集成為最終的強(qiáng)分類器。
基于在線半監(jiān)督 boosting算法[8],Co-SemiBoost算法通過衡量未標(biāo)記樣本與有標(biāo)記樣本的相似度來判斷未標(biāo)記樣本的類別標(biāo)記。為了更新第j個(gè)特征視圖(j = 1, 2)中的每個(gè)選擇器,該算法首先利用第3 j- 個(gè)特征視圖的分類信息來預(yù)測(cè)未標(biāo)記樣本x屬于正類和負(fù)類的置信度,具體計(jì)算如下:
本文使用閾值法[6]構(gòu)建Haar特征對(duì)應(yīng)的弱分類器。將每個(gè)樣本上隨機(jī)位置和大小的Haar值作為一個(gè)特征值,并構(gòu)建對(duì)應(yīng)的弱分類器:
本文使用最近鄰方法[6]構(gòu)建LBP特征對(duì)應(yīng)的弱分類器。對(duì)隨機(jī)圖像區(qū)域里的每個(gè)像素點(diǎn)計(jì)算其4個(gè)鄰點(diǎn)的LBP值,并對(duì)該圖像區(qū)域生成16-bin的LBP直方圖特征,然后構(gòu)建該特征 ,()jn mf x對(duì)應(yīng)的弱分類器:
Co-SemiBoost算法的偽代碼描述如表1所示。
本文實(shí)驗(yàn)分為兩部分:(1)對(duì)比在線半監(jiān)督boosting算法分別在Haar和LBP特征視圖進(jìn)行自訓(xùn)練,以及本文提出的Co-SemiBoost算法在Haar和LBP特征視圖上進(jìn)行協(xié)同訓(xùn)練的跟蹤性能。(2)對(duì)比Co-SemiBoost算法和3種新近跟蹤算法的性能。3種跟蹤算法分別為在線半監(jiān)督b o o s t i n g算法(SemiBoost)[8],在線boosting算法(OAB)[6]和在線多示例跟蹤器(MIL)[10]。4種方法均使用Haar和LBP兩種特征進(jìn)行訓(xùn)練。本文選擇4個(gè)具有挑戰(zhàn)性的公共視頻序列[20]進(jìn)行實(shí)驗(yàn),分別為Coupon Book,Cola Can,Tiger 1和Tiger 2。實(shí)驗(yàn)使用統(tǒng)一的參數(shù)設(shè)置。選擇器的個(gè)數(shù)N設(shè)為25。對(duì)于Haar特征和LBP特征,弱分類器的個(gè)數(shù)M均設(shè)為100。搜索區(qū)域?yàn)樯弦粠繕?biāo)窗口區(qū)域的2倍。SemiBoost[8],OAB[6]和MIL算法[10]的其余參數(shù)均使用默認(rèn)參數(shù)設(shè)置。所有視頻序列僅僅已知第1幀中目標(biāo)位置。實(shí)驗(yàn)平臺(tái)為Windows XP系統(tǒng),3.01 GHz處理器和3.25 GB內(nèi)存的個(gè)人計(jì)算機(jī)。
表1 Co-SemiBoost算法的偽代碼
實(shí)驗(yàn)記錄了視頻序列的目標(biāo)中心位置的平均誤差值,即所有幀的目標(biāo)中心位置誤差值之和與視頻幀數(shù)的比值。此外,實(shí)驗(yàn)也采用了“目標(biāo)跟蹤精確度圖”[10]來驗(yàn)證跟蹤性能。該圖記錄了隨著閾值的變化,算法跟蹤到的目標(biāo)中心和實(shí)際目標(biāo)中心之間距離小于給定閾值的幀數(shù)百分比。本文閾值區(qū)間定為[0,100]。本文還給出閾值為20時(shí)目標(biāo)跟蹤的精確度,其相當(dāng)于算法跟蹤到的目標(biāo)窗口和實(shí)際目標(biāo)窗口有至少50%覆蓋面積的幀數(shù)百分比[10]。此外,實(shí)驗(yàn)還對(duì)比了各算法的運(yùn)行速度,即在4個(gè)視頻序列上每秒平均運(yùn)行的幀數(shù)。
表2列出了對(duì)比算法的目標(biāo)中心位置的平均誤差值和運(yùn)行速度(平均幀數(shù)/s),其中最小平均誤差值用粗體字表示。由表2可知,本文的Co-SemiBoost算法的平均誤差值明顯低于SemiBoost(Haar)和SemiBoost(LBP)算法。由于SemiBoost(Haar)和SemiBoost(LBP)包含的弱分類器個(gè)數(shù)是Co-SemiBoost算法的一半,故其運(yùn)行速度略快于Co-SemiBoost算法。但SemiBoost(Haar)和SemiBoost(LBP)容易累積分類錯(cuò)誤,其目標(biāo)位置誤差值遠(yuǎn)大于Co-SemiBoost算法??梢?,本文的在線協(xié)同訓(xùn)練機(jī)制是有效的,克服了自訓(xùn)練的不足。
表2 SemiBoost(Haar), SemiBoost(LBP)與本文算法的目標(biāo)中心位置平均誤差值(像素)和運(yùn)行速度(平均幀數(shù)/s)
本實(shí)驗(yàn)對(duì)比了Co-SemiBoost算法與SemiBoost算法(同時(shí)使用Haar和LBP特征視圖),OAB算法和MIL算法的跟蹤性能。表3給出了SemiBoost, OAB,MIL和Co-SemiBoost算法的平均誤差值和運(yùn)行速度(平均幀數(shù)/s),表3表明Co-SemiBoost算法的平均誤差值明顯低于其它3種對(duì)比算法。從運(yùn)行速度看,當(dāng)同時(shí)使用Haar和LBP特征且弱分類器個(gè)數(shù)相同時(shí),OAB算法運(yùn)行速度最快,MIL算法次之,SemiBoost和Co-SemiBoost算法的運(yùn)行速度相當(dāng)。由于SemiBoost和Co-SemiBoost算法需要迭代地更新弱分類器,因此增加了時(shí)間復(fù)雜度??梢?,Co-SemiBoost算法具有魯棒的跟蹤性能和良好的跟蹤速度。
圖3所示為對(duì)比算法在閾值區(qū)間[0,100]的目標(biāo)跟蹤精確度。從圖3可知,Co-SemiBoost算法在較低閾值處具有較高的精確度。表4具體給出了閾值為20時(shí)的目標(biāo)跟蹤精確度,其中最高精確度用粗體字表示。例如Coupon Book視頻有約90%視頻幀的目標(biāo)中心位置距離實(shí)際中心位置在20個(gè)像素以內(nèi)。然而當(dāng)閾值為20時(shí),其它3種算法在4個(gè)視頻中的精確度均明顯低于Co-SemiBoost算法。因此,實(shí)驗(yàn)結(jié)果表明Co-SemiBoost算法采用的協(xié)同訓(xùn)練機(jī)制是有效可行的,能夠自適應(yīng)目標(biāo)外觀的變化,同時(shí)較好地克服目標(biāo)漂移問題。
表3 4種對(duì)比算法的目標(biāo)中心位置平均誤差值(像素)和運(yùn)行速度(平均幀數(shù)/s)
圖4給出了4個(gè)視頻中有代表性的目標(biāo)跟蹤效果圖。如圖4(a)所示,Coupon Book視頻在第52幀時(shí)被跟蹤的票券被折起,從而目標(biāo)外觀發(fā)生變化。在第133幀和第303幀,被跟蹤的票券不斷受到旁邊一張假票券的影響。OAB算法由于沒有保存先驗(yàn)?zāi)P?,發(fā)生了嚴(yán)重的目標(biāo)漂移。SemiBoost算法由于迭代過程中分類錯(cuò)誤不斷加強(qiáng),也慢慢地漂離跟蹤目標(biāo)。而MIL算法由于在學(xué)習(xí)過程中沒有區(qū)分正包中不同樣本的重要性,因此MIL算法的跟蹤性能不穩(wěn)定。Co-SemiBoost算法由于在協(xié)同訓(xùn)練過程中不斷提升分類器的判別能力,并且融入了目標(biāo)先驗(yàn)知識(shí),因此能夠較好地區(qū)分相似對(duì)象,更穩(wěn)定地跟蹤到目標(biāo)。
表4 閾值為20時(shí)的目標(biāo)跟蹤精確度(%)
圖3 4種對(duì)比算法的目標(biāo)跟蹤精確度圖
圖4 4個(gè)視頻中4種對(duì)比算法的目標(biāo)跟蹤結(jié)果示例圖
圖4(b)給出了Cola Can視頻中第13,第81和第245幀的目標(biāo)跟蹤結(jié)果。受到光照、快速移動(dòng)和旋轉(zhuǎn)的影響,SemiBoost和MIL算法在迭代過程中的分類錯(cuò)誤不斷累積,分類器性能下降,均發(fā)生目標(biāo)漂移。OAB算法跟蹤到的目標(biāo)位置不精確,導(dǎo)致獲取到的正樣本不準(zhǔn)確。Co-SemiBoost算法能夠更準(zhǔn)確地跟蹤到目標(biāo),因?yàn)槠淅梦礃?biāo)記樣本協(xié)同訓(xùn)練分類器,克服了自訓(xùn)練的不足,提高了分類器的性能。
如圖4(c)所示,在Tiger 1視頻中,玩具老虎在光照變化和復(fù)雜背景下被旋轉(zhuǎn)和快速移動(dòng)。例如第121幀目標(biāo)被快速移動(dòng)并且出現(xiàn)部分遮擋。在第215幀時(shí),目標(biāo)被快速移動(dòng)而使圖片中目標(biāo)區(qū)域變得模糊,并且出現(xiàn)較嚴(yán)重的遮擋現(xiàn)象。第282幀老虎面部外觀發(fā)生明顯變化。在這些幀中,Co-SemiBoost算法均能夠準(zhǔn)確地跟蹤到目標(biāo),而其它算法都漂移到了周圍的物品。
圖4(d)給出了Tiger 2視頻在光照條件和復(fù)雜背景下第77,第126和第270幀的跟蹤結(jié)果,例如第77幀目標(biāo)被快速移動(dòng)出現(xiàn)模糊,第126幀目標(biāo)外觀出現(xiàn)顯著變化,以及第270幀目標(biāo)被旋轉(zhuǎn)和部分遮擋。Co- SemiBoost算法能夠穩(wěn)定地跟蹤到玩具老虎,而其它算法都出現(xiàn)漂移問題。
綜上所述,Co-SemiBoost算法采用的在線協(xié)同訓(xùn)練框架是有效可行的,明顯優(yōu)于基于自訓(xùn)練的在線boosting和在線半監(jiān)督boosting算法。并且與新近提出的在線多示例跟蹤器相比,Co-SemiBoost算法總體上具有更優(yōu)的跟蹤性能。因此,在復(fù)雜的跟蹤環(huán)境下,Co-SemiBoost算法既具有自適應(yīng)能力,又在一定程度上有效地抑制了目標(biāo)漂移問題。
本文提出了一種魯棒的基于在線半監(jiān)督boosting的協(xié)同訓(xùn)練目標(biāo)跟蹤算法(Co-SemiBoost)。該算法采用一種有效的在線協(xié)同訓(xùn)練框架,利用未標(biāo)記樣本協(xié)同訓(xùn)練不同視圖中的弱分類器,克服了自訓(xùn)練目標(biāo)跟蹤算法的不足,從而提高了分類器的判別能力。同時(shí),Co-SemiBoost算法保持了在線半監(jiān)督boosting算法的優(yōu)勢(shì),結(jié)合目標(biāo)先驗(yàn)?zāi)P秃驮诰€分類器來預(yù)測(cè)未標(biāo)記樣本的偽類別標(biāo)記和權(quán)重,能夠有效處理目標(biāo)遮擋和光照變化等問題。實(shí)驗(yàn)結(jié)果表明,Co-SemiBoost算法具有魯棒的跟蹤性能。另外,由于該算法主要解決單目標(biāo)的在線跟蹤問題,沒有考慮多目標(biāo)之間的關(guān)聯(lián)性以及多目標(biāo)運(yùn)動(dòng)軌跡估計(jì)等問題,因此不適用于多目標(biāo)跟蹤問題;如何擴(kuò)展本文算法用以解決多目標(biāo)跟蹤將是我們重點(diǎn)研究的方向。此外,由于不同的特征視圖可能適合于不同的跟蹤場(chǎng)景,因而我們將進(jìn)一步研究在各種場(chǎng)景下不同特征視圖的適用性問題。
[1] Yang Han-xuan, Shao Ling, Zheng Feng, et al.. Recent advances and trends in visual tracking: a review[J].Neurocomputing, 2011, 74(18): 3823-3831.
[2] Yilmaz A, Javed O, and Shah M. Object tracking: a survey[J].ACM Computing Surveys, 2006, 38(4): 1-45.
[3] 孫景樂, 唐林波, 趙保軍, 等. 基于瑞利分布的粒子濾波跟蹤算法[J]. 電子與信息學(xué)報(bào), 2013, 35(4): 763-769.Sun Jing-le, Tang Lin-bo, Zhao Bao-jun, et al.. A new particle filter tracking algorithm based on Rayleigh distribution[J]. Journal of Electronics & Information Technology, 2013, 35(4): 763-769.
[4] 董文會(huì), 常發(fā)亮, 李天平. 融合顏色直方圖及 SIFT特征的自適應(yīng)分塊目標(biāo)跟蹤方法[J]. 電子與信息學(xué)報(bào), 2013, 35(4):770-776.Dong Wen-hui, Chang Fa-liang, and Li Tian-ping. Adaptive fragments-based target tracking method fusing color histogram and SIFT features[J]. Journal of Electronics &Information Technology, 2013, 35(4): 770-776.
[5] Jia Xu, Lu Hu-chuan, and Yang Ming-hsuan. Visual tracking via adaptive structural local sparse appearance model[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, Rhode Island, 2012: 1822-1829.
[6] Grabner H and Bischof H. On-line boosting and vision[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, New York, 2006: 260-267.
[7] Grabner H, Grabner M, and Bischof H. Real-time tracking via on-line boosting[C]. Proceedings of British Machine Vision Conference, Edinburgh, 2006: 47-56.
[8] Grabner H, Leistner C, and Bischof H. Semi-supervised on-line boosting for robust tracking[C]. Proceedings of European Conference on Computer Vision, Marseille, 2008:234-247.
[9] Tang Feng, Brennan S, Zhao Qi, et al.. Co-tracking using semi-supervised support vector machines[C]. Proceedings of the IEEE International Conference on Computer Vision,Brazil, 2007: 1-8.
[10] Babenko B, Yang Ming-hsuan, and Belongie S. Robust object tracking with online multiple instance learning[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2011, 33(8): 1619-1632.
[11] Zhang Kai-hua, Zhang Lei, and Yang Ming-hsuan. Real-time compressive tracking[C]. Proceedings of European Conference on Computer Vision, Florence, 2012: 866-879.
[12] Yu Qian, Dinh T B, and Medioni G. Online tracking and reacquisition using co-trained generative and discriminative trackers[C]. Proceedings of European Conference on Computer Vision, Marseille, 2008: 678-691.
[13] Zhu Xiao-jin. Semi-supervised learning literature survey[R].Computer Sciences TR-1530, USA: University of Wisconsin-Madison, 2007.
[14] Mallapragada P K, Jin Rong, Jain A K, et al.. SemiBoost:Boosting for semi-supervised learning[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2009, 31(11):2000-2014.
[15] Lewandowski M and Orwell J. Co-training on multi-view unlabelled data[C]. Proceedings of the 27th Conference on Image and Vision Computing, New Zealand, 2012: 423-428.
[16] Blum A and Mitchell T. Combining labeled and unlabeled data with co-training[C]. Proceedings of the Eleventh Annual Conference on Computational Learning Theory, Madison,1998: 92-100.
[17] Viola P and Jones M. Rapid object detection using a boosted cascade of simple features[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,Kauai, 2001: 511-518.
[18] Ahonen T, Hadid A, and Pietikainen M. Face description with local binary patterns: application to face recognition[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(12): 2037-2041.
[19] Oza N. Online ensemble learning[D]. [Ph.D. dissertation],University of California, 2001.
[20] Babenko B, Yang Ming-hsuan, and Belongie S. Visual tracking with online multiple instance learming[OL]. http://vision.ucsd.edu/~bbabenko/project_miltrack.shtml. 2009.