《You Only Look Once: Unified, Real-Time Object Detection》YOLO一种实时目标检测方法 阅读笔记(未完成版)
文章目錄
- 1. one-stage與two-stage檢測算法
- 1. 模型過程
- 1.1 grid cell
- 1.2 bounding box與confidence score
- 1.3 類別預(yù)測
- 1.4 預(yù)測目標(biāo)
- 2. 網(wǎng)絡(luò)的學(xué)習(xí)
- 2.1 網(wǎng)絡(luò)輸出的數(shù)據(jù)與預(yù)測集數(shù)據(jù)
- 2.2 損失函數(shù)
- 2.3 網(wǎng)絡(luò)的設(shè)計
1. one-stage與two-stage檢測算法
two-stage:
one-stage目標(biāo)檢測算法:一步到位,速度較快。
yolo_v1的基本思想:預(yù)測框的位置、大小和物體分類都通過CNN暴力predict出來。
1. 模型過程
yolo v1進行目標(biāo)檢測的過程如下圖所示
就拿yolo如何檢測出這只小狗的過程來說,引出yolo是如何進行目標(biāo)檢測和在這個過程中的相關(guān)概念。
1.1 grid cell
首先,將圖片分為7*7的網(wǎng)格,每個網(wǎng)格叫做grid或則和grid cell。所以一張圖片有49個grid。如果一個目標(biāo)的中心位置落在某個格子,那么這個格子就負(fù)責(zé)檢測出這個目標(biāo)(If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object.)。比如下面狗的中心落在(5,2)grid,所以該grid負(fù)責(zé)預(yù)測狗。
1.2 bounding box與confidence score
上文中含有小狗中心的那個grid cell會預(yù)測2個bounding boxes(邊界框)和這些框框的confidence scores(置信度分?jǐn)?shù))。
這些confidence scores反映了模型對框中包含對象的置信度,以及它認(rèn)為框預(yù)測的準(zhǔn)確性。也就是一個bounding box對應(yīng)一個confidences score。
在這里,需要明確一點,一個grid cell會有多個bounding box,而每個bounding box會有一個confidence score。比如,下面的一個grid cell就有三個bounding box。每個bounding box會對應(yīng)一個confidences score。
其中,confidences score的定義公式為:
置信度=Pr(Object)?IOUpredtruth置信度=Pr(Object)*IOU^{truth}_{pred} 置信度=Pr(Object)?IOUpredtruth?
其中,Pr(Object)代表bounding box對應(yīng)的grid cell中是否有含有物體中心。若有,為1,若沒有,則為0(沒有的話,計算IOU沒有任何意義)。
關(guān)于IOU,它表示的是真實框與預(yù)測框的交并比。其意義如下圖所示。
所以confidences score代表其所對應(yīng)的bounding box預(yù)測能力的強弱。
每個bounding box有5個屬性,x、y、w、h和confidence core。(x,y)表示的是某個grid cell下的bounding box的中心(The (x, y) coordinates represent the center of the box relative to the bounds of the grid cell.)。w和h表示預(yù)測的圖片的寬和高(個人理解,w和h就是bounding box的寬和高)。最后,confidence反應(yīng)的是預(yù)測圖像和真實圖像的IOU。
1.3 類別預(yù)測
每個grid cell有預(yù)測C個條件概率:Pr(Classi|Object),即在一個grid cell包含一個Object的前提下,它屬于某個類的概率。 每個網(wǎng)格單元預(yù)測一組類概率,不管框的數(shù)量是多少。也就是說,類別預(yù)測只是跟grid cell是相關(guān)的,與這個grid cell有多少個bounding box無關(guān)。
最終每個網(wǎng)格會得到一個30維度向量。
所以,最后一張圖片會生成一個7730的張量。
其中,置信度confidence score計算為
所以上面說的類別預(yù)測的條件概率乘以單個盒子的置信度即:
=Pr(Classi)?IOUpredtruth=Pr(Class_{i})*IOU^{truth}_{pred} =Pr(Classi?)?IOUpredtruth?
這個給了我們每個box一個分?jǐn)?shù)特殊類別預(yù)測。這些分?jǐn)?shù)編碼了類出現(xiàn)在框中的概率以及預(yù)測框與對象的匹配程度。
1.4 預(yù)測目標(biāo)
在測試階段,將每個網(wǎng)格的類別預(yù)測與每個 bounding box的 confidence相乘:
在有目標(biāo)中心的情況下,即Pr(Object)不等于0
Pr(Classi∣Object)?置信度=Pr(Classi∣Object)?Pr(Object)?IOUpredtruth=Pr(Classi)?IOUpredtruthPr(Class_{i}|Object)*置信度=Pr(Class_{i}|Object)*Pr(Object)*IOU^{truth}_{pred} =Pr(Class_{i})*IOU^{truth}_{pred} Pr(Classi?∣Object)?置信度=Pr(Classi?∣Object)?Pr(Object)?IOUpredtruth?=Pr(Classi?)?IOUpredtruth?
這是我看到的一篇博客的圖。
在訓(xùn)練過程中,關(guān)于拿如何把狗這個對象預(yù)測出來。整個過程有三點:
首先,將整個圖片分成S*S個grid cell(網(wǎng)格)。每個grid cell會預(yù)測B個(多個)
2. 網(wǎng)絡(luò)的學(xué)習(xí)
對于上面的過程,可能會有如下疑問:
2.1 網(wǎng)絡(luò)輸出的數(shù)據(jù)與預(yù)測集數(shù)據(jù)
由1中可知,神經(jīng)網(wǎng)絡(luò)每次回輸出7730(即SS(B*5+C))的張量。
對于每個網(wǎng)格會輸出一個30維張量。
同時,我們的數(shù)據(jù)集經(jīng)過處理過后,會有一個25維的張量(一個真實框+類別)。
拿預(yù)測的值和真實值進行對比。以此達到訓(xùn)練的目的。
所以:
2.2 損失函數(shù)
損失函數(shù)的設(shè)計目標(biāo)就是讓坐標(biāo)(x,y,w,h),confidence,classification 這個三個方面達到很好的平衡。
2.3 網(wǎng)絡(luò)的設(shè)計
YOLO的檢測網(wǎng)絡(luò)分為24個卷積層和2個全連接層,如下圖所示:
其中,卷積層用來提取圖像特征,全連接層用來預(yù)測圖像位置和類別概率。
總結(jié)
以上是生活随笔為你收集整理的《You Only Look Once: Unified, Real-Time Object Detection》YOLO一种实时目标检测方法 阅读笔记(未完成版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow学习笔记之四(MNI
- 下一篇: 过程记录 yolov3目标检测输出目标坐