<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          論文閱讀筆記 | 目標檢測算法——CenterNet算法

          共 5460字,需瀏覽 11分鐘

           ·

          2021-10-24 22:29

          來源:CSDN博主「Clichong」

          本文約3600字,建議閱讀8分鐘?

          本文介紹了目標檢測算法的有關內(nèi)容。


          文章目錄

          1. Introduction
          2. Preliminary

          2.1 keypoint detection loss

          2.2 offset loss

          2.3 size loss

          2.4 overall loss

          3. Objects as Points
          4. Result

          paper:Objects as Points

          Source code:

          https://github.com/xingyizhou/CenterNet


          思想:

          目標檢測將對象識別為圖像中與軸對齊的框。大多數(shù)成功的物體檢測器都列舉了幾乎詳盡的潛在物體位置列表,并對每個位置進行分類,這是比較浪費時間的一種做法,而且需要額外的后處理方法。

          在CenterNet中,作者將對象建模為單個點,即其邊界框的中心點。我們的檢測器使用關鍵點估計來找到中心點,并回歸到所有其他對象屬性,如大小、三維位置、方向,甚至姿勢。與相應的基于anchor的檢測器相比,具有端到端的可區(qū)分性、更簡單、更快速和更精確。

          1. Introduction

          當前的目標檢測是通過用一個邊界框來緊密包圍對象從而表示它,然后將對象檢測簡化為大量潛在對象邊界框的圖像分類。對于每個邊界框,分類器確定圖像內(nèi)容是特定對象還是背景。

          對于one-step網(wǎng)絡來說,通過滑動窗口生成一些列密集的anchor,然后直接對這些anchor進行分類預測,近年來的改進方向包括anchor的比例形狀(yolo系列),不同尺度進行特征融合(FPN系列)以及不同樣本見的損失權重改進(RetinaNet)。而對于two-step網(wǎng)絡來說,會對anchor先進行一個nms挑選,所以其訓練比較麻煩不能實現(xiàn)端對端預測。

          CenterNet中,會用一個中心點去代表檢測對象。然后對象的其他屬性(對象大小、尺寸、三維范圍、方向和姿態(tài)等等)則直接從中心位置的圖像特征進行回歸。也就是將目標檢測問題簡化成一個關鍵點檢測問題。


          主要的流程如下:

          將圖像簡單的喂入一個卷積神經(jīng)網(wǎng)絡得到一個heatmap,heatmap的峰值(peaks)對應與物體的中心,每個峰值處的圖像特征預測對象邊界框的高度和寬度。當進行檢測時,只需要簡單的進行前向傳播實現(xiàn),不需要NMS等后處理方法,所以可以實現(xiàn)端對端檢測。

          1. CenterNet與其他基于anchor算法的區(qū)別:

          CenterNet與基于anchor的One-step算法密切相關,因為一個中心點可以看作是一個形狀不可知的anchor,但存在一些區(qū)別:

          • CenterNet通過根據(jù)位置(peaks)分配anchor,而不是在特征圖上進行密集覆蓋,不需要手動的設置前景或背景的閾值。

          • CenterNet中的每一個對象只有一個正樣本的anchor,所以不需要非極大值抑制處理,也就是不需要后處理方法,只需要提取關鍵點heatmap中的局部峰值。

          • 與傳統(tǒng)的對象檢測器相比,CenterNet使用了更大的輸出分辨率,這消除了對多個anchor的需要


          2. CenterNet與其他關鍵點檢測算法的區(qū)別:

          CenterNet不是關鍵點檢測的首次使用。CornerNet使用對象的左上角與右下角作為兩個關鍵點,而 ExtremeNet使用對象的四個角點與中心點五個點作為關鍵點。這兩種方法都建立在與CenterNet相同的魯棒關鍵點估計網(wǎng)絡上。

          但是這兩種關鍵點檢測算法,在關鍵點檢測之后需要一個組合分組階段(以CornerNet為例,由于分了兩組heatmap分別檢測左上角與右下角,需要一個額外的embedding計算這兩組之間的距離,距離相識則被匹配為一組),這大大降低了每個算法的速度。

          而在CenterNet中,只需為每個對象提取一個中心點,而不需要分組或后處理。

          2. Preliminary


          2.1 keypoint detection loss

          若以I ∈ R W × H × 3 I ∈ R^{W \times H \times 3}I∈R?

          W×H×3

          ?表示一張輸入的圖像的寬為W,高為H。然后我們的目標是制作關鍵點的heatmap:Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat{Y} ∈ [0, 1]^{\frac{W}{R} \times \frac{H}{R} \times C} Y^?∈[0,1] RW × RH ×C ,其中R表示輸入步幅(也可以理解為縮放因子,也就是下采樣的倍數(shù),這里默認是4,也就是輸出分辨率會輸出4倍),C是關鍵點類型的數(shù)量。如果目標檢測的任務中有80類對象,那么輸出的heatmap的通道數(shù)就是80,每層channel表示一類對象的heatmap。如果預測得到:Y ^ x , y , c = 1 \hat{Y}_{x,y,c} = 1Y^? x,y,c =1,則表示C類目標中的( x , y ) (x,y)(x,y)位置檢測到關鍵點,否則Y ^ x , y , c = 0 \hat{Y}_{x,y,c} = 0 Y^? x,y,c=0則是背景。作者使用了多種backbone從輸入圖像得到heatmap Y ^ \hat{Y} Y^?。對于每一類C的每一個真實對象(ground truth)的關鍵點表示為:p ∈ R 2 p ∈ R^{2}p∈R2 ,而這個真實對象的關鍵點映射在一個低分辨率的特征圖上為:p ~ = ? p R ? \widetilde{p} = \lfloor \frac{p}{R} \rfloorp =? Rp ? (向下取整,所以也存在損失)。然后,將所有ground truth關鍵點投影到heatmap上:Y ∈ [ 0 , 1 ] W R × H R × C Y ∈ [0, 1]^{\frac{W}{R} \times \frac{H}{R} \times C}Y∈[0,1] RW × RH ×C ,使用高斯核得到最后結(jié)構:Y x y c = e x p ( ? ( x ? p ~ x ) 2 + ( y ? p ~ y ) 2 2 σ p 2 ) Y_{xyc} = exp(- \frac{(x - \widetilde{p}_{x})^{2} + (y - \widetilde{p}_{y})^{2}}{2\sigma^{2}_{p}})Yxyc =exp(? 2σ p2 (x? px ) 2 +(y? py ) 2 )。其中σ p σ_{p}σ p

          ?表示對象的尺寸自適應標準偏差。

          一個補充的說明,heatmap是通過把ground truth從輸入圖片位置映射到該較低分辨率的圖上,然后再以ground truth為中心做高斯分布Y x y c = e x p ( ? ( x ? p ~ x ) 2 + ( y ? p ~ y ) 2 2 σ p 2 ) Y_{xyc} = exp(- \frac{(x - \widetilde{p}_{x})^{2} + (y - \widetilde{p}_{y})^{2}}{2\sigma^{2}_{p}})Y xyc =exp(? 2σ p2(x? px ) 2 +(y? py ) 2 )來為整個圖賦值,即以ground truth為中心,在其一定半徑內(nèi)的點的Yxyc值如瀑布式下降(高斯分布)。

          關鍵點預測損失公式為:



          α和β是focal loss超參數(shù),這里沿用CornerNet中的設置,α = 2 , β = 4 。N則為圖片中總的keypoint數(shù)量。

          2.2 offset loss

          上訴所提到的,當關鍵點在原圖到一個低的分辨率特征圖時采用了向下取整所以會造成一個偏移損失。正如原文所說,為了恢復由輸出步幅引起的離散化誤差,我們還對每個中心點預測了局部偏移:O ^ ∈ R W R × H R × 2 \hat{O} ∈ R^{\frac{W}{R} \times \frac{H}{R} \times 2} O^?∈R RW × RH ×2 .所有c類共享相同的偏移預測。偏移是用L1損失訓練的.監(jiān)督僅作用于關鍵點位置,所有其他位置都被忽略。

          偏移損失公式如下:
          2.3 size loss

          C類的目標k的四個邊界坐標可以表示為:( x 1 k , y 1 k , x 2 k , y 2 k ) (x^{k}_{1},y^{k}_{1},x^{k}_{2},y^{k}_{2})(x1k ,y 1k ,x 2k ,y 2k ),那么其中心點的坐標就可以表示為:p k = ( x 1 k + x 2 k 2 , y 1 k + y 2 k 2 ) p_{k} = (\frac{x^{k}_{1} + x^{k}_{2}}{2},\frac{y^{k}_{1} + y^{k}_{2}}{2})pk =( 2x 1k +x 2k , 2y 1k +y 2k )。我們用關鍵點估計法來預測所有的中心點。此外,我們回歸到原圖每個對象k的長寬尺度大?。簊 k = ( x 2 k ? x 1 k , y 2 k ? y 1 k ) s_{k} = (x^{k}_{2} - x^{k}_{1},y^{k}_{2} - y^{k}_{1})sk =(x 2k ?x 1k ,y 2k ?y 1k ),預測點得到的寬高為S ^ p k \hat{S}_{pk} S^pk ,所以可以得到寬高的預測損失:

          目標長寬預測損失公式:


          2.4 overall loss

          在CenterNet中不歸一化比例,直接使用原始像素坐標。用一個常數(shù)λ來衡量損失。

          總的損失公式為:
          其中λsize=0.1,λoff=1。

          網(wǎng)絡預測每個地點總共有C + 4個輸出。所有輸出共享一個公共的全卷積骨干網(wǎng)絡。對于每個模態(tài),最后的特征圖分別通過一個3x3卷積,ReLU激活函數(shù)與一個1x1卷積,分別得到三個預測結(jié)果(heatmap,size,offset)。按我的理解,也就是接了三個head。

          對于目標檢測主要看第一行,通過三個head分別獲取heatmap,offset,size

          在backbone之后接了三個分支網(wǎng)絡,分別用于預測heatmap(c個通道),size(2個通道),offset(2通道)。所有最后每個位置共有C+4個通道。如下圖所示:


          heatmap分支即keypoint prediction分支,heatmap有c個channel,對應c個類。最后挑選每個channel中peaks作為該類的center points。

          size分支用于預測寬和高,offset分支用于彌補卷積操作的下采樣導致離散誤差,做回歸用,這兩個分支與類無關,所有類共享。


          圖片參考:
          https://blog.csdn.net/yanghao201607030101/article/details/110202400

          3. Objects as Points

          在推斷的時候,首先獨立地提取每個類別的heatmap中的峰值。如果一個點的值大于或等于其八鄰域(周圍最近的8個點)中的所有值則視為peak,最后保留值最大的100個peaks。

          假設全部中心點的集合為:P ^ = ( x ^ i , y ^ i ) i = 1 n \hat{P} = {(\hat{x}_{i},\hat{y}_{i})}_{i=1}^{n} P^?=( x^i , y^i ) i=1n ,其中設P ^ c \hat{P}_{c} P^c 為C類中心點的集合。每個關鍵點位置由一個整數(shù)坐標給出( x i , y i ) (x_{i},y_{i})(xi ,y i )。我們使用關鍵點值Y ^ x i , y i , c \hat{Y}_{x_{i},y_{i},c} Y^x i ,y i ,c


          ?作為其檢測置信度的度量,并在位置上產(chǎn)生一個邊界框。
          具體的四點坐標如上所示,也就是center加上偏移offset,再通過計算長與寬得到最終的bounding box。其中表示偏移預測量,而表示長寬尺度預測。

          所有輸出直接從關鍵點估計產(chǎn)生,無需基于IoU的非最大值抑制(NMS)或其他后處理。峰值關鍵點提取是一種充分的NMS替代方案,可以使用3 × 3最大池操作在器件上高效實現(xiàn)。

          4. Result

          paper使用了四種不同的backbone進行實驗:ResNet-18, ResNet-101, DLA-34 , 與 Hourglass-104 。其中對ResNets和DLA-34進行了更改,而 Hourglass-104 沒有更改。結(jié)構如下:


          四種backbone的實驗結(jié)果:


          與其他SOTA算法的對比:




          版權聲明:本文為CSDN博主「Clichong」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
          原文鏈接:
          https://blog.csdn.net/weixin_44751294/article/details/119565663

          編輯:王菁
          校對:李敏
          瀏覽 88
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久久久久久久久久久午夜片 | 正在播放熟女 | 亚洲国产精品午夜AV | 色精品 | 亚洲第一色婷婷 |