前言
從R-CNN到Fast-RCNN,之前的目標(biāo)檢測工作都是分成兩階段,先提供位置信息在進(jìn)行目標(biāo)分類,精度很高但無法滿足實(shí)時(shí)檢測的要求。
而YoLo將目標(biāo)檢測看作回歸問題,輸入為一張圖片,輸出為S*S*(5*B+C)的三維向量。該向量結(jié)果既包含位置信息,又包含類別信息??赏ㄟ^損失函數(shù),將目標(biāo)檢測與分類同時(shí)進(jìn)行,能夠滿足實(shí)時(shí)性要求。
接下來給出YOLOV1的網(wǎng)絡(luò)結(jié)構(gòu)圖
?
核心思想
YOLO將目標(biāo)檢測問題作為回歸問題。會(huì)將輸入圖像分為S*S的網(wǎng)格,如果一個(gè)物體的中心點(diǎn)落到一個(gè)cell中,那么該cell就要負(fù)責(zé)預(yù)測該物體,一個(gè)格子只能預(yù)測一個(gè)物體,同時(shí)會(huì)生成B個(gè)預(yù)測框。
對(duì)于每個(gè)cell:
-
含有B個(gè)預(yù)測邊界框,這些框大小尺寸等等都隨便,只有一個(gè)要求,就是生成框的中心點(diǎn)必須在cell中,每個(gè)框都有一個(gè)置信度分?jǐn)?shù)(confidence score)。這些框的置信度分?jǐn)?shù)反映了該模型對(duì)某個(gè)框內(nèi)是否含有目標(biāo)的置信度,以及它對(duì)自己的預(yù)測的準(zhǔn)確度的估量。
-
每個(gè)cell還預(yù)測了C類的條件概率,即每個(gè)單元格只存在一組類別概率,而不考慮框B的數(shù)量。
-
每個(gè)預(yù)測邊界框包含5個(gè)元素:(x,y,w,h, c) 其中 x,y,w,h表示該框中心位置, c為該框的置信度
-
不管框B的數(shù)量多少,該cell只負(fù)責(zé)預(yù)測一個(gè)目標(biāo)
綜上,S*S個(gè)網(wǎng)格,每個(gè)網(wǎng)格要預(yù)測B個(gè)bounding box,還要預(yù)測C個(gè)類。網(wǎng)絡(luò)輸出為S*S*(5*B+C)。 (S*S個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)都有B個(gè)預(yù)測框,每個(gè)框又有五個(gè)參數(shù),在加上每個(gè)網(wǎng)格都有C個(gè)類別)
?
最終的預(yù)測特征由邊界框位置、邊框的置信度得分以及類別概率,即S*S*(5*B+C), 這里是 7*7*(2*5+20)
訓(xùn)練過程
對(duì)于一個(gè)網(wǎng)絡(luò)模型,損失函數(shù)的目的是要縮小預(yù)測值和標(biāo)簽之間的差距。對(duì)于YOLOV1網(wǎng)絡(luò)來說,每個(gè)cell含有5*B+C個(gè)預(yù)測值,我們?cè)谟?xùn)練過程中該如何獲得與之對(duì)應(yīng)的label.
這5*B+C個(gè)預(yù)測值的含義在上面已經(jīng)給出(S*S個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)都有B個(gè)預(yù)測框,每個(gè)框又有五個(gè)參數(shù),在加上每個(gè)網(wǎng)格都有C個(gè)類別),因此我們實(shí)際需要給出的label為每個(gè)預(yù)測框的四個(gè)坐標(biāo)及其置信度,和每個(gè)cell對(duì)應(yīng)的類別。
-
每個(gè)預(yù)測框的四個(gè)坐標(biāo)(x, y, w, h)的label為該預(yù)測框所在cell中目標(biāo)物體的坐標(biāo)
-
每個(gè)預(yù)測框的置信度c,反映了該模型對(duì)某個(gè)框內(nèi)是否含有目標(biāo)的置信度,以及它對(duì)自己的預(yù)測的準(zhǔn)確度的估量,是讓網(wǎng)絡(luò)學(xué)會(huì)自我評(píng)價(jià)候選框的功能。因此它所對(duì)應(yīng)的label計(jì)算相對(duì)復(fù)雜。我們將置信度定義為。 Pr(Object)=[0, 1], 如果該單元格內(nèi)不存在目標(biāo)(即Pr(Object)=0),則置信度分?jǐn)?shù)為0。 如果單元格內(nèi)存在目標(biāo),即(Pr(Object)=1),我們希望置信度分?jǐn)?shù)等于預(yù)測框和真實(shí)框之間的交并比(IOU)。
-
每個(gè)cell對(duì)應(yīng)的類別概率C,參數(shù)數(shù)量與該模型類別數(shù)量保持一致,label為one-hot編碼。
-
此外,根據(jù)公式推算,我們發(fā)現(xiàn)用置信度*某一類別的概率=即得到了一個(gè)特殊的置信度分?jǐn)?shù),表示每個(gè)預(yù)測框中具體某個(gè)類別的置信度
損失函數(shù)
YOLOV1的損失函數(shù)被分為坐標(biāo)損失、置信度損失和網(wǎng)格類別損失三種
坐標(biāo)損失
?簡要介紹下四個(gè)坐標(biāo)(x,y,w,h)的含義,x,y表示預(yù)測框中心點(diǎn)坐標(biāo),w,h表示預(yù)測框的寬高。
表示第i個(gè)cell中的第j個(gè)預(yù)測框是否負(fù)責(zé)檢測物體,同一個(gè)cell中僅有IOU值最高的一個(gè)框會(huì)負(fù)責(zé)檢測物體,并約束其坐標(biāo)
第一行表示中心點(diǎn)的坐標(biāo)損失,第二行表示寬高的損失,至于為何對(duì)寬高加根號(hào),是為了消除大小框不同的影響。
舉個(gè)例子,以預(yù)測框的寬度為例,不加根號(hào)的話,若目標(biāo)框?qū)挒?00,預(yù)測結(jié)果為90,差值為10,誤差為10%,損失為(90-100)^2 = 100; 若目標(biāo)框?qū)?0,預(yù)測結(jié)果為9,差值為1,誤差為10%,損失為(9-10)^2=1??梢钥闯?,同樣的預(yù)測差值,產(chǎn)生了同樣的損失,但是這個(gè)差值給大小框帶來的誤差差了10倍,而如何利用這個(gè)損失值去修正誤差的話,對(duì)大的預(yù)測框來說,微調(diào)10%,對(duì)小的預(yù)測框來說,重調(diào)100%。
而加了根號(hào)之后,若目標(biāo)框?qū)挒?00,預(yù)測結(jié)果為90,差值為10,誤差為10%,損失為0.263;若目標(biāo)框?qū)?0,預(yù)測結(jié)果為9,差值為1,誤差為10%,損失為0.0263。同樣的誤差,對(duì)于大小框之間的懲罰從原來的百倍差距,降為10倍差距,即提升了對(duì)小框的懲罰力度,畢竟對(duì)于小的預(yù)測框,一點(diǎn)點(diǎn)偏差都會(huì)產(chǎn)生很大的影響。(模型對(duì)大小框的約束能力能存在十倍差距,是否可以進(jìn)一步改進(jìn))
置信度損失
?
表示第i個(gè)cell中的第j個(gè)預(yù)測框是否負(fù)責(zé)檢測物體, 表示第i個(gè)cell中的第j個(gè)預(yù)測框是否不負(fù)責(zé)檢測物體,兩個(gè)數(shù)值含義相反。 表示該預(yù)測框的真實(shí)置信度,通過上述公式計(jì)算得出, 表示模型預(yù)測的置信度,此部分損失函數(shù)是為了讓模型掌握自我評(píng)價(jià)的能力,為測試過程選擇最佳預(yù)測框用。
第一行表示負(fù)責(zé)檢測物體的框的置信度損失,第二行表示不負(fù)責(zé)檢測物體的框的置信度損失 (問:兩種置信度之間有什么區(qū)別)
分類損失
?
表示第i個(gè)cell內(nèi)是否存在目標(biāo)物體
測試過程
測試過程就非常簡單了,對(duì)于一次前向傳播得到的S * S *B個(gè)預(yù)測框,根據(jù)各個(gè)候選框?qū)?yīng)的置信度分?jǐn)?shù),利用非極大值自抑(NMS),最終得到所有預(yù)測結(jié)果。
非極大值自抑制(NMS):所有預(yù)測框,按照置信度分?jǐn)?shù)從大到小排序。第一輪,選擇置信度最高的預(yù)測框作為基準(zhǔn),然后所有其他預(yù)測框按順序依次計(jì)算與基準(zhǔn)預(yù)測框的IOU值(提前設(shè)置一個(gè)閾值,當(dāng)IOU大于這個(gè)閾值,則認(rèn)為兩個(gè)預(yù)測框高度重合,預(yù)測的是同一個(gè)物體),對(duì)于和基準(zhǔn)預(yù)測框重合的則直接淘汰。一輪結(jié)束后,排除上一輪的基準(zhǔn),重新選擇新的預(yù)測框作為基準(zhǔn)重復(fù)上述步驟。
缺點(diǎn)
-
每個(gè)cell只能預(yù)測一類物體,對(duì)于密度大的小物體無法預(yù)測
-
定位損失占比較大(包括坐標(biāo)損失和置信度損失),致使模型更加側(cè)重定位物體,分類能力相對(duì)較弱
-
測試時(shí),如果同意物體的長寬比發(fā)生變化,則難以泛化。
論文鏈接:You Only Look Once: Unified, Real-Time Object Detection
源碼地址:mirrors / alexeyab / darknet
參考內(nèi)容:【YOLO系列】YOLOv1論文超詳細(xì)解讀(翻譯 +學(xué)習(xí)筆記)文章來源:http://www.zghlxwxcb.cn/news/detail-635312.html
下一篇:【目標(biāo)檢測系列】YOLOV2解讀_懷逸%的博客-CSDN博客???????文章來源地址http://www.zghlxwxcb.cn/news/detail-635312.html
到了這里,關(guān)于【目標(biāo)檢測系列】YOLOV1解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!