2

YOLOv2和YOLO9000 - 您只需看一次(物体检测)

 3 years ago
source link: https://panchuang.net/2021/09/20/yolov2%e5%92%8cyolo9000%e2%80%8a-%e2%80%8a%e6%82%a8%e5%8f%aa%e9%9c%80%e7%9c%8b%e4%b8%80%e6%ac%a1%e7%89%a9%e4%bd%93%e6%a3%80%e6%b5%8b/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在本章節中,回顧了YOLOV2,你只看一次版本2。YOLOv2比YOLOv1有很多改進.YOLO9000也被提議使用WordTree檢測超過9000個對像類別.下面是作者非常著名的YOLOv2演示影片:YOLOv1

在67帧/秒時,YOLOv2在PASCAL VOC2007上獲得76.8%MAP。在40FPS時,YOLOv2獲得78.6%MAP,這優於使用Resnet和固态硬盘的更快的R-cnn。憑藉如此好的成績,YOLOv2於2017年年CVPR發表,被引用超過1000次。ResNet Faster R-CNN

論文標題是“YOLO9000:更好、更快、更强”。所以,讓我們看看它如何變得更好,更快,而且更强!

承保范围是什么?

1.1.批量归一化(BN)Batch Normalization (BN)

  • 假設一個情況

此時Hidden Layer 2節點的感受力已經不會對特徵較大的X2感到敏感

X1=0.1,X2=0.96

  • 此圖模擬一群資料中一個Batch的数据
  • 於是我們在神經網路中的隱藏層和激活函數之間加上规格化层

加入後情況如下

  • 在最基礎的标准化程序當中
  • 但是在模型中我們不希望每次标准化的分布都調適成這種情況,因為不具彈性
  • 因此加了最後一道自動調整程序
  • BN用於YOLOV2中的所有卷积层。
  • MAP提高为2%.

1.2.高分辨率分类器

  • 在這邊我們比較v1和v2之間訓練的差異,v1在阶段1訓練的時候是採用224*224的分辨率下去做訓練分類網路,然後在阶段2的時候以448*448的分辨率訓練檢測網路,這會造成一件問題-YOLOv1的捲積層要重新適應新的分辨率同時YOLOv1的網絡還要學習檢測網絡
  • 因此YOLO v2提出了一個方法,在Stage1訓練的時候先用低解析度訓練160個Epoch然後再用10個Eagch訓練網路適應448*448的高解析度,最後再讓Stage2以相同解析度訓練檢測
  • 經過224×224圖像訓練後,YOLOv2還使用448×448圖像在ImageNet上對分類網絡進行了10輪的微调。
  • MAP增加为4%.

1.3.带锚箱的卷积

在這裡我們比對過往檢測方法,最後傳遞的網路層以及輸出預測方式

YOLO v1參考GoogleNet網路模型,最後加上2層平面层,將結果平滑化再餵到神經網路作預測,最後輸出一個S×S×(B∗5+C)維度的张量。

  • SoftMAX層對锚点進行分類找到需要被檢測的前台锚点
  • 回归層對锚点的邊框進行回歸找到精確度較高的Prosoal邊框
  • 接著Prosoal Layer再綜合兩者產生出多個Prosoal要素图

ROI池化可接受任意尺寸的輸入,WARP操作不再需要,這有效避免了物體的形變扭曲,保證了特徵信息的真實性

最後作者決定參考更快-美国有线电视新闻网中的主播挑選候選框的作法,改善V1的準確度

  • 输入改為416*416
  • YOLOv2移除所有全连接层並使用锚盒來預測包围盒。
  • 移除一個池化图层以提高輸出的分辨率。
  • 並且使用416×416圖像來訓練檢測網絡。
  • 並得到13×13的特徵圖輸出,即32×下采样。
  • 在沒有锚盒的情況下,中間模型獲得了69.5%的MAP和81%的召回。
  • 使用锚盒,獲得了69.2%的MAP和88%的召回。雖然MAP略有下降,但Recall大幅增加。

1.4.维度群集

  • 主播盒的尺寸和比例是預先定義的,沒有獲得任何先驗資訊,就像快速R-cnn中的尺寸和比例一樣。
  • 使用標準的基於欧几里德距离的k-Means聚类不够好,因為較大的框比較小的框產生更多的錯誤。
  • YOLOv2使用k-Means群集,這會導致良好的IOU分數:
  • 在模型複雜度和高召回率取捨之間,k=5是最佳值。
  • 使用5個锚盒(61.0%)基于的欠条的群集結果與使用9個锚盒(60.9%)的更快的R-cnn的群集結果相似。
  • 使用9個锚盒的基于借条的集群得到为67.2%。

1.5.直接位置预测

  • YOLOv1沒有Constraint預測位置,這使得模型在早期反覆運算時不穩定。預測的邊界框可能遠離原始网格位置。
  • YOLOv2使用Logistic Activateσ限制位置邊界,使值介於0到1之間:
  • (Cx,Cy)是GRID的位置,也是當前網格左上角到圖像左上角的距離。
  • (bx,by)是包围盒的位置:(cx,cy)+增量以σ(Tx)和σ(Ty)定義邊界,σ函數將約束在(0,1)範圍內。
  • (pw,ph)是從群集中預先得到的锚盒。
  • (bw,bh)是包围盒空間尺寸:(pw,ph)按(tw,th)縮放。
  • 預測邊框的藍色中心點被約束在藍色背景的網格內.約束邊框位置使得模型更容易學習,且預測更為穩定
  • 因為自然對數e表示“增長的極限”,所以在這邊以e為底以Scale放大率為次方,計算出數值的自然放大倍率
  • 與锚盒版本相比,MAP增加5%。

1.6.细粒度要素

  • 卷積層逐漸減小空間維度.隨著相應的分辨率降低,檢測小物體變得更加困難.

為了抓取細粒度特徵、YOLO v2加入了一層通过图层、將原本26×26的分辨率的要素地图進行特徵重排

  • 13×13特征地图輸出足以偵測大型物件。
  • 為了更好地偵測小目標,將前一層的26×26×512特徵圖映射成13×13×2048特徵圖,然後再與原始的13×13×1024輸出層特徵圖级联。
  • 最後在新的13×13×3072層上使用卷积滤波器來進行預測。
  • MAP增加为1%.

1.7.多规模培训

  • 爲了讓模型更穩定,所以YOLOv2做了多尺度的訓練,而多规模培训讓YOLO v2在速度和準確性做出平衡的選擇
  • 在訓練過程,每隔10個大纪元隨機選擇一種輸入圖片大小,然後只需要修改對最後檢測層的處理就可以重新訓練。
  • 由於YOLOv2的轉換層將輸入維度下採樣32倍,因此新採樣的大小為32的倍數
  • 對於每10個批次,隨機選擇新的图像尺寸。
  • 影像尺寸為{320352,…,608}。
  • 已調整網絡大小並繼續培训。

1.8.关于渐进式改进的总结

  • 網絡在較小尺寸的影像上運行更快.
  • 對於低解析度的YOLOv2、在90 FPS時、MAP與快速R-cnn一樣好,後者非常適合於較小的图形处理器。
  • 對於高解析度的YOLOv2,在实时速度獲得76.8%的MAP。

對於MS COCO資料集,以下方法中只有YOLOv2可以獲得实时表現:

2.使用Darknet-19的YOLOv2(更快)

除了上述修改,網絡架構也是影響MAP的一個因素.

YOLOv2採用DarkNet-19分類網絡進行特征提取:

  • 我們可以看到,DarkNet-19在3×3卷積之間使用1×1卷積來壓縮特徵圖Channles以降低模型計算量和參數
  • 在SoftMAX層前使用了全球平均池、對每個功能地图內部取平均,每個功能地图變成一個值、10個功能地图就變成一個10維的向量。

而DarkNet-19可以在Accuracy和模型複雜度之間獲得良好的平衡:

  • 由於TOP-1和TOP-5錯誤接近Resnet-50、Darknet-19具有較低的模型複雜度(FLOP)、因此偵測速度(FPS)要快得多。
  • 使用Darknet-19之後,YOLOv2的MAP值沒有顯著提升,但是計算量卻可以減少約33%.

3.YOLO9000 by WordTree(更强)

有多個資料集用於分類和偵測.作者有一個想法,“它們能結合在一起嗎?”

3.1.联合收割机

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/09/20/yolov2%e5%92%8cyolo9000%e2%80%8a-%e2%80%8a%e6%82%a8%e5%8f%aa%e9%9c%80%e7%9c%8b%e4%b8%80%e6%ac%a1%e7%89%a9%e4%bd%93%e6%a3%80%e6%b5%8b/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK