您好,登錄后才能下訂單哦!
這篇文章主要介紹YOLO目標檢測從V1到V3結構的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
IoU(Intersection-over-Union)指標
IoU 簡稱交并比,顧名思義數學中交集與并集的比例。假設有兩個集合 A 與 B, IoU 即等于 A 與 B 的交集除以 A 與 B 的并集,表達式如下:
在目標檢測中,IoU 為預測框 (Prediction) 和真實框 (Ground truth) 的交并比。如下圖所示,在關于小貓的目標檢測中,紫線邊框為預測框 (Prediction),紅線邊框為真實框 (Ground truth)。
將整張圖作為網絡的輸入,直接在輸出層回歸 bounding box 的位置和所屬的類別(將對象檢測作為一個回歸問題)
速度快,one stage detection 的開山之作
速度快,one stage detection 的開山之作
之前的目標檢測方法需要先產生候選區再檢測的方法雖然有相對較高的檢測準確率,但運行速度較慢。
YOLO 將識別與定位合二為一,結構簡便,檢測速度快,更快的 Fast YOLO 可以達到 155FPS。
YOLO 模型相對于之前的物體檢測方法有多個 優點:
YOLO 檢測物體非常快。
因為沒有復雜的檢測流程,只需要將圖像輸入到神經網絡就可以得到檢測結果,YOLO 可以非常快的完成物體檢測任務。標準版本的 YOLO 在 Titan X 的 GPU 上能達到 45 FPS。更快的 Fast YOLO 檢測速度可以達到 155 FPS 。而且,YOLO 的 mAP 是之前其他實時物體檢測系統的兩倍以上。
YOLO 可以很好的避免背景錯誤,產生 false positives。
不像其他物體檢測系統使用了滑窗或 region proposal,分類器只能得到圖像的局部信息。YOLO 在訓練和測試時都能夠看到一整張圖像的信息,因此 YOLO 在檢測物體時能很好的利用上下文信息,從而不容易在背景上預測出錯誤的物體信息。和 Fast-R-CNN 相比,YOLO 的背景錯誤不到 Fast-R-CNN 的一半。
YOLO 可以學到物體的泛化特征。
當 YOLO 在自然圖像上做訓練,在藝術作品上做測試時,YOLO 表現的性能比 DPM、R-CNN 等之前的物體檢測系統要好很多。因為 YOLO 可以學習到高度泛化的特征,從而遷移到其他領域。
盡管 YOLO 有這些優點,它也有一些缺點:
YOLO 的物體檢測精度低于其他 state-of-the-art 的物體檢測系統。
YOLO 容易產生物體的定位錯誤。
YOLO 對小物體的檢測效果不好(尤其是密集的小物體,因為一個柵格只能預測 2 個物體)。
召回率低
YOLOv1 最大的劣勢是不夠精確
網絡結構
YOLO 網絡借鑒了 GoogLeNet 分類網絡結構,不同的是 YOLO 使用 1x1 卷積層和 3x3 卷積層替代 inception module。如下圖所示,整個檢測網絡包括 24 個卷積層和 2 個全連接層。其中,卷積層用來提取圖像特征,全連接層用來預測圖像位置和類別概率值。
檢測流程
先將圖片縮放到固定尺寸
YOLO 將輸入圖像劃分為 S*S (論文中是 7×7)的柵格,每個柵格負責檢測中心落在該柵格中的物體。
每一個柵格預測 B (論文中是 2 個)個 bounding boxes(對每個邊界框會預測 5 個值,分別是邊界框的中心 x,y(相對于所屬網格的邊界),邊界框的寬高 w, h(相對于原始輸入圖像的寬高的比例)),以及這些 bounding boxes 的 confidence scores。(邊界框與 ground truth box 的 IOU 值)
同時每個網格還需要預測 c (論文中的 c=20)個類條件概率 (是一個 c 維向量,表示某個物體 object 在這個網格中,且該 object 分別屬于各個類別的概率,這里的 c 類物體不包含背景)
每個網格需要預測 2x5+20=30 個值,這些值被映射到一個 30 維的向量
YOLO 最后采用非極大值抑制(NMS)算法從輸出結果中提取最有可能的對象和其對應的邊界框。(下面非極大抑制的流程)
1. 設置一個 Score 的閾值,一個 IOU 的閾值(overlap);
2. 對于每類對象,遍歷屬于該類的所有候選框,①過濾掉 Score 低于 Score 閾值的候選框;
②找到剩下的候選框中最大 Score 對應的候選框,添加到輸出列表;
③進一步計算剩下的候選框與②中輸出列表中每個候選框的 IOU,若該 IOU 大于設置的 IOU 閾值,將該候選框過濾掉(大于一定閾值,代表重疊度比較高),否則加入輸出列表中;
④最后輸出列表中的候選框即為圖片中該類對象預測的所有邊界框
3. 返回步驟 2 繼續處理下一類對象。
當 overlap 閾值越大、proposals boxes 被壓制的就越少,結果就是導致大量的 FP (False Positives),進一步導致檢測精度下降與丟失 (原因在于對象與背景圖像之間不平衡比率,導致 FP 增加數目遠高于 TP)
當 overlap 閾值很小的時候,導致 proposals boxes 被壓制的很厲害,導致 recall 大幅下降。
輸入:論文中輸入是 448×448
損失函數
如上圖所示,損失函數分為坐標預測(藍色框)、含有物體的邊界框的 confidence 預測(紅色框)、不含有物體的邊界框的 confidence 預測(黃色框)、分類預測(紫色框)四個部分。
由于不同大小的邊界框對預測偏差的敏感度不同,小的邊界框對預測偏差的敏感度更大。為了均衡不同尺寸邊界框對預測偏差的敏感度的差異。作者巧妙的對邊界框的 w,h 取均值再求 L2 loss. YOLO 中更重視坐標預測,賦予坐標損失更大的權重,記為 coord,在 pascal voc 訓練中 coodd=5 ,classification error 部分的權重取 1。
某邊界框的置信度定義為:某邊界框的 confidence = 該邊界框存在某類對象的概率 pr (object)* 該邊界框與該對象的 ground truth 的 IOU 值 ,若該邊界框存在某個對象 pr (object)=1 ,否則 pr (object)=0 。由于一幅圖中大部分網格中是沒有物體的,這些網格中的邊界框的 confidence 置為 0,相比于有物體的網格,這些不包含物體的網格更多,對梯度更新的貢獻更大,會導致網絡不穩定。為了平衡上述問題,YOLO 損失函數中對沒有物體的邊界框的 confidence error 賦予較小的權重,記為 noobj,對有物體的邊界框的 confidence error 賦予較大的權重。在 pascal VOC 訓練中 noobj=0.5 ,有物體的邊界框的 confidence error 的權重設為 1.
輸出:結果是一個 7×7×30 的張量。
YOLOv1 雖然檢測速度快,但在定位方面不夠準確,并且召回率較低。為了提升定位準確度,改善召回率,YOLOv2 在 YOLOv1 的基礎上提出了幾種改進策略
Batch Normalization
YOLOv2 中在每個卷積層后加 Batch Normalization (BN) 層,去掉 dropout. BN 層可以起到一定的正則化效果,能提升模型收斂速度,防止模型過擬合。YOLOv2 通過使用 BN 層使得 mAP 提高了 2%。
High Resolution Classifier (高分辨率)
目前的大部分檢測模型都會使用主流分類網絡(如 vgg、resnet)在 ImageNet 上的預訓練模型作為特征提取器,而這些分類網絡大部分都是以小于 256x256 的圖片作為輸入進行訓練的,低分辨率會影響模型檢測能力。YOLOv2 將輸入圖片的分辨率提升至 448x448,為了使網絡適應新的分辨率,YOLOv2 先在 ImageNet 上以 448x448 的分辨率對網絡進行 10 個 epoch 的微調,讓網絡適應高分辨率的輸入。通過使用高分辨率的輸入,YOLOv2 的 mAP 提升了約 4%。
Convolutional With Anchor Boxes 使用 anchor box 進行卷積
YOLOv1 利用全連接層直接對邊界框進行預測,導致丟失較多空間信息,定位不準。YOLOv2 去掉了 YOLOv1 中的全連接層,使用 Anchor Boxes 預測邊界框,同時為了得到更高分辨率的特征圖,YOLOv2 還去掉了一個池化層。由于圖片中的物體都傾向于出現在圖片的中心位置,若特征圖恰好有一個中心位置,利用這個中心位置預測中心點落入該位置的物體,對這些物體的檢測會更容易。所以總希望得到的特征圖的寬高都為奇數。YOLOv2 通過縮減網絡,使用 416x416 的輸入,模型下采樣的總步長為 32,最后得到 13x13 的特征圖,然后對 13x13 的特征圖的每個 cell 預測 5 個 anchor boxes,對每個 anchor box 預測邊界框的位置信息、置信度和一套分類概率值。使用 anchor boxes 之后,YOLOv2 可以預測 13x13x5=845 個邊界框,模型的召回率由原來的 81% 提升到 88%,mAP 由原來的 69.5% 降低到 69.2%. 召回率提升了 7%,準確率下降了 0.3%。
New Network:Darknet-19
YOLOv2 采用 Darknet-19,其網絡結構如下圖所示,包括 19 個卷積層和 5 個 max pooling 層,主要采用 3x3 卷積和 1x1 卷積,這里 1x1 卷積可以壓縮特征圖通道數以降低模型計算量和參數,每個卷積層后使用 BN 層 以加快模型收斂同時防止過擬合。最終采用 global avg pool 做預測。采用 YOLOv2,模型的 mAP 值沒有顯著提升,但計算量減少了。
Dimension Clusters 維度集群
在 Faster R-CNN 和 SSD 中,先驗框都是手動設定的,帶有一定的主觀性。YOLOv2 采用 k-means 聚類算法對訓練集中的邊界框做了聚類分析,選用 boxes 之間的 IOU 值作為聚類指標。綜合考慮模型復雜度和召回率,最終選擇 5 個聚類中心,得到 5 個先驗框,發現其中中扁長的框較少,而瘦高的框更多,更符合行人特征。通過對比實驗,發現用聚類分析得到的先驗框比手動選擇的先驗框有更高的平均 IOU 值,這使得模型更容易訓練學習。
Direct location prediction
Faster R-CNN 使用 anchor boxes 預測邊界框相對先驗框的偏移量,由于沒有對偏移量進行約束,每個位置預測的邊界框可以落在圖片任何位置,會導致模型不穩定,加長訓練時間。YOLOv2 沿用 YOLOv1 的方法,根據所在網格單元的位置來預測坐標,則 Ground Truth 的值介于 0 到 1 之間。網絡中將得到的網絡預測結果再輸入 sigmoid 函數中,讓輸出結果介于 0 到 1 之間。設一個網格相對于圖片左上角的偏移量是 cx,cy。先驗框的寬度和高度分別是 pw 和 ph,則預測的邊界框相對于特征圖的中心坐標 (bx,by) 和寬高 bw、bh 的計算公式如下圖所示。
YOLOv2 結合 Dimention Clusters, 通過對邊界框的位置預測進行約束,使模型更容易穩定訓練,這種方式使得模型的 mAP 值提升了約 5%。
Fine-Grained Features (細粒度特性)
Multi-Scale Training
YOLO v2 對 YOLO v1 的缺陷進行優化,大幅度高了檢測的性能,但仍存在一定的問題,如無法解決重疊問題的分類等。
新網絡結構:DarkNet-53
將 256x256 的圖片分別輸入以 Darknet-19,ResNet-101,ResNet-152 和 Darknet-53 為基礎網絡的分類模型中,實驗得到的結果如下圖所示。可以看到 Darknet-53 比 ResNet-101 的性能更好,而且速度是其 1.5 倍,Darknet-53 與 ResNet-152 性能相似但速度幾乎是其 2 倍。注意到,Darknet-53 相比于其它網絡結構實現了每秒最高的浮點計算量,說明其網絡結構能更好的利用 GPU。
融合 FPN
YOLOv3 借鑒了 FPN 的思想,從不同尺度提取特征。相比 YOLOv2,YOLOv3 提取最后 3 層特征圖,不僅在每個特征圖上分別獨立做預測,同時通過將小特征圖上采樣到與大的特征圖相同大小,然后與大的特征圖拼接做進一步預測。用維度聚類的思想聚類出 9 種尺度的 anchor box,將 9 種尺度的 anchor box 均勻的分配給 3 種尺度的特征圖 .
用邏輯回歸替代 softmax 作為分類器
在實際應用場合中,一個物體有可能輸入多個類別,單純的單標簽分類在實際場景中存在一定的限制。舉例來說,一輛車它既可以屬于 car(小汽車)類別,也可以屬于 vehicle(交通工具),用單標簽分類只能得到一個類別。因此在 YOLO v3 在網絡結構中把原先的 softmax 層換成了邏輯回歸層,從而實現把單標簽分類改成多標簽分類。用多個 logistic 分類器代替 softmax 并不會降低準確率,可以維持 YOLO 的檢測精度不下降。
以上是“YOLO目標檢測從V1到V3結構的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。