CSP行人檢測:無錨點框的檢測新思路
機器之心發布
作者:廖勝才、劉威
本文被收錄於 CVPR 2019,通訊作者單位為阿聯酋起源人工智慧研究院(IIAI)。受啟發於傳統的特徵點檢測任務和最近的全卷積式關鍵點檢測和配對的工作,本文作者提出了一種無需密集滑窗或鋪設錨點框、全卷積式預測目標中心點和尺度大小的行人檢測方法,為目標檢測提供了一個新的視角。
論文地址:https://arxiv.org/abs/1904.02948
代碼地址:https://github.com/liuwei16/CSP
簡介
目標檢測通常採用傳統的密集滑窗的方式或者當前主流的鋪設錨點框(anchor)的檢測方式,但不管哪種方式都不可避免地需要針對特定數據集設計甚至優化滑窗或錨點框超參數,從而增加了訓練難度並限制了檢測器的通用性。
能否跳出這種窗口式或錨點框式的限制而實現目標檢測?
本文重新回顧了早期的屬於低層視覺的特徵檢測或者感興趣區域檢測的思路,其中大部分是基於卷積式的響應。受此啟發,本文把目標檢測當作一個具有高階語義的特徵檢測任務,為目標檢測提供一個新的視角。具體地,像邊緣、角點、斑點或感興趣區域等低層特徵檢測,本文方法也掃描全圖尋求感興趣特徵點,為此卷積是自然勝任的。但跟傳統的底層特徵不一樣的是,本文進一步尋求具有高階語義的抽象特徵點,如行人、人臉等,而當今的深度卷積神經網路已經具備這種高階語義的抽象能力。此外,類似斑點或感興趣區域檢測,本文也同時為每個中心點預測出目標的尺度,這也是一個直接的卷積式預測。因此,本文以行人檢測為例將目標檢測簡化為一個直接的全卷積式的中心點和尺度預測任務,並將該方法命名為 CSP(Center and Scale Prediction)檢測器。雖然該檢測器結構簡單,但在主流的 Caltech 和 Citypersons 行人檢測數據集中依然達到了當前最好的檢測性能,同時具有與單階段檢測器相當的檢測速度,因此是個簡而可用的新的檢測思路。
研究動機
在傳統的計算機視覺領域,特徵點檢測是一個非常基礎且重要的任務。通常,它被當成是一種低層視覺技術,包括邊緣檢測、角點(或關鍵點)檢測和感興趣區域檢測等。一般而言,一個特徵點通常是圖像的一個感興趣部分,特徵點檢測是指抽取圖像信息並給出每個像素點上是否存在給定的一種特徵的決策。而對於圖像信息的抽取,當今的深度卷積神經網路(CNN)被認為具有對圖像的高度抽象能力,因此 CNN 也被廣泛應用於特徵點檢測,並取得了非常有吸引力的結果。例如近些年基於 CNN 的邊緣檢測方法取得了很大的進展,它們揭示了 CNN 可以獲得非常連續且光滑的邊緣,也說明 CNN 比傳統方法具有更強的抽象能力。這種高度的抽象能力不應被局限於低層視覺特徵點的檢測,它應該具有很大的潛力能夠檢測更高層的抽象的語義特徵點。
為此,能否將目標檢測這樣一個高層視覺任務簡化為語義特徵點檢測的問題?這正是本文所要探索的。就像關鍵點檢測一樣,檢測器通過掃描整張圖像以發現存在關鍵點的位置,顯然這種操作正是共享卷積運算所擅長的。但和傳統的低層關鍵點檢測不同的是,目標檢測需要更加高層的抽象,也即需要尋找到每個目標的中心點,這是深度模型具備潛力的。此外,和傳統的感興趣區域檢測類似的是,目標檢測還需要為每個中心點預測一個尺度,這也是卷積預測可以勝任的。基於以上兩點考慮,本文提出在全卷積網路的基礎上,將目標檢測構建為一個目標中心點檢測和目標尺度預測的任務。一個簡單的示意圖如下圖所示,首先將一張圖像輸入全卷積網路,基於網路提取的特徵圖再卷積式地預測兩個映射圖,一個以熱圖的方式呈現目標的中心點位置,一個負責預測目標的尺度大小。在此基礎上,便可以將兩者映射到原圖上並解譯成目標檢測框:中心點熱圖的位置對應檢測框的中心位置,預測的尺度大小對應檢測框的大小,而中心點熱圖上的置信度則對應檢測框的得分。
對目標檢測而言,從開創性的 Viola-Jones 檢測器開始,均採用的是密集滑動窗口分類器的形式。即使是當前基於卷積神經網路的主流檢測器,不管是兩階段的 Faster R-CNN 系列,還是單階段的 SSD 系列,其採用的鋪設錨點框的檢測方法,本質上仍然是子窗口分類器的形式。即是說,這些檢測器本質上都是在訓練一個局部分類器用於判斷預設的子窗口或錨點框內是否存在目標。然而這些方法都不可避免地需要針對特定數據集設計甚至優化滑窗或錨點框超參數,從而增加了訓練難度並限制了檢測器的通用性。這些滑窗或錨點框超參數包括:窗口數目、窗口大小、長寬比例、與標註框的重疊率閾值等。這些超參數通常是檢測任務和數據集相關的,難以調優也難以通用。一般而言,目標檢測涉及兩個方面:目標在哪裡(where),以及目標有多大(how)。但這些已有方法把這兩方面綁定在一個窗口或錨點框里,並通過局部分類器一次性判斷各種不同大小、不同比例的窗口或錨點框是否是目標。這種綁定就造成了超參數的各種組合問題。而本文提出的 CSP 檢測器通過兩個直接的卷積解離了這兩個子問題,以更自然的方式實現目標檢測,從而也規避了錨點框超參數的各種組合配置,簡化了檢測器的訓練困難。
此外,本文工作也受啟發於近年的一些關鍵點檢測和配對的工作。在已有工作中,全卷積神經網路(FCN)已被成功地應用於多人姿態估計,通過先全卷積地檢測人體關鍵點然後進行組合配對的方式。受此啟發,ECCV 2018 的兩個工作,CornerNet 和 TLL,通過一對對角點檢測或上下頂點檢測並兩兩配對的方式,成功地拋棄了錨點框實現了目標檢測(早期還有第一代YOLO和 DenseBox,但性能有一定局限)。雖然多個關鍵點需要額外的配對策略,有些配對方法較為複雜(如 TLL 里的 MRF),但這一系列工作依然啟發了本文更進一步,實現了簡單的全卷積式預測中心和尺度的檢測器。
方法實現
基本框架:下圖給出了 CSP 演算法的整體框架,其結構非常簡單,主要包含兩個模塊:特徵提取模塊(Feature Extraction)和檢測頭模塊(Detection Head)。
特徵提取模塊:以 ResNet-50 為例,低層的特徵圖擁有較高的空間解析度,因而能提供更多的定位信息,而高層的特徵圖則包含更多的語義信息,為此可以把低層和高層的特徵圖融合成一個特徵圖用於檢測任務。具體地,出於減少演算法複雜度的考慮,這裡採用一種最簡單的特徵融合方式:首先對所有要融合的特徵圖進行 L2 歸一化,再利用反卷積層將第 3、4 和 5 級的特徵圖解析度提升到和第 2 級的特徵圖解析度保持一致,也即原圖的 1/4,然後再將這些特徵圖在通道維度上拼接起來,得到最終用於檢測的特徵圖(圖中紫色部分)。給定一張輸入圖像,其大小為,則用於檢測的特徵圖的大小為 H/r×W/r,其中 代表降採樣率,一個更大的 意味著特徵圖解析度較小進而導致檢測器定位性能下降,而一個更小的 則會帶來更多的計算負擔。
檢測頭模塊:基於以上特徵圖,檢測頭負責將特徵圖解譯成檢測結果。在檢測頭模塊中,首先接上一個 3x3 卷積層將輸入特徵圖的維度壓縮到 256,然後接上兩個並聯的 1x1 卷積層產生目標中心點熱圖和目標尺度預測圖,這樣相較於 R-CNN 及 SSD 等系列工作而言極大地簡化了檢測頭模塊。實驗表明中心點檢測和尺度預測已經足以勝任行人檢測任務。但採用降採樣的特徵圖會影響目標定位性能,為了彌補這一缺陷,在中心點以及尺度預測之外,還可以額外添加一個偏移預測分支,用以進一步預測中心點到真實目標中心的偏移。
訓練標籤:給定真實目標包圍框的標註,演算法就可以自動生成中心點和尺度的訓練目標,如下圖所示,(a)給出了兩個行人目標的真實包圍框,(b)給出了中心點和尺度的生成示例:對於中心點,當目標中心落在哪個位置,則在該位置賦值 1(也即正樣本),其它位置賦值 0(也即負樣本);對於尺度圖,當目標中心落在哪個位置,則在該位置賦值尺度的 log 值,其它位置賦值 0。取 log 函數是為了將分布範圍較大的原始尺度壓縮在一定的範圍內,並且誤差是尺度無關的,以有利於檢測器的訓練。考慮到單一中心點的不確定性,在圖(c)中我們還定義了一個高斯掩碼,用以降低中心點周圍負樣本的權重,這點將在定義損失函數時進一步介紹。
值得一提的是,目標尺度可以定義為目標高度和(或)寬度。對於行人檢測而言,為了得到更緊緻的目標包圍框,近期的研究均採用人體中軸線標註,也即確定行人的上頂點和下頂點並形成連線得到行人高度,然後採用固定的長寬比 0.41 直接確定行人寬度,進而生成目標包圍框。基於此,CSP 行人檢測器可以只預測目標高度然後根據固定長寬比 0.41 生成檢測框用於後續評估,這是由行人直立行走的特性決定的。但對於其他非行人目標而言,CSP 的尺度預測就需要同時預測目標高度和寬度,如下文提到的人臉檢測。
中心點偏移量的訓練目標的定義與尺度類似,卷積預測的通道包含兩層,分別負責水平方向和垂直方向的偏移量,假設目標 k 的中心點坐標為 (x_k, y_k),則在標籤圖中目標中心所在的位置賦值為,其中「·」代表取整函數,其它位置賦值為 0。
損失函數:目標中心點預測是一個二分類問題,也即判斷熱圖的每個位置是否存在目標中心點,是中心點則為正樣本,否則為負樣本。然而通常情況下一個「完美」的目標中心點是很難定義的。由於正樣本周圍的負樣本距離中心點非常近,很容易被標註誤差所干擾,因此直接將其指定為負樣本會給檢測器的訓練帶來困擾。對此,本文在每個正樣本及其周圍採用一個高斯掩碼,該高斯掩碼以目標中心點為中心坐標,其水平/垂直方差與目標的寬度/高度成正比。如果兩個目標的高斯掩碼之間存在重合,則擇取二者中的最大值。為了應對正負樣本數量極端不平衡的問題,本文也採用 CornerNet 中的 focal 策略——對難樣本賦予更大的權重。具體損失函數定義詳見論文細節。由此,結合高斯掩碼和 focal 策略,一是難樣本的權重得到了增強,二是在正樣本周圍的負樣本的權重得到了降低。最後,目標的尺度預測可以構建為一個回歸問題,由經典的平滑 L1 損失給出。
實驗結果
本文提出的方法在 Caltech 和 Citypersons 行人檢測數據集上進行了驗證,其中標註是採用的基於中心線的緊緻標註。這是當前最主流的行人檢測數據集。採用的評估指標是單圖虛檢(FPPI)在 [0.01, 1] 範圍時的對數平均漏檢率(MR-2)。
在 Caltech 數據集上,結果如下圖所示。僅用 Caltech 訓練集訓練時,在測試集的合理(Reasonable)子集上,CSP 的平均漏檢率為 4.5%,比當前最好的 RepLoss 的 5.0% 好 0.5%。當對比的方法都在 Citypersons 上預訓練時,CSP 取得當前最好的平均漏檢率 3.8%。在嚴重遮擋子集上,CSP 沒有預訓練時比 RepLoss 好 2.1%,有預訓練時比 RepLoss 好 5.3%。值得指出的是,CSP 沒有額外設計針對遮擋的策略,而 RepLoss 和 OR-CNN 是專門針對遮擋設計的。
在 Citypersons 數據集上,結果如下表所示。所有結果都是針對中心線標註、原始圖像(1024x2048)上測試的。可以看出,在合理子集上,CSP 比之前最好的 ALFNet 提升了 1.0%,在嚴重遮擋子集上提升了 2.6%,在小目標上提升了 3.0%,而測試速度與 ALFNet 相當,在 NVIDIA GTX1080Ti 單張顯卡上每張 1024x2048 大小的圖像平均用時 0.33 秒。特別是,同為無需錨點框的方法,CSP 比 TLL 提升了 4.5%,比 TLL MRF 提升了 3.4%。
CSP 的小目標檢測能力得益於大解析度的特徵圖。而對於遮擋,傳統的基於密集滑窗(如 VJ 檢測器)或者基於 Faster R-CNN、採用感興趣區域池化(ROI Pooling)的檢測器,本質上都是對目標區域的一個整體判斷的分類器,因此目標區域的遮擋和背景等信息是包含在其整體判斷里的。而本文提出的 CSP 對目標在哪裡和有多大進行了解離,在熱圖上只檢測中心點,尺度大小是額外預測的,因此受遮擋的影響相對較小。
後續工作
為了進一步驗證 CSP 檢測器的通用性,本文作者還進一步在 WiderFace 人臉檢測數據集上做了後續實驗。其中尺度採用了高度 寬度預測,因為 WiderFace 的人臉標註是包含各種變化的寬高比的。CSP 在 WiderFace 訓練集上訓練的結果分別在驗證集和測試集上進行了測試,實驗結果如下圖所示。可見 CSP 取得了與當前領先的人臉檢測演算法可比較的檢測性能,而這其中大部分演算法都是基於「錨點框」的。特別是在困難子集上,驗證集和測試集上 CSP 都達到了比當前已發表的方法更好的性能。
此外,本文作者進一步測試了人臉檢測器的泛化能力。對於同樣是在 WiderFace 上訓練好的 CSP 和DSFD模型(兩者性能非常接近,DSFD 在困難子集上,驗證集 90.4%,測試集 90.0%),評估了它們在其他資料庫上直接測試的性能(AP)。結果是雖然在同為網圖的 FDDB 上兩者性能依然非常接近,在 UCCS 監控視頻人臉檢測上 CSP 為11%,DSFD 為 7.6%;在一個待公開的極端環境人臉檢測 Benchmark 上,CSP 是 27%, DSFD 為 12%。值得注意的是,DSFD 是基於錨點框的人臉檢測器的優秀代表,亦收錄於 CVPR2019,並且其一大貢獻就是改進了錨點框的匹配策略。但對比跨庫測試結果可以看出,在一個庫上採用的錨點框配置,離開這個庫可能會存在已配置好的錨點框的適用性問題。而 CSP 是簡單地預測目標中心和尺度,無預設的錨點框配置,因此相對而言能更好地適應不同的場景或數據集。
結語
近年流行的錨點框檢測器取得了很大的成功,但依然是 VJ 檢測器奠定的基礎,其設計深受滑窗分類器的影響。然而,深度卷積神經網路高度的語義抽象能力開闢了更廣闊的潛力,使得拋棄錨點框成為一種可能,而本文提出的 CSP 檢測器便是這方面的一種新的嘗試。目前已在行人檢測和人臉檢測上驗證了有效性,未來可進一步考慮拓展到車輛檢測和通用物體檢測等相關的檢測任務。
本文為機器之心發布,轉載請聯繫本公眾號獲得授權。
------------------------------------------------
TAG:機器之心 |