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