目標(biāo)檢測(cè)已經(jīng)有了長(zhǎng)足的發(fā)展,總體來說根據(jù)階段個(gè)數(shù),可以劃分為Two-stage(Faster RCNN)、one-stage(SSD) 或者E2E(DETR)。根據(jù)是否基于anchor先驗(yàn),可以劃分為anchor-based(Faster RCNN)、anchor-free(CornerNet)的方法。 本文主要從目標(biāo)框位置優(yōu)化的角度來介紹目標(biāo)檢測(cè)領(lǐng)域的相關(guān)工作??蛭恢脙?yōu)化主要可以分為以下幾個(gè)方面
By XYWH,這是指通過優(yōu)化與ground truth的中心點(diǎn)坐標(biāo)值、寬和高的值來實(shí)現(xiàn)目標(biāo)框位置的優(yōu)化
By keypoint,這是指通過優(yōu)化關(guān)鍵點(diǎn)的方式來找到目標(biāo)框的位置
By LRBT,這是指通過優(yōu)化與ground truth 四條邊之間的距離的方式來實(shí)現(xiàn)目標(biāo)框位置的優(yōu)化
By IoU,這是指通過最大化與GT計(jì)算得到的IoU來優(yōu)化目標(biāo)框的位置
uncertainty,解決目標(biāo)檢測(cè)框真值的邊界不確定性
01
Optimize by XYWH
定義
優(yōu)化目標(biāo)為預(yù)測(cè)bbox的中心點(diǎn)坐標(biāo)(x,y)和寬高(width, height)與對(duì)應(yīng)真值的差距盡可能的小。 接下來我們以Faster RCNN為例介紹該方法。
思路
基于Anchor的先驗(yàn),我們可以得知每個(gè)proposal的大概位置??紤]到利用Anchor的先驗(yàn)信息,作者使得預(yù)測(cè)框到anchor的距離和與子匹配的GT框到anchor的距離盡可能的相似。距離:XYWH的差值。
匹配方法
1、代表和的IoU值;大于指定閾值,代表i和j之間具有匹配關(guān)系 2、對(duì)應(yīng)最大IoU的;如第一步j(luò)沒有得到任何匹配,則在此步,i和j具備匹配關(guān)系
優(yōu)化公式
上述是Faster RCNN的優(yōu)化目標(biāo)函數(shù),我們的目標(biāo)就是讓盡可能的逼近,之間的優(yōu)化函數(shù)可以選擇L2,or L1 作者這里使用了Smooth L1
Q&A
為什么是SmoothL1?A: smooth L1 在 x 較小時(shí),對(duì) x 的梯度也會(huì)變小,而在 x 很大時(shí),對(duì) x 的梯度的絕對(duì)值達(dá)到上限 1,也不會(huì)太大以至于破壞網(wǎng)絡(luò)參數(shù)。smooth L1 可以避開 L1 和 L2 損失的缺陷。
為什么要除?A: 消除不同anchor大小帶來的影響,相當(dāng)于歸一化為什么w和h的優(yōu)化要以log的形式進(jìn)行?A: target(H和W)是學(xué)習(xí)一個(gè)放縮的尺度,因此尺度值需要大于0,因此需要使用exp,對(duì)應(yīng)的這里為log函數(shù)
02
Optimize by Keypoint
定義
優(yōu)化目標(biāo)為找到物體的兩個(gè)關(guān)鍵點(diǎn):左上點(diǎn)和右下點(diǎn)。核心為一個(gè)semantic segmentation問題。 接下來我們以Corner Net為例介紹該方法。
思路
不同于基于Anchor的方法,本方法需要先識(shí)別關(guān)鍵點(diǎn)在圖中的位置。由于在pooling過程中會(huì)引入左邊的誤差,所以需要再針對(duì)每個(gè)關(guān)鍵點(diǎn)預(yù)測(cè)一個(gè)offset。
Q&A
如何訓(xùn)練和預(yù)測(cè)關(guān)鍵點(diǎn)?一個(gè)點(diǎn)一個(gè)pixelA:作者使用2D Gaussian來生成,如下圖所示,針對(duì)每個(gè)pixel,生成一個(gè)半徑大小為r的圓形Gaussian分布。半徑r的大小是自適應(yīng)的。
半徑r是通過下圖所示的三種方式計(jì)算得到的最小值
若一個(gè)pixel對(duì)應(yīng)了多個(gè)Gaussian分布的值,選擇最大的。如何根據(jù)top-left和bottom-right關(guān)鍵點(diǎn)兩兩組合形成最終的bbox?A:作者提出針對(duì)每個(gè)keypoint 預(yù)測(cè)一個(gè)embedded vector,當(dāng)top_left和bottom_left的embedded vector相似度大于一定閾值的時(shí)候則認(rèn)為他們是描述的同一個(gè)bbox。則形成一個(gè)bboxkeypoint往往落在物體的外部,對(duì)應(yīng)位置的特征可能不能很好表征物體,會(huì)增加識(shí)別關(guān)鍵點(diǎn)的難度。A:作者提出了CornerPooling,其結(jié)構(gòu)如下圖所示
優(yōu)化公式
綜上所述,在該方式中,我們需要以下三個(gè)優(yōu)化目標(biāo) 1、關(guān)鍵點(diǎn)的分類,可以看成一個(gè)語(yǔ)義分割任務(wù),作者采用了focal loss的變種,如下圖所示
2、每個(gè)關(guān)鍵點(diǎn)的offset預(yù)測(cè),每個(gè)關(guān)鍵點(diǎn)offset的真值如下式所示。作者采用smooth l1去優(yōu)化
3、每個(gè)關(guān)鍵點(diǎn)的embedded vector預(yù)測(cè),作者使用下式來優(yōu)化embedded vector。讓屬于同一個(gè)物體的vector相似,不屬于同一個(gè)物體的不相似
整體訓(xùn)練&推理流程
整個(gè)cornernet 的訓(xùn)練和推理流程如下圖所示
03
Optimize by LRBT上述基于關(guān)鍵點(diǎn)回歸的方法有幾個(gè)缺點(diǎn) 1、容易產(chǎn)生ghost bbox,這是由于tl br的embedded 相似度的確較高產(chǎn)生的 2、后處理的時(shí)候,若關(guān)鍵點(diǎn)較多,復(fù)雜度較高。為K^2的復(fù)雜度。 為了解決該問題,作者提出了基于LRBT的優(yōu)化方式
定義
優(yōu)化目標(biāo)為物體的“中心點(diǎn)”距離四條邊的距離
接下來我們以FCOS為例介紹該方法。
思路
在feature map上找到每個(gè)“中心點(diǎn)”,針對(duì)每個(gè)中心點(diǎn)預(yù)測(cè)和他對(duì)應(yīng)的框的四個(gè)值。
Q&A
1、如何定義“中心點(diǎn)” A:我們需要找到特征圖上每個(gè)location(pixel)和gt_bbox的匹配關(guān)系,然后將匹配到的gt_bbox作為真值。 匹配關(guān)系: - location落在某個(gè)gt_bbox內(nèi)部,這里的落在內(nèi)部可以直接的理解為落在內(nèi)部,也可以替換成其他規(guī)則。例如真實(shí)中心的某個(gè)范圍。 - 為了加速收斂,l、r、t、b應(yīng)該在某一個(gè)范圍內(nèi),如果不在這個(gè)范圍內(nèi),就以為著應(yīng)該由其他location來優(yōu)化。例如,都應(yīng)該在scale_factor的范圍內(nèi) 2、如何解決一個(gè)物體框可能包括了多個(gè)“中心點(diǎn)” 可以支持這種1對(duì)多的關(guān)系,一個(gè)物體框有多個(gè)中心點(diǎn)負(fù)責(zé)預(yù)測(cè),后續(xù)通過NMS消除。 但是每個(gè)中心點(diǎn)的權(quán)重作者認(rèn)為是不一樣的,因?yàn)榫嚯x物體實(shí)際中心近的中心點(diǎn)其難度較低,應(yīng)該就越準(zhǔn)確,所有在NMS的時(shí)候權(quán)重應(yīng)該高。所以作者多了一個(gè)branch來預(yù)測(cè)centerness,即用于評(píng)估每個(gè)中心點(diǎn)的難易程度。
3、如何解決一個(gè)中心點(diǎn)可能落在多個(gè)物體框內(nèi)部 作者選擇面積最小的bbox作為優(yōu)化目標(biāo),其實(shí)也可以優(yōu)化多個(gè)?
04
Optimize by IoU上述基本都是基于距離的回歸,但是我們最終的評(píng)價(jià)指標(biāo)是IoU,所以我們優(yōu)化的目標(biāo)和我們最終評(píng)價(jià)的指標(biāo)之間還存在一些差異。在下面的case中,第一行所有情況的L2loss都是一樣的,但是IoU和GIoU是存在一定差異的。在第二行中,L1 Loss都是一樣的,但是IoU 和 GIoU 也是不一樣的。
為了解決上述的差異,作者提出了使用IoU作為我們的優(yōu)化目標(biāo)
定義
優(yōu)化目標(biāo)為使得預(yù)測(cè)框和真值框IoU最大,使用IoU 作為損失函數(shù)主要有以下兩個(gè)優(yōu)勢(shì) 1. 優(yōu)化目標(biāo)和評(píng)價(jià)指標(biāo)存在差異,Ln(L2, L1)范式優(yōu)化和IoU優(yōu)化并不完全等價(jià),如上圖所示。 2. IoU對(duì)目標(biāo)物體的scale不敏感。 但是直接使用IoU Loss也存在如下兩個(gè)問題 1. IoU值容易為0,且始終無(wú)法優(yōu)化。 2. IoU無(wú)法辨識(shí)不同方式的對(duì)齊,比如方向不一致。 為了解決上述問題,作者提出了GIoU General IoU Loss
GIoU
定義公式如下所示,C是包含A和B的最小box。當(dāng)IoU(A, B)為0的時(shí)候,優(yōu)化目標(biāo)轉(zhuǎn)化為讓C與AUB之間的空隙盡可能小。即就是A和B盡可能靠近。
A = np.random.random([N, 4]) B = np.random.random([N, 4]) C = np.zero_like(A) C[:, :2] = np.min(A[:, :2], B[:, :2]) C[:, 2:] = np.max(A[:, 2:], B[:, 2:])實(shí)驗(yàn)結(jié)果如下所示
DIoU
Motivation
Distance IoU Loss主要是為了解決如下兩個(gè)問題
GIoU訓(xùn)練過程較慢,作者做的模擬實(shí)驗(yàn)見下圖
GIoU傾向得到一個(gè)較大的bbox
GIoU 區(qū)分兩個(gè)對(duì)象之間的對(duì)齊方式比較間接,僅通過引入C的方式來反應(yīng)重疊的方式,不夠直接。如下圖所示。第二幅圖展示來當(dāng)GIoU一樣的情況下,DIoU是不一致的(前提是,中心點(diǎn)重合的情況下認(rèn)為擬合的最好)。
Contributions
提出了基于IoU Loss的一般性范式,這是我認(rèn)為最大的貢獻(xiàn)
提出了DIoU Loss,在IoU loss的基礎(chǔ)上將central之間的距離作為懲罰項(xiàng)
在各個(gè)數(shù)據(jù)集和detector上都取得了不錯(cuò)的效果
Detail
范式:作為認(rèn)為IoU loss應(yīng)該優(yōu)化的目標(biāo)包括三個(gè)方面
兩個(gè)框之間的重合度
中心點(diǎn)之間的距離
長(zhǎng)寬比的相似性
作者基于上述的1&&2,提出了DIoU Loss,結(jié)合1&&2&&3提出了CIoU Loss(C is complete)
DIoU:定義如下所示,其中關(guān)鍵中心點(diǎn)之間距離的懲罰項(xiàng)的分子代表兩個(gè)框中心點(diǎn)之間的歐式距離。分母是GIoU中矩陣C的對(duì)角線變長(zhǎng)。分母起到了歸一化的作用。
CIoU的定義如下所示,它在DIoU的基礎(chǔ)上增加了對(duì)長(zhǎng)寬比的懲罰項(xiàng)
05
Optimize by uncertainty
Motivation
不一致性
訓(xùn)練和測(cè)試兩個(gè)階段的,如上圖所示,訓(xùn)練的時(shí)候單獨(dú)優(yōu)化classification score和IoU score,測(cè)試的時(shí)候?qū)⑵湎喑?,然后?huì)導(dǎo)致訓(xùn)練和測(cè)試的時(shí)候不一致。
測(cè)試的時(shí)候,進(jìn)入NMS的是classification score乘IoU score,就會(huì)存在一種情況classification score較低,但是IoU score較高,然后使得負(fù)樣本沒有被過濾。這是因?yàn)镮oU score并沒有對(duì)負(fù)樣本做優(yōu)化,所有負(fù)樣本的IoU score并不受控制,如下圖所示。
Localization Quality Estimation (LQE) 是許多one-stage或者anchor-free方法改善效果的途徑。LQE的常用方法見下圖所示。
但是上述的方法會(huì)帶來一定的不一致性1,它主要包括以下兩點(diǎn)
Contribution1為了解決上述的問題,作者提出使用Joint的方式來聯(lián)合優(yōu)化classification score和IoU score。即就是用同一個(gè)prediction值即代表classification score又代表IoU score
不靈活性
目前目標(biāo)檢測(cè)的標(biāo)準(zhǔn)框有時(shí)候會(huì)存在標(biāo)注的不確定性(或噪聲),如下圖所示。而目前常用的bbox優(yōu)化方式是優(yōu)化Dirac分布(具體什么是Dirac分布后續(xù)會(huì)介紹)。
但是Dirac分布過于固定,不能解決uncertain的問題,因此有人提出了Gaussian 分布。
但是作者認(rèn)為Gaussian分布過于理想,不能適應(yīng)于復(fù)雜的現(xiàn)實(shí)情況。
Contribution2因此,作者提出了不依賴于任何先驗(yàn)的潛在分布優(yōu)化(underlying distribution)
Method
Quality Focal Loss
在上一節(jié),我們介紹了作者使用同一個(gè)prediction score來同時(shí)表示classification score和IoU score,那么優(yōu)化該值的時(shí)候真值應(yīng)該是什么呢?作者選擇IoU值作為優(yōu)化的真值,由于IoU是一個(gè)[0,1]之間的連續(xù)值。而傳統(tǒng)的focal loss優(yōu)化的目標(biāo)是{0, 1}這樣的離散值。因此該loss更加泛化一點(diǎn)(general)
Quality Focal Loss就是上述的更加泛化的FocalLoss,其定義如下所示
上述公式的后部分是展開形式的交叉熵,系數(shù)是adaptive的,當(dāng)預(yù)測(cè)是和真值接近的時(shí)候,系數(shù)小,當(dāng)遠(yuǎn)的時(shí)候系數(shù)大。
Distribution Focal Loss
在本節(jié)我們主要介紹以下何為Distribution,以及我們的Distribution Focal Loss。
先看為什么是Distribution?傳統(tǒng)的BBox regression即就是直接優(yōu)化兩個(gè)值,讓pred_w接近真值的w。
換個(gè)角度看,假設(shè)我們預(yù)測(cè)的值為pred_w, 我們直接優(yōu)化pred_w接近w,那么我們就相當(dāng)于讓pred_w出現(xiàn)的概率是1.0。這即就是Dirac Distribution,其如下圖所示。
也就是說我們最終的預(yù)測(cè)值是對(duì)所有y可能出現(xiàn)的值計(jì)算積分。也就如下公式所示。
接下來在看我們的Distribution Focal Loss, 有上式可知,上式是比Dirac更加泛化的形式。因此本文用上式來計(jì)算預(yù)測(cè)的y^。預(yù)測(cè)y^之前我們需要先清楚兩點(diǎn)
連續(xù)值的積分是不好實(shí)現(xiàn)的,我們可以用離散值的求和來代替
我們需要確定預(yù)測(cè)值的范圍。
有了上述兩個(gè)條件,我們可以得到pred^的計(jì)算公式如下所示。
得到上述的y的預(yù)測(cè)值后,我們?nèi)绾稳?yōu)化呢?因?yàn)槲覀冎纘^是接近y的,因此我們需要讓int(y)和int(y)+1的prob最大。因此就可以對(duì)應(yīng)下面的公式。
Discussion
GIoU 是否必須?
根據(jù)總的Loss定義,我們發(fā)現(xiàn)GIoU貌似不是必須,因?yàn)橥ㄟ^
distribution focal loss也可以起到bbox優(yōu)化的目的。因此我們做了對(duì)比實(shí)驗(yàn),發(fā)現(xiàn)取消GIoU loss會(huì)帶來小幅度的指標(biāo)下降。
別的應(yīng)用場(chǎng)景
數(shù)據(jù)分類(帶有噪聲)。針對(duì)每個(gè)類,我們將其拆分成N份(0., 0.1, 0.2, …, 1.0),分別預(yù)測(cè)每一份的概率,然后求和,即為最終該類別的概率。
distribution的意義
分布越陡峭,證明越確定,否則越不確定。
審核編輯 :李倩
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4341瀏覽量
62800 -
目標(biāo)檢測(cè)
+關(guān)注
關(guān)注
0文章
210瀏覽量
15639
原文標(biāo)題:總結(jié) | 目標(biāo)檢測(cè)中的框位置優(yōu)化
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論