欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

不同種類的anchor-based和anchor-free的相關(guān)算法

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

前言

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

一、正負(fù)樣本的概念

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

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

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

二、為什么要進(jìn)行正負(fù)樣本采樣?

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

提高網(wǎng)絡(luò)收斂速度和精度:對于目標(biāo)檢測算法,主要需要關(guān)注的是對應(yīng)著真實物體的 正樣本 ,在訓(xùn)練時會根據(jù)其loss來調(diào)整網(wǎng)絡(luò)參數(shù)。相比之下, 負(fù)樣本對應(yīng)著圖像的背景,如果有大量的負(fù)樣本參與訓(xùn)練,則會淹沒正樣本的損失,從而降低網(wǎng)絡(luò)收斂的效率與檢測精度。

三、anchor-free和anchor-based

二者的區(qū)別在于是否利用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算法訓(xùn)練過程:[^3]:

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

由于PNet輸入是一個大小的圖片,所以訓(xùn)練前需要把生成的訓(xùn)練數(shù)據(jù)(通過生成bounding box,然后把該bounding box 剪切成大小的圖片),轉(zhuǎn)換成的結(jié)構(gòu)。其他網(wǎng)絡(luò)輸入尺寸如下圖所示:

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

1)正負(fù)樣本的定義

訓(xùn)練數(shù)據(jù)可以通過和GT的 IOU 的計算生成一系列的 bounding box??梢酝ㄟ^滑動窗口或者隨機(jī)采樣的方法獲取訓(xùn)練數(shù)據(jù),訓(xùn)練數(shù)據(jù)分為三種正樣本,負(fù)樣本,中間樣本[^4]。

正樣本:IOU > 0.65部分樣本:0.4 < IOU < 0.65負(fù)樣本: IOU < 0.3

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

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

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

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

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

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

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

訓(xùn)練樣本包含:正樣本,負(fù)樣本,部分樣本,關(guān)鍵點樣本。比例為 1 : 3 : 1 : 2

訓(xùn)練主要包括三個任務(wù):

人臉分類任務(wù):利用正樣本和負(fù)樣本進(jìn)行訓(xùn)練,

人臉邊框回歸任務(wù):利用正樣本和部分樣本進(jìn)行訓(xùn)練,

關(guān)鍵點檢測任務(wù):利用關(guān)鍵點樣本進(jìn)行訓(xùn)練。

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

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

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

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

2、Faster rcnn

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

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

算法整體結(jié)構(gòu)

1)Anchor概念

Anchor(錨框):

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

為什么要引入Anchor呢?

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

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

如何生成Anchor呢?

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

從圖片到卷積特征圖

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

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

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

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

原始圖片的錨點中心

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

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

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

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

faster rcnn中正負(fù)樣本是根據(jù)anchors的標(biāo)定規(guī)則來生成的。

(1)正樣本的生成:

如果某個anchor和其中一個GT的最大iou大于pos_iou_thr,那么該anchor就負(fù)責(zé)對應(yīng)的GT;

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

(2)負(fù)樣本的生成:

如果anchor和GT的iou低于neg_iou_thr的,那就是負(fù)樣本,其應(yīng)該包括大量數(shù)目;

其余的anchor全部當(dāng)做忽略區(qū)域,不計算梯度。

該最大分配策略,可以盡最大程度的保證每個GT都有合適的高質(zhì)量anchor進(jìn)行負(fù)責(zé)預(yù)測。

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

RPN中正負(fù)樣本定義

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

RCNN中正負(fù)樣本定義

3)正負(fù)樣本的采樣

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

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

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函數(shù)中各個參數(shù)具體含義:

num表示采樣后樣本總數(shù),包括正負(fù)和忽略樣本。

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

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

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

3、SSD

論文:SSD: Single Shot MultiBox Detector

SSD是最典型的多尺度預(yù)測結(jié)構(gòu),是非常早期的網(wǎng)絡(luò)。

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

可以通過如下網(wǎng)絡(luò)結(jié)構(gòu)對比圖,大致理解SSD解決多尺度問題的思路與其他網(wǎng)絡(luò)的區(qū)別。

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

左側(cè):僅在一種尺度的特征圖上進(jìn)行檢測,例如Faster rcnn。右側(cè):在多種尺度特征上進(jìn)行檢測,例如SSD。

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

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

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

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

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

左側(cè):的特征圖上設(shè)置尺寸小的先驗框。右側(cè):的特征圖上設(shè)置尺寸大的先驗框

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

(2)采用卷積進(jìn)行檢測

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

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

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

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

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

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

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

default box長寬比例默認(rèn)有四個六個:四個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這段內(nèi)容了。作者認(rèn)為不同的feature map應(yīng)該有不同的比例(一個大框一個小框,長寬比相同,但是不同feature map 相對于原圖的尺寸比例不同)。這是什么意思呢?代表的是default box中這個1在原圖中的尺寸是多大的。

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

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

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

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

為當(dāng)前的網(wǎng)絡(luò)結(jié)構(gòu)中可以生成先驗框的feature map層數(shù)。特別注意:,因為一共有6個feature map,但是第一層(Conv4_3層)是單獨設(shè)置的。

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

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

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

具體實現(xiàn)代碼:ssd_pascal.py 下圖注釋中提到的博客:關(guān)于SSD默認(rèn)框產(chǎn)生的詳細(xì)解讀

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

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

作者在這有引入了一個,也就是每個特征圖都設(shè)置了兩個長寬比為1大小不同的正方形default box。有的小伙伴可能會有疑問,這有了則需要多出來一部分的啊,是的沒錯,最后一個特征圖需要參考來計算,因此每個特征圖(的每個cell)都有6個default box(aspect ratios),但是在實現(xiàn)時, 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)正負(fù)樣本的定義

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

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

正負(fù)樣本定義規(guī)則為[^2]:

(1)正樣本的生成:

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

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

(2)負(fù)樣本的生成:

anchor和所有GT的iou都小于0.5,則認(rèn)為是負(fù)樣本。

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

3)正負(fù)樣本的采樣

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

4、FPN

論文:Feature Pyramid Networks for Object Detection

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

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

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

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

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

如上圖所示,F(xiàn)PN+RPN結(jié)構(gòu)

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

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

1)設(shè)置先驗框(default boxes)

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

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

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

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

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

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

2)正負(fù)樣本的定義

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

5、FCOS

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

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

FCOS的骨架和neck部分是標(biāo)準(zhǔn)的resnet+FPN結(jié)構(gòu),和Retinanet完全相同。6177cd08-50da-11ed-a3b6-dac502259ad0.png

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

1)錨框(anchor-based)缺點

超參數(shù)設(shè)置難度大:檢測表現(xiàn)效果對于錨框的尺寸、長寬比、數(shù)目非常敏感,因此錨框相關(guān)的超參數(shù)需要仔細(xì)的調(diào)節(jié)。

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

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

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

2)正負(fù)樣本的定義

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

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

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

正負(fù)樣本匹配方式的實現(xiàn):

1、分配目標(biāo)給哪一層預(yù)測。 根據(jù)目標(biāo)的尺寸將目標(biāo)分配到不同的特征層上進(jìn)行預(yù)測。

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

總結(jié)來說就是第1層負(fù)責(zé)預(yù)測尺度在0~ 64范圍內(nèi)的GT,第2層負(fù)責(zé)預(yù)測尺度在64~128范圍內(nèi)的GT,以此類推。通過該分配策略就可以將不同大小的GT分配到最合適的預(yù)測層進(jìn)行學(xué)習(xí)。

2、確定正負(fù)樣本區(qū)域。 對于每一層feature map,設(shè)定一個以GT中心為圓心,固定半徑的圓,如果像素落在該圓內(nèi),則標(biāo)記為positive樣本,否則為negative。

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

3、centerness找到目標(biāo)的中心點。 為了使靠近GT中心的像素能學(xué)到更多的信息,故給予他更高的權(quán)重,而離GT中心越遠(yuǎn)的點,貢獻(xiàn)則遞減。

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

可見最中心的點的centerness為1,距離越遠(yuǎn)的點,centerness的值越小。在推測的時候直接將中心度分?jǐn)?shù)centerness乘到分類分?jǐn)?shù)上,將偏離很遠(yuǎn)的檢測框分值進(jìn)行懲罰。

center-ness本質(zhì)就是對正樣本區(qū)域按照距離GT bbox中心來設(shè)置權(quán)重,這是作者的做法,還有很多類似做法,不過有些是在Loss上面做文章,例如在ce loss基礎(chǔ)上乘上一個類似預(yù)center-ness的權(quán)重來實現(xiàn)同樣效果。

center-ness效果如下:

3)總結(jié):

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7184

    瀏覽量

    89723
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7601

    瀏覽量

    89313

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

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    同種類的二極管如何替換

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

    同種類激光在醫(yī)療行業(yè)的應(yīng)用分析

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

    介紹一篇實時性好準(zhǔn)確率高的論文:CornerNet-Lite

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

    卷積神經(jīng)網(wǎng)絡(luò) 物體檢測 YOLOv2

    Convolution with Anchor Boxer - 加Anchor機(jī)制:YOLO是通過最后的全連接層直接預(yù)估絕對坐標(biāo),而FasterRCNN是通過卷積層預(yù)估相對坐標(biāo),作者認(rèn)為這樣更容易學(xué)習(xí),因此YOLOv2去掉了全連接層,在最后一層卷積層下采樣后用
    的頭像 發(fā)表于 04-17 15:51 ?3307次閱讀

    YOLO的另一選擇,手機(jī)端97FPS的Anchor-Free目標(biāo)檢測模型NanoDet

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

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

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

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

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

    基于深度學(xué)習(xí)的發(fā)動機(jī)零件檢測算法

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

    解讀目標(biāo)檢測中的框位置優(yōu)化

    anchor-based(Faster RCNN)、anchor-free(CornerNet)的方法。 本文主要從目標(biāo)框位置優(yōu)化的角度來介紹目標(biāo)檢測領(lǐng)域的相關(guān)工作??蛭恢脙?yōu)化主要可以分為以下幾個
    的頭像 發(fā)表于 06-21 17:40 ?2631次閱讀
    解讀目標(biāo)檢測中的框位置優(yōu)化

    CVPR2020 | MAL:聯(lián)合解決目標(biāo)檢測中的定位與分類問題,自動選擇最佳anchor

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

    NanoDet Anchor-Free目標(biāo)檢測模型

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

    基于AX650N部署DETR

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

    Anchor的目標(biāo)檢測算法邊框回歸策略

    導(dǎo)讀 本文主要講述:1.無Anchor的目標(biāo)檢測算法:YOLOv1,CenterNet,CornerNet的邊框回歸策略;2.有Anchor的目標(biāo)檢測算法:SSD,YOLOv2,F(xiàn)as
    的頭像 發(fā)表于 07-17 11:17 ?1155次閱讀
    無<b class='flag-5'>Anchor</b>的目標(biāo)檢測<b class='flag-5'>算法</b>邊框回歸策略

    基于Yolov5+圖像分割的車牌實時檢測識別系統(tǒng)

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