YOLO模型詳解

YOLO將物體檢測作爲一個迴歸問題進行求解,輸入圖像經過一次inference,便能得到圖像中所有物體的位置和其所屬類別及相應的置信概率。而rcnn/fast rcnn/faster rcnn將檢測結果分爲兩部分求解:物體類別(分類問題),物體位置即bounding box(迴歸問題)。

YOLO檢測網絡包括24個卷積層和2個全連接層,如下圖所示。(YOLO網絡借鑑了GoogLeNet分類網絡結構,不同的是,YOLO未使用inception-module,而是使用1x1卷積層(此處1x1卷積層的存在是爲了跨通道信息整合)+ 3x3卷積層簡單替代。

(1) 將原圖劃分爲SxS的網格。如果一個目標的中心落入某個格子,這個格子就負責檢測該目標。

(2) 每個網格要預測Bbounding boxes,以及C個類別概率Pr(classi|object)

YOLO中,每個格子只有一個C類別,即相當於忽略了Bbounding boxes每個格子只判斷一次類別,這樣做非常簡單粗暴。

(3) 每個bounding box除了要回歸自身的位置之外,還要附帶預測一個confidence值。這個confidence代表了所預測的box中含有目標的置信度和這個bounding box預測的有多準兩重信息:

如果有目標落中心在格子裏Pr(Object)=1;否則Pr(Object)=0。 第二項是預測的bounding box和實際的ground truth之間的IOU.

每個bounding box都包含了5個預測量:(x, y, w, h, confidence),其中(x, y)代表預測box相對於格子的中心,(w, h)爲預測box相對於圖片的widthheight比例,confidence就是上述置信度。需要說明,這裏的x, y, wh都是經過歸一化的.

(4) 由於輸入圖像被分爲SxS網格,每個網格包括5個預測量:(x, y, w, h, confidence)和一個C類,所以網絡輸出是SxSx(5xB+C)大小
 

 

訓練:

Loss = λcoord * 座標預測誤差 +(含objectbox confidence預測誤差 + λnoobj * 不含objectbox confidence預測誤差)

            + 類別預測誤差

(1) bounding box(x, y, w, h)的座標預測誤差。

檢測算法的實際使用中,一般都有這種經驗:對不同大小的bounding box預測中,相比於大box大小預測偏一點,小box大小測偏一點肯定更不能被忍受。所以在Loss中同等對待大小不同的box是不合理的。爲了解決這個問題,作者用了一個比較取巧的辦法,即對wh求平方根進行迴歸。從後續效果來看,這樣做很有效,但是也沒有完全解決問題。

(2) bounding boxconfidence預測誤差

由於絕大部分網格中不包含目標,導致絕大部分boxconfidence=0,所以在設計confidence誤差時同等對待包含目標和不包含目標的box也是不合理的,否則會導致模型不穩定。作者在不含objectboxconfidence預測誤差中乘以懲罰權重λnoobj=0.5

除此之外,同等對待4個值(x, y, w, h)的座標預測誤差與1個值的conference預測誤差也不合理,所以作者在座標預測誤差誤差之前乘以權重λcoord=5

(3) 分類預測誤差

縮進即每個box屬於什麼類別,需要注意一個網格只預測一次類別,即默認每個網格中的所有Bbounding box都是同一類。

(1) 對於bounding box的寬和高做如下normalization,使得輸出寬高介於0~1

                    

(2) 使用(row, col)網格的offset歸一化bounding box的中心座標:

   

x,y爲當前座標相對於格子左上角點的座標。

 

測試:

在檢測目標的時候,每個網格預測的類別條件概率和bounding box預測的confidence信息相乘,就得到每個bounding boxclass-specific confidence score:

等式左邊第一項就是每個網格預測的類別信息,第二三項就是每個bounding box預測的confidence。這個乘積即encode了預測的box屬於某一類的概率,也有該box準確度的信息。

非極大值抑制(NMS)

  • 將所有框的得分排序,選中最高分及其對應的框;
     
  • 遍歷其餘的框,如果和當前最高分框的重疊面積(IOU)大於一定閾值,我們就將框刪除;
     
  • 從未處理的框中繼續選一個得分最高的,重複上述過程。

優缺點

  • 優點:
     
    • 1速度快:GPU:titan x,mAP:63.4%,數據集:VOC,檢測速度:45fps;
       
    • 2背景誤檢率低:YOLO在訓練和推理過程中能‘看到’整張圖像的整體信息,而基於region-proposal的物體檢測方法(如rcnn/fast-rcnn),在檢測過程中,只‘看到’候選框內的局部圖像信息;
       
    • 3泛化能力強:YOLO模型可以學到更加一般的特徵,對藝術類作品中的物體檢測同樣適用。
       
  • 缺點:
     
    • 1、識別物體位置精準性差;
       
    • 2、召回率低。
      • 每個cell僅預測2個Bbox(Yolo-V1);
      • 最終只選擇IOU最高的Bbox作爲物體檢測輸出,即每個cell最多隻預測出一個物體。當物體佔畫面比例較小,如圖像中包含畜羣或鳥羣時,每個格子包含多個物體,但卻只能檢測出其中一個。這是YOLO方法的一個缺陷。
         
    • 3、由於輸出層爲全連接層,因此在檢測時,YOLO訓練模型只支持與訓練圖像相同的輸入分辨率。

 

參考:https://www.zybuluo.com/rianusr/note/1417734

原文:https://arxiv.org/abs/1506.02640

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章