文章目錄
CornerNet: Detecting Objects as Paired Keypoints
CornerNet: 一種不需要 Anchor boxes 的目標檢測方法,使用一組關鍵點top-left corner ,bottom-right corner(左上角,右下角)預測目標box,簡化網絡輸出,消除Anchor-base方法帶來的複雜計算。
論文鏈接:https://arxiv.org/abs/1808.01244
代碼鏈接:https://github.com/umich-vl/CornerNet
創新點:
1.CornerNet 繼 YOLO V1 採用Anchor-free模式預測Bouding box
2.Anchor-free模式改進 Anchor boxes 兩大缺點:(1)無用的先驗box太多,40K(DSSD 模型), 100K(RentinaNet模型),但實際上只有小部分box能與ground truth相交。(2)使用Anchor-boxes 產生大量的超參數,box需要設計複雜的scale,ratio等。
3.CornerNet模型採用 Hourglass Network網絡,Corner Pooing技術
模型介紹:
輸入圖像經Hourglass網絡提取特徵,後端卷積網絡預測兩組表示不同對象類別的角的位置的熱圖,一組表示左上角,另一組表示右下角。每一組角預測分支產生熱圖,角向量集合,位置座標偏移量。同時屬於同一物體的角向量的距離很小,再通過後處理算法獲取最終的bounding box。
熱圖預測:
上面說到2組後端網絡預測熱圖(heat map),通道數C表示目標物的類別,大小爲,沒有背景通道,每個通道都是一個二進制掩碼,用於指示類的角的位置。
對於每張熱圖,對應唯一Ground truth位置的爲正樣本預測角,其他的爲負樣本預測角,這樣就會產生正負樣本不均,爲了解決這個問題,引入負樣本懲罰項,將與正樣本角組合的box 產生的IOU>0.3也當做正樣本角,本質目的是減少Ground truth附近的負樣本角點,不然很難loss收斂吧,如下圖紅色爲Ground truth爲紅色的框,綠色的角點產生的框和ground truth很接近,兩者的角點對應得box IOU在0.3的範圍內,綠框視爲正樣本角點。(個人理解)
熱圖由高斯函數產生:
是由給出,文中將IOU>0.3的檢測角點和Ground truth角點對應框位置座標的差得到radius,如下:
熱圖損失函數定義:
表示熱圖點對應點屬於類別C的概率, 是ground-truth, 默認值2,默認值是4. 衰減負樣本的影響
偏移量預測:
許多網絡涉及下采樣層以收集全局信息和減少內存使用。 當它們完全卷積應用於圖像時,輸出的尺寸通常小於圖像。 因此,圖像中的位置被映射到熱圖中的位置,其中n是下采樣因子。當我們將熱圖中的位置重新映射到輸入圖像時,可能會丟失一些精度,這會極大地影響小邊界框與ground-truth之間的IoU。 爲了解決這個問題,我們預測位置偏移,以稍微調整角位置,然後再將它們重新映射到輸入分辨率。
其中是偏移量,和是角點的和座標。 特別是,我們預測所有類別的左上角共享一組偏移,另一組由右下角共享。 對於訓練,我們在ground-truth角點位置應用平滑的L1損失:
分組角點:
圖像中可能出現多個目標,因此可能檢測到多個左上角和右下角。我們需要確定左上角和右下角的一對角點是否來自同一個目標邊界框。成爲對象k的左上的嵌入,爲右下角的的嵌入。使用“pull”損失來訓練網絡對角點進行分組,並且用“push”損失來分離角點:
其中是和的平均值,我們在所有實驗中將Δ設爲1。 與偏移損失類似,我們僅在ground-truth角點位置應用損失。
Corner Pooling:
Corner Pooling 操作具體如下: 將圖1 箭頭方向從右向左開始,將(i,j)處像素改變爲該點像素右邊出現的最大值,2---->2, 0---->2, 3------>3, 2-------->3,依次類推。。。。
將圖2箭頭方向從下向上開始,將(i,j)處像素改變爲該點像素下邊出現的最大值,0---->0, 2---->2, 3------>3, 1-------->3,依次類推。。。。
然後對結果圖相加即可。
prediction module:
預測模塊從一個修改後的殘塊開始,其中我們將第一個卷積模塊替換爲corner pooling模塊。修改後的殘差塊後面跟着一個卷積模塊。我們有多個分支用於預測熱圖、嵌入和偏移量。
預測模塊的結構如圖7所示。模塊的第一部分是殘差模塊的修改版本。在這個修改後的殘差模塊中,我們將第一個3×3的卷積模塊替換爲一個corner pooling模塊。這個殘差模塊,首先通過具有128個通道的2個3×3卷積模塊的主幹網絡處理特徵,然後應用一個corner pooling層。殘差模塊之後,我們將池化特徵輸入具有256個通道的3×3的Conv-BN層,然後加上反向projection shortcut。修改後的殘塊,後跟一個具有256個通道的3×3的卷積模塊,和256個通道的3個Conv-ReLU-Conv層來產生熱圖,嵌入和偏移量。
實驗結果:
總LOSS定義:
其中α,β和γ分別是pull,push和offset的權重。將α和β都設置爲0.1,將γ設置爲1。
表1 MS COCO消除corner Pooling驗證
表2 減少對正位置附近的負位置的懲罰有助於顯着改善網絡的性能
表3顯示在不同的圖像象限中,corner Pooling始終能夠提高網絡檢測角的性能,這表明corner Pooling無論在小區域還是大區域都是有效和穩定的。
表5.對比RetinaNet,Cascade R-CNN在Coco 上的測試結果。
表6.誤差分析。 我們用ground-truth替換預測的熱圖和偏移。 單獨使用ground-truth的熱圖可以將AP從38.4%提高到73.1%,這表明CornerNet的主要瓶頸是檢測角點。
表7.在MS COCO test-dev上,CornerNet優於其他所有one-stage檢測器,可實現與two-stage探測器相媲美的結果。