YOLO v2網路結構分析

2021-09-29 17:34:16 字數 3223 閱讀 7057

原****:《yolo9000: better, faster, stronger》

yolo2網路中第0-22層是darknet-19網路,後面第23層開始,是新增的檢測網路。

說明:route層的作用是進行層的合併

在第27層 直接新增了乙個passthrough layer 得到26*26的細粒度的特徵,然後將26*26*512的feature map的resize 變為 13*13* 2048。和原先13*13*1024的feature map拼接起來,這樣就得到了多尺度的資訊。這裡map提高了1%。

30層輸出的大小是13*13,是指把通過卷積或池化,最後縮小到乙個13*13大小的格。每乙個格仔的output引數是125。所以最後輸出的引數一共是13*13*125。

上面說了最後輸出引數是13*13*125,  是因為一共有13*13個格仔,每個格仔**出5個bounding box,每個bounding box**25個數,其中20個是class的probability,其餘5個引數中有四個表示stx、sty、tw、th,這4個來識別邊框的位置和大小,還有1個數是confidence,表示邊框**裡有真正的物件的概率,所以一共是13*13*125個數。

上圖的左邊可以看出,有5中型別的長寬比例。後面**出stx、sty、tw、th,四個引數,再根據上圖右邊的計算就可以計算出**出的box大小了,注意!上圖右邊裡面的σ(tx)可以理解為stx,σ(ty)可以理解為sty。每乙個輸出的bbox是針對於乙個特定的anchor,anchor其實是bbox的width及height的乙個參考。pw和ph是某個anchor box的寬和高,乙個格仔的cx和cy單位都是1,σ(tx),σ(ty)是相對於某個格仔左上角的偏移量。

6.1.batch normalization(批規範化bn層應用)

yolo v2在每乙個卷積之後增加了bn層,提高了網路訓練的速度,加快了收斂,消除了對其他正則化的依賴,且正則化效果更好,使調參更簡單,即使去掉dropout層也不會產生過擬合。

6.2. high resolution classifier(高解析度)

yolo v1先使用224×224的解析度在imagenet上fine tune,而後為了提高定位精度,更改解析度為448×448後,在voc2007上繼續訓練,這在一定程度上干擾了fine tune的網路,需要重新調整引數適應新的解析度。

v2直接使用448×448的解析度在imagenet上fine tune 10個epoch,一開始就使用了更高的解析度。

6.3. convolution with anchor boxes(基於卷積的候選區域)

anchor boxes其實就是有可能存在物體的候選區域,這裡的anchor boxes其實是yolov2從fast-rcnn系列檢測演算法借鑑來的。在fast-rcnn中,先通過區域建議網路(rpn,僅含卷積層,不含全連線層)**出潛在含物體的anchor boxes(候選區域)的偏移(注意是偏移而不是座標)和置信度,再從這些挑出的anchor boxes中去檢測物體。

作者在v2中發現自己在v1中吐槽過的rpn步驟效果還是蠻不錯的,並且通過**boxes的偏移量而不是座標值可以簡化問題,使網路更容易訓練。

v2中去掉了全連線層,使用卷積來**anchor boxes,並且去掉了v1網路中的乙個池化層,以提高卷積輸出的解析度。

6.4. dimension clusters(維度聚類)

dimension clusters(維度聚類),yolo v2中的這個改進是關於初始anchor boxes的大小和數量的。之前使用anchor box的系統都是手動設定初始box的大小的,v2中作者使用k-means聚類的方法在訓練集的物體邊框資料集(注意不是影象本身,而是邊框的資料)上得到了不同數量個box,並作了對比實驗,聚類的box多了,會導致模型的計算量增大,錯誤率公升高,box少了會導致召回率降低。

經過實驗,作者確定在他的訓練資料集上聚類數量是5的時候是乙個準確率和召回率的平衡值。

總之,作者在維度聚類這個點上優化了anchor boxes的賦值方式,包括數量和box大小,通過在訓練資料上的物體的邊框資料集上經過5個分類的k-means的聚類,得到5個初始anchor boxes的大小。

所以咱們訓練的時候,最好也根據自己的訓練集的特點,生成自己的anchor boxes資料,作者的資料是 anchors = 1.08,1.19,  3.42,4.41,  6.63,11.38,  9.42,5.11,  16.62,10.52。

6.5. direct location prediction(直接位置**)

yolov2不去**boxes的偏移,而是採用跟yolov1中類似的方式,**boxes相對於網格單元位置的座標,並通過邏輯啟用函式將座標值約束在[0,1]。

通過這個「相對座標」到「絕對座標」的優化,yolov2訓練更容易,引數更容易學習,網路更穩定。

6.6.fine-grained features(細粒度特徵)

6.7. multi-scaletraining(多尺度訓練)

v1的輸入是448×448,v2中加入了anchor boxes,輸入尺寸變成了416×416(為了獲得奇數×奇數特徵圖),yolo v2作者同時希望v2版本在不同尺寸輸入上都可以穩健檢測,所以作者在訓練過程上進行了優化。

不同於固定輸入網路的尺寸的方法,作者在訓練過程中每經過10個epoch之後就會隨機選擇新的尺寸。yolo網路尺寸更改使用的引數為32,每次把影象擴大或縮小32的倍數大小,最小的尺寸為320 * 320,最大的尺寸為608 * 608。接著按照輸入尺寸調整網路進行訓練。

這種機制使得網路可以更好地**不同尺寸的,意味著同乙個網路可以進行不同解析度的檢測任務,在小尺寸上yolov2執行更快,在速度和精度上達到了平衡。

YOLO v3 網路結構分析

最近在看tensorflow,沒有經過實踐的學習總感覺很心虛,因此打算做點什麼。所以,那就從yolo入手吧,將yolo v3改寫為tensorflow版本來進行練手。那第一步便是需要對yolo網路結構有一定的理解,不能像之前僅僅用yolo訓練資料然後檢測目標那樣浮於表面。整個網路主要是由一系列的1x...

yolov4網路結構 目標檢測YOLO V4

一 yolo v4主要做了什麼?通俗的講,就是說這個yolo v4演算法是在原有yolo目標檢測架構的基礎上,採用了近些年cnn領域中最優秀的優化策略,從資料處理 主幹網路 網路訓練 啟用函式 損失函式等各個方面都有著不同程度的優化,雖沒有理論上的創新,但是會受到許許多多的工程師的歡迎,各種優化演算...

VGG16網路結構

vgg 訓練資料處理過程 let s be the smallest side of an isotropically rescaled training image.各向同性的縮放訓練影象的最小邊 以s 256為例 1.將進行等比例縮放,最小邊長度為256 2.對等比例比變化後的影象隨機擷取224...