# 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up