計算機視覺研究院出品:目標檢測的細節(jié),你到底知道多少?
現(xiàn)在目標檢測發(fā)展應該到了一個瓶頸,但是現(xiàn)存很多很多優(yōu)質(zhì)的檢測框架,尤其是針對于大目標的檢測,比如人、汽車和常見動物,但另一方面,小目標檢測仍然是現(xiàn)在亟待解決的問題。那這么多檢測框,你到底對其內(nèi)部知道多少?你又忽略了多少細節(jié)呢?
1 背景
現(xiàn)在目標檢測大部分就是如上圖案例,針對較大目標還是可以精確檢測到,然后利用檢測到的物體進行下一步的輸入,每個行業(yè)的場景使用不同,所以檢測也是視覺的基石!現(xiàn)在的目標檢測框架都是基于卷積網(wǎng)絡的。這是一種非常強大的方法,因為它能夠?qū)GB圖像抽象成高級語義的深度特征,也可以將創(chuàng)造一些低級的圖像抽象,如線,圓圈,然后將它們“迭代組合”成框架想要檢測的目標,但這也是它們難以檢測小目標的原因。
2 經(jīng)典框架回顧
目標檢測領域研究的你,應該對上圖的發(fā)展史耳熟能詳,這都是經(jīng)典檢測框架的鼻祖,也是現(xiàn)在目標檢測可以飛速發(fā)展的源頭,所有我們應該將最基礎的再好好溫故下。
DPM
說到DPM,讓我想到研究生搞學術第一個接觸到的算法。
DPM算法采用了改進后的HOG特征,SVM分類器和滑動窗口(Sliding Windows)檢測思想,針對目標的多視角問題,采用了多組件(Component)的策略,針對目標本身的形變問題,采用了基于圖結(jié)構(Pictorial Structure)的部件模型策略。此外,將樣本的所屬的模型類別,部件模型的位置等作為潛變量(Latent Variable),采用多示例學習(Multiple-instance Learning)來自動確定。
通過Hog特征模板來刻畫每一部分,然后進行匹配。并且采用了金字塔,即在不同的分辨率上提取Hog特征。
利用提出的Deformable PartModel,在進行object detection時,detect window的得分等于part的匹配得分減去模型變化的花費。
在訓練模型時,需要訓練得到每一個part的Hog模板,以及衡量part位置分布cost的參數(shù)。文章中提出了LatentSVM方法,將deformable part model的學習問題轉(zhuǎn)換為一個分類問題:利用SVM學習,將part的位置分布作為latent values,模型的參數(shù)轉(zhuǎn)化為SVM的分割超平面。具體實現(xiàn)中,作者采用了迭代計算的方法,不斷地更新模型。
RCNN
RCNN應該是檢測正則崛起的源頭,這個網(wǎng)絡的出世真的轟動了真?zhèn)€CV圈,不管是誰,都看過原論文,仿真過的吧!一開始仿真是真的坑,各種問題,在此建議新手一定要自己動手來一遍。
這個算法是真的機智!在大家還摸不著思緒的時候,就想出這種經(jīng)典框架。在原圖上,通過各種窮舉法獲取各種候選的邊界框,然后通過深度學習CNN獲取的高級語義特征,這些特征分別送入多個SVM分類,回歸修正boundingbox,最后使用NMS和邊緣檢測再次修正,整個過程如上圖所示。它的缺點也很明顯,候選區(qū)域重復提取特征導致速度很慢。
Faster-RCNN
肯定有人會問為啥跳過好幾個框架,因為那幾個都是小改進大作用。就在Faster RCNN框架中一起介紹了。為了解決速度慢,SPPNet在最后一個卷積層后設計了空間金字塔池化層,這樣網(wǎng)絡輸入可以不是一個固定的尺寸,能最大程度避免拉伸、裁剪造成圖像的信息損失。建立原始圖像部分區(qū)域與提取特征的映射關系,對于給定區(qū)域,可以直接計算特征,避免重復卷積。于是Fast RCNN出現(xiàn)了,整個過程如上圖所示,與RCNN的不同在于有三個方面,加入了RoI pooling layer,這層與SPPNet的池化層作用相同;在充分實驗的基礎上,將SVM換成softmax;把分類和boundingbox回歸放在同一個網(wǎng)絡的后面進行,大幅減少了計算開銷。它的優(yōu)點在于避免重復卷積,同時整合了多個任務,計算效率進一步提升。現(xiàn)在整個網(wǎng)絡的架構和優(yōu)化已基本完成,制約速度的關鍵在于候選區(qū)域的生成。
后來的Faster RCNN,它的核心思想是將候選區(qū)域生成也交給網(wǎng)絡來做。候選區(qū)域生成網(wǎng)絡本質(zhì)上也是一個Fast RCNN,它的輸入是預先設置好的圖像中的一個區(qū)域,輸出是該區(qū)域?qū)儆谇熬斑€是背景和修正后的區(qū)域。這樣的方法只指定了少數(shù)幾個可能為目標的區(qū)域,無論是比起滑窗,還是比起過分割,都快上了很多。
通過這一系列工作,網(wǎng)絡的作用由單純提取特征演化為完成目標檢測整個流程的一種深度架構,目標檢測的精度和速度也一再提高。但是關于Faster RCNN系列的工作也遇到了問題,以分類問題對待目標檢測暫時沒有什么突破點,所以大家都在考慮以最開始的將目標檢測單純作為回歸問題的思路進行研究。所以就出現(xiàn)了One Stage框架!
Yolo
上面介紹的框架,缺點在于將檢測問題轉(zhuǎn)化成了對圖片局部區(qū)域的分類問題后,不能充分利用圖片局部目標在整個圖片中的上下文信息,于是出現(xiàn)了一種將目標檢測作為回歸問題的方法YOLO,整個過程如下圖所示。將圖像分成多個網(wǎng)格,分別回歸boundingbox和信任值,最后以NMS過濾掉低分box。YOLO缺點在于對靠得很近的物體檢測效果不好,泛化能力弱,由于損失函數(shù)的問題,定位誤差是影響檢測效果的主要原因。即使YOLO目前還不完善,即使它比不上已經(jīng)非常完善的Faster RCNN,但它的速度和精度都要好于人工特征的方法,一旦解決了這些問題,性能將具有非常大的上升空間。
3 問題分析
簡單回顧下檢測框架,可以發(fā)現(xiàn)基本都是考慮效率和精度,但是從哪些方面考慮呢?有些人是從頭開始處理,有些人從中間產(chǎn)物各種處理,還有一批人從尾處理。以至于現(xiàn)在出現(xiàn)了各種各樣眼花繚亂的檢測框架,今天我來說最近比較火的幾個框架,基于他們分析下檢測過程到底需要考慮哪些因素?
現(xiàn)在比較流程的就是在FPN中優(yōu)化,比如論文"Extended Feature Pyramid Network for Small Object Detection",盡管在特征金字塔網(wǎng)絡中進行尺度級別的相應檢測可以緩解此問題,但各種尺度的特征耦合仍然會損害小目標檢測的性能。
EFPN
浙大的研究員,他們提出了擴展特征金字塔網(wǎng)絡(EFPN),它具有專門用于小目標檢測的超高分辨率金字塔層。具體來說,其設計了一個模塊,稱為特征紋理遷移(FTT,feature texture transfer),該模塊用于超分辨率特征并同時提取可信的區(qū)域細節(jié)。此外,還設計了前景-背景之間平衡(foreground-background-balanced)的損失函數(shù)來減輕前景和背景的面積不平衡問題。
其中,EFPN的前4層是vanilla FPN層。FTT模塊集成了P3中的語義內(nèi)容和P2的區(qū)域紋理。然后,類似FPN的自頂向下路徑將FTT模塊輸出向下傳遞,形成最終的擴展金字塔層P'2。擴展的特征金字塔(P'2,P2,P3,P4,P5)被饋送到后續(xù)的檢測器,以進行進一步的目標定位和分類。頂部4層金字塔自頂向下構成,用于中型和大型目標檢測。EFPN的底部擴展在圖中包含一個FTT模塊,一個自上而下的路徑和一個紫色金字塔層,旨在捕獲小目標的區(qū)域細節(jié)。
更具體地講,在擴展中,SR模塊FTT將圖中綠色-黃色層表示的EFPN第三層-第四層金字塔混合,產(chǎn)生具有所選區(qū)域信息的中間特征P'3,圖中用藍色菱形表示。然后,自上而下的路徑將P'3與定制的高分辨率CNN特征圖C'2合并,生成最終的擴展金字塔層P'2。
小目標檢測的難度在于目標很小,其特征比較淺(如亮度/邊緣信息等),語義信息較少;另外小目標和背景之間尺寸不均衡,用較小的感受野去關注其特征的話,很難提取全局語義信息;用較大感受野去關注背景信息的話,那么小目標的特征會丟失信息。以下一些思路是現(xiàn)在提升的技巧:
- 數(shù)據(jù)增強
- 特征融合
- 利用上下文信息,或者目標之間建立聯(lián)系
- GAN
- 提升圖像分辨率
- ROI pooling被ROI align替換
- 多尺度空間融合
- 錨點設計
- 匹配策略,不用IoU
YOLO Nano
雖然前面介紹的網(wǎng)絡展示了最先進的目標檢測性能,但由于計算和內(nèi)存限制,它們在邊緣和移動設備上部署是非常具有挑戰(zhàn)性的,甚至是不可能的。事實上,在嵌入式處理器上運行時,即使是更快的變體,在低的單位數(shù)幀速率下也有推斷速度。這極大地限制了此類網(wǎng)絡在無人機、視頻監(jiān)控、需要本地嵌入式處理的自動駕駛等廣泛應用中的廣泛應用。
YOLO Nano的第一個設計階段是一個原則性的網(wǎng)絡設計原型階段,在這個階段中,根據(jù)人類驅(qū)動的設計原則創(chuàng)建一個初始的網(wǎng)絡設計原型,以指導機器驅(qū)動的設計探索階段。
更具體地說,構建了一個初始的網(wǎng)絡設計原型,該原型基于YOLO系列單點架構的設計原則。YOLO網(wǎng)絡體系結(jié)構家族的一個突出特點是,與基于區(qū)域建議的網(wǎng)絡不同,基于區(qū)域候選的網(wǎng)絡依賴于構建區(qū)域候選網(wǎng)絡來生成場景中目標所在位置的建議,然后對生成的建議進行分類,相反,它們利用單一的網(wǎng)絡架構來處理輸入圖像并生成輸出結(jié)果。因此,針對單個圖像的所有目標檢測預測都是在單個前向過程中進行的,而對于基于區(qū)域候選的網(wǎng)絡,需要執(zhí)行數(shù)百到數(shù)千個過程才能得到最終結(jié)果。這使得YOLO系列網(wǎng)絡架構的運行速度大大加快,因此更適合于嵌入式對象檢測。
現(xiàn)在出現(xiàn)的網(wǎng)絡都是走輕量級路線,為了更好的部署,這也是一個趨勢,因為不能總是停留在理論的假想中。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。