C++ 有向圖最短路徑之Dijkstra演算法 - 第2次改動
YOLO V1簡介
1、將一幅圖分成S*S的網格,如果某個object落在這幅圖片的中心,那麼就讓這個網格負責這個object!!
2、每一個網格都要負責預測B個bounding box,每個bounding box除了要預測位置之外,還是需要預測confident的值。除此之外每一個網格還需要預測C個類別的分數
例如在Pascal voc資料集上,我們取B = 2,這個資料集的種類是20個,則我們需要預測的類別個數為20,即C=20
最後,我們預測的向量維數為:7*7*30 :
7*7是S的值,也就是圖片被分割的個數值;30 = (4+1)*2+20
4+1 : 4為bounding box的個數,1為confident值
20:為物體的類別
每一個bounding box 都有5個值,分別是(x,y,w,h)+ confident值(x,y為中心座標);(w,h為長和寬)---->四組資料表明了一個bounding box
confident = (如果box中確實有object就為1)*IOU(true,union)
IOU = 交併比(相交的資料)/ (相併集的資料)
損失函式:
目標邊界框的損失計算;confidence 損失;classes 損失
為什麼要對bounding box進行開方處理,
對於不同尺度的IOU,對於不同尺寸的圖片損失都是不同的
偏移相同的距離,尺寸較大的圖片,IOU值比較大!!,尺寸較小的圖片IOU小
YOLOV1 缺點:
1、對群體性的小目標,預測性很差!!!,因為在YOLOV1中,每一個cell只預測兩次,所以如果是很小的object那麼IOU必然就會很小,那麼損失函式必然會很大,因為損失函式很大之後,可能會被當作誤差,被正則函式清理掉了!!!
2、當同一個物體出現了新的大小的時候,預測效果會比較的差!! ---> 主要來自於定位不準確!