ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生
本文為極市平臺原創文章,轉載請附原文鏈接:
https://blog.csdn.net/Extremevision/article/details/82801692
——————————————————————————————————————————————
作者:Panzer
論文地址:https://arxiv.org/abs/1807.08407
本文首發于極市博客
背景介紹
與通用目標檢測相比,遮擋情況在行人檢測中更為普遍,為此也是行人檢測領域最廣為關注的問題之一。現實場景中行人的遮擋情況主要分為兩種情況:一種是行人個體之間的相互遮擋,這往往會引入大量的干擾信息,進而導致虛檢;一種是其他物體對行人的遮擋,這往往會帶來目標信息的缺失,進而導致漏檢。近年來,已有很多解決遮擋問題的相關工作發表,主要有兩種思路:一是對目標候選框分成不同part逐一處理、區別對待再加以特征融合,這種思路更適用于第一種遮擋情況;二是從loss的角度使得目標候選框對相互遮擋的情況更具判別性,如CVPR2018的RepLoss[1],這種思路更適用于第二種遮擋情況。
作為通用目標檢測中的一個特定問題,現有基于CNN的行人檢測方法主要來源于通用目標檢測,目前主流的行人檢測算法多基于Faster R-CNN框架,本文也不例外,但提出了兩種全新的策略,分別針對性地解決以上兩種遮擋問題,并實驗驗證了其有效性。
本文方法
OR-CNN遵循兩階段的Faster R-CNN的檢測框架,其主要包括兩個部分:第一階段RPN產生目標候選框,第二階段Fast R-CNN對目標候選框進行進一步的分類和回歸。為了處理遮擋問題,本文提出兩種策略:aggregation loss和PORoI pooling unit,分別加持在兩個階段上,當然aggregation loss也適用于第二階段,詳情見下文。
Aggregation Loss:
在行人個體之間的相互遮擋時,會產生相互重疊的虛檢。為了減少這種虛檢,作者從anchor出發,通過設計一種loss,使得訓練過程中多個匹配到真實目標上的anchor盡量靠近,具體實現方式為在原有的regression loss基礎上加上compactness loss,因此本文提出的Aggregation Loss就包括兩部分:
其中為正常的regression loss,采用原始Faster R-CNN中選用的smooth l1 loss;
是本文設計的compactness loss,使得多個匹配上真實目標的anchor能夠更加緊密圍繞在真實目標周圍,具體實現方式為:
也即對多個匹配上真實目標的anchor的回歸目標取平均值再與真實目標計算誤差,誤差度量依然采用的是smooth l1 loss。值得注意的是,Aggregation Loss既可以用在第一階段也可以用在第二階段。
Part Occlusion-aware RoI Pooling Unit:
Faster R-CNN的第二階段需要提取每個目標候選框的特征,如果對目標候選框分成不同的Part分別提取特征,就可以減少遮擋位置對全局特征的影響,這也是處理遮擋問題的一種常用方式。與已有方式不同的是,本文并非隨機選取part,而是根據先驗將行人目標分成5個part(如下圖1所示),分別提取這5個part的特征,這種根據人體布局的先驗能夠獲得互補的局部特征,再結合整個目標的全局特征做加權求和,得到融合特征再做進一步的分類和回歸。顯然,這里的加權方式就顯得尤為重要,為此作者提出了一種遮擋處理單元(圖1(b)所示),該單元的輸出是一個sigmoid值,意味著該part沒被遮擋的程度,因此遮擋處理單元就是一個二分類問題,可以和檢測網絡聯合訓練了。
綜上,第二階段的損失函數包括三個部分:分類loss、定位loss和遮擋處理單元loss,如下式所示:
其中的定位loss和第一階段一致,也是采用的本文提出的第一個遮擋處理策略:Aggregation Loss。
實驗分析
實驗細節:
本文的detector采用的是改進版的Faster R-CNN[2],以保證實驗對比的公平性,驗證實驗是在CityPersons驗證集上做的。對比實驗是在CityPersons、Caltech-USA、ETH和INRIA,其中Caltech訓練和測試均采用新標注[3]。
實驗結果:
首先我們看下在CityPersons驗證集上的剝離實驗(如下表),其中Scale x1.3代表將圖像擴大1.3倍進行測試,heavy partial bare代表不同的遮擋程度,可見本文OR-CNN不僅在Reasonable設定下取得了最佳性能,而且在嚴重遮擋情況下也取得了最好的檢測結果,miss rate比RepLoss降低了4個點。此外,通過對本文提出的兩個策略進行剝離分析,可見AggLoss和PORoI二者對檢測性能的提升均有貢獻,其中AggLoss聚焦于loss層面,因此測試時不會帶來算法耗時的增加,是一種更為經濟的處理遮擋情況的方式。
下圖對AggLoss的作用做了進一步的可視化分析,通過有無AggLoss的對比,圖(a)表明訓練時,目標候選框能夠更加緊密集中在目標周圍,圖(b)表明測試時,加上AggLoss訓練的檢測器對NMS閾值的選取更為魯棒,而Baseline則對NMS閾值的選取則非常敏感,由于CityPersons數據集中遮擋情況較為普遍,所以NMS閾值達到0.55時才能取得最好效果。
下圖則對PORoI的作用做了進一步的可視化分析,本文共對行人目標分成5個part,遮擋處理單元會對每個part進行打分,得分越低代表遮擋越嚴重,從圖3可以發現圖(a)(b)中沒有遮擋的情況下,每個part的得分都普遍偏高,而在圖(e)(f)存在嚴重遮擋時,下面兩個part(黑色)的得分較低,充分驗證了本文PORoI的有效性。
同樣在Caltech測試集上的表現也是state-of-the-art(如下圖4):在Reasonable設定下取得了4.1的表現,僅次于第一名RepLoss0.1個百分點。此外論文中還展示了在ETH和INRIA數據集上的結果,同樣也是state-of-the-art,在此不再贅述。
總結展望
本文貢獻:
(1)本文重點關注行人檢測中的遮擋問題,并為此提出了兩種遮擋處理策略。
(2)本文提出的兩種遮擋處理策略分別來自不同的角度,分別加持在Faster R-CNN檢測框架的兩個階段,因而具有互補性,在CityPersons嚴重遮擋子集上展現了非常出色的性能。
個人見解:
(1)本文重點針對行人檢測中長期以來廣為關注的問題——遮擋,已有工作中主要從‘分part’的角度加以解決,而CVPR2018的RepLosss[1]首次提出從loss的角度加以解決,使網絡在自動學習的過程中不斷提升定位性能。本文分別從以上兩個角度提出了兩種全新的策略,思路簡潔而有效。有關RepLosss[1]的技術解讀已在極市平臺發表,詳情可見[4]。
(2)值得注意的是,盡管近年來有大量工作聚焦于行人檢測中的遮擋問題,但現有算法距離該問題的解決依然還有很長的路要走,從論文中展現的結果來看,遮擋情況下的檢測結果要遠遠劣于非遮擋情況下的結果。一個很關鍵的原因來自于人群密集場景下行人自遮擋的情況普遍存在,在訓練數據有限的情況下,基于有監督訓練得到的檢測器難以學習到無法窮盡的各種遮擋情況,因此如何利用現有的無監督或者半監督方式來改善這個問題,應該是非常值得探索的一個方向,期待你的精彩發現。
**參考文獻**
[1] Repulsion Loss: Detecting Pedestrians in a Crowd. CVPR (2018)
[2] Citypersons: A diverse dataset for pedestrian detection. CVPR (2017)
[3] How Far are We from Solving Pedestrian Detection? CVPR (2016)
[4] CVPR 2018 | Repulsion loss:專注于遮擋情況下的行人檢測
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ECCV 2018 | CornerNe
- 下一篇: 吴恩达新书《Machine Learni