Object detection from video tubelets with CNN翻译
代碼地址code
文章地址Object Detection from Video Tubelets with Convolutional Neural Networks
這篇是港大的Kai Kang 16年發表在CVPR上的,講了視頻中的目標檢測。這篇是我畢設要看的論文,并且我也沒有看到有好的翻譯,大多數是Tubelets with Convolutional Neural Networks for Object Detection from Videos這篇文章的翻譯,所以這篇應該屬于翻譯類別。這個tubelet我不知道怎么翻譯,查看了csdn上的一些博客都沒有介紹,這里直接用英文了。最后的Results和conclusion就不翻譯了。
1. Introduction
深度學習被廣泛運用在圖像識別、目標檢測、語義分割、人體姿態估計等方面,在過去的幾年中,得益于深度卷積神經網絡deep CNN的發展,目標檢測在ImageNet和PASCAL VOC等數據集上都取得了很好的成績。最新的方法可以訓練CNN以將目標區域object proposals進行分類,但是這些方法都是關注靜態圖像的檢測,之后出現的ImageNet比賽提出了新的問題:如何高效魯棒的解決視頻VID中的目標檢測問題?對于視頻中的每一幀,都要求對其中的目標進行標注并得到確信值。盡管已經有了許多方法進行視頻檢測,但是很多都只針對于一種分類,比如行人或者車輛,而ImageNet卻要求檢測出值得進一步研究的所有目標群體。就像靜態圖像的目標檢測可以幫助其他識別任務一樣,在視頻中的目標檢測也可以提高視頻分類、視頻抓取和其他相關工作的性能,通過對視頻中目標的定位和分析,視頻的語義semantic會更加清晰,得到更加魯棒的性能。
現有的方法沒有辦法解決這個問題,因為視頻中的目標會有很大的變動。比如在Figure 1 (a)中,如果一只貓先面對鏡頭然后轉身背對鏡頭,它背面的圖像可能不會被識別成貓,因為背面包含的信息很少,不適合用作訓練樣本。正確的結果應該是根據視頻上下幀的信息推斷的,因為視頻中的目標是有連續性的。由于視頻中目標的位置是變化的,相關的圖像應該有一條軌跡,從這個軌跡中我們可以得到時間上的信息。同時,檢測結果的時間連續性應該被調整,因為目標bounding-box tubelet的檢測值detection score不應該有劇烈的波動(Figure 1 (a))。
這些問題要求我們將目標跟蹤object tracking融入目標檢測中,deep CNN在這項任務上表現很好,大量的檢測方法表明時間信息可以應用在校準檢測結果上。但是,直接在VID上應用目標跟蹤并不能很好的解決這個問題(Figure 1 (b)),在實驗中,我們注意到在目標跟蹤上直接應用靜態圖像目標檢測只有37.4%的mAP,相較于45.3%mAP的object proposals來說可以說并不好。這種問題產生的原因是由于檢測器對位置改變的敏感度和bounding box在軌跡和proposals之間的匹配出現錯誤。為了解決這個問題,我們應用一個tubelet box perturbation和最大池化過程,將mAP提高到45.2%,僅用1/38的邊框就可以得到和object proposals同樣的準確率。
在此,我們建造了一個基于deep CNN的檢測和跟蹤的多層級的框架,主要有兩個模塊:1、一個結合了目標檢測和目標跟蹤的tubelet proposal模塊。2、一個tubelet classification and re-scoring模塊,這個模塊用空間最大池化spatial max pooling來得到魯棒的邊框得分,用時間卷積temporal convolution來得到時間上的連續性。檢測和跟蹤是緊密結合的:一方面,目標檢測可以使跟蹤變得高信,而且可以減少空間最大池化的的跟蹤失敗率;另一方面,跟蹤也可以為檢測指明新的候選區域。
這篇論文的貢獻有三個方面:1、建立了一個上述的多層級架構;2、分析了靜態目標檢測和目標跟蹤的關系,以及它們對于視頻目標檢測的影響;3、運用一個特殊的temporal CNN將時間信息結合到目標檢測之中。
2. Related work
現在目標檢測最好的方法基本都是基于deep CNN的。Girshirk等人用一種多層次的方法R-CNN來選出候選區域進行目標識別,這種方法將目標檢測問題分解為bounding-box區域、CNN預訓練、CNN微調、SVM訓練、bounding-box回歸等小問題;Szegedy等人建立了一個22層結構的GoogleNet,將R-CNN中的CNN用“inception”模塊代替,贏得了ILSVRC 2014目標檢測挑戰;除了R-CNN,還有一個Fast R-CNN,喂給CNN的圖片不再是變形成一樣尺寸的圖片了,還用了很多方法提高速度。但是這些都只是在靜態圖片上的目標檢測,在視頻檢測中,這些方法不一定可以捕捉所有的真實目標,因為有些幀中的目標并不在最容易檢測到的姿勢或者狀態。
基于YouTube Object Dataset(YTO)的目標定位和協同定位與VID任務類似,但這兩者又有一些不同:1、YTO假設每一個VID只有一個已知的或未知的目標類別,只要求每一幀檢測出一個目標,但是VID每一幀包含未知數量的目標,更接近于真實情況;2、YTO用localization metric來做衡量標準,而VID使用mean average precision(mAP)作為性能衡量標準。對于評估不同種類和閾值的總體性能,mAP更有挑戰性。基于這些不同,VID任務難度更大,更接近真實情況,所以之前的目標定位并不能直接應用于VID。
還有一些方法是關于動作定位的,在動作視頻的每一幀,要求系統將人物動作的區域用bounding box標注出來,這些關于動作proposal的工作與這篇論文的工作有關系。Yu和Yuang等人通過計算actionness scoring來確定這些bounding box,并解決了最大集覆蓋問題maximum set coverage problem;Jain等人的工作是使用Selective Search方法來確定tubelet proposals,并且產生區分人的動作和背景的新特征;在CVPR2014的Finding action tubes一文中,候選區域被喂給兩個CNN來學習特征,接著用SVM來對動作進行預測,這些候選區域可以通過預測和空間上的重疊連接起來。
目標跟蹤的研究已經進行很久了,最近,將deep CNN運用在目標檢測上得到了很好的效果:Wang研究了一種特定目標跟蹤器,從ImageNet預訓練網絡中選擇最有影響力的特征;Nam訓練了一種多領域的CNN來做目標跟蹤,在跟蹤新目標時,創造一個新的網絡,將原有的預訓練CNN的共享層與一個新的二分層結合。但是,即使是基于CNN的跟蹤器,性能依舊不是很好,因為它們還是依靠目標外表信息而不是理解目標種類的語義。
3. Method
在這一部分,我們會介紹視頻目標檢測和我們這個網絡架構的細節,框架的總體結構如Figure 2所示,主要包含兩個模塊:一個spatio-temporal tubelet proposal模塊和一個tubelet分類和重得分模塊。這兩個主要部分將會在3.2和3.3詳細闡述。
3.1 Task setting
在靜態圖片中,視頻目標檢測任務VID與圖像識別任務DET是類似的,從圖像識別任務的200個類別中取30個類別進行目標檢測,每一個視頻中的所有類別都是完全標注的。對于每一個視頻段,算法需要得到一個標注數組(fi, ci, si, bi),fi代表幀數,ci代表種類標簽,si代表確信值,bi代表bounding box。在VID中,我們也用與DET一樣的評價標準:mAP。
3.2 Spatio-temporal tubelet proposal
視頻中的目標有時間和空間上的連續性,在相鄰的幀中,同一個目標有相似的表現和位置。而用現有的目標檢測和目標跟蹤的方法并不能有效的解決VID任務,一方面,一個簡單的方法就是把視頻當做多個圖像的組合,對每一張圖像進行獨立的目標檢測,這個策略只考慮到了目標外表的相似性而沒有考慮到時間上的連續性,所以從Figure 1 (a)中看到,即使是相鄰的幀,其檢測score也有很大的波動;另一方面,普遍的目標檢測方法將正在檢測的bounding box當做樣本來更新檢測器,檢測器會集中于視頻中的樣本,由于目標的大幅度變化而出現漂移現象(Figure 1 (b))。
spatio-temporal tubelet proposal模塊將靜態圖像的識別和目標檢測、目標跟蹤結合起來,模塊對于目標檢測器和目標跟蹤的時間連續性是有區分能力的。有三個主要步驟:image object proposal, object proposal scoring和high-confidence object tracking。
step 1 Image object proposal object proposals是由Selective Search(SS)算法得到的,對于視頻的每一幀,SS輸出大約2000個proposals,大多數是負樣本,不包含目標。當一個proposal對于ImageNet的所有分類的detection score都低于一個閾值時,用R-CNN中提供的預訓練的AlexNet模型將這些顯而易見是負樣本的樣本移除。實驗中使用-1.1作為閾值,大概會剩下6.1%的候選區域。這一步驟見Figure 2 (a)。
step 2 Object proposal scoring 由于VID的30個分類是從DET的200個分類的子集,所以為DET任務訓練的網絡可以直接用于VID任務,網絡是一個在ImageNet上預訓練的GoogLeNet,然后根據DET任務進行微調。同R-CNN一樣,對于每一個DET分類,用模型中提取的“pool5”特征來做hard negative mining,用于SVM的訓練。在VID任務中,用30個SVM來對proposals進行分類,SVM得分越高,proposal中含有目標的可能性就越大。
step 3 High-confidence proposal tracking 對于每個分類,我們雙向跟蹤高置信度的detection proposals。所用追蹤器是Visual tracking with fully convolutional networks這篇論文提到的,在實驗中有更加魯棒的性能。從step 2中選擇最高置信度的proposal,作為檢測開始的位置,被稱為“anchors”,從一個anchor開始,前至第一幀,后至最后一幀,用兩個tracklet連接出了目標的軌跡。當目標運動,從anchor中離開時,追蹤器有可能會飄到背景或者其他目標上,或者跟不上原先目標的尺寸和狀態,所以,當確信度低于一個閾值時(通常取0.1),我們盡早停止追蹤,以防出現錯誤的tracklet。在得到一條軌跡之后,從剩下的檢測目標中挑選一個新的anchor,一般來說,高確信的目標通常會成群出現,所以直接選取下一個高確信度的目標很可能會與原先的tracklet有重合,為了減少冗余,我們用一些抑制方法,比如非最大值抑制。當step 2中的檢測目標與現有的軌跡有超過一個閾值的重合度時(通常采用0.3IoU),不會將其選為新的anchor。這個追蹤-抑制過程持續到所有剩下的目標都低于一個閾值為止(通常選取SVM得分小于0)。每一個視頻中,這個過程要對所有的30個類別都進行一次。
基于以上三個步驟,我們得到了從高確信anchor開始的軌跡,這個軌跡就是tubelet proposals。
3.3 Tubelet classification and rescoring
在tubelet proposal模塊之后,對于每一個分類,我們都有了含有高確信值的anchor的tubelet,一種簡單的方法是對于這些tubelets中的bounding-box采用step 2中的方法進行分類,但是這種方法的性能比靜態圖像識別要差,有以下四條原因:
1、在tubelet中的proposal數量遠遠少于Selective Search之后的proposal,有可能會錯過一些目標,降低召回率。
2、在靜態圖像識別中訓練的檢測器對于目標的移動是很敏感的(Figure 2 (d)),即使一個軌跡邊框與目標的重合度很大,它也可能沒有合理的檢測得分。
3、在追蹤過程中,我們為了減少冗余tubelets會進行抑制操作,所以相對于圖像proposal來說,tubelet會更稀少。這種抑制方法與非最大值抑制(NMS)有沖突,因為在傳統NMS中,即使一個正邊框的確信值很低,但它與其他高確信值的邊框有很大的重合,它就會被抑制,不會影響總平均精確度。而早期抑制導致有一些低確信值的正邊框與高確信值的檢測結果沒有重合,所以沒有被抑制。
4、即使在已經標注過的數據上,tubelet上的檢測得分也是波動很大(Figure 1 (a)),所以我們還需要利用時間信息得到連續的檢測得分。
step 4 Tubelet box perturbation and max-pooling 這一步驟中的擾動是將tubelet中的box用更高確信度的box替換,有兩種擾動方法。
第一種擾動方法是隨機擾動tubelet box的邊框以在每一幀的每一個box旁邊產生新的box,就是指我們隨機對一個tubelet box的左上角和右下角的坐標進行采樣。隨機偏置的值來自于下面兩個分布:
U是均勻分布,w和h是box的寬度和高度,r是采樣率參數,r越高代表原來的box確信值越低。
第二種擾動方法是用與這個tubelet box的重合度高于一個閾值的object detections代替這個tubelet box。這個步驟模擬NMS過程:如果這個box是一個有低確信度的正邊框,這個過程可以恢復一些其他的正邊框來抑制這個邊框。衡量重合度的閾值越高,tubelet box的確信度就越高。
上述兩種方法都在4. Experiments中。
在perturbation結束后,每一個增強后的邊框和原來的tubelet box都用step 2中的方法得到score。對于每一個tubelet box,只有檢測確信值最大的、增強后的box被保留下來,并替代原來的tubelet box。這種最大值池化的過程是為了增強檢測器的空間魯棒性,并利用tubelet周圍的object detections。
step 5 Temporal convolution and re-scoring 即使有max-pooling這個步驟,同一軌跡上的detection scores也會有很大的波動,會導致性能損失。例如,如果在相鄰幀上的tubelet boxes都有高檢測得分,那這一幀上的同樣的物體的tubelet box很可能也有高檢測得分,而靜態圖片目標檢測沒有考慮這種時間連續性。
在我們的框架中,添加了一個Temporal Convolutional Network(TCN),TCN使用一維特征,包括檢測得分detection scores、跟蹤得分tracking scores、anchor offsets,還對每一個tubelet box標注temporally dense prediction(dense prediction要求不但給出具體目標的位置,還要描繪物體的邊界,如圖像分割、語義分割、邊緣檢測等等,翻譯取密集標注)。
TCN的結構見Figure 3,它是一個四層一維全卷積網絡,輸出每一個tubelet box的temporally dense prediction score。對于每一個分類,我們都用tubelet特征作為輸入,訓練一個針對類別的TCN。輸入值是時間序列,包括檢測得分、跟蹤得分和anchor offsets,輸出值是tubelet box是否包含目標的可能性。如果box與已經標定為真的數據重合度大于0.5,則監督標簽為1,反之則為0。
這種temporal convolution基于感受野中的時間特征來產生分類預測,而一維密集標注提供了比單一標注更復雜的信息。在測試中,我們用連續score代替了二值分類。
4. Experiments
4.1 Datasets
ImageNet VID 我們使用ImageNet中視頻目標檢測(VID)任務數據集來評價所有的管道機制和框架中的組成部分,最初發行的VID有三個組成部分:訓練集含有1952個全標注的視頻片段,每一個片段從6幀到5213幀不止;驗證集集含有281個全標注的視頻片段,每一個片段從11幀到2898幀不止;測試集含有458個視頻片段,在這篇論文發表的時候測試集的標簽還沒有得到。
YTO dataset 除了ImageNet VID,還使用YTO數據集對框架進行評價。YTO數據集有10個目標分類,是ImageNet數據集的子集,與VID不同的是,YTO并不是完全標注的,每個視頻只保證含有一個分類中的目標,而且只有幾幀有標注。這種標注使得我們不能再YTO上訓練我們的數據集,但是我們可以在框架上應用這個YTO數據集。
4.2 Parameter setting
Image object proposal 我們使用Selective Search中的“fast”模式來檢測proposals,并且把輸入圖像都變形成寬度為500像素,然后將變形后的proposal映射到原來的輸入圖像坐標中。
R-CNN提供的AlexNet模型是為了移除那些顯而易見是不包含目標的候選區域,當這個proposal對于DET中的兩百個分類的檢測值都低于一個閾值的時候(閾值選擇-1.1),這個步驟可以保留大概6.1%的proposals(大概每張圖片96個proposals)。
Tracking 跟蹤早期結束閾值設置成0.1,也就是說,如果tracking的確信值低于0.1,則這個tracklet會被終止。產生新的anchor的閾值是0,如果沒有proposal的檢測得分高于0的話,這個分類的整體檢測過程即中止。每個視頻段,每種分類都選擇20個anchor。
Tubelet perturbation 我們記隨機擾動為R(n, r),r是擾動比率參數,n是每一個tubelet box所取的樣本,記O(t)為添加與box重合度達到0.5以上的original proposals。
擾動比率和采樣數目的不同組合在Table 1和Figure 4,O(t)在Table 2和Figure 4:
選擇R(20, 0.1)、R(20, 0.2)、O(0.5)作為后續工作的參數。
Temporal convolutional network TCN有四層卷積層,結構見Table 3。網絡的初始化參數和優化參數,比如學習率,在一個類別中手動調整,之后的30個類別保持不變。
未經處理的檢測值、跟蹤值和絕對anchor offset(由跟蹤的長度正則化)作為TCN的輸入,而不經過其他的預處理步驟。
撒花~~下篇論文見!
總結
以上是生活随笔為你收集整理的Object detection from video tubelets with CNN翻译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ浏览器HD的动态化方案QBDF的总体
- 下一篇: svn: 'D:\Dfiles\Ecli