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

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

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

從YOLO v1開(kāi)始講起,直至目前最新的版本YOLO v3

電子工程師 ? 來(lái)源:lq ? 2019-05-15 09:08 ? 次閱讀

導(dǎo)語(yǔ):如今基于深度學(xué)習(xí)的目標(biāo)檢測(cè)已經(jīng)逐漸成為自動(dòng)駕駛視頻監(jiān)控、機(jī)械加工、智能機(jī)器人等領(lǐng)域的核心技術(shù),而現(xiàn)存的大多數(shù)精度高的目標(biāo)檢測(cè)算法,速度較慢,無(wú)法適應(yīng)工業(yè)界對(duì)于目標(biāo)檢測(cè)實(shí)時(shí)性的需求,這時(shí) YOLO 算法橫空出世,以近乎極致的速度和出色的準(zhǔn)確度贏得了大家的一致好評(píng)?;诖?,我們選擇 YOLO 算法來(lái)實(shí)現(xiàn)目標(biāo)檢測(cè)。YOLO 算法目前已經(jīng)經(jīng)過(guò)了 3 個(gè)版本的迭代,在速度和精確度上獲得了巨大的提升,我們將從 YOLO v1 開(kāi)始講起,直至目前最新的版本 YOLO v3。

1. YOLO V1 一步檢測(cè)的開(kāi)山之作

相對(duì)于傳統(tǒng)的分類(lèi)問(wèn)題,目標(biāo)檢測(cè)顯然更符合現(xiàn)實(shí)需求,因?yàn)橥F(xiàn)實(shí)中不可能在某一個(gè)場(chǎng)景只有一個(gè)物體,因此目標(biāo)檢測(cè)的需求變得更為復(fù)雜,不僅僅要求算法能夠檢驗(yàn)出是什么物體,還需要確定這個(gè)物體在圖片哪里。

在這一過(guò)程中,目標(biāo)檢測(cè)經(jīng)歷了一個(gè)高度的符合人類(lèi)的直覺(jué)的過(guò)程。既需要識(shí)別出目標(biāo)的位置,將圖片劃分成小圖片扔進(jìn)算法中去,當(dāng)算法認(rèn)為某物體在這個(gè)小區(qū)域上之時(shí),那么檢測(cè)完成。那我們就認(rèn)為這個(gè)物體在這個(gè)小圖片上了。而這個(gè)思路,正是比較早期的目標(biāo)檢測(cè)思路,比如 R-CNN。

后來(lái)的 Fast R-CNN,F(xiàn)aster R-CNN[16] 雖有改進(jìn),比如不再是將圖片一塊塊的傳進(jìn) CNN 提取特征,而是整體放進(jìn) CNN 提取特征圖后,再做進(jìn)一步處理,但依舊是整體流程分為區(qū)域提取和目標(biāo)分類(lèi)兩部分(two-stage),這樣做的一個(gè)特點(diǎn)是雖然確保了精度,但速度非常慢,于是以 YOLO(You only look once)為主要代表的這種一步到位(one-stage)即端到端的目標(biāo)檢測(cè)算法應(yīng)運(yùn)而生了。

1.1 YOLO v1 基本思想

YOLO v1 的核心思想在于將目標(biāo)檢測(cè)作為回歸問(wèn)題解決 ,YOLO v1 首先會(huì)把原始圖片放縮到 448×448 的尺寸,放縮到這個(gè)尺寸是為了后面整除來(lái)的方便。然后將圖片劃分成 SxS 個(gè)區(qū)域,注意這個(gè)區(qū)域的概念不同于上文提及將圖片劃分成 N 個(gè)區(qū)域扔進(jìn)算法的區(qū)域不同。上文提及的區(qū)域是將圖片進(jìn)行剪裁,或者說(shuō)把圖片的某個(gè)局部的像素輸入算法中,而這里的劃分區(qū)域,只的是邏輯上的劃分。

如果一個(gè)對(duì)象的中心落在某個(gè)單元格上,那么這個(gè)單元格負(fù)責(zé)預(yù)測(cè)這個(gè)物體。每個(gè)單元格需要預(yù)測(cè) B 個(gè)邊界框(bbox)值(bbox 值包括坐標(biāo)和寬高),同時(shí)為每個(gè) bbox 值預(yù)測(cè)一個(gè)置信度(confidence scores)。 此后以每個(gè)單元格為單位進(jìn)行預(yù)測(cè)分析。

這個(gè)置信度并不只是該邊界框是待檢測(cè)目標(biāo)的概率,而是該邊界框是待檢測(cè)目標(biāo)的概率乘上該邊界框和真實(shí)位置的 IoU(框之間的交集除以并集)的積。通過(guò)乘上這個(gè)交并比,反映出該邊界框預(yù)測(cè)位置的精度。如下式所示:

每個(gè)邊界框?qū)?yīng)于 5 個(gè)輸出,分別是 x,y,w,h 和置信度。其中 x,y 代表邊界框的中心離開(kāi)其所在網(wǎng)格單元格邊界的偏移。w,h 代表邊界框真實(shí)寬高相對(duì)于整幅圖像的比例。x,y,w,h 這幾個(gè)參數(shù)都已經(jīng)被限制到了區(qū)間 [0,1] 上。除此以外,每個(gè)單元格還產(chǎn)生 C 個(gè)條件概率,。注意,我們不管 B 的大小,每個(gè)單元格只產(chǎn)生一組這樣的概率。

圖一:YOLO預(yù)測(cè)圖示

test 的非極大值抑制階段,對(duì)于每個(gè)邊界框,按照下式衡量該框是否應(yīng)該予以保留。

這就是每個(gè)單元格的個(gè)體分類(lèi)置信度得分(class-specific confidence scores),這即包含了預(yù)測(cè)的類(lèi)別信息,也包含了對(duì) bbox 值的準(zhǔn)確度。 我們可以設(shè)置一個(gè)閾值,把低分的 class-specific confidence scores 濾掉,剩下的留給給非極大值抑制,得到最終的標(biāo)定框。

在 PASCAL VOC 進(jìn)行測(cè)試時(shí),使用 S=7, B=2。由于共有 20 類(lèi),故 C=20。所以,網(wǎng)絡(luò)輸出大小為 7×7×30。

1.2 網(wǎng)絡(luò)模型結(jié)構(gòu)

圖二:網(wǎng)絡(luò)框架

該網(wǎng)絡(luò)結(jié)構(gòu)包括 24 個(gè)卷積層,最后接 2 個(gè)全連接層。Draknet[13] 網(wǎng)絡(luò)借鑒 GoogleNet 的思想,在每個(gè) 1x1 的卷積層之后再接一個(gè) 3x3 的卷積層的結(jié)構(gòu)替代 GoogleNet 的Inception 結(jié)構(gòu)。論文中還提到了更快版本的 Yolo,只有 9 個(gè)卷積層,其他則保持一致。

1.3 損失函數(shù)

YOLO v1 全部使用了均方差(mean squared error)作為損失(loss)函數(shù)。由三部分組成:坐標(biāo)誤差、IOU 誤差和分類(lèi)誤差。

考慮到每種 loss 的貢獻(xiàn)率,YOLO v1給坐標(biāo)誤差(coordErr)設(shè)置權(quán)重λcoord=5。在計(jì)算 IoU 誤差時(shí),包含物體的格子與不包含物體的格子,二者的 IOU 誤差對(duì)網(wǎng)絡(luò) loss 的貢獻(xiàn)值是不同的。若采用相同的權(quán)值,那么不包含物體的格子的置信度值近似為 0,變相放大了包含物體的格子的置信度誤差,在計(jì)算網(wǎng)絡(luò)參數(shù)梯度時(shí)的影響。為解決這個(gè)問(wèn)題,YOLO 使用 λnoobj=0.5 修正(置信度誤差)iouErr。(此處的‘包含’是指存在一個(gè)物體,它的中心坐標(biāo)落入到格子內(nèi))。

對(duì)于相等的誤差值,大物體誤差對(duì)檢測(cè)的影響應(yīng)小于小物體誤差對(duì)檢測(cè)的影響。這是因?yàn)?,相同的位置偏差占大物體的比例遠(yuǎn)小于同等偏差占小物體的比例。YOLO 將物體大小的信息項(xiàng)(w 和 h)進(jìn)行求平方根來(lái)改進(jìn)這個(gè)問(wèn)題,但并不能完全解決這個(gè)問(wèn)題。

綜上,YOLO v1 在訓(xùn)練過(guò)程中 Loss 計(jì)算如下式所示:

在激活函數(shù)上:

在最后一層使用的是標(biāo)準(zhǔn)的線性激活函數(shù),其他的層都使用 leaky rectified 線性激活函數(shù)。

1.4 總結(jié)

YOLO v1 作為一步檢測(cè)的開(kāi)山之作,最大的特點(diǎn)就是速度快。其將物體檢測(cè)作為回歸問(wèn)題進(jìn)行求解,使用單個(gè)網(wǎng)絡(luò)完成整個(gè)檢測(cè)的方法,大大提升了同類(lèi)目標(biāo)檢測(cè)算法的速度,并且實(shí)現(xiàn)了召回率低,表現(xiàn)為背景誤檢率低的有點(diǎn)。YOLO v1 可以獲取到圖像的整體信息,相比于 region proposal 等方法,有著更廣闊的“視野”。對(duì)其種類(lèi)的物體,訓(xùn)練后識(shí)別效果也十分優(yōu)異,具有很強(qiáng)的泛化能力。

但是 YOLO v1 的精準(zhǔn)性和召回率相對(duì)于 fast rcnn 比較差。其對(duì)背景的誤判率比 Fast RCNN 的誤判率低很多。這說(shuō)明了 YOLO v1 中把物體檢測(cè)的思路轉(zhuǎn)成回歸問(wèn)題的思路有較好的準(zhǔn)確率,但是對(duì)于 bounding box 的定位不是很好。

2.YOLO v2/YOLO9000 更準(zhǔn)、更快、更強(qiáng)

YOLO v1 對(duì)于 bounding box 的定位不是很好,在精度上比同類(lèi)網(wǎng)絡(luò)還有一定的差距,所以 YOLO v2 對(duì)于速度和精度做了很大的優(yōu)化,并且吸收了同類(lèi)網(wǎng)絡(luò)的優(yōu)點(diǎn),一步步做出嘗試。

YOLO v2 在 v1 基礎(chǔ)上做出改進(jìn)后提出。其受到 Faster RCNN 方法的啟發(fā),引入了 anchor。同時(shí)使用了 K-Means 方法,對(duì) anchor 數(shù)量進(jìn)行了討論,在精度和速度之間做出折中。并且修改了網(wǎng)絡(luò)結(jié)構(gòu),去掉了全連接層,改成了全卷積結(jié)構(gòu)。在訓(xùn)練時(shí)引入了世界樹(shù)(WordTree)結(jié)構(gòu),將檢測(cè)和分類(lèi)問(wèn)題做成了一個(gè)統(tǒng)一的框架,并且提出了一種層次性聯(lián)合訓(xùn)練方法,將 ImageNet 分類(lèi)數(shù)據(jù)集和 COCO 檢測(cè)數(shù)據(jù)集同時(shí)對(duì)模型訓(xùn)練。

2.1 更準(zhǔn)

YOLO v2 對(duì)每批數(shù)據(jù)都做了一個(gè)歸一化預(yù)處理。通過(guò)在每一個(gè)卷積層后添加batch normalization,極大的改善了收斂速度同時(shí)減少了對(duì)其它正則方法的依賴(lài)(舍棄了dropout優(yōu)化后依然沒(méi)有過(guò)擬合),使得 mAP 獲得了 2% 的提升。(mAP:平均精度均值(mean Average Precision))

YOLO v1 在分辨率為 224×224 的圖片上進(jìn)行預(yù)訓(xùn)練,在正式訓(xùn)練時(shí)將分辨率提升到 448×448,這需要模型去適應(yīng)新的分辨率。但是 YOLO v2 是直接使用 448×448 的輸入,隨著輸入分辨率的增加,模型提高了 4% 的 mAP。

在預(yù)測(cè)框的數(shù)量上,由于 YOLO v2 將網(wǎng)絡(luò)的輸入分辨率調(diào)整到 416×416,保證為多次卷積后,下采樣率為 32,得到 13×13 的特征圖(feature map)。在這上面使用 9 種 anchor boxes[7],得到 13×13×9=1521 個(gè),這比 YOLO v1 大多了。

YOLO v1 利用全連接層的數(shù)據(jù)完成邊框的預(yù)測(cè),會(huì)導(dǎo)致丟失較多的空間信息,使定位不準(zhǔn)。在 YOLO v2 中作者借鑒了 Faster R-CNN 中的 anchor 思想,來(lái)改善全連接層帶來(lái)的影響。

Anchor 是 RPN(region proposal network)網(wǎng)絡(luò)在 Faster R-CNN 中的一個(gè)關(guān)鍵步驟,是在卷積特征圖上進(jìn)行滑窗操作,每一個(gè)中心可以預(yù)測(cè) 9 種不同大小的候選框。

為了引入 anchor boxes 來(lái)預(yù)測(cè)候選框,作者在網(wǎng)絡(luò)中去掉了全連接層。并去掉了最后的一個(gè)池化層以確保輸出的卷積特征圖有更高的分辨率。然后,通過(guò)縮減網(wǎng)絡(luò),讓圖片輸入分辨率為 416 * 416,目的是為了讓后面產(chǎn)生的卷積特征圖寬高都為奇數(shù),這樣就可以產(chǎn)生一個(gè)中心框(center cell)。

作者觀察到,大物體通常占據(jù)了圖像的中間位置,可以只用中心的一個(gè)框來(lái)預(yù)測(cè)這些物體的位置,否則就要用中間的 4 個(gè)格子來(lái)進(jìn)行預(yù)測(cè),這個(gè)技巧可稍稍提升效率。最后,YOLO v2 使用了卷積層降采樣(采樣因子為 32),使得輸入卷積網(wǎng)絡(luò)的 416 * 416 圖片最終得到 13 * 13 的卷積特征圖(416/32=13)。

沒(méi)有 anchor boxes 的情況下,模型召回率(recall)為 81%,mAP 為 69.5%;加入 anchor boxes,模型召回率為 88%,mAP 為 69.2%。這樣看來(lái),準(zhǔn)確率只有小幅度的下降,而召回率則提升了 7%。

在使用 anchor 的時(shí)候作者遇到了兩個(gè)問(wèn)題,第一個(gè)是 anchor boxes 的寬高維度往往是精選的先驗(yàn)框(hand-picked priors)也就是說(shuō)人工選定的先驗(yàn)框。雖然在訓(xùn)練過(guò)程中網(wǎng)絡(luò)也會(huì)學(xué)習(xí)調(diào)整框的寬高維度,最終得到準(zhǔn)確的 bounding boxes。但是,如果一開(kāi)始就選擇了更好的、更有代表性的先驗(yàn)框維度,那么網(wǎng)絡(luò)就更容易學(xué)到準(zhǔn)確的預(yù)測(cè)位置。

為了使網(wǎng)絡(luò)更易學(xué)到準(zhǔn)確的預(yù)測(cè)位置,作者使用了 K-means 聚類(lèi)方法類(lèi)訓(xùn)練 bounding boxes,可以自動(dòng)找到更好的框?qū)捀呔S度。傳統(tǒng)的 K-means 聚類(lèi)方法使用的是歐氏距離函數(shù),也就意味著較大的框會(huì)比較小的框產(chǎn)生更多的誤差,聚類(lèi)結(jié)果可能會(huì)偏離。為此,作者采用 IOU 得分作為評(píng)價(jià)標(biāo)準(zhǔn),這樣的話,誤差就和框的尺度無(wú)關(guān)了,最終的距離函數(shù)為:

對(duì)數(shù)據(jù)集的聚類(lèi)結(jié)果如下:

圖三:聚類(lèi)數(shù)目與Avg IoU的關(guān)系(使用VOC2007和COCO數(shù)據(jù)集)

可以看出 k=5 在模型復(fù)雜度與召回率之間取一個(gè)折中值。 在使用 anchor 的時(shí)候,遇到的第二個(gè)問(wèn)題是加入 anchor box 的模型不穩(wěn)定。作者認(rèn)為模型不穩(wěn)定的原因來(lái)自于預(yù)測(cè) bbox 的(x,y)。如下:

在 Faster R-CNN 的預(yù)測(cè)中,偏移因子,是沒(méi)有限制的,因此收斂會(huì)比較慢。故我們想讓每個(gè)模型預(yù)測(cè)目標(biāo)附近的一個(gè)部分,論文對(duì)采用了和 YOLO v1 一樣的方法,直接預(yù)測(cè)中心點(diǎn),并使用 Sigmoid 函數(shù)將偏移量限制在 0 到 1 之間(這里的尺度是針對(duì)網(wǎng)格框)。

計(jì)算公式如下:

bx,by,bw,bh 是預(yù)測(cè)的 bbox 的中心點(diǎn)坐標(biāo)和寬高,中心點(diǎn)坐標(biāo)的尺度是相對(duì)于網(wǎng)格。

如圖四:

圖四:各個(gè)參數(shù)的位置圖示

經(jīng)過(guò)維度聚類(lèi)和直接位置預(yù)測(cè)的操作,在原有的 anchor boxes 版本上又提升了 5% 的 mAP。

YOLO v1 在對(duì)于大目標(biāo)檢測(cè)有很好的效果,但是對(duì)小目標(biāo)檢測(cè)上,效果欠佳。為了改善這一問(wèn)題,作者參考了 Faster R-CNN 和 SSD 的想法,在不同層次的特征圖上獲取不同分辨率的特征。作者將上層的(前面 26×26)高分辨率的特征圖(feature map)直接連到 13×13 的 feature map 上。把 26×26×512 轉(zhuǎn)換為 13×13×2048,并拼接住在一起使整體性能提升 1%。

Multi-Scale Training

和 GoogleNet 訓(xùn)練時(shí)一樣,為了提高模型的魯棒性(robust),在訓(xùn)練的時(shí)候使用多尺度[6]的輸入進(jìn)行訓(xùn)練。因?yàn)榫W(wǎng)絡(luò)的卷積層下采樣因子為 32,故輸入尺寸選擇 32 的倍數(shù) 288,352,…,544。

圖五:不同尺度訓(xùn)練的精度與其他網(wǎng)絡(luò)的精度對(duì)比

2.2 更快

大多數(shù)目標(biāo)檢測(cè)的框架是建立在 VGG-16 上的,VGG-16 在 ImageNet 上能達(dá)到 90% 的 top-5(最后概率向量最大的前五名中出現(xiàn)了正確概率即為預(yù)測(cè)正確),但是單張圖片需要 30.69 billion 浮點(diǎn)運(yùn)算,YOLO v2 是依賴(lài)于 DarkNet-19 的結(jié)構(gòu),該模型在 ImageNet 上能達(dá)到 91% 的 top-5,并且單張圖片只需要 5.58 billion 浮點(diǎn)運(yùn)算,大大的加快了運(yùn)算速度。DarkNet 的結(jié)構(gòu)圖如下:

圖六:YOLOv2網(wǎng)絡(luò)結(jié)構(gòu)

YOLO v2 去掉 YOLO v1 的全連接層,同時(shí)去掉 YOLO v1 的最后一個(gè)池化層,增加特征的分辨率,修改網(wǎng)絡(luò)的輸入,保證特征圖有一個(gè)中心點(diǎn),這樣可提高效率。并且是以每個(gè) anchor box 來(lái)預(yù)測(cè)物體種類(lèi)的。

作者將分類(lèi)和檢測(cè)分開(kāi)訓(xùn)練,在訓(xùn)練分類(lèi)時(shí),以 Darknet-19 為模型在 ImageNet 上用隨機(jī)梯度下降法(Stochastic gradient descent)跑了 160 epochs,跑完了 160 epochs 后,把輸入尺寸從 224×224 上調(diào)為 448×448,這時(shí)候?qū)W習(xí)率調(diào)到 0.001,再跑了 10 epochs, DarkNet 達(dá)到了 top-1 準(zhǔn)確率 76.5%,top-5 準(zhǔn)確率 93.3%。

在訓(xùn)練檢測(cè)時(shí),作者把分類(lèi)網(wǎng)絡(luò)改成檢測(cè)網(wǎng)絡(luò),去掉原先網(wǎng)絡(luò)的最后一個(gè)卷積層,取而代之的是使用 3 個(gè) 3×3x1024 的卷積層,并且每個(gè)新增的卷積層后面接 1×1 的卷積層,數(shù)量是我們要檢測(cè)的類(lèi)的數(shù)量。

2.3 更強(qiáng)

論文提出了一種聯(lián)合訓(xùn)練的機(jī)制:使用識(shí)別數(shù)據(jù)集訓(xùn)練模型識(shí)別相關(guān)部分,使用分類(lèi)數(shù)據(jù)集訓(xùn)練模型分類(lèi)相關(guān)部分。

眾多周知,檢測(cè)數(shù)據(jù)集的標(biāo)注要比分類(lèi)數(shù)據(jù)集打標(biāo)簽繁瑣的多,所以 ImageNet 分類(lèi)數(shù)據(jù)集比 VOC 等檢測(cè)數(shù)據(jù)集高出幾個(gè)數(shù)量級(jí)。所以在 YOLO v1 中,邊界框的預(yù)測(cè)其實(shí)并不依賴(lài)于物體的標(biāo)簽,YOLO v2 實(shí)現(xiàn)了在分類(lèi)和檢測(cè)數(shù)據(jù)集上的聯(lián)合訓(xùn)練。對(duì)于檢測(cè)數(shù)據(jù)集,可以用來(lái)學(xué)習(xí)預(yù)測(cè)物體的邊界框、置信度以及為物體分類(lèi),而對(duì)于分類(lèi)數(shù)據(jù)集可以?xún)H用來(lái)學(xué)習(xí)分類(lèi),但是其可以大大擴(kuò)充模型所能檢測(cè)的物體種類(lèi)。

作者選擇在 COCO 和 ImageNet 數(shù)據(jù)集上進(jìn)行聯(lián)合訓(xùn)練,遇到的第一問(wèn)題是兩者的類(lèi)別并不是完全互斥的,比如"Norfolk terrier"明顯屬于"dog",所以作者提出了一種層級(jí)分類(lèi)方法(Hierarchical classification),根據(jù)各個(gè)類(lèi)別之間的從屬關(guān)系(根據(jù) WordNet)建立一種樹(shù)結(jié)構(gòu) WordTree,結(jié)合 COCO 和 ImageNet 建立的詞樹(shù)(WordTree)如下圖所示:

圖七:WordTree

WordTree 中的根節(jié)點(diǎn)為"physical object",每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)都屬于同一子類(lèi),可以對(duì)它們進(jìn)行 softmax 處理。在給出某個(gè)類(lèi)別的預(yù)測(cè)概率時(shí),需要找到其所在的位置,遍歷這個(gè)路徑,然后計(jì)算路徑上各個(gè)節(jié)點(diǎn)的概率之積。

在訓(xùn)練時(shí),如果是檢測(cè)樣本,按照 YOLO v2 的 loss 計(jì)算誤差,而對(duì)于分類(lèi)樣本,只計(jì)算分類(lèi)誤差。在預(yù)測(cè)時(shí),YOLO v2 給出的置信度就是 ,同時(shí)會(huì)給出邊界框位置以及一個(gè)樹(shù)狀概率圖。在這個(gè)概率圖中找到概率最高的路徑,當(dāng)達(dá)到某一個(gè)閾值時(shí)停止,就用當(dāng)前節(jié)點(diǎn)表示預(yù)測(cè)的類(lèi)別。

2.4 總結(jié)

通過(guò)對(duì) YOLO v1 網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法的改進(jìn),提出了 YOLO v2/YOLO9000 實(shí)時(shí)目標(biāo)檢測(cè)系統(tǒng)。YOLO v2 在 YOLO v1 的基礎(chǔ)上進(jìn)行了一系列的改進(jìn),在快速的同時(shí)達(dá)到 state of the art。同時(shí),YOLO v2 可以適應(yīng)不同的輸入尺寸,根據(jù)需要調(diào)整檢測(cè)準(zhǔn)確率和檢測(cè)速度(值得參考)。作者綜合了 ImageNet 數(shù)據(jù)集和 COCO 數(shù)據(jù)集,采用聯(lián)合訓(xùn)練的方式訓(xùn)練,使該系統(tǒng)可以識(shí)別超過(guò) 9000 種物品。除此之外,作者提出的 WordTree 可以綜合多種數(shù)據(jù)集的方法可以應(yīng)用于其它計(jì)算機(jī)數(shù)覺(jué)任務(wù)中。但是對(duì)于重疊的分類(lèi),YOLO v2 依然無(wú)法給出很好的解決方案。

3.YOLO v3 集大成之作

YOLO v3 是到目前為止,速度和精度最均衡的目標(biāo)檢測(cè)網(wǎng)絡(luò)。通過(guò)多種先進(jìn)方法的融合,將 YOLO 系列的短板(速度很快,不擅長(zhǎng)檢測(cè)小物體等)全部補(bǔ)齊。達(dá)到了令人驚艷的效果和拔群的速度。

圖八:YOLOv3與其他網(wǎng)絡(luò)的mAP與運(yùn)行時(shí)間對(duì)比

3.1 多標(biāo)簽分類(lèi)預(yù)測(cè)

在 YOLO9000[14] 之后,我們的系統(tǒng)使用維度聚類(lèi)(dimension clusters )作為 anchor boxes 來(lái)預(yù)測(cè)邊界框,網(wǎng)絡(luò)為每個(gè)邊界框預(yù)測(cè) 4 個(gè)坐標(biāo)。

在 YOLO v3[15] 中使用邏輯回歸預(yù)測(cè)每個(gè)邊界框(bounding box)的對(duì)象分?jǐn)?shù)。 如果先前的邊界框比之前的任何其他邊界框重疊 ground truth 對(duì)象,則該值應(yīng)該為 1。如果以前的邊界框不是最好的,但是確實(shí)將 ground truth 對(duì)象重疊了一定的閾值以上,我們會(huì)忽略這個(gè)預(yù)測(cè),按照進(jìn)行。我們使用閾值 0.5。與 YOLO v2 不同,我們的系統(tǒng)只為每個(gè) ground truth 對(duì)象分配一個(gè)邊界框。如果先前的邊界框未分配給 grounding box 對(duì)象,則不會(huì)對(duì)坐標(biāo)或類(lèi)別預(yù)測(cè)造成損失。

在 YOLO v3 中,每個(gè)框使用多標(biāo)簽分類(lèi)來(lái)預(yù)測(cè)邊界框可能包含的類(lèi)。該算法不使用 softmax,因?yàn)樗鼘?duì)于高性能沒(méi)有必要,因此 YOLO v3 使用獨(dú)立的邏輯分類(lèi)器。在訓(xùn)練過(guò)程中,我們使用二元交叉熵?fù)p失來(lái)進(jìn)行類(lèi)別預(yù)測(cè)。對(duì)于重疊的標(biāo)簽,多標(biāo)簽方法可以更好地模擬數(shù)據(jù)。

3.2 跨尺度預(yù)測(cè)

YOLO v3 采用多個(gè)尺度融合的方式做預(yù)測(cè)。原來(lái)的 YOLO v2 有一個(gè)層叫:passthrough layer,假設(shè)最后提取的 feature map 的 size 是 13*13,那么這個(gè)層的作用就是將前面一層的 26*26 的 feature map 和本層的 13*13 的 feature map 進(jìn)行連接,有點(diǎn)像 ResNet。這樣的操作也是為了加強(qiáng) YOLO 算法對(duì)小目標(biāo)檢測(cè)的精確度。這個(gè)思想在 YOLO v3 中得到了進(jìn)一步加強(qiáng),在 YOLO v3 中采用類(lèi)似 FPN 的上采樣(upsample)和融合做法(最后融合了 3 個(gè) scale,其他兩個(gè) scale 的大小分別是 26*26 和 52*52),在多個(gè) scale 的 feature map 上做檢測(cè),對(duì)于小目標(biāo)的檢測(cè)效果提升還是比較明顯的。雖然在 YOLO v3 中每個(gè)網(wǎng)格預(yù)測(cè) 3 個(gè)邊界框,看起來(lái)比 YOLO v2 中每個(gè) grid cell 預(yù)測(cè) 5 個(gè)邊界框要少,但因?yàn)?YOLO v3 采用了多個(gè)尺度的特征融合,所以邊界框的數(shù)量要比之前多很多。

3.3 網(wǎng)絡(luò)結(jié)構(gòu)改變

YOLO v3 使用新的網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)特征提取。在 Darknet-19 中添加殘差網(wǎng)絡(luò)的混合方式,使用連續(xù)的 3×3 和 1×1 卷積層,但現(xiàn)在也有一些 shortcut 連接,YOLO v3 將其擴(kuò)充為 53 層并稱(chēng)之為 Darknet-53。

圖九:Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)

這個(gè)新網(wǎng)絡(luò)比 Darknet-19 功能強(qiáng)大得多,而且比 ResNet-101 或 ResNet-152 更有效。

圖十:ImageNet結(jié)果

每個(gè)網(wǎng)絡(luò)都使用相同的設(shè)置進(jìn)行訓(xùn)練,并以 256×256 的單精度測(cè)試進(jìn)行測(cè)試。運(yùn)行時(shí)間是在 Titan X 上以 256×256 進(jìn)行測(cè)量的。因此,Darknet-53 可與 state-of-the-art 的分類(lèi)器相媲美,但浮點(diǎn)運(yùn)算更少,速度更快。Darknet-53 比 ResNet-101 更好,速度更快 1:5 倍。

Darknet-53 與 ResNet-152 具有相似的性能,速度提高 2 倍。 Darknet-53 也可以實(shí)現(xiàn)每秒最高的測(cè)量浮點(diǎn)運(yùn)算。這意味著網(wǎng)絡(luò)結(jié)構(gòu)可以更好地利用 GPU,從而使其評(píng)估效率更高,速度更快。

3.4 總結(jié)

YOLO 檢測(cè)算法進(jìn)行目標(biāo)檢測(cè),取得了較高的檢測(cè)速度和檢測(cè)準(zhǔn)確率。該算法不僅對(duì)于實(shí)物有著很好的效果,對(duì)于其他目標(biāo),如藝術(shù)作品等同樣具有很好的兼容性。YOLO 算法相比其他算法更符合工業(yè)界對(duì)目標(biāo)檢測(cè)算法實(shí)時(shí)性的要求,簡(jiǎn)單易實(shí)現(xiàn),對(duì)于嵌入式很友好。

YOLO 系列不斷吸收目標(biāo)檢測(cè)同類(lèi)算法的優(yōu)點(diǎn),將其應(yīng)用于自身,不斷進(jìn)步,可謂成長(zhǎng)中的算法。

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

    關(guān)注

    0

    文章

    139

    瀏覽量

    16030
  • 自動(dòng)駕駛
    +關(guān)注

    關(guān)注

    784

    文章

    13902

    瀏覽量

    166710
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5510

    瀏覽量

    121349

原文標(biāo)題:一文看盡目標(biāo)檢測(cè):從YOLO v1到v3的進(jìn)化之路

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    YOLO的核心思想及YOLO的實(shí)現(xiàn)細(xì)節(jié)

    在訓(xùn)練的過(guò)程中,當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自檢測(cè)數(shù)據(jù)集的圖片與標(biāo)記信息,那么就把這些數(shù)據(jù)用完整的 YOLO v2 loss 功能反向傳播這個(gè)圖片。當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自分類(lèi)數(shù)據(jù)集的圖片和分類(lèi)標(biāo)記信息,只用整個(gè)結(jié)構(gòu)中分類(lèi)部分的 loss 功能反向傳播這個(gè)圖片。
    的頭像 發(fā)表于 06-05 09:12 ?2.3w次閱讀
    <b class='flag-5'>YOLO</b>的核心思想及<b class='flag-5'>YOLO</b>的實(shí)現(xiàn)細(xì)節(jié)

    助力AIoT應(yīng)用:在米爾FPGA開(kāi)發(fā)板上實(shí)現(xiàn)Tiny YOLO V4

    量和內(nèi)存占用) 三、 獲取數(shù)據(jù)集和模型可下載開(kāi)源訓(xùn)練集或預(yù)訓(xùn)練模型。為了確保兼容性,建議將模型轉(zhuǎn)換為 ONNX 格式,以便后續(xù)能在 FPGA 上完成優(yōu)化。1.下載 Tiny YOLO V4 模型:
    發(fā)表于 12-06 17:18

    請(qǐng)教下大神下面這個(gè)電路中V1,V2,V3之間的關(guān)系,最好有計(jì)算過(guò)程

    請(qǐng)教下大神下面這個(gè)電路中V1,V2,V3之間的關(guān)系,最好有計(jì)算過(guò)程,謝不勝感激!
    發(fā)表于 06-25 21:32

    XDS100仿真器V1、V2、V3三個(gè)版本有什么區(qū)別?

    XDS100仿真器V1、V2、V3在硬件上和軟件上存在怎樣的區(qū)別?能看一下這幾個(gè)版本的硬件原理圖嗎?在線等。。。
    發(fā)表于 08-20 06:31

    目標(biāo)識(shí)別之YOLO學(xué)習(xí)筆記

    目標(biāo)識(shí)別 YOLO 學(xué)習(xí)筆記(一)
    發(fā)表于 05-12 15:05

    架構(gòu)------消息------邏輯(版本V1

    `架構(gòu)------消息------邏輯(版本V1)××××非標(biāo)自動(dòng)化設(shè)備軟件架構(gòu)(無(wú)PLC版本)---->消息機(jī)制---->邏輯消息的構(gòu)成(V1)×××
    發(fā)表于 02-21 11:33

    介紹yolo v4版的安裝與測(cè)試

    nvidia公司出品的低成本jetson nano,利用CUDA實(shí)現(xiàn)GPU加速。文章目錄1. 準(zhǔn)備工作2. 安裝YOLO3. 測(cè)試參考文獻(xiàn)1. 準(zhǔn)備工作jetson nano 4G內(nèi)存版,安裝系統(tǒng)鏡像,自帶的jetpack 4.
    發(fā)表于 02-17 07:06

    全志V853 在 NPU 轉(zhuǎn)換 YOLO V3 模型

    所開(kāi)發(fā),他也因此憑借該算法獲得了計(jì)算機(jī)視覺(jué)領(lǐng)域的很多獎(jiǎng)項(xiàng)。本文將通過(guò) YOLO V3 模型的下載、轉(zhuǎn)換、仿真三部分講解如何使用現(xiàn)成的模型轉(zhuǎn)換為 V853 NPU 所支持的模型。模型的準(zhǔn)備在開(kāi)
    發(fā)表于 12-19 10:36

    使用Yolo-v4-Tf-Tiny模型運(yùn)行object_detection_demo.py時(shí)報(bào)錯(cuò)怎么解決?

    采用yolo-v4-tiny-tf 模型,運(yùn)行對(duì)象檢測(cè) Python* 演示,架構(gòu)類(lèi)型相當(dāng)于 yolo. 收到錯(cuò)誤: ValueError: cannot reshape array of size 43095 into shape (
    發(fā)表于 08-15 08:14

    無(wú)法使用OpenVINO trade工具套件下載Yolo v3模型怎么解決?

    模型下載器目錄執(zhí)行命令./downloader.py --all 目錄\\deployment_tools\\tools\\model_downloader\\intel中未找到 Yolo v3 模型
    發(fā)表于 08-15 07:33

    『 RJIBI 』-基于FPGA的YOLO-V3物體識(shí)別計(jì)算套件

    1. 引言 基于RJIBI公司硬件開(kāi)發(fā)套件的YOLO-V3物體識(shí)別檢測(cè)算法的相應(yīng)軟、硬件實(shí)現(xiàn)。 本文主要闡述和規(guī)定了兩大部分內(nèi)容:(1)機(jī)器學(xué)習(xí)推理框架針對(duì)在MPSOC FPGA平臺(tái)上的ARM核心
    發(fā)表于 05-19 10:22 ?1.4w次閱讀

    目標(biāo)檢測(cè)—YOLO的重要性!

    表示。 個(gè)人學(xué)習(xí)來(lái)看:優(yōu)秀的計(jì)算機(jī)視覺(jué)工程師,目標(biāo)檢測(cè)的學(xué)習(xí)避免不了,而目標(biāo)檢測(cè)的核心就是YOLOYOLO系列也一直在發(fā)展,對(duì)于它的學(xué)習(xí)迫在眉睫。 職業(yè)發(fā)展來(lái)看:
    的頭像 發(fā)表于 06-10 15:45 ?4251次閱讀

    YOLO v4在jetson nano的安裝及測(cè)試

    /yolo/本問(wèn)介紹yolo v4版的安裝與測(cè)試。為了提高檢測(cè)速率,硬件部分選擇了nvidia公司出品的低成本jetson nano,利用CUDA實(shí)現(xiàn)GPU加速。文章目錄1. 準(zhǔn)備工作
    發(fā)表于 12-22 18:50 ?9次下載
    <b class='flag-5'>YOLO</b> <b class='flag-5'>v</b>4在jetson nano的安裝及測(cè)試

    YOLO v5與雙目測(cè)距結(jié)合實(shí)現(xiàn)目標(biāo)的識(shí)別和定位測(cè)距

    的python3.6的虛擬環(huán)境) yolov5模型版本YOLO v5s 雙目攝像頭間距:12cm 雙目攝像頭焦距:100度/3mm 雙目攝像頭輸出分辨率為:2560*720。
    發(fā)表于 10-18 14:23 ?4次下載

    基于YOLO技術(shù)的植物檢測(cè)與計(jì)數(shù)

    利用Roboflow平臺(tái)對(duì)數(shù)據(jù)進(jìn)行有效的管理和標(biāo)注。對(duì)于植物檢測(cè),使用實(shí)時(shí)目標(biāo)檢測(cè)能力強(qiáng)的YOLO方法。YOLO通過(guò)將輸入圖像劃分為網(wǎng)格并預(yù)測(cè)每個(gè)網(wǎng)格單元的邊界框和類(lèi)別概率,在不犧牲精度的情況下實(shí)現(xiàn)了令人印象深刻的檢測(cè)速度。
    的頭像 發(fā)表于 12-12 09:41 ?907次閱讀
    基于<b class='flag-5'>YOLO</b>技術(shù)的植物檢測(cè)與計(jì)數(shù)