精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

不同種類的anchor-based和anchor-free的相關算法

jf_pmFSk4VX ? 來源:GiantPandaCV ? 作者:GiantPandaCV ? 2022-10-21 08:58 ? 次閱讀

前言

由于在學習和應用目標檢測算法時,不可避免的接觸到正負樣本的生成策略等知識點,并且正負樣本的區分策略對算法最終效果至關重要。因此,通過參考他人的文章資料,本文將目標檢測中正負樣本的區分策略進行匯總。為了能將主要篇幅集中在不同算法生成正負樣本的策略上,本文不對每個算法完整結構進行詳細介紹。本文涉及了不同種類的anchor-based和anchor-free的相關算法(共5個算法)。并且會在后續文章中,繼續補充其他算法(例如yolo系列、centernet、ATSS等)。

一、正負樣本的概念

目前,許多人在看相關目標檢測的論文時,常常誤以為正樣本就是我們手動標注的GT(ground truth),這個理解是錯誤的,正確的理解是這樣的:

首先,正樣本是想要檢測的目標,比如檢測人臉時,人臉是正樣本,非人臉則是負樣本,比如旁邊的窗戶、紅綠燈之類的其他東西。其次,在正負樣本選取時,要注意:正樣本是與GT的IOU值大于閾值時的取值,負樣本是小于閾值的,其他的則把它去除即可。

總之,正負樣本都是針對于程序生成的框而言,非GT數據[^1]。

二、為什么要進行正負樣本采樣?

需要處理好正負樣本不平衡問題:在ROI、RPN等過程中,整個圖像中正樣本區域少,大部分是負樣本[^2]。

提高網絡收斂速度和精度:對于目標檢測算法,主要需要關注的是對應著真實物體的 正樣本 ,在訓練時會根據其loss來調整網絡參數。相比之下, 負樣本對應著圖像的背景,如果有大量的負樣本參與訓練,則會淹沒正樣本的損失,從而降低網絡收斂的效率與檢測精度。

三、anchor-free和anchor-based

二者的區別在于是否利用anchor提取候選框[^2]

從anchor回歸屬于anchor-based類,代表如faster rcnn、retinanet、YOLOv2 v3、ssd等,

從point回歸屬于anchor-free類,代表如cornernet、extremenet、centernet等,

二者融合代表如fsaf、sface、ga-rpn等。

四、典型算法

1、MTCNN

論文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

5cd45410-50da-11ed-a3b6-dac502259ad0.jpg

算法推理流程圖

MTCNN算法訓練過程:[^3]:

PNet的輸入尺寸為, RNet的輸入尺寸為, ONet的輸入尺寸為。

由于PNet輸入是一個大小的圖片,所以訓練前需要把生成的訓練數據(通過生成bounding box,然后把該bounding box 剪切成大小的圖片),轉換成的結構。其他網絡輸入尺寸如下圖所示:

5cf081c6-50da-11ed-a3b6-dac502259ad0.png5d125382-50da-11ed-a3b6-dac502259ad0.png5d2cecf6-50da-11ed-a3b6-dac502259ad0.png

1)正負樣本的定義

訓練數據可以通過和GT的 IOU 的計算生成一系列的 bounding box。可以通過滑動窗口或者隨機采樣的方法獲取訓練數據,訓練數據分為三種正樣本,負樣本,中間樣本[^4]。

正樣本:IOU > 0.65部分樣本:0.4 < IOU < 0.65負樣本: IOU < 0.3

如下圖所示,為依據圖片中人臉框的坐標信息生成正樣本部分樣本:由于篇幅原因,下圖中IOU的計算過程沒有截圖,可以參考[^4]的源碼。

注意:代碼中的 w、h 分別是GT的尺度。

此處生成正樣本的腳本,除了對生成的矩形框尺度進行約束,還約束了矩形框的中心點坐標范圍。筆者認為,這樣做主要是為了提高生成正樣本的效率:因為一張圖片中正樣本的數量是非常有限的,要確保生成的矩形框與GT的IOU大于一定閾值才能成為正樣本。

5d4a3c70-50da-11ed-a3b6-dac502259ad0.png

如下圖所示,使用隨機采樣的方式生成負樣本:紅色框為crop_box計算方法,相對正樣本的生成方式更簡單。

注意:代碼中的 width、height 分別是原始圖像的尺度。

5d633662-50da-11ed-a3b6-dac502259ad0.png

訓練樣本包含:正樣本,負樣本,部分樣本,關鍵點樣本。比例為 1 : 3 : 1 : 2

訓練主要包括三個任務:

人臉分類任務:利用正樣本和負樣本進行訓練,

人臉邊框回歸任務:利用正樣本和部分樣本進行訓練,

關鍵點檢測任務:利用關鍵點樣本進行訓練。

MTCNN算法測試過程:[^3]:

1、首先整張圖像經過金字塔,生成多個尺度的圖像(圖像金字塔),然后輸入PNet,PNet由于尺寸很小,所以可以很快的選出候選區域。但是準確率不高,不同尺度上的判斷出來的人臉檢測框,然后采用NMS算法,合并候選框。

2、根據候選框提取圖像,之后縮放到的大小,作為RNet的輸入,RNet可以精確的選取邊框,一般最后只剩幾個邊框。

3、最后縮放到的大小,輸入ONet,判斷后選框是不是人臉,ONet雖然速度較慢,但是由于經過前兩個網絡,已經得到了高概率的邊框,所以輸入ONet的圖像較少,然后ONet輸出精確的邊框和關鍵點信息,只是在第三個階段上才顯示人臉特征定位;前兩個階段只是分類,不顯示人臉定點的結果。

2、Faster rcnn

論文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

5d72f138-50da-11ed-a3b6-dac502259ad0.jpg

算法整體結構

1)Anchor概念

Anchor(錨框):

Anchor本質上是在原圖上預先定義好(這個預先定義十分關鍵)的一系列大小不一的矩形框[^5]。

為什么要引入Anchor呢?

這是因為之前的目標檢測都是模型直接回歸邊框的位置,而通過引入Anchor相當于加入了強先驗信息,然后通過錨框再去篩選與修正,最后再得到預測框。這樣做的好處在與是在Anchor的基礎上做物體檢測,這樣要比從無到有的直接擬合物體的邊框容易一些。

具體的做法就是:讓模型去預測Anchor與真實邊框的偏移值,而不是直接預測邊框的坐標[^5]。

如何生成Anchor呢?

5d86dbbc-50da-11ed-a3b6-dac502259ad0.png

從圖片到卷積特征圖

特征圖(feature map)上的每一個點生成一組錨點。注意:即使我們是在特征圖上生成的錨點,這些錨點最終是要映射回原始圖片的尺寸(參考下圖感受野的相關概念[^7])。

5d9c7896-50da-11ed-a3b6-dac502259ad0.png

因為我們只用到了卷積和池化層,所以特征圖的最終維度與原始圖片是呈比例的。數學上,如果圖片的尺寸是,那么特征圖最終會縮小到尺寸為 和,其中 r 是次級采樣率。如果我們在特征圖上每個空間位置上都定義一個錨點,那么最終圖片的錨點會相隔 r 個像素,在 VGG 中,,此處可以參考文章最后的文獻[^6]。 所以,feature map上一點對應到原圖的大小為的區域。

5db9dd1e-50da-11ed-a3b6-dac502259ad0.png

原始圖片的錨點中心

在目標檢測中,需要檢測的目標形態大小各異,如果統一以固定大小的窗口進行檢測,肯定會影響檢測效果,降低精度。因此Faster R-CNN算法為每個滑動窗口位置配置了9個基準矩形框來適配各種目標。即,對于每張輸入的特征圖像的每一個位置,使用9種尺度的候選窗口:三種面積{, , },三種比例{1 : 1, 1 : 2, 2 : 1},目的是盡可能的將尺度大小不一的特定目標區域特征檢測出來,并判斷候選窗口是否包含感興趣的目標。

5e9c095a-50da-11ed-a3b6-dac502259ad0.png

Anchor原理圖(如上圖所示)

5eb1044a-50da-11ed-a3b6-dac502259ad0.png

原始圖片的錨點中心生成的9種候選框(如上圖所示)

5ed094f4-50da-11ed-a3b6-dac502259ad0.png

原始圖片中所有anchor可視化(如上圖所示)

5f857428-50da-11ed-a3b6-dac502259ad0.png

左側:錨點、中心:特征圖空間單一錨點在原圖中的表達,右側:所有錨點在原圖中的表達(如上圖所示)

2)正負樣本的定義[^8]

faster rcnn中正負樣本是根據anchors的標定規則來生成的。

(1)正樣本的生成:

如果某個anchor和其中一個GT的最大iou大于pos_iou_thr,那么該anchor就負責對應的GT;

如果某個GT和所有anchor的iou中最大的iou會小于pos_iou_thr,但是大于min_pos_iou,則依然將該anchor負責對應的gt。通過本步驟,可以最大程度保證每個GT都有anchor負責預測,如果還是小于min_pos_iou,那就沒辦法了,只能當做忽略樣本了;

(2)負樣本的生成:

如果anchor和GT的iou低于neg_iou_thr的,那就是負樣本,其應該包括大量數目;

其余的anchor全部當做忽略區域,不計算梯度。

該最大分配策略,可以盡最大程度的保證每個GT都有合適的高質量anchor進行負責預測。

5f8ef0c0-50da-11ed-a3b6-dac502259ad0.png

RPN中正負樣本定義

5fbcaa06-50da-11ed-a3b6-dac502259ad0.png

RCNN中正負樣本定義

3)正負樣本的采樣

雖然上文中的最大分配策略可以區分正負樣本和忽略樣本,但是依然存在大量的正負樣本不平衡問題。

解決辦法可以通過正負樣本采樣或者loss上面一定程度解決,faster rcnn默認是需要進行正負樣本采樣的。 rpn head和rcnn head的采樣器都比較簡單,就是隨機采樣,閾值不一樣而已。

5fc34456-50da-11ed-a3b6-dac502259ad0.png

RPN head采樣器

注意:RPN中的add_gt_as_proposals=False

5ff9ef38-50da-11ed-a3b6-dac502259ad0.png

rcnn head采樣器

注意:rcnn中的add_gt_as_proposals=True

dict函數中各個參數具體含義:

num表示采樣后樣本總數,包括正負和忽略樣本。

pos_fraction表示其中的正樣本比例。

neg_pos_ub表示正負樣本比例,用于確定負樣本采樣個數上界,例如我打算采樣1000個樣本,正樣本打算采樣500個,但是可能實際正樣本才200個,那么正樣本實際上只能采樣200個,如果設置neg_pos_ub=-1,那么就會對負樣本采樣800個,用于湊足1000個,但是如果設置為neg_pos_ub比例,例如1.5,那么負樣本最多采樣個,最終返回的樣本實際上不夠1000個。默認情況neg_pos_ub=-1。

由于rcnn head的輸入是rpn head的輸出,在網絡訓練前期,rpn無法輸出大量高質量樣本,故為了平衡和穩定rcnn訓練過程,通常會對rcnn head部分添加gt作為proposal。因此,上述兩個采樣器還有一個參數add_gt_as_proposals。

3、SSD

論文:SSD: Single Shot MultiBox Detector

SSD是最典型的多尺度預測結構,是非常早期的網絡。

60044ffa-50da-11ed-a3b6-dac502259ad0.png

可以通過如下網絡結構對比圖,大致理解SSD解決多尺度問題的思路與其他網絡的區別。

60245d7c-50da-11ed-a3b6-dac502259ad0.png

左側:僅在一種尺度的特征圖上進行檢測,例如Faster rcnn。右側:在多種尺度特征上進行檢測,例如SSD。

1)SSD核心設計思路[^9]:

(1)采用多尺度特征圖用于檢測

所謂多尺度采用大小不同的特征圖(feature map),CNN網絡一般前面的特征圖比較大,后面會逐漸采用stride=2的卷積或者pool來降低特征圖大小。

下圖所示,一個比較大的特征圖和一個比較小的特征圖,他們都用來做檢測。這樣做的好處是:比較大的特征圖用來檢測相對較小的目標,而小的特征圖負責檢測大目標,的特征圖可以劃分更多的單元,但是其每個單元的default box尺度比較小。

6030b568-50da-11ed-a3b6-dac502259ad0.png

左側:的特征圖上設置尺寸小的先驗框。右側:的特征圖上設置尺寸大的先驗框

特別注意:上述兩個特征圖尺寸是不一樣的,的尺寸比的尺寸大,但是,的特征圖中每個小格子,即feature map cell的感受野都比小,即,每個小格子映射回原圖時對應的圖片區域。一塊區域就可以看做一組特征。然后對這些特征進行分類和回歸。

(2)采用卷積進行檢測

SSD直接采用卷積對不同的特征圖來進行提取檢測結果。對于形狀為的特征圖,只需要采用這樣比較小的卷積核得到檢測值。此處主要是與yolo最后采用全連接層的方式進行對比。

(3)設置先驗框(default boxes)

SSD借鑒了Faster R-CNN中anchor的理念,每個單元設置尺度或者長寬比不同的先驗框(default boxes),預測的邊界框(bounding boxes)是以這些先驗框為基準的,在一定程度上減少訓練難度。

一般情況下,每個單元會設置多個先驗框,其尺度和長寬比存在差異,如下圖所示,可以看到每個單元使用了4個不同的default boxes(SSD中不同尺度的特征圖可以設置不同個數的先驗框),圖片中貓和狗分別采用最適合它們形狀的先驗框來進行訓練,后面會詳細講解訓練過程中的先驗框匹配原則。

605b89be-50da-11ed-a3b6-dac502259ad0.png

如上圖所示,在不同尺度的特征圖上設置不同尺度和長寬比的先驗框

每一個feature map中的每一個小格子(cell)都包含多個default box,同時每個box對應loc(位置坐標)和conf(每個種類的得分)。

default box長寬比例默認有四個六個:四個default box是長寬比(aspect ratios)為(1:1)、(2:1)、(1:2)、(1:1);六個則是添加了(1:3)、(3:1)。

為什么會有兩個(1:1)呢?

這時候就要講下論文中Choosing scales and aspect ratios for default boxes這段內容了。作者認為不同的feature map應該有不同的比例(一個大框一個小框,長寬比相同,但是不同feature map 相對于原圖的尺寸比例不同)。這是什么意思呢?代表的是default box中這個1在原圖中的尺寸是多大的

(4)計算先驗框min_sizes和max_sizes的方式

對于先驗框的尺度,其遵守一個線性遞增規則:隨著特征圖大小降低,先驗框尺度線性增加。計算公式如下所示:

****即代表在300*300輸入中的比例,表示第k層feature map上生成的先驗框大小相對于圖片的比例。

****代表的是特征圖索引

為當前的網絡結構中可以生成先驗框的feature map層數。特別注意:,因為一共有6個feature map,但是第一層(Conv4_3層)是單獨設置的。

代表的是第一層和最后一層所占的比例,比例的最小值和最大值,在ssd300中為0.2-0.9。

實際上是:對于第一個特征圖Conv4_3,其先驗框的尺度比例一般設置為 ,故第一層的。輸入是300,故conv4_3的min_size=30。對于從第二層開始的特征圖,則利用上述公式進行線性增加,然后再乘以圖片大小,可以得到各個特征圖的尺度為60、111、162、213、264。最后一個特征圖conv9_2的size是直接計算的,。 以上計算可得每個特征的min_size和max_size,如下:

6087abac-50da-11ed-a3b6-dac502259ad0.png

具體實現代碼:ssd_pascal.py 下圖注釋中提到的博客:關于SSD默認框產生的詳細解讀

6091798e-50da-11ed-a3b6-dac502259ad0.png

接下來,補充回答為什么default box的size有兩個(1:1)[^9]?

作者在這有引入了一個,也就是每個特征圖都設置了兩個長寬比為1大小不同的正方形default box。有的小伙伴可能會有疑問,這有了則需要多出來一部分的啊,是的沒錯,最后一個特征圖需要參考來計算,因此每個特征圖(的每個cell)都有6個default box(aspect ratios),但是在實現時, Conv4_3,Conv10_2,Conv11_2僅僅使用4個先驗框(default box),不使用長寬比為的先驗框(default box)。作者的代碼中就添加了兩層,第一層取0.1最后一層取1

那么S怎么用呢?按如下方式計算先驗框的寬高(這里的Sk是上面求得的各個特征圖的先驗框的實際size,不再是尺度比例):

ar代表的是之前提到的先驗框default box(aspect ratios)比例,即

對于先驗框default box中心點的值取值為:

其中i,j代表在feature map中的水平和垂直的第幾格。

fk代表的是feature map的size。

每個單元的先驗框中心點分布在各單元的中心。

(5)計算先驗框的大小的方式

下圖所示為每個cell生成4個先驗框的方法,生成6個先驗框的方式類似,只需要增加1:3和3:1兩個比例的矩形框即可。

60c4bf2e-50da-11ed-a3b6-dac502259ad0.jpg

如上圖所示,先驗框計算方式

2)正負樣本的定義

SSD采用的正負樣本定義器依然是MaxIoUAssigner,但是由于參數設置不一樣,故有了不同的解釋。

60d4448a-50da-11ed-a3b6-dac502259ad0.png

正負樣本定義規則為[^2]:

(1)正樣本的生成:

anchor和某個GT的最大iou大于0.5,則認為是正樣本。

GT和所有anchor的最大iou值,如果大于0.0,則認為該最大iou anchor是正樣本。

(2)負樣本的生成:

anchor和所有GT的iou都小于0.5,則認為是負樣本。

沒有忽略樣本,即每個GT一定會和某個anchor匹配上,不可能存在GT沒有anchor匹配的情況。

3)正負樣本的采樣

盡管一個ground truth可以與多個先驗框匹配,但是ground truth相對于先驗框還是太少了,所以負樣本會很多。為保證正負樣本盡量均衡,SSD采用了hard negative mining,先將每一個物體位置上對應 predictions(default boxes)是 negative 的 boxes 進行排序,按照先驗框的confidence的大小。 選擇最高的幾個,保證最后 negatives、positives 的比例接近3:1。

4、FPN

論文:Feature Pyramid Networks for Object Detection

下圖展示了4種利用特征的形式:(a)圖像金字塔,即將圖像做成不同的scale,然后不同scale的圖像生成對應的不同scale的特征。這種方法的缺點在于增加了時間成本。有些算法會在測試時候采用圖像金字塔。(b)像SPPnet,Fast RCNN,Faster RCNN是采用這種方式,即僅采用網絡最后一層的特征。(c)像SSD(Single Shot Detector)采用這種多尺度特征融合的方式,沒有上采樣過程,即從網絡不同層抽取不同尺度的特征做預測,這種方式不會增加額外的計算量。作者認為SSD算法中沒有用到足夠低層的特征(在SSD中,最低層的特征是VGG網絡的conv4_3),而在作者看來足夠低層的特征對于檢測小物體是很有幫助的。(d)本文作者是采用這種方式,頂層特征通過上采樣和低層特征做融合,而且每層都是獨立預測的。

60de3d14-50da-11ed-a3b6-dac502259ad0.png

FPN主要解決的是物體檢測中的多尺度問題,通過簡單的網絡連接改變,在基本不增加原有模型計算量的情況下,大幅度提升了小物體檢測的性能。通過高層特征進行上采樣和低層特征進行自頂向下的連接,而且每一層都會進行預測。

FPN算法大致結構:一個自底向上的線路,一個自頂向下的線路,橫向連接(lateral connection)。下圖中放大的區域就是橫向連接,這里的卷積核的主要作用是減少卷積核的個數,也就是減少了feature map的個數,并不改變feature map的尺寸大小。

612a53e8-50da-11ed-a3b6-dac502259ad0.png

如上圖所示,FPN+RPN結構

在橫向連接中,采用的卷積核進行連接(減少特征圖數量)。將FPN和RPN結合起來,那RPN的輸入就會變成多尺度的feature map,那我們就需要在金字塔的每一層后邊都接一個RPN head(一個卷積,兩個卷積),如下圖所示.其中,P6是通過P5下采樣得到的。

613dab64-50da-11ed-a3b6-dac502259ad0.jpg

1)設置先驗框(default boxes)

在生成anchor的時候,因為輸入是多尺度特征,就不需要再對每層都使用3種不同尺度的anchor了,所以在每一個scale層,都定義了不同大小的anchor。對于P2,P3,P4,P5,P6這些層,定義anchor的大小為、、、、,另外每個scale層都有3個長寬對比度:1:2,1:1,2:1。所以整個特征金字塔有15種anchor,如上圖所示。

anchor的正負樣本定義和Faster R-CNN中的定義相同,即如果某個anchor和GT有最大的IoU,或者IoU大于0.7,那這個anchor就是正樣本,如果IoU小于0.3,那就是負樣本。此外,需要注意的是每層的RPN head都參數共享的。

但是,生成的anchor(注意:此時的anchor已經經歷了一輪篩選)如何確定映射到哪一個特征圖上呢?這是有公式計算的,如下圖:

表示映射到哪一層的作為特征層傳入到ROI Pooling層中。是基準值,設置為4。和表示RPN給出的Region Proposal的寬和高。此處的224是在ImageNet上訓練時resize的大小。

例如,和都是112,則(值做取整處理),對應P3特征層和Region Proposal傳入到ROI Pooling,得到一個尺寸為的特征,再經過flatten之后輸入到全連接層。

614f3d70-50da-11ed-a3b6-dac502259ad0.png

2)正負樣本的定義

如1)所述,正負樣本的界定和Faster RCNN差不多:如果某個anchor和一個給定的ground truth有最高的IOU或者和任意一個Ground truth的IOU都大于0.7,則是正樣本。如果一個anchor和任意一個ground truth的IOU都小于0.3,則為負樣本。

5、FCOS

論文:FCOS: Fully Convolutional One-Stage Object Detection

本文提出一種基于像素級預測一階全卷積目標檢測(FCOS)來解決目標檢測問題,類似于語義分割。目前大多數先進的目標檢測模型,例如RetinaNet、SSD、YOLOv3、Faster R-CNN都依賴于預先定義的錨框。相比之下,本文提出的FCOS是anchor free,而且也是proposal free,就是不依賴預先定義的錨框或者提議區域。通過去除預先定義的錨框,FCOS完全的避免了關于錨框的復雜運算,例如訓練過程中計算重疊度,而且節省了訓練過程中的內存占用。更重要的是,本文避免了和錨框有關且對最終檢測結果非常敏感的所有超參數。由于后處理只采用非極大值抑制(NMS),所以本文提出的FCOS比以往基于錨框的一階檢測器具有更加簡單的優點[^10]。

FCOS的骨架和neck部分是標準的resnet+FPN結構,和Retinanet完全相同6177cd08-50da-11ed-a3b6-dac502259ad0.png

我們僅僅考慮head部分。除去center-ness分支,則可以看出和retinanet完全相同。

1)錨框(anchor-based)缺點

超參數設置難度大:檢測表現效果對于錨框的尺寸、長寬比、數目非常敏感,因此錨框相關的超參數需要仔細的調節。

anchor的設置缺乏靈活性:錨框的尺寸和長寬比是固定的,因此,檢測器在處理形變較大的候選對象時比較困難,尤其是對于小目標。預先定義的錨框還限制了檢測器的泛化能力,因為,它們需要針對不同對象大小或長寬比進行設計。

容易產生正負樣本不平衡問題:為了提高召回率,需要在圖像上放置密集的錨框。而這些錨框大多數屬于負樣本,這樣造成了正負樣本之間的不均衡。

計算量大:大量的錨框增加了在計算交并比時計算量和內存占用。

2)正負樣本的定義

作為Anchor-free的方法,FCOS直接對feature map中每個位置對應原圖的邊框都進行回歸,如果位置 (x,y) 落入任何真實邊框,就認為它是一個正樣本,它的類別標記為這個真實邊框的類別[^11]。可以理解為他是基于物體的一個key point點進行回歸的。在實際的anchor-free中也會遇到一些問題,為了解決這些問題,FCOS做了如下工作:

1)為了解決anchor-free的方式在真實邊框重疊帶來的模糊性和低召回率(不像anchor-based可以有多重不同尺寸的anchor),FCOS采用類似FPN中的多級檢測,就是在不同級別的特征層檢測不同尺寸的目標。

2)為了解決距離目標中心較遠的位置產生很多低質量的預測邊框,FCOS提出了一種簡單而有效的策略來抑制這些低質量的預測邊界框,而且不引入任何超參數。具體來說,FCOS添加單層分支,與分類分支并行,以預測"Center-ness",可以這這個理解成為一個度量值,于中心距離的一個度量值,與中心點較遠,則度量值較低,與中心點越近,度量值越高,以此來讓置信度更高的像素產生更高的貢獻。

正負樣本匹配方式的實現:

1、分配目標給哪一層預測。 根據目標的尺寸將目標分配到不同的特征層上進行預測。

具體實現:引入了min_size和max_size,具體設置是0, 64, 128, 256, 512和無窮大。例如,對于輸出的第一個預測層而言,其stride=8,負責最小尺度的物體,對于該層上面的任何一個點,如果有GT bbox映射到特征圖上,滿足0 < max(中心點到4條邊的距離) < 64,那么該GT bbox就屬于第1層負責,其余層也是采用類似原則。

總結來說就是第1層負責預測尺度在0~ 64范圍內的GT,第2層負責預測尺度在64~128范圍內的GT,以此類推。通過該分配策略就可以將不同大小的GT分配到最合適的預測層進行學習。

2、確定正負樣本區域。 對于每一層feature map,設定一個以GT中心為圓心,固定半徑的圓,如果像素落在該圓內,則標記為positive樣本,否則為negative。

具體實現:通過center_sample_radius**(基于當前stride參數)**參數,確定在半徑范圍內的樣本都屬于正樣本區域,其余區域作為負樣本。默認配置center_sample_radius=1.5。例如,第1層的stride=8,那么在該輸出層上,對于任何一個GT,基于GT bbox中心點為起點,在半徑為個像素范圍內點都屬于正樣本區域。

3、centerness找到目標的中心點。 為了使靠近GT中心的像素能學到更多的信息,故給予他更高的權重,而離GT中心越遠的點,貢獻則遞減。

具體實現:使得離目標中心越近,輸出值越大,反之越小。Center-ness的定義如下公式:

可見最中心的點的centerness為1,距離越遠的點,centerness的值越小。在推測的時候直接將中心度分數centerness乘到分類分數上,將偏離很遠的檢測框分值進行懲罰。

center-ness本質就是對正樣本區域按照距離GT bbox中心來設置權重,這是作者的做法,還有很多類似做法,不過有些是在Loss上面做文章,例如在ce loss基礎上乘上一個類似預center-ness的權重來實現同樣效果。

center-ness效果如下:

3)總結:

FCOS采用物體center的匹配方式來進行回歸,在正負樣本匹配的時候,采用了top-k的策略進行匹配,并且使用centerness來對不同距離的匹配樣本進行不同程度的懲罰,以達到資源傾斜于貢獻最佳者的目的。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6892

    瀏覽量

    88828
  • 網絡
    +關注

    關注

    14

    文章

    7517

    瀏覽量

    88628

原文標題:目標檢測算法是如何生成正負樣本的(一)

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    百度飛槳PP-YOLOE ONNX 在LabVIEW中的部署推理(含源碼)

    PP-YOLOE是百度基于其之前的PP-YOLOv2所改進的卓越的單階段Anchor-free模型,超越了多種流行的YOLO模型。如何使用python進行該模型的部署,官網已經介紹的很清楚了,但是
    的頭像 發表于 05-26 14:01 ?967次閱讀
    百度飛槳PP-YOLOE ONNX 在LabVIEW中的部署推理(含源碼)

    同種類的二極管如何替換

    同種類的二極管如何替換 1、檢波二極管的代換  檢波二極管損壞后,若無
    發表于 01-13 14:44 ?1w次閱讀

    同種類激光在醫療行業的應用分析

    隨著激光醫 療的越來越廣泛,人們對于各種激光醫療的種類看的眼花繚亂,被一些廣告忽悠的以為一種激光就是萬能的,能夠治療各種疾病。事實卻是各種不同種類的激光所對 應的激光醫療是有所不同的。不同波長,不同形式的激光所擅長的醫療方面也是一樣的。下面就針對一些
    發表于 02-13 02:40 ?3881次閱讀

    介紹一篇實時性好準確率高的論文:CornerNet-Lite

    CornetNet 在 ECCV 2018 (oral)上橫空出世,引領一波基于關鍵點的目標檢測狂潮(最近anchor-free盛行),但這類算法(很多one-stage)也有缺點。雖然mAP有很大
    的頭像 發表于 04-23 10:50 ?9607次閱讀
    介紹一篇實時性好準確率高的論文:CornerNet-Lite

    卷積神經網絡 物體檢測 YOLOv2

    Convolution with Anchor Boxer - 加Anchor機制:YOLO是通過最后的全連接層直接預估絕對坐標,而FasterRCNN是通過卷積層預估相對坐標,作者認為這樣更容易學習,因此YOLOv2去掉了全連接層,在最后一層卷積層下采樣后用
    的頭像 發表于 04-17 15:51 ?3251次閱讀

    YOLO的另一選擇,手機端97FPS的Anchor-Free目標檢測模型NanoDet

    華為P30上用NCNN移植跑benchmark,每幀僅需10.23毫秒,比yolov4-tiny快3倍,參數量小6倍,COCO mAP(0.5:0.95)能夠達到20.6 。而且模型權...
    的頭像 發表于 12-08 22:42 ?954次閱讀

    嵌入式AI快訊:移植ncnn到RISC-V TF Object Detection支持TF2

    1. NanoDet:輕量級(1.8MB)、超快速(移動端97fps)目標檢測項目 近日,GitHub 上出現了一個項目 nanodet,它開源了一個移動端實時的 Anchor-free 檢測模型
    的頭像 發表于 12-23 11:25 ?4959次閱讀
    嵌入式AI快訊:移植ncnn到RISC-V TF Object Detection支持TF2

    同種類電容的失效分析資料下載

    電子發燒友網為你提供不同種類電容的失效分析資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-01 08:57 ?17次下載
    不<b class='flag-5'>同種類</b>電容的失效分析資料下載

    基于深度學習的發動機零件檢測算法

    anchor方案通過對比k- meansⅡ和CURE聚類算法生成 anchor對檢測結果的影響,提出了基于聚類生成 anchor方案的 Faster R-CNN的零件表面缺陷檢測
    發表于 06-03 14:51 ?19次下載

    解讀目標檢測中的框位置優化

    anchor-based(Faster RCNN)、anchor-free(CornerNet)的方法。 本文主要從目標框位置優化的角度來介紹目標檢測領域的相關工作。框位置優化主要可以分為以下幾個
    的頭像 發表于 06-21 17:40 ?2518次閱讀
    解讀目標檢測中的框位置優化

    CVPR2020 | MAL:聯合解決目標檢測中的定位與分類問題,自動選擇最佳anchor

    本文是收錄于CVPR2020的工作,其實文章在去年就掛在了網上,整體思路還算不錯。具體來說,本文提出Multiple Anchor Learning(MAL),是...
    發表于 01-26 19:50 ?0次下載
    CVPR2020 | MAL:聯合解決目標檢測中的定位與分類問題,自動選擇最佳<b class='flag-5'>anchor</b>

    NanoDet Anchor-Free目標檢測模型

    ./oschina_soft/nanodet.zip
    發表于 06-16 11:24 ?1次下載
    NanoDet <b class='flag-5'>Anchor-Free</b>目標檢測模型

    基于AX650N部署DETR

    )作為特征提取的Backbone,然后使用手工組件Anchor-Base(Faster-RCNN、SSD、YOLOv1-v7)或者Anchor-Free(YOLOv8、YOLOX)加上非最大抑制
    的頭像 發表于 05-15 14:27 ?812次閱讀
    基于AX650N部署DETR

    Anchor的目標檢測算法邊框回歸策略

    導讀 本文主要講述:1.無Anchor的目標檢測算法:YOLOv1,CenterNet,CornerNet的邊框回歸策略;2.有Anchor的目標檢測算法:SSD,YOLOv2,Fas
    的頭像 發表于 07-17 11:17 ?1031次閱讀
    無<b class='flag-5'>Anchor</b>的目標檢測<b class='flag-5'>算法</b>邊框回歸策略

    基于Yolov5+圖像分割的車牌實時檢測識別系統

    YOLO算法從總體上看,是單階段端到端的基于anchor-free的檢測算法。將圖片輸入網絡進行特征提取與融合后,得到檢測目標的預測框位置以及類概率。而YOLOv5相較前幾代YOLO算法
    發表于 07-18 14:32 ?2855次閱讀
    基于Yolov5+圖像分割的車牌實時檢測識別系統