# 2017 YOLOv2 YOLOv2 共提出了 8 種改進策略來提升 YOLOv1 模型的 Precision 和 Recall,從而提高 mAP,YOLOv2 的改進策略如下圖所示:  ## 1. Batch Normalization (63.4% to 65.8%) 在每個卷積層後面加 batch normalization,這樣就不需要加 dropout 層了,使用後,YOLOv2 的 mAP 提升了 2.4%。 ## 2. High Resolution Classifier (65.8% to 69.5%) YOLO 訓練分為兩個階段,用 224×224 的圖片訓練分類器,再將圖片的解析度提高至 448×448 用來訓練物件偵測,但是直接切換解析度,偵測模型可能難以快速適應高解析度。因此 YOLOv2 在訓練分類器時的最後 10 個 epoch 中使用 448×448 的解析度來訓練分類器,這可以使得模型在偵測資料集上 finetune 之前已經適用高解析度輸入。 ## 3. Convolutional With Anchor Boxes (69.5% to 69.2%) 由於各個圖片中存在不同尺度和長寬比(scales and ratios)的物體,YOLOv1 在訓練過程中學習適應不同物體的形狀是比較困難的,這也導致 YOLOv1 在精確定位方面表現較差。所以 YOLOv2 使用 anchor boxes 來預測邊界框。例如,我們可以使用 9 個 anchor boxes,這樣在 YOLOv1 的情况下,原本的 98 (7x7x2) 個框就變成了 441 個(7x7x9)。  同時為了使偵測所用的特徵圖解析度更高,移除其中一個 pool 層,因此 downsampling 的步長由 64 變為 32,但原本影像的尺寸為 448x448 (448/32=14),這樣一來會導致物體的中心點落在 4 個 cell 中,不方便分配,因此作者把影像的尺寸改成了 416x416 (416/32=13),中心點只有一個。  使用 Anchor Boxes 使得 mAP 從 69.5% 減少到 69.2%,但是 Recall 從 81% 提高到 88%。也就是說,即使準確率略有降低,但是它增加了偵測到所有 ground truth 物體的機率。 ## 4. New Network: Darknet-19 (69.2% to 69.6%) YOLOv2 採用了一個新的基礎模型(特徵提取器),稱為 Darknet-19,包括 19 個卷積層和 5 個 maxpooling 層,如下圖所示。Darknet-19 與 VGG16 模型設計原則是一致的,主要採用 3x3 卷積,採用 2x2 的 maxpooling 層之後,特徵圖維度降低2倍,而同時將特徵圖的 channles 增加兩倍。與 NIN (Network in Network) 類似, Darknet-19 最終採用 global avgpooling 做預測,並且在 3x3 卷積之間使用 1x1 卷積來壓縮特徵圖 channles 以降低模型計算量和引數。Darknet-19 每個卷積層後面同樣使用了 batch norm 層以加快收斂速度,降低模型過擬合。  在 ImageNet 分類資料集上,Darknet-19 的 top-1 準確度為 72.9%,top-5 準確度為 91.2%,但是模型參數相對少一些。使用 Darknet-19 之後,YOLOv2 的 mAP 值沒有顯著提升,但是計算量卻可以減少約 33%。 ## 5. Dimension Clusters 之前說使用固定 9 個 anchor boxes 來幫助我們預測 Bbox,而這 9 個 anchor boxes 是 Faster R-CNN 手工精心挑選的,未必是最好的。但作者認為可以靠 K-means 從訓練集中聚類得到更好的 anchor boxes (prior boxes) 。 因為設定 prior boxes 的主要目的是為了使得 Bbox 與 ground truth 的 IoU 更好,所以聚類分析時選用 box 與聚類中心 box 之間的 IoU 值作為距離指標: $$𝑑(𝑏𝑜𝑥, 𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑)=1−𝐼o𝑈(𝑏𝑜𝑥, 𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑)$$ 下圖為在 VOC 和 COCO 資料集上的聚類分析結果,隨著聚類中心數目的增加,平均 IOU 值是增加的,但是綜合考慮模型複雜度和 Recall,作者最終選取 5 個聚類中心作為 anchor box (prior box)  兩種方法選取的 Anchors boxes  和使用手工挑選的 anchor boxes 相比,使用 K-means 得到的 anchor boxes 表現更好。使用 5 個 K-means 得到的 anchor boxes 的效能(IOU 61.0)和使用 9 個手工挑選的 anchor boxes 的效能(IOU 60.9)相當。這意味著使用 k-means 獲取 anchor boxes 來預測 Bbox 能讓模型更容易學習。  ## 6. Direct location prediction (69.6% to 74.4%) 我們對 anchors 的偏移量 (offsets) 進行預測,他預測了 5 個參數 $(t_x, t_y, t_w, t_h, t_o)$,為了將邊界框中心點約束在當前 cell 中,使用了 $\sigma(x)$ 函式處理偏移值,使其在 $(0, 1)$ 範圍之間 (每個 cell 的尺度看做 1)  下圖為視覺化。藍框為預測的 boundary box,虛線矩形為 anchor box  對於類別機率的預測,在 YOLOv1 中是 1 個 cell 共享一組機率,而在 YOLOv2 中 是每個 Bbox 預測一組機率。  使用 Dimension Clusters 得到 prior boxes ,並用 prior boxes 預測 offsets 使得 YOLOv2 的mAP 值提升了 4.8%。 ## 7. Fine-Grained Features (74.4% to 75.4%) YOLOv2 的輸入圖片大小為 416x416,經過 5 次 maxpooling 之後得到 13x13 大小的特徵圖,並以此特徵圖採用卷積做預測。13x13 大小的特徵圖對檢測大物體是足夠了,但是對於小物體還需要更精細的特徵圖(Fine-Grained Features)。YOLOv2 提出了一種 passthrough 層來利用更精細的特徵圖,passthrough 層與 ResNet 網路的 shortcut 類似,以前面更高解析度的特徵圖為輸入,然後將其連線到後面的低解析度特徵圖上。對於 26x26x512 的特徵圖經 passthrough 層處理後就變成了 13x13x2048 的新特徵圖,然後再連接原始的 13x13x1024 的特徵圖,變成 13x13x3072 的特徵圖,最後在此特徵圖基礎上卷積做預測。  使用 Fine-Grained Features 之後 YOLOv2 的 mAP 值提升了 1%。 ## 8. Multi-Scale Training (75.4% to 78.6%) 由於 YOLOv2 模型中只有卷積層和池化層,所以 YOLOv2 的輸入可以不限於 416x416 大小的圖片。為了增強模型的強健性,YOLOv2 採用了多尺度輸入訓練策略,具體來說就是在訓練過程中每間隔一定的 iterations 之後改變模型的輸入圖片大小。 由於 YOLOv2 的 downsampling 總步長為 32,所以輸入圖片大小選擇一系列為 32 倍數的值:{320, 352, …, 608},每隔 10 個 iterations 隨機選擇一種圖片大小,由於模型看過不同的圖片大小,這會使得模型可以勝任不同圖片大小的偵測任務。  在測試時,YOLOv2 採用不同大小的圖片作為輸入,在 VOC 2007 資料集上的效果如下圖所示。可以看到採用低解析度 (288x288) 輸入時,mAP 值較低,但是速度更快,而採用高解析度 (544x544) 輸入時,mAP 值更高,但是速度略有下降。  對於使用 416x416 的解析度時 mAP 為 76.8%,而使用較高解析度 544x544 時 mAP 高達 78.6%,提升了 3.2%。 ## performance  --- ###### tags: `課程共筆`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.