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