<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>

          總結目標檢測匹配策略與改進思路

          共 3934字,需瀏覽 8分鐘

           ·

          2020-09-15 09:36

          ↑ 點擊藍字?關注極市平臺

          作者丨高毅鵬@知乎
          來源|https://zhuanlan.zhihu.com/p/149473726
          編輯丨極市平臺

          極市導讀

          ?

          CVPR2020中的文章ATSS揭露到anchor-based和anchor-free的目標檢測算法之間的效果差異原因是由于正負樣本的選擇造成的。而在目標檢測算法中正負樣本的選擇是由gt與anchor之間的匹配策略決定的。因此,本文研究了目前現(xiàn)有的匹配策略,并根據(jù)現(xiàn)狀給出改進思路。

          faster rcnn或retinanet或ssd算法

          采用的分配策略是max iou assigner,即:對于每個gt,將高于正樣本閾值的并且是max iou位置的anchor設置為正樣本;將低于負樣本閾值的anchor設置為負樣本,考慮到有些gt和anchor的iou不高,故還設置了最小正樣本閾值,當某個gt和anchor的max iou大于最小正樣本閾值時候,則依然將該anchor設置為正樣本。

          yolo系列

          是對于每個gt,將max iou位置的anchor設置為正樣本,不管閾值多大(先要確定哪一預測層負責預測),這種操作對anchor設置要求較高,因為如果anchor設置不合理,就只能用大量低質量anchor負責回歸了。對于正樣本附近的anchor預測值,其可能和gt的iou也很高,故需要將這些位置的anchor預測值設置為忽略樣本,默認閾值是0.7??赡転V除一些正樣本。

          fcos

          第一步也是和yolo一樣,要確定某個Gt在第幾個層負責預測(采用min_size 和 max size_)。第二步是需要確定在每個輸出層上面,哪些空間位置是正樣本區(qū)域,哪些是負樣本區(qū)域。原版的fcos的正負樣本策略非常簡單粗暴:在bbox區(qū)域內的都是正樣本,其余地方都是負樣本,而沒有忽略樣本區(qū)域??上攵@種做法不友好,因為標注本身就存在大量噪聲,如果bbox全部區(qū)域都作為正樣本,那么bbox邊沿的位置作為正樣本負責預測是難以得到好的效果的,顯然是不太靠譜的(在文本檢測領域,都會采用shrink的做法來得到正樣本區(qū)域),所以后面又提出了center sampling的做法來確定正負樣本,具體是:引入了center_sample_radius(基于當前stride參數(shù))的參數(shù)用于確定在半徑范圍內的樣本都屬于正樣本區(qū)域,其余區(qū)域作為負樣本,依然沒有定義忽略樣本

          Guided Anchoring

          論文思想是通過圖像特征來指導 anchor 的生成。通過預測 anchor 的位置和形狀,來生成稀疏而且形狀任意的 anchor,并且設計了 Feature Adaption 模塊來修正特征圖使之與 anchor 形狀更加匹配,在使用 ResNet-50-FPN 作為 backbone 的情況下,Guided Anchoring 將 RPN 的 recall(AR@1000) 提高了 9.1 個點,將其用于不同的物體檢測器上,可以提高 mAP 1.2 到 2.7 個點不等。

          論文實現(xiàn)方式如下圖:

          匹配策略:將整個 feature map 的區(qū)域分為物體中心區(qū)域,外圍區(qū)域和忽略區(qū)域,大概思路就是將 ground truth 框的中心一小塊對應在 feature map 上的區(qū)域標為物體中心區(qū)域,在訓練的時候作為正樣本,其余區(qū)域按照離中心的距離標為忽略或者負樣本,具體設計在 paper 里講得比較清楚。通過位置預測,我們可以篩選出一小部分區(qū)域作為 anchor 的候選中心點位置,使得 anchor 數(shù)量大大降低。在 inference 的時候,預測完位置之后,我們可以采用 masked conv 替代普通的 conv,只在有 anchor 的地方進行計算,可以進行加速。

          ATSS

          1、對于每個GT,找到候選的正anchor集合

          在每個金字塔層級(共L層)上,選擇topk個離GT中心距離最近的anchor boxes作為候選anchor, 那么每個GT就會有k*L個候選正anchor。

          2、計算自適應閾值

          計算候選anchor與GT之間的IoU Dg,計算均值?和標準差?,其閾值為:?。

          3、確定最終的正anchor

          選擇?,且中心點在GT邊框內部的anchor作為最終的正樣本,如果一個anchor box被分配給了多個GT,選擇IoU最高的那個GT。

          ATSS的意義:

          根據(jù)目標統(tǒng)計特征,自動調整正負樣本選取方式。如圖(a),當?越大,表示候選樣本質量很高,可以選取一個高的IoU閾值。如圖(b), 越小,表示絕大多數(shù)的候選樣本較差,應當選取一個較低的閾值來確保GT可以匹配到anchor。如圖3(a), 較大時,往往意味著有一個FPN層出現(xiàn)了較高的IOU,說明該層非常適合這個物體的預測,因此?和?加起來得到一個較高的閾值,我們只從這一層選取正樣本。如圖3(b), 較小意味著存在多個適合該目標的金字塔層,因此??和?加起來得到一個較低的閾值,會在這些層級上選取正樣本。
          每個目標匹配anchor數(shù)量相對均勻。

          HAMBox

          匹配策略:

          1、將每張臉匹配到那些與它的iou大于某個閾值的anchor,對于outer face不進行補償。
          2、在訓練的每次前向傳播之后,每個anchor通過回歸得到的坐標計算出回歸框,我們將這些回歸框記作??,異常臉outer face記作??。最后,對于每個outer face,我們計算它與的IOU值,然后對每張outer face補償N個unmatched anchor。記所有的IOUs為?, 這些補償?shù)腘個anchor通過下面方式選擇:

          a)IOU要大于閾值T(在線正anchor匹配閾值)

          b)對(a)中得到的anchor進行排序,選擇IOU最大的top-K 個anchor做補償。K是一個超參數(shù),表示每個outer face能matched的最多anchor數(shù)目。使用M表示在步驟1中已經(jīng)匹配的anchor數(shù)目。如果N > K-M,則選取top(K-M)個unmatched anchor來補償。

          T和K是通過實驗選擇的超參數(shù)。具體算法細節(jié)見下 Algorithm 1,該算法在訓練的每次前向傳播后執(zhí)行一次.

          Algorithm1具體見下:

          /*輸入:B,X,T,K,D,L,R,AB 是一組回歸后的框,格式為(x0, y0, x1, y1)X 是一組ground truth, 格式為(x0, y0, x1, y1)T 是上述算法中在線anchor挖掘中定義的閾值K 是每個outer face能匹配到的最多anchor數(shù)目D 是一個字典,key是ground_truth, value是HAMBox第一步中  該gt能match到的anchor數(shù),即matched_anchor的數(shù)目L 是一個字典,key是anchor index, value是該anchor在HAMBox中最終分配的labelR 是一個字典,key是anchor index, value是該anchor經(jīng)過普通anchor matching后的編碼后的坐標A 是一個字典,key是anchor index, value是該anchor的坐標,格式為(x0, y0, x1, y1)
          輸出:經(jīng)過HAMBox后的R和L*/// 偽代碼見下for x_i in x do if D(x_i) >= K then continue end if compensatedNumber = K - D(x_i) onlineIoU = IoU(x_i, B),AnchorIdx sortedOnlineIoU = sorted(onlineIoU, key = IoU, reverse = True) for IoU, AnchorIdx in sortedOnlineIoU do if(L(AnchorIdx) = 1) then continue endif if(IoU < T) then continue endif compensatedNumber -= 1 L(AnchorIdx) = 1 R(AnchorIdx) = encoded(A(AnchorIdx), x_i) if compensatedNumber = 0 then break endif endforendforreturn R, L


          推薦閱讀


          添加極市小助手微信(ID : cvmart2),備注:姓名-學校/公司-目標檢測-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測等技術交流群:月大咖直播分享、真實項目需求對接、求職內推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 180
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  激情无码内射 | jlzzzz | 国产在线拍揄自揄拍无码福利 | 在线无码视频蜜桃 | 中文字幕不卡在线 |