YOLOV1學習(輸入的圖像固定大小為448X448X3)
參考文獻
模型結構
將輸入的圖像歸一化為大小為448x448x3的圖像,然后將經過中間24層的卷積后得到了7x7x1024的特征圖,然后后面連接的是兩個全連接層,分別是4096和1470,最后將1470reshape成7x7x30的張量。
問題0:①為什么是30,又為什么是7?②怎么解析?
答:①為什么是7是因為將輸入圖像劃分成了7x7的grid cell,30是因為每個grid cell都會生成兩個預測框,每個預測框又有5個參數(x,y,h,w,c),又因為這里是針對Pascal 數據集進行設計的,這個數據集中含有20個類,因此會有20個類別條件概率,因此對于每一個grid cell都有**(2x5+20=30)30個參數需要記錄,因此最終的矩陣為7x7x30**
②根據①知道了每一個深度方向的信息代表什么,因此我們可以根據這個進行解析。深度方向有30維通道,1-5通道是第一個bounding box的x,y,h,w,c, 6-10是第二個bounding box的x,y,h,w,c,后面11-30則是每一類的條件概率值【p(第i類)/p(含物體)】。
注:真正的類別概率是:每一類的條件概率乘以置信度
置信度=p[object]是否包含物體的概率,條件概率=p【屬于第i類的概率】/p[object]
p【屬于第i類的概率】=置信度 * 條件概率
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wVF2VAoW-1629564873766)(en-resource://database/533:1)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZonZ4xEu-1629564873769)(en-resource://database/527:1)]
預測階段
一、模型訓練好的前提下目標檢測的大體步驟
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qT5dGEKL-1629564873772)(en-resource://database/529:1)]
步驟一:劃分網格
先將輸入的圖像劃分為sxs個大小相等的網格;(s=7),每一個網格稱之為grid cell
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2VR96r7v-1629564873775)(en-resource://database/519:1)]
問題1:這樣劃分的目的是什么?
答:用于生成預測框,將預測框的中心限制在網格中
步驟二:生成預測框bounding box
每個grid cell都會生成兩個預測框,且預測框的中心在grid cell內,預測框的參數有:中心坐標(x,y),框寬高(h.w),以及是否為一個物體的置信度c(反應在框的粗細中,粗框表示置信度高),這里共生成7x7x2 = 98個bounding box
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FmjqlIXq-1629564873780)(en-resource://database/521:1)]
問題2:每一個grid cell的2個預測框是怎么生成的?
答:根據參數x,y,h,w,c生成的
問題3:怎么得到這幾個參數?
根據7x7x30的矩陣所得
步驟三:生成條件概率
每一個grid cell還會預測一組條件類別概率,即在包含物體的前提下,是某一類物體的概率,稱之為條件概率。根據條件概率可以繪制下圖的class probability map圖,每一個顏色表示不同的類別,這里是將20個概率中取最大的概率作為最終的概率繪制出來的
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wWlVAkbE-1629564873783)(en-resource://database/523:1)][外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-A9rAIVBZ-1629564873785)(en-resource://database/535:1)]
問題4:條件概率有什么作用?
答:將每一個bounding box的置信度乘以條件概率,就可以得到bounding box的各類別的概率。
問題5:條件概率是怎么計算得到的?
根據7x7x30的矩陣所得
步驟四:根據步驟二和步驟三生成預測結果
根據bounding box和類別概率就可以得到預測結果。即根據問題4中得到的概率,就可以判別出每一個bounding box最終的預測結果,將屬于背景的box剔除,然后利用NMS進行非極大值抑制,就得到了目標檢測的結果
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gnMCt2zA-1629564873787)(en-resource://database/537:1)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-F8NY3Ge5-1629564873790)(en-resource://database/531:1)]
問題6:
①怎么訓練網絡,得到網絡的參數,進而能夠進行目標檢測?
②怎么判斷grid cell是否含有物體
二、預測階段,后處理
1、預測階段
對于一個grid cell來說,有兩個預測框,每個預測框都有一個20維的類別概率,因此有每一個grid cell都會得到兩個全概率即2x20,對于7x7的grid cell來說,就會得到7x7x2=98個20維的全概率向量
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NBcALAj8-1629564873794)(en-resource://database/539:1)]
2、后處理
后處理其實就是將98個預測框中低置信度的框和重復的框剔除,這個過程稱之為NMS
① 先設置一個閾值,對于同一個類別概率小于p_thre的grid cell全部設置為0
②將不為0的grid cell按照高低順序進行排列,取出概率最大的預測框;
③將所有的框跟概率大的框計算交并比,IOU,若交并比大于某一個閾值,則表明預測了同一個物體,將低概率的概率設置為0,;若交并比小于某一個閾值,則說明不是預測的同一個物體,保留這個預測框;
④對于每一個類別都是重復①-③步驟(即NMS),進行20次NMS后就會得到最終的結果。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Z2Nyaww8-1629564873797)(en-resource://database/541:1)]