溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

發(fā)布時(shí)間:2021-12-27 09:13:01 來源:億速云 閱讀:142 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!


目標(biāo)檢測(cè)評(píng)價(jià)指標(biāo)

  • IoU(Intersection-over-Union)指標(biāo)

    IoU 簡(jiǎn)稱交并比,顧名思義數(shù)學(xué)中交集與并集的比例。假設(shè)有兩個(gè)集合 A 與 B, IoU 即等于 A 與 B 的交集除以 A 與 B 的并集,表達(dá)式如下:

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

在目標(biāo)檢測(cè)中,IoU 為預(yù)測(cè)框 (Prediction) 和真實(shí)框 (Ground truth) 的交并比。如下圖所示,在關(guān)于小貓的目標(biāo)檢測(cè)中,紫線邊框?yàn)轭A(yù)測(cè)框 (Prediction),紅線邊框?yàn)檎鎸?shí)框 (Ground truth)。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
在目標(biāo)檢測(cè)任務(wù)中,通常取 IoU≥0.5,認(rèn)為召回。如果 IoU 閾值設(shè)置更高,召回率將會(huì)降低,但定位框則更加精確。
理想的情況,當(dāng)然是預(yù)測(cè)框與真實(shí)框重疊越多越好,如果兩者完全重疊,則交集與并集面積相同,此時(shí) IoU 等于 1。

YOLOv1

YOLOv1 創(chuàng)新:
  • 將整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸 bounding box 的位置和所屬的類別(將對(duì)象檢測(cè)作為一個(gè)回歸問題)

  • 速度快,one stage detection 的開山之作

  • 速度快,one stage detection 的開山之作

之前的目標(biāo)檢測(cè)方法需要先產(chǎn)生候選區(qū)再檢測(cè)的方法雖然有相對(duì)較高的檢測(cè)準(zhǔn)確率,但運(yùn)行速度較慢。

YOLO 將識(shí)別與定位合二為一,結(jié)構(gòu)簡(jiǎn)便,檢測(cè)速度快,更快的 Fast YOLO 可以達(dá)到 155FPS。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
YOLOv1 優(yōu)缺點(diǎn)
  • YOLO 模型相對(duì)于之前的物體檢測(cè)方法有多個(gè) 優(yōu)點(diǎn)

  1. YOLO 檢測(cè)物體非???。
    因?yàn)闆]有復(fù)雜的檢測(cè)流程,只需要將圖像輸入到神經(jīng)網(wǎng)絡(luò)就可以得到檢測(cè)結(jié)果,YOLO 可以非??斓耐瓿晌矬w檢測(cè)任務(wù)。標(biāo)準(zhǔn)版本的 YOLO 在 Titan X 的 GPU 上能達(dá)到 45 FPS。更快的 Fast YOLO 檢測(cè)速度可以達(dá)到 155 FPS 。而且,YOLO 的 mAP 是之前其他實(shí)時(shí)物體檢測(cè)系統(tǒng)的兩倍以上。

  2. YOLO 可以很好的避免背景錯(cuò)誤,產(chǎn)生 false positives。
    不像其他物體檢測(cè)系統(tǒng)使用了滑窗或 region proposal,分類器只能得到圖像的局部信息。YOLO 在訓(xùn)練和測(cè)試時(shí)都能夠看到一整張圖像的信息,因此 YOLO 在檢測(cè)物體時(shí)能很好的利用上下文信息,從而不容易在背景上預(yù)測(cè)出錯(cuò)誤的物體信息。和 Fast-R-CNN 相比,YOLO 的背景錯(cuò)誤不到 Fast-R-CNN 的一半。

  3. YOLO 可以學(xué)到物體的泛化特征。
    當(dāng) YOLO 在自然圖像上做訓(xùn)練,在藝術(shù)作品上做測(cè)試時(shí),YOLO 表現(xiàn)的性能比 DPM、R-CNN 等之前的物體檢測(cè)系統(tǒng)要好很多。因?yàn)?YOLO 可以學(xué)習(xí)到高度泛化的特征,從而遷移到其他領(lǐng)域。

  • 盡管 YOLO 有這些優(yōu)點(diǎn),它也有一些缺點(diǎn)

  1. YOLO 的物體檢測(cè)精度低于其他 state-of-the-art 的物體檢測(cè)系統(tǒng)。

  2. YOLO 容易產(chǎn)生物體的定位錯(cuò)誤。

  3. YOLO 對(duì)小物體的檢測(cè)效果不好(尤其是密集的小物體,因?yàn)橐粋€(gè)柵格只能預(yù)測(cè) 2 個(gè)物體)。

  4. 召回率低

  5. YOLOv1 最大的劣勢(shì)是不夠精確

網(wǎng)絡(luò)結(jié)構(gòu)及檢測(cè)流程
  • 網(wǎng)絡(luò)結(jié)構(gòu)

YOLO 網(wǎng)絡(luò)借鑒了 GoogLeNet 分類網(wǎng)絡(luò)結(jié)構(gòu),不同的是 YOLO 使用 1x1 卷積層和 3x3 卷積層替代 inception module。如下圖所示,整個(gè)檢測(cè)網(wǎng)絡(luò)包括 24 個(gè)卷積層和 2 個(gè)全連接層。其中,卷積層用來提取圖像特征,全連接層用來預(yù)測(cè)圖像位置和類別概率值。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
  • 檢測(cè)流程

  • 先將圖片縮放到固定尺寸

  • YOLO 將輸入圖像劃分為 S*S (論文中是 7×7)的柵格,每個(gè)柵格負(fù)責(zé)檢測(cè)中心落在該柵格中的物體。

  • 每一個(gè)柵格預(yù)測(cè) B (論文中是 2 個(gè))個(gè) bounding boxes(對(duì)每個(gè)邊界框會(huì)預(yù)測(cè) 5 個(gè)值,分別是邊界框的中心 x,y(相對(duì)于所屬網(wǎng)格的邊界),邊界框的寬高 w, h(相對(duì)于原始輸入圖像的寬高的比例)),以及這些 bounding boxes 的 confidence scores。(邊界框與 ground truth box 的 IOU 值)

  • 同時(shí)每個(gè)網(wǎng)格還需要預(yù)測(cè) c (論文中的 c=20)個(gè)類條件概率 (是一個(gè) c 維向量,表示某個(gè)物體 object 在這個(gè)網(wǎng)格中,且該 object 分別屬于各個(gè)類別的概率,這里的 c 類物體不包含背景)

  • 每個(gè)網(wǎng)格需要預(yù)測(cè) 2x5+20=30 個(gè)值,這些值被映射到一個(gè) 30 維的向量

  • YOLO 最后采用非極大值抑制(NMS)算法從輸出結(jié)果中提取最有可能的對(duì)象和其對(duì)應(yīng)的邊界框。(下面非極大抑制的流程)

    • 1. 設(shè)置一個(gè) Score 的閾值,一個(gè) IOU 的閾值(overlap);

    • 2. 對(duì)于每類對(duì)象,遍歷屬于該類的所有候選框,①過濾掉 Score 低于 Score 閾值的候選框;
      ②找到剩下的候選框中最大 Score 對(duì)應(yīng)的候選框,添加到輸出列表;
      ③進(jìn)一步計(jì)算剩下的候選框與②中輸出列表中每個(gè)候選框的 IOU,若該 IOU 大于設(shè)置的 IOU 閾值,將該候選框過濾掉(大于一定閾值,代表重疊度比較高),否則加入輸出列表中;
      ④最后輸出列表中的候選框即為圖片中該類對(duì)象預(yù)測(cè)的所有邊界框

    • 3. 返回步驟 2 繼續(xù)處理下一類對(duì)象。

當(dāng) overlap 閾值越大、proposals boxes 被壓制的就越少,結(jié)果就是導(dǎo)致大量的 FP (False Positives),進(jìn)一步導(dǎo)致檢測(cè)精度下降與丟失 (原因在于對(duì)象與背景圖像之間不平衡比率,導(dǎo)致 FP 增加數(shù)目遠(yuǎn)高于 TP)

當(dāng) overlap 閾值很小的時(shí)候,導(dǎo)致 proposals boxes 被壓制的很厲害,導(dǎo)致 recall 大幅下降。YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
輸入輸出、損失函數(shù)是什么
  • 輸入:論文中輸入是 448×448

  • 損失函數(shù)

    YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

如上圖所示,損失函數(shù)分為坐標(biāo)預(yù)測(cè)(藍(lán)色框)、含有物體的邊界框的 confidence 預(yù)測(cè)(紅色框)、不含有物體的邊界框的 confidence 預(yù)測(cè)(黃色框)、分類預(yù)測(cè)(紫色框)四個(gè)部分。

由于不同大小的邊界框?qū)︻A(yù)測(cè)偏差的敏感度不同,小的邊界框?qū)︻A(yù)測(cè)偏差的敏感度更大。為了均衡不同尺寸邊界框?qū)︻A(yù)測(cè)偏差的敏感度的差異。作者巧妙的對(duì)邊界框的 w,h 取均值再求 L2 loss. YOLO 中更重視坐標(biāo)預(yù)測(cè),賦予坐標(biāo)損失更大的權(quán)重,記為 coord,在 pascal voc 訓(xùn)練中 coodd=5 ,classification error 部分的權(quán)重取 1。

某邊界框的置信度定義為:某邊界框的 confidence = 該邊界框存在某類對(duì)象的概率 pr (object)* 該邊界框與該對(duì)象的 ground truth 的 IOU 值 ,若該邊界框存在某個(gè)對(duì)象 pr (object)=1 ,否則 pr (object)=0 。由于一幅圖中大部分網(wǎng)格中是沒有物體的,這些網(wǎng)格中的邊界框的 confidence 置為 0,相比于有物體的網(wǎng)格,這些不包含物體的網(wǎng)格更多,對(duì)梯度更新的貢獻(xiàn)更大,會(huì)導(dǎo)致網(wǎng)絡(luò)不穩(wěn)定。為了平衡上述問題,YOLO 損失函數(shù)中對(duì)沒有物體的邊界框的 confidence error 賦予較小的權(quán)重,記為 noobj,對(duì)有物體的邊界框的 confidence error 賦予較大的權(quán)重。在 pascal VOC 訓(xùn)練中 noobj=0.5 ,有物體的邊界框的 confidence error 的權(quán)重設(shè)為 1.

  • 輸出:結(jié)果是一個(gè) 7×7×30 的張量。

結(jié)果
YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

YOLOv2

YOLOv2 創(chuàng)新點(diǎn)

YOLOv1 雖然檢測(cè)速度快,但在定位方面不夠準(zhǔn)確,并且召回率較低。為了提升定位準(zhǔn)確度,改善召回率,YOLOv2 在 YOLOv1 的基礎(chǔ)上提出了幾種改進(jìn)策略

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
  • Batch Normalization

YOLOv2 中在每個(gè)卷積層后加 Batch Normalization (BN) 層,去掉 dropout. BN 層可以起到一定的正則化效果,能提升模型收斂速度,防止模型過擬合。YOLOv2 通過使用 BN 層使得 mAP 提高了 2%。

  • High Resolution Classifier (高分辨率)

目前的大部分檢測(cè)模型都會(huì)使用主流分類網(wǎng)絡(luò)(如 vgg、resnet)在 ImageNet 上的預(yù)訓(xùn)練模型作為特征提取器,而這些分類網(wǎng)絡(luò)大部分都是以小于 256x256 的圖片作為輸入進(jìn)行訓(xùn)練的,低分辨率會(huì)影響模型檢測(cè)能力。YOLOv2 將輸入圖片的分辨率提升至 448x448,為了使網(wǎng)絡(luò)適應(yīng)新的分辨率,YOLOv2 先在 ImageNet 上以 448x448 的分辨率對(duì)網(wǎng)絡(luò)進(jìn)行 10 個(gè) epoch 的微調(diào),讓網(wǎng)絡(luò)適應(yīng)高分辨率的輸入。通過使用高分辨率的輸入,YOLOv2 的 mAP 提升了約 4%。

  • Convolutional With Anchor Boxes 使用 anchor box 進(jìn)行卷積

YOLOv1 利用全連接層直接對(duì)邊界框進(jìn)行預(yù)測(cè),導(dǎo)致丟失較多空間信息,定位不準(zhǔn)。YOLOv2 去掉了 YOLOv1 中的全連接層,使用 Anchor Boxes 預(yù)測(cè)邊界框,同時(shí)為了得到更高分辨率的特征圖,YOLOv2 還去掉了一個(gè)池化層。由于圖片中的物體都傾向于出現(xiàn)在圖片的中心位置,若特征圖恰好有一個(gè)中心位置,利用這個(gè)中心位置預(yù)測(cè)中心點(diǎn)落入該位置的物體,對(duì)這些物體的檢測(cè)會(huì)更容易。所以總希望得到的特征圖的寬高都為奇數(shù)。YOLOv2 通過縮減網(wǎng)絡(luò),使用 416x416 的輸入,模型下采樣的總步長(zhǎng)為 32,最后得到 13x13 的特征圖,然后對(duì) 13x13 的特征圖的每個(gè) cell 預(yù)測(cè) 5 個(gè) anchor boxes,對(duì)每個(gè) anchor box 預(yù)測(cè)邊界框的位置信息、置信度和一套分類概率值。使用 anchor boxes 之后,YOLOv2 可以預(yù)測(cè) 13x13x5=845 個(gè)邊界框,模型的召回率由原來的 81% 提升到 88%,mAP 由原來的 69.5% 降低到 69.2%. 召回率提升了 7%,準(zhǔn)確率下降了 0.3%。

  • New Network:Darknet-19

YOLOv2 采用 Darknet-19,其網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,包括 19 個(gè)卷積層和 5 個(gè) max pooling 層,主要采用 3x3 卷積和 1x1 卷積,這里 1x1 卷積可以壓縮特征圖通道數(shù)以降低模型計(jì)算量和參數(shù),每個(gè)卷積層后使用 BN 層 以加快模型收斂同時(shí)防止過擬合。最終采用 global avg pool 做預(yù)測(cè)。采用 YOLOv2,模型的 mAP 值沒有顯著提升,但計(jì)算量減少了。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
  • Dimension Clusters  維度集群

在 Faster R-CNN 和 SSD 中,先驗(yàn)框都是手動(dòng)設(shè)定的,帶有一定的主觀性。YOLOv2 采用 k-means 聚類算法對(duì)訓(xùn)練集中的邊界框做了聚類分析,選用 boxes 之間的 IOU 值作為聚類指標(biāo)。綜合考慮模型復(fù)雜度和召回率,最終選擇 5 個(gè)聚類中心,得到 5 個(gè)先驗(yàn)框,發(fā)現(xiàn)其中中扁長(zhǎng)的框較少,而瘦高的框更多,更符合行人特征。通過對(duì)比實(shí)驗(yàn),發(fā)現(xiàn)用聚類分析得到的先驗(yàn)框比手動(dòng)選擇的先驗(yàn)框有更高的平均 IOU 值,這使得模型更容易訓(xùn)練學(xué)習(xí)。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
  • Direct location prediction

Faster R-CNN 使用 anchor boxes 預(yù)測(cè)邊界框相對(duì)先驗(yàn)框的偏移量,由于沒有對(duì)偏移量進(jìn)行約束,每個(gè)位置預(yù)測(cè)的邊界框可以落在圖片任何位置,會(huì)導(dǎo)致模型不穩(wěn)定,加長(zhǎng)訓(xùn)練時(shí)間。YOLOv2 沿用 YOLOv1 的方法,根據(jù)所在網(wǎng)格單元的位置來預(yù)測(cè)坐標(biāo),則 Ground Truth 的值介于 0 到 1 之間。網(wǎng)絡(luò)中將得到的網(wǎng)絡(luò)預(yù)測(cè)結(jié)果再輸入 sigmoid 函數(shù)中,讓輸出結(jié)果介于 0 到 1 之間。設(shè)一個(gè)網(wǎng)格相對(duì)于圖片左上角的偏移量是 cx,cy。先驗(yàn)框的寬度和高度分別是 pw 和 ph,則預(yù)測(cè)的邊界框相對(duì)于特征圖的中心坐標(biāo) (bx,by) 和寬高 bw、bh 的計(jì)算公式如下圖所示。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

YOLOv2 結(jié)合 Dimention Clusters, 通過對(duì)邊界框的位置預(yù)測(cè)進(jìn)行約束,使模型更容易穩(wěn)定訓(xùn)練,這種方式使得模型的 mAP 值提升了約 5%。

  • Fine-Grained Features (細(xì)粒度特性)

YOLOv2 借鑒 SSD 使用多尺度的特征圖做檢測(cè),提出 pass through 層將高分辨率的特征圖與低分辨率的特征圖聯(lián)系在一起,從而實(shí)現(xiàn)多尺度檢測(cè)。YOLOv2 提取 Darknet-19 最后一個(gè) max pool 層的輸入,得到 26x26x512 的特征圖。經(jīng)過 1x1x64 的卷積以降低特征圖的維度,得到 26x26x64 的特征圖,然后經(jīng)過 pass through 層的處理變成 13x13x256 的特征圖(抽取原特征圖每個(gè) 2x2 的局部區(qū)域組成新的 channel,即原特征圖大小降低 4 倍,channel 增加 4 倍),再與 13x13x1024 大小的特征圖連接,變成 13x13x1280 的特征圖,最后在這些特征圖上做預(yù)測(cè)。使用 Fine-Grained Features,YOLOv2 的性能提升了 1%.
  • Multi-Scale Training

YOLOv2 中使用的 Darknet-19 網(wǎng)絡(luò)結(jié)構(gòu)中只有卷積層和池化層,所以其對(duì)輸入圖片的大小沒有限制。YOLOv2 采用多尺度輸入的方式訓(xùn)練,在訓(xùn)練過程中每隔 10 個(gè) batches , 重新隨機(jī)選擇輸入圖片的尺寸,由于 Darknet-19 下采樣總步長(zhǎng)為 32,輸入圖片的尺寸一般選擇 32 的倍數(shù) {320,352,…,608}。采用 Multi-Scale Training, 可以適應(yīng)不同大小的圖片輸入,** 當(dāng)采用低分辨率的圖片輸入時(shí),mAP 值略有下降,但速度更快,當(dāng)采用高分辨率的圖片輸入時(shí),能得到較高 mAP 值,但速度有所下降。**
YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
YOLOv2 借鑒了很多其它目標(biāo)檢測(cè)方法的一些技巧,如 Faster R-CNN 的 anchor boxes, SSD 中的多尺度檢測(cè)。除此之外,YOLOv2 在網(wǎng)絡(luò)設(shè)計(jì)上做了很多 tricks, 使它能在保證速度的同時(shí)提高檢測(cè)準(zhǔn)確率,Multi-Scale Training 更使得同一個(gè)模型適應(yīng)不同大小的輸入,從而可以在速度和精度上進(jìn)行自由權(quán)衡。
YOLOv2 存在的問題

YOLO v2 對(duì) YOLO v1 的缺陷進(jìn)行優(yōu)化,大幅度高了檢測(cè)的性能,但仍存在一定的問題,如無法解決重疊問題的分類等。

YOLOv3

創(chuàng)新點(diǎn)
  • 新網(wǎng)絡(luò)結(jié)構(gòu):DarkNet-53

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析

將 256x256 的圖片分別輸入以 Darknet-19,ResNet-101,ResNet-152 和 Darknet-53 為基礎(chǔ)網(wǎng)絡(luò)的分類模型中,實(shí)驗(yàn)得到的結(jié)果如下圖所示??梢钥吹?Darknet-53 比 ResNet-101 的性能更好,而且速度是其 1.5 倍,Darknet-53 與 ResNet-152 性能相似但速度幾乎是其 2 倍。注意到,Darknet-53 相比于其它網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)了每秒最高的浮點(diǎn)計(jì)算量,說明其網(wǎng)絡(luò)結(jié)構(gòu)能更好的利用 GPU。

YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析
  • 融合 FPN

YOLOv3 借鑒了 FPN 的思想,從不同尺度提取特征。相比 YOLOv2,YOLOv3 提取最后 3 層特征圖,不僅在每個(gè)特征圖上分別獨(dú)立做預(yù)測(cè),同時(shí)通過將小特征圖上采樣到與大的特征圖相同大小,然后與大的特征圖拼接做進(jìn)一步預(yù)測(cè)。用維度聚類的思想聚類出 9 種尺度的 anchor box,將 9 種尺度的 anchor box 均勻的分配給 3 種尺度的特征圖 .

  • 用邏輯回歸替代 softmax 作為分類器

在實(shí)際應(yīng)用場(chǎng)合中,一個(gè)物體有可能輸入多個(gè)類別,單純的單標(biāo)簽分類在實(shí)際場(chǎng)景中存在一定的限制。舉例來說,一輛車它既可以屬于 car(小汽車)類別,也可以屬于 vehicle(交通工具),用單標(biāo)簽分類只能得到一個(gè)類別。因此在 YOLO v3 在網(wǎng)絡(luò)結(jié)構(gòu)中把原先的 softmax 層換成了邏輯回歸層,從而實(shí)現(xiàn)把單標(biāo)簽分類改成多標(biāo)簽分類。用多個(gè) logistic 分類器代替 softmax 并不會(huì)降低準(zhǔn)確率,可以維持 YOLO 的檢測(cè)精度不下降。

以上是“YOLO目標(biāo)檢測(cè)從V1到V3結(jié)構(gòu)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI