sklearn逻辑回归 极大似然 损失_收藏!攻克目标检测难点秘籍二,非极大值抑制与回归损失优化之路...
點(diǎn)擊上方“AI算法修煉營”,選擇加星標(biāo)或“置頂”
標(biāo)題以下,全是干貨
前面的話
在前面的秘籍一中,我們主要關(guān)注了模型加速之輕量化網(wǎng)絡(luò),對(duì)目標(biāo)檢測模型的實(shí)時(shí)性難點(diǎn)進(jìn)行了攻克。但是要想獲得較好的檢測性能,檢測算法的細(xì)節(jié)處理也極為重要。
在眾多的細(xì)節(jié)處理中,先來介紹非極大值抑制、回歸損失函數(shù)這2個(gè)問題。本文主要介紹秘籍二:非極大值抑制與回歸損失的優(yōu)化之路。
秘籍二. 非極大值抑制與回歸損失優(yōu)化之路
當(dāng)前的物體檢測算法為了保證召回率,對(duì)于同一個(gè)真實(shí)物體往往會(huì)有多于1個(gè)的候選框輸出。由于多余的候選框會(huì)影響檢測精度,因此需要利用NMS過濾掉重疊的候選框,得到最佳的預(yù)測輸出。
基本的NMS方法,利用得分高的邊框抑制得分低且重疊程度高的邊框。然而基本的NMS存在一些缺陷,簡單地過濾掉得分低且重疊度高的邊框可能會(huì)導(dǎo)致漏檢等問題。針對(duì)此問題陸續(xù)產(chǎn)生了一系列改進(jìn)的方法,如Soft NMS、Softer NMS及IoU-Net等。
目標(biāo)檢測主要的任務(wù):1)對(duì)象是什么?2)對(duì)象在哪里?其中,對(duì)象是什么主要分清楚對(duì)象的類別。而對(duì)象在哪里,需要尋找這個(gè)對(duì)象在圖像中的位置。回歸損失問題就是探討如何更好地學(xué)習(xí)對(duì)象在哪里。當(dāng)然最近anchor free的方法有很多,但是主流應(yīng)用上目前還是基于anchor的方式。
對(duì)于有先驗(yàn)框的目標(biāo)檢測,位置是通過學(xué)習(xí)給定的先驗(yàn)框和真實(shí)目標(biāo)框的距離來進(jìn)行預(yù)測。而這個(gè)距離的刻畫主要通過距離公式來度量,比如曼哈頓距離L1和歐式距離L2。
那么利用歐式距離來計(jì)算存在什么問題呢?繼續(xù)往下看,下面將詳細(xì)介紹。一起來看攻克目標(biāo)檢測難點(diǎn)秘籍二:非極大值抑制和回歸損失優(yōu)化之路。
1 NMS:非極大值抑制優(yōu)化
為了保證物體檢測的召回率,在Faster RCNN或者SSD網(wǎng)絡(luò)的計(jì)算輸出中,通常都會(huì)有不止一個(gè)候選框?qū)?yīng)同一個(gè)真實(shí)物體。如下圖左圖是人臉檢測的候選框結(jié)果,每個(gè)邊界框有一個(gè)置信度得分(confidence score),如果不使用非極大值抑制,就會(huì)有多個(gè)候選框出現(xiàn)。右圖是使用非極大值抑制之后的結(jié)果,符合我們?nèi)四槞z測的預(yù)期結(jié)果。
非極大值抑制,顧名思義就是抑制不是極大值的邊框,這里的抑制通常是直接去掉冗余的邊框。這個(gè)過程涉及以下兩個(gè)量化指標(biāo)。
預(yù)測得分:NMS假設(shè)一個(gè)邊框的預(yù)測得分越高,這個(gè)框就要被優(yōu)先考慮,其他與其重疊超過一定程度的邊框要被舍棄,非極大值即是指得分的非極大值。
IoU:在評(píng)價(jià)兩個(gè)邊框的重合程度時(shí),NMS使用了IoU這個(gè)指標(biāo)。如果兩個(gè)邊框的IoU超過一定閾值時(shí),得分低的邊框會(huì)被舍棄。閾值通常會(huì)取0.5或者0.7。
NMS算法輸入包含了所有預(yù)測框的得分、左上點(diǎn)坐標(biāo)、右下點(diǎn)坐標(biāo)一共5個(gè)預(yù)測量,以及一個(gè)設(shè)定的IoU閾值。算法具體流程如下:
(1)按照得分,對(duì)所有邊框進(jìn)行降序排列,記錄下排列的索引order,并新建一個(gè)列表keep,作為最終篩選后的邊框索引結(jié)果。
(2)將排序后的第一個(gè)邊框置為當(dāng)前邊框,并將其保留到keep中,再求當(dāng)前邊框與剩余所有框的IoU。
(3)在order中,僅僅保留IoU小于設(shè)定閾值的索引,重復(fù)第(2)步,直到order中僅僅剩余一個(gè)邊框,則將其保留到keep中,退出循環(huán),NMS結(jié)束。
利用PyTorch,可以很方便地實(shí)現(xiàn)NMS模塊。
def nms(self, bboxes, scores, thresh=0.5): x1 = bboxes[:,0] y1 = bboxes[:,1] x2 = bboxes[:,2] y2 = bboxes[:,3] areas = (x2-x1+1)*(y2-y1+1) _, order = scores.sort(0, descending=True) keep = [] while order.numel() > 0: if order.numel() == 1: i = order.item() keep.append(i) break else: i = order[0].item() keep.append(i) xx1 = x1[order[1:]].clamp(min=x1[i]) yy1 = y1[order[1:]].clamp(min=y1[i]) xx2 = x2[order[1:]].clamp(max=x2[i]) yy2 = y2[order[1:]].clamp(max=y2[i]) inter = (xx2-xx1).clamp(min=0) * (yy2-yy1).clamp(min=0) iou = inter / (areas[i]+areas[order[1:]]-inter) idx = (iou <= threshold).nonzero().squeeze() if idx.numel() == 0: break order = order[idx+1] return torch.LongTensor(keep)NMS方法雖然簡單有效,但在更高的目標(biāo)檢測需求下,也存在如下缺點(diǎn):
將得分較低的邊框強(qiáng)制性地去掉,如果物體出現(xiàn)較為密集時(shí),本身屬于兩個(gè)物體的邊框,其中得分較低的也有可能被抑制掉,降低了模型的召回率。
速度:NMS的實(shí)現(xiàn)存在較多的循環(huán)步驟,GPU的并行化實(shí)現(xiàn)不是特別容易,尤其是預(yù)測框較多時(shí),耗時(shí)較多。? ?
將得分作為衡量指標(biāo)。NMS簡單地將得分作為一個(gè)邊框的置信度,但在一些情況下,得分高的邊框不一定位置更準(zhǔn)。
閾值難以確定。過高的閾值容易出現(xiàn)大量誤檢,而過低的閾值則容易降低模型的召回率,超參很難確定。
1.1 Soft NMS:抑制得分
NMS方法雖有效過濾了重復(fù)框,但也容易將本屬于兩個(gè)物體框中得分低的框抑制掉,從而降低了召回率。造成這種現(xiàn)象的原因在于NMS的計(jì)算公式。
公式中Si代表了每個(gè)邊框的得分,M為當(dāng)前得分最高的框,bi為剩余框的某一個(gè),Nt為設(shè)定的閾值,可以看到,當(dāng)IoU大于Nt時(shí),該邊框的得分直接置0,相當(dāng)于被舍棄掉了,從而有可能造成邊框的漏檢。
而SoftNMS算法對(duì)于IoU大于閾值的邊框,沒有將其得分直接置0,而是降低該邊框的得分,具體方法是:
從公式中可以看出,利用邊框的得分與IoU來確定新的邊框得分,如果當(dāng)前邊框與邊框M的IoU超過設(shè)定閾值Nt時(shí),邊框的得分呈線性的衰減。
但是,上式并不是一個(gè)連續(xù)的函數(shù),當(dāng)一個(gè)邊框與M的重疊IoU超過閾值Nt時(shí),其得分會(huì)發(fā)生跳變,這種跳變會(huì)對(duì)檢測結(jié)果產(chǎn)生較大的波動(dòng)。
因此還需要尋找一個(gè)更為穩(wěn)定、連續(xù)的得分重置函數(shù),最終Soft NMS給出了如下式所示的重置函數(shù)。
采用這種得分衰減的方式,對(duì)于某些得分很高的邊框來說,在后續(xù)的計(jì)算中還有可能被作為正確的檢測框,而不像NMS那樣“一棒子打死”,因此可以有效提升模型的召回率。
Soft NMS的計(jì)算復(fù)雜度與NMS相同,是一種更為通用的非極大值抑制方法,可以將NMS看做Soft NMS的二值化特例。
Soft NMS優(yōu)缺點(diǎn)分析
優(yōu)點(diǎn):
1、Soft-NMS可以很方便地引入到object detection算法中,不需要重新訓(xùn)練原有的模型、代碼容易實(shí)現(xiàn),不增加計(jì)算量(計(jì)算量相比整個(gè)object detection算法可忽略)。并且很容易集成到目前所有使用NMS的目標(biāo)檢測算法。
2、Soft-NMS在訓(xùn)練中采用傳統(tǒng)的NMS方法,僅在推斷代碼中實(shí)現(xiàn)soft-NMS。作者應(yīng)該做過對(duì)比試驗(yàn),在訓(xùn)練過程中采用soft-NMS沒有顯著提高。
3、NMS是Soft-NMS特殊形式,當(dāng)?shù)梅种刂煤瘮?shù)采用二值化函數(shù)時(shí),Soft-NMS和NMS是相同的。Soft-NMS算法是一種更加通用的非最大抑制算法。
缺點(diǎn):
Soft-NMS也是一種貪心算法,并不能保證找到全局最優(yōu)的檢測框分?jǐn)?shù)重置。除了以上這兩種分?jǐn)?shù)重置函數(shù),我們也可以考慮開發(fā)其他包含更多參數(shù)的分?jǐn)?shù)重置函數(shù),比如Gompertz函數(shù)等。但是它們?cè)谕瓿煞謹(jǐn)?shù)重置的過程中增加了額外的參數(shù)。
1.2?Softer NMS:加權(quán)平均
NMS與Soft NMS算法都使用了預(yù)測分類置信度作為衡量指標(biāo),即假定分類置信度越高的邊框,其位置也更為精準(zhǔn)。但很多情況下并非如此。
NMS時(shí)用到的score僅僅是分類置信度得分,不能反映Bounding box的定位精準(zhǔn)度,既分類置信度和定位置信非正相關(guān)的,直接使用分類置信度作為NMS的衡量指標(biāo)并非是最佳選擇。
NMS只能解決分類置信度和定位置信度都很高的,但是對(duì)其它三種類型:“分類置信度低-定位置信度低”,“分類置信度高-定位置信度低”,“分類置信度低-定位置信度高“都無法解決。
基于此現(xiàn)象,Softer NMS進(jìn)一步改進(jìn)了NMS的方法,新增加了一個(gè)定位置信度的預(yù)測,使得高分類置信度的邊框位置變得更加準(zhǔn)確,從而有效提升了檢測的性能。
首先,為了更加全面地描述邊框預(yù)測,Softer NMS方法對(duì)預(yù)測邊框與真實(shí)物體做了兩個(gè)分布假設(shè):1.真實(shí)物體的分布是狄拉克delta分布,即標(biāo)準(zhǔn)方差為0的高斯分布的極限。2.預(yù)測邊框的分布滿足高斯分布。
基于這兩個(gè)假設(shè),Softer NMS提出了一種基于KL(Kullback-Leibler)散度的邊框回歸損失函數(shù)KL loss。KL散度是用來衡量兩個(gè)概率分布的非對(duì)稱性衡量,KL散度越接近于0,則兩個(gè)概率分布越相似。
具體到邊框上,KL Loss是最小化預(yù)測邊框的高斯分布與真實(shí)物體的狄克拉分布之間的KL散度。即預(yù)測邊框分布越接近于真實(shí)物體分布,損失越小。
為了描述邊框的預(yù)測分布,除了預(yù)測位置之外,還需要預(yù)測邊框的標(biāo)準(zhǔn)差。Softer NMS在原Fast RCNN預(yù)測的基礎(chǔ)上,增加了一個(gè)標(biāo)準(zhǔn)差預(yù)測分支,從而形成邊框的高斯分布,與邊框的預(yù)測一起可以求得KL損失。
Softer NMS的實(shí)現(xiàn)過程,其實(shí)很簡單,預(yù)測的四個(gè)頂點(diǎn)坐標(biāo),分別對(duì)IoU>Nt的預(yù)測加權(quán)平均計(jì)算,得到新的4個(gè)坐標(biāo)點(diǎn)。第i個(gè)box的x1計(jì)算公式如下(j表示所有IoU>Nt的box):
可以看出,Softer NMS對(duì)于IoU大于設(shè)定閾值的邊框坐標(biāo)進(jìn)行了加權(quán)平均,希望分類得分高的邊框能夠利用到周圍邊框的信息,從而提升其位置的準(zhǔn)確度。
1.3?IoU-Net:定位置信度
目標(biāo)檢測的分類與定位通常被兩個(gè)分支預(yù)測。對(duì)于候選框的類別,模型給出了一個(gè)類別預(yù)測,可以作為分類置信度,然而對(duì)于定位而言,回歸模塊通常只預(yù)測了一個(gè)邊框的轉(zhuǎn)換系數(shù),而缺失了定位的置信度,即框的位置準(zhǔn)不準(zhǔn),并沒有一個(gè)預(yù)測結(jié)果。
定位置信度的缺失也導(dǎo)致了在前面的NMS方法中,只能將分類的預(yù)測值作為邊框排序的依據(jù),然而在某些場景下,分類預(yù)測值高的邊框不一定擁有與真實(shí)框最接近的位置,因此這種標(biāo)準(zhǔn)不平衡可能會(huì)導(dǎo)致更為準(zhǔn)確的邊框被抑制掉。
基于此,曠視提出了IoU-Net,增加了一個(gè)預(yù)測候選框與真實(shí)物體之間的IoU分支,并基于此改善了NMS過程,進(jìn)一步提升了檢測器的性能。
IoU-Net的基礎(chǔ)架構(gòu)與原始的Faster RCNN類似,使用了FPN方法作為基礎(chǔ)特征提取模塊,然后經(jīng)過RoI的Pooling得到固定大小的特征圖,利用全連接網(wǎng)絡(luò)完成最后的多任務(wù)預(yù)測。
同時(shí),IoU-Net與Faster RCNN也有不同之處,主要有3點(diǎn):
1. 在Head處增加了一個(gè)IoU預(yù)測的分支,與分類回歸分支并行。圖中的Jittered RoIs模塊用于IoU分支的訓(xùn)練。
2. 基于IoU分支的預(yù)測值,改善了NMS的處理過程。
3. 提出了PrRoI-Pooling(Precise RoI Pooling)方法,進(jìn)一步提升了感興趣區(qū)域池化的精度。
IoU預(yù)測分支
IoU分支用于預(yù)測每一個(gè)候選框的定位置信度。需要注意的是,在訓(xùn)練時(shí)IoU-Net通過自動(dòng)生成候選框的方式來訓(xùn)練IoU分支,而不是從RPN獲取。
具體來講,Jittered RoIs在訓(xùn)練集的真實(shí)物體框上增加隨機(jī)擾動(dòng),生成了一系列候選框,并移除與真實(shí)物體框IoU小于0.5的邊框。實(shí)驗(yàn)證明這種方法來訓(xùn)練IoU分支可以帶來更高的性能與穩(wěn)健性。IoU分支也可以方便地集成到當(dāng)前的物體檢測算法中。
在整個(gè)模型的聯(lián)合訓(xùn)練時(shí),IoU預(yù)測分支的訓(xùn)練數(shù)據(jù)需要從每一批的輸入圖像中單獨(dú)生成。此外,還需要對(duì)IoU分支的標(biāo)簽進(jìn)行歸一化,保證其分布在[-1,1]區(qū)間中。
基于定位置信度的NMS
由于IoU預(yù)測值可以作為邊框定位的置信度,因此可以利用其來改善NMS過程。IoU-Net利用IoU的預(yù)測值作為邊框排列的依據(jù),并抑制掉與當(dāng)前框IoU超過設(shè)定閾值的其他候選框。此外,在NMS過程中,IoU-Net還做了置信度的聚類,即對(duì)于匹配到同一真實(shí)物體的邊框,類別也需要擁有一致的預(yù)測值。具體做法是,在NMS過程中,當(dāng)邊框A抑制邊框B時(shí),通過下式來更新邊框A的分類置信度。
?
PrRoI-Pooling方法
RoI Align的方法,通過采樣的方法有效避免了量化操作,減小了RoIPooling的誤差,如圖下圖所示。但Align的方法也存在一個(gè)缺點(diǎn),即對(duì)每一個(gè)區(qū)域都采取固定數(shù)量的采樣點(diǎn),但區(qū)域有大有小,都采取同一個(gè)數(shù)量點(diǎn),顯然不是最優(yōu)的方法。
以此為出發(fā)點(diǎn),IoU-Net提出了PrRoI Pooling方法,采用積分的方式實(shí)現(xiàn)了更為精準(zhǔn)的感興趣區(qū)域池化,如下圖中的右圖所示。
與RoI Align只采樣4個(gè)點(diǎn)不同,PrRoI Pooling方法將整個(gè)區(qū)域看做是連續(xù)的,采用積分公式求解每一個(gè)區(qū)域的池化輸出值,區(qū)域內(nèi)的每一個(gè)點(diǎn)(x, y)都可以通過雙線性插值的方法得到。這種方法還有一個(gè)好處是其反向傳播是連續(xù)可導(dǎo)的,因此避免了任何的量化過程。
總體上,IoU-Net提出了一個(gè)IoU的預(yù)測分支,解決了NMS過程中分類置信度與定位置信度之間的不一致,可以與當(dāng)前的物體檢測框架一起端到端地訓(xùn)練,在幾乎不影響前向速度的前提下,有效提升了物體檢測的精度。
2 回歸損失函數(shù)優(yōu)化
正如前面講到的,對(duì)于有先驗(yàn)框的目標(biāo)檢測,位置是通過學(xué)習(xí)給定的先驗(yàn)框和真實(shí)目標(biāo)框的距離來進(jìn)行預(yù)測。而這個(gè)距離的刻畫主要通過距離公式來度量,比如曼哈頓距離L1和歐式距離L2。
利用常見的L1和L2距離公式來刻畫IoU存在缺陷,主要原因還是距離度量將各個(gè)點(diǎn)孤立來進(jìn)行,而IoU刻畫的是整體的重合度問題。在這個(gè)問題基礎(chǔ)上,IoU系列損失函數(shù)被提出來了。
2.1 IoU
由于L1和L2距離損失沒有很好的刻畫目標(biāo)檢測的最終指標(biāo)IoU,有學(xué)者提出,能否直接用IoU來進(jìn)行優(yōu)化呢?
IoU就是我們所說的交并比,是目標(biāo)檢測中最常用的指標(biāo),在anchor-based的方法中,他的作用不僅用來確定正樣本和負(fù)樣本,還可以用來評(píng)價(jià)輸出框(predict box)和ground-truth的距離。
IoU可以反映預(yù)測檢測框與真實(shí)檢測框的檢測效果。還有一個(gè)很好的特性就是尺度不變性,也就是對(duì)尺度不敏感(scale invariant), 在regression任務(wù)中,判斷predict box和gt的距離最直接的指標(biāo)就是IoU。(滿足非負(fù)性;同一性;對(duì)稱性;三角不等性)
def Iou(box1, box2, wh=False): if wh == False: xmin1, ymin1, xmax1, ymax1 = box1 xmin2, ymin2, xmax2, ymax2 = box2 else: xmin1, ymin1 = int(box1[0]-box1[2]/2.0), int(box1[1]-box1[3]/2.0) xmax1, ymax1 = int(box1[0]+box1[2]/2.0), int(box1[1]+box1[3]/2.0) xmin2, ymin2 = int(box2[0]-box2[2]/2.0), int(box2[1]-box2[3]/2.0) xmax2, ymax2 = int(box2[0]+box2[2]/2.0), int(box2[1]+box2[3]/2.0) # 獲取矩形框交集對(duì)應(yīng)的左上角和右下角的坐標(biāo)(intersection) xx1 = np.max([xmin1, xmin2]) yy1 = np.max([ymin1, ymin2]) xx2 = np.min([xmax1, xmax2]) yy2 = np.min([ymax1, ymax2]) # 計(jì)算兩個(gè)矩形框面積 area1 = (xmax1-xmin1) * (ymax1-ymin1) area2 = (xmax2-xmin2) * (ymax2-ymin2) inter_area = (np.max([0, xx2-xx1])) * (np.max([0, yy2-yy1])) #計(jì)算交集面積 iou = inter_area / (area1+area2-inter_area+1e-6) #計(jì)算交并比 return iouIOU作為損失函數(shù)會(huì)出現(xiàn)的問題:
1.如果兩個(gè)框沒有相交,根據(jù)定義,IoU=0,不能反映兩者的距離大小(重合度)。同時(shí)因?yàn)閘oss=0,沒有梯度回傳,無法進(jìn)行學(xué)習(xí)訓(xùn)練。
2.IoU無法精確的反映兩者的重合度大小。如下圖所示,三種情況IoU都相等,但看得出來他們的重合度是不一樣的,左邊的圖回歸的效果最好,右邊的最差。
2.2 GIoU
考慮到以上IOU的問題,有學(xué)者提出了GIoU:
上面公式的意思是:先計(jì)算兩個(gè)框的最小閉包區(qū)域面積 (通俗理解:同時(shí)包含了預(yù)測框和真實(shí)框的最小框的面積),再計(jì)算出IoU,再計(jì)算閉包區(qū)域中不屬于兩個(gè)框的區(qū)域占閉包區(qū)域的比重,最后用IoU減去這個(gè)比重得到GIoU。
引入C\AUB項(xiàng)可以看出,即使兩個(gè)目標(biāo)沒有并集,那么GIoU的值也會(huì)是-|C\(AUB)|/|C|,而兩個(gè)目標(biāo)如果距離的越來越遠(yuǎn),這個(gè)值大小也會(huì)越來越大。因此加入了這一項(xiàng)之后緩解了IoU損失中目標(biāo)框和預(yù)測框無交集,梯度為0而導(dǎo)致的無法優(yōu)化問題。
GIoU主要特點(diǎn)
GIoU對(duì)尺度scale不敏感
GIoU是IoU的下界,在兩個(gè)框無線重合的情況下,IoU=GIoU。IoU取值[0,1],但GIoU有對(duì)稱區(qū)間,取值范圍[-1,1]。在兩者重合的時(shí)候取最大值1,在兩者無交集且無限遠(yuǎn)的時(shí)候取最小值-1,因此GIoU是一個(gè)非常好的距離度量指標(biāo)。
與IoU只關(guān)注重疊區(qū)域不同,GIoU不僅關(guān)注重疊區(qū)域,還關(guān)注其他的非重合區(qū)域,能更好的反映兩者的重合度。
GIoU的改進(jìn)使得預(yù)測框和真實(shí)框即使無重疊也可以優(yōu)化,然而其依然存在著兩個(gè)問題:1)對(duì)于預(yù)測框和真實(shí)框在水平或者豎直情況下,不管其距離遠(yuǎn)近,其GIoU的計(jì)算值幾乎相同,接近于0。2)對(duì)于預(yù)測框包含住真實(shí)框的情況下,GIoU退化為IoU,在這種情況下,無法找到最合適的預(yù)測框。
基于IoU和GIoU存在的問題,論文《Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression》作者提出了兩個(gè)問題:
第一:直接最小化anchor框與目標(biāo)框之間的歸一化距離是否可行,以達(dá)到更快的收斂速度。
第二:如何使回歸在與目標(biāo)框有重疊甚至包含時(shí)更準(zhǔn)確、更快。
文中提出了目標(biāo)檢測中回歸框主要考慮的三要素:重疊區(qū)域,中心距離和寬高比。作者提出了DIoU和CIoU損失,提高了目標(biāo)檢測的精度。
2.3 DIoU
DIoU要比GIou更加符合目標(biāo)框回歸的機(jī)制,將目標(biāo)與anchor之間的距離,重疊率以及尺度都考慮進(jìn)去,使得目標(biāo)框回歸變得更加穩(wěn)定,不會(huì)像IoU和GIoU一樣出現(xiàn)訓(xùn)練過程中發(fā)散等問題。
顯然從圖中可以看出,最右邊的圖是最理想的預(yù)測框情況,然而IoU或者GIoU計(jì)算的這三者的值是相等的,所以GIoU的刻畫還是無法找到一些最優(yōu)情況。因此作者提出了DIoU。
其中,??,??分別代表了預(yù)測框和真實(shí)框的中心點(diǎn),且??代表的是計(jì)算兩個(gè)中心點(diǎn)間的歐式距離。??代表的是能夠同時(shí)包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對(duì)角線距離。
通過上述的改進(jìn),DIoU既保留了GIoU的一些保留特性,同時(shí)其又帶來了幾個(gè)優(yōu)勢:
1.?? DIoU能直接優(yōu)化預(yù)測框和真實(shí)框的距離,比GIoU更快。
2.?? DIoU緩解了GIoU在預(yù)測框和真實(shí)框在水平或者豎直情況下|C-AUB|接近于0的問題。
作者在文中還提到了對(duì)NMS進(jìn)行改進(jìn),提出將中心距離也作為其中的一個(gè)變量來選擇最好的預(yù)測框。
DIoU主要特點(diǎn)
與GIoU loss類似,DIoU loss在與目標(biāo)框不重疊時(shí),仍然可以為邊界框提供移動(dòng)方向。
DIoU loss可以直接最小化兩個(gè)目標(biāo)框的距離,因此比GIoU loss收斂快得多。
對(duì)于包含兩個(gè)框在水平方向和垂直方向上這種情況,DIoU損失可以使回歸非常快,而GIoU損失幾乎退化為IoU損失。
DIoU還可以替換普通的IoU評(píng)價(jià)策略,應(yīng)用于NMS中,使得NMS得到的結(jié)果更加合理和有效。
2.4 CIOU
論文作者在提出了DIoU的基礎(chǔ)上,回答了一個(gè)問題,即一個(gè)好的回歸框損失應(yīng)該考慮哪幾個(gè)點(diǎn)?作者給出了答案,三個(gè)要素:重疊區(qū)域,中心點(diǎn)的距離,寬高比。
DIoU考慮了重疊區(qū)域和中心點(diǎn)距離問題,還剩下寬高比沒考慮,因此后續(xù)提出了CIoU損失。
上述CIoU主要是在DIoU的基礎(chǔ)上,加入了寬和高的比值,將第三個(gè)要素寬高比也加入進(jìn)來,具體的,多了和這兩個(gè)參數(shù)。其中是用來平衡比例的系數(shù),是用來衡量Anchor框和目標(biāo)框之間的比例一致性。
因?yàn)閷?shí)際中寬和高都是非常小的值,在進(jìn)行求梯度的時(shí)候要注意防止梯度爆炸的問題。具體的,一般都會(huì)對(duì)原始的,分別處以原圖像的長寬。所以直接將設(shè)為常數(shù)1,這樣不會(huì)導(dǎo)致梯度的方向改變,雖然值變了,但這可以加快收斂。
實(shí)驗(yàn)分析
試驗(yàn)數(shù)據(jù)集:采用PASCAL VOC和COCO數(shù)據(jù)集進(jìn)行評(píng)測。
網(wǎng)絡(luò)模型:采用了單階段的SSD和YOLOV3以及雙階段的FasterRCNN網(wǎng)絡(luò)。
評(píng)價(jià)指標(biāo):AP ?= (AP50 + AP55+ : : : + AP95) / 10 ,IoU閾值從0.5,0.55到0.95總共10個(gè)值的平均。AP75 (mAP@0.75)是IoU閾值為0.75時(shí)的值。
將上述提出的DIoU和CIoU應(yīng)用到上述的單階段網(wǎng)絡(luò),可以看出,相比較而言,改進(jìn)的損失都有了一定的提升。特別是閾值為0.75的時(shí)候更加的明顯。
對(duì)于FasterRCNN來看,DIoU和CIoU都有一定的提升,且CIoU提升比較大。
代碼復(fù)現(xiàn)參考
https://github.com/JaryHuang/awesome_SSD_FPN_GIoU
https://github.com/Zzh-tju/DIoU-darknet
參考:
1.深度學(xué)習(xí)之PyTorch物體檢測實(shí)戰(zhàn) 董洪義2.https://zhuanlan.zhihu.com/p/94799295
3.https://blog.csdn.net/qiu931110/article/details/103330107
4.論文原文:https://arxiv.org/pdf/1911.08287.pdf
-END-
掃描個(gè)人微信號(hào),
拉你進(jìn)AI算法修煉營學(xué)習(xí)交友群。
目標(biāo)檢測、圖像分割、自動(dòng)駕駛、機(jī)器人、面試經(jīng)驗(yàn)
福利滿滿,名額已不多…
▲長按關(guān)注我們
覺得好看對(duì)你有幫助,就點(diǎn)個(gè)在看吧 ? ? ?
總結(jié)
以上是生活随笔為你收集整理的sklearn逻辑回归 极大似然 损失_收藏!攻克目标检测难点秘籍二,非极大值抑制与回归损失优化之路...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定义一个类mymath_C++:模板类
- 下一篇: matplotlib 标签_Python