深度學習筆記(36) 邊界框預測

深度學習筆記(36) 邊界框預測


1. 不精準的輸出邊界框問題

在滑動窗口法中,取這些離散的位置集合,然後在它們上運行分類器
在這種情況下,這些邊界框沒有一個能完美匹配汽車位置,也許這個框(編號1)是最匹配的了
還有看起來這個真實值,最完美的邊界框甚至不是方形
稍微有點長方形(紅色方框所示),長寬比有點向水平方向延伸

滑動窗口法卷積實現的算法效率更高,但仍然存在問題,不能輸出最精準的邊界框
在這裏插入圖片描述


2. YOLO算法

其中一個能得到更精準邊界框的算法是YOLO算法
YOLO(You only look once)意思是你只看一次
在這裏插入圖片描述
比如輸入圖像是100×100的,然後在圖像上放一個網格
爲了介紹起來簡單一些,用3×3網格,實際實現時會用更精細的網格,可能是19×19
基本思路是使用圖像分類定位算法,然後將算法應用到9個格子上

更具體一點,需要這樣定義訓練標籤,所以對於9個格子中的每一個指定一個標籤y
y是8維的,和之前的一樣,pc等於0或1取決於這個綠色格子中是否有圖像
然後bx、by、bh和bw作用就是,如果那個格子裏有對象,那麼就給出邊界框座標
然後c1、c2和c3就是想要識別的三個類別,背景類別不算
在這裏插入圖片描述
這張圖裏有9個格子,所以對於每個格子都有這麼一個向量
(編號4)(編號6)這張圖有兩個對象
YOLO算法做的就是,取兩個對象各自的中點,然後將這個對象分配給包含對象中點的格子
所以左邊的汽車就分配到(編號4)格子上
然後這輛Condor(車型:神鷹)中點在(編號6)格子,分配給(編號6)格子
即使中心格子(編號5)同時有兩輛車的一部分,就假裝中心格子沒有任何感興趣的對象

對於這裏9個格子中任何一個,都會得到一個8維輸出向量
因爲這裏是3×3的網格,所以總的輸出尺寸是3×3×8

如果現在要訓練一個輸入爲100×100×3的神經網絡
在這裏插入圖片描述
現在這是輸入圖像,然後有一個普通的卷積網絡,卷積層,最大池化層等等
最後會有選擇卷積層和最大池化層
這樣最後就映射到一個3×3×8輸出尺寸即目標標籤y

在YOLO算法中
在這裏插入圖片描述
對於這個方框(編號6所示),約定左上這個點是(0,0),然後右下這個點是(1,1)
要指定橙色中點的位置,bx大概是0.4,因爲它的位置大概是水平長度的0.4,然後by大概是0.3
然後邊界框的高度用格子總體寬度的比例表示
所以這個紅框的寬度可能是藍線(編號2所示的藍線)的90%,所以bh是0.9
它的高度也許是格子總體高度的一半,這樣的話bw就是0.5
換句話說,bx、by、bh和bw單位是相對於格子尺寸的比例
所以bx和by必須在0和1之間
然後就開始訓練吧


參考:

《神經網絡和深度學習》視頻課程


相關推薦:

深度學習筆記(35) 滑動窗口的卷積實現
深度學習筆記(34) 目標檢測
深度學習筆記(33) 特徵點檢測
深度學習筆記(32) 目標定位
深度學習筆記(31) 遷移與增強


謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章