1. 磐创AI首页
  2. Medium

DL、ML筆記(14):yolo v1

以往常見的物體檢測方法是將檢測視為一個分類問題,第一階段使用区域建议找出物體可能之位置,接著再交由分類器分类器對局部區域分類,區分物體或背景。

而這篇論文,作者將物體檢測視為一個回归問題,只使用一個神經網路進行一次計算來直接預測物體位置及物體類別.

引言

以下為YOLO纸张中敘述:

First, YOLO is extremely fast. Since we frame detection as a regression problem we don’t need a complex pipeline.

其中有幾個優點:

檢測概念

Yolo可以分為兩個部分,第一部分預測物體包围盒和置信度,找出物體位置,第二部分為物體的類別,將圖片分割SxS的网格,同時預測物體位置及物體類別。

物體包围盒和置信度

當物體的中心點位於某個網格中,這個網格就負責預測此物體,如下圖:

每個包围盒有五個參數:框的中心(X,Y)、框的長寬(W,H)、框的可信度置信度。框的中心(X,Y)是相對於該网格单元格的座標位置,非圖片之整體座標。框的長寬(W,H)則是相對於整張圖片的尺寸.信心為該网格单元《是否有物體之機率“及”物體預測及Ground Truth間IOU》的乘積:

  • 如果在該信元中無物體,置信度則為0(Pr(对象)=0)
  • 假如有物體(PR(对象)=1),置信度就是借条分數。其表示預測之包围盒與地面真实包围盒的吻合程度。當完全吻合時,借条=1。

物體类别概率图


类概率图則是對整張圖片進行類別預測,每個网格单元格會預測出一種類別pr(类|对象)。只要該CELL與物體有交集,則該CELL之類別即歸類為該物體對應之類別.其概念與图像分割雷同,只是密度較低,將圖片以网格单元為單位預測圖片類別。

綜合包围盒、置信度及类概率图,即可以完成目标检测,形成一個端到端&One Stage的物體檢測架構。

在訓練時,每個包围盒會有X,Y,W,H,置信度,分类概率。而在測試時,會將包围盒置信度及物體類別分數相乘,得到特定類別之可信度分數,此分數就會同時代表“該類別在框中的機率”及“框吻合物體的程度”,計算如下:

Yolo最後綜合輸出之张量結構為S x S x(B*5+C),S x S為网格单元數量,B為每個单元預測包围盒之數量,C為物體類別數量.YOLO使用PASCAL VOC数据集,S=7,B=2,C=20,因此輸出张量為7x7x30,圖片示意如下:

網路架構

受到googleNet的啟發,yolo之網路架構中包含24層卷积层及2層全连接层。但不使用GoogleNet中初始模块,單純使用1×1层對網路特徵壓縮後在接3×3卷积层。Fast Yolo則是在將網路層減少,換取更快的速度。

损失函数


Yolo使用和平方误差,但這種計算方式並不能完全符合最大化MAP的目標。其原因為位置誤差及類別誤差擁有相同的權重,但並不一定符合現況.在檢測時也會有网格单元格中無任何物體的狀況,這會造成边界框置信度趨向於0。

因此yolo針對這些狀況進行加權,加強“座標誤差”的比重及減少“無物體包围盒誤差”的比重,yolo設定λcoord=5及λnoobj=0.5.

而包围盒有大小差別之分,和平方误差會使較大物體在計算誤差時擁有較大權重,因此對座標誤差(X,Y,W,H)取平方根,平衡此現象。

YOLO在預測時會產生多個框,因此誤差計算只選擇與地面真相擁有最高欠条的預測包围盒。

模型訓練培训

预培训

YOLO取前20層卷积层,並在網路後方加上Average-Pooling及Full Connected Layer,並在ImageNet1000類的DataSet上進行預訓練,此時輸入圖片大小為224×224.

训练检测

使用完整YOLO架構,並隨機初始化未訓練過的權重,並將輸入圖片尺寸改為448×448。最後一層激活函数使用线性激活函数,其餘皆是使用Leaky REU,Leaky REU公式如下:

對於边界框,根據圖片的長寬正規化边界框的W,H至[0,1]的範圍,而边界框的X,Y則是根據其所在网格单元的偏移量,並且也正規化至[0,1]。

訓練細節:

EPOCH=135EPOCH批量大小=64、动量=0.9EPOCH=0.0005、学习速率=10-2(0~75 EPOCH)、10-3(~105EPOCH)、10-4(~135EPOCH)

資料擴增:

  • 圖片隨機縮放原始圖片的20%
  • 隨機調整圖片的亮度及飽和度(1.5倍,HSV色彩空間)

模型測試推理

基于由於YOLO會輸出多個框,但並不會像分类器的方法產生大量的框,在較大的框時,預測結果才較容易輸出多個重疊框,但使用NMS(Non-Maximum Supperssion)還是可以提高2~3%MAP。

友乐限制

  • yolo一次只會產生兩個包围盒及一個类,因此對於群體集中的狀況(例如:鳥群),預測效果不佳
  • 由於Yolo使用較高維的特徵及從數據中學習預測,因此模型較難泛化至長寬比較為極端的狀況
  • 計算Lost時不會受到框的大小影響,而較小的框對IOU的影響程度較高,因此位置誤差為Loss佔比較高的部分.

友乐測試結果

結論

優點

  • YOLO是一個簡易結構的模型並且使用整張圖片進行預測的模型(端到端模型)
  • 基于與其他分类器的模型不同,yolo直接使用损失函数對整個模型進行訓練
  • FAST YOLO是個快速且通用的模型
  • YOLO在实时目标检测是SOTA模型

缺點

  • 網路架構中有全連接層,位置資訊可能混亂,位置誤差較大
  • 只有2個候選框,速度快但Recall較低
  • 小物體及重疊物體檢測效果較差
  • 缺乏锚定先驗,長寬比較為極端的情況下,檢測效果較差

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/09/14/dl%e3%80%81ml%e7%ad%86%e8%a8%9814%ef%bc%9ayolo-v1/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息