YOLOv1詳解,目標檢測


  • YOLOv1算法簡介

  是繼RCNN,Fast-RCNN和Faster-RCNN之后,對DL目標檢測速度問題提出的另外一種框架。使用深度神經網絡進行對象的位置檢測以及分類,

  主要特點是速度快,准確率高,采用直接預測目標對象的邊界框的方法,將候選區和對象識別兩個階段合二為一。

  yolov1將原始圖片分割成互不重合的小方塊,(也就是將圖像分成S x S個網格),然后通過卷積最后生產這樣大小的特征圖,基於上面的分析,

  可以認為特征圖的每個元素也是對應原始圖片的小方塊,然后利用每個元素來可以預測那些中心點在改小方格的目標

  yolo是將物體檢測任務當做回歸問題來做

  

論文下載:http://arxiv.org/abs/1506.02640

代碼下載:https://github.com/pjreddie/darknet 

 

  • YOlOv1的算法原理

  如圖所示,分成7*7個小格子,每個格子預測兩個bounding box,

  每個bonding box除了要回歸自身的位置( (x, y, w, h) 和 confidence 共5個值)之外,還要附帶預測一個confidence值(置信度)

 

 

 

  如果一個目標的中心落入一個網格單元中,該網格單元負責檢測 該目標。

 

  對每一個切割的小單元格預測(置信度,邊界框的位置),每個bounding box需要4個數值來表示其位置,

  (Center_x,Center_y,width,height),即(bounding box的中心點的x坐標,y坐標,bounding box的寬度,高度),

  也就是要預測 (x, y, w, h) 和 confidence 共5個值,每個網格還要預測一個類別信息,記為 C 類。則 SxS個 網格,

  每個網格要預測 B 個 bounding box 還要預測 C 個 categories。

  輸出就是 S x S x (5*B+C) 的一個 tensor

 

  置信度定義為是否存在目標iou值的乘積      

 

  注意:class 信息是針對每個網格的,confidence 信息是針對每個 bounding box 的。

   舉例說明: 在 PASCAL VOC 中,圖像輸入為 448x448,取 S=7,B=2,一共有20 個類別(C=20),則輸出就是 7x7x30 的一個 tensor。

 

  算法流程

    1、將圖像resize到448 * 448作為神經網絡的輸入

    2、運行神經網絡,得到一些bounding box坐標、box中包含物體的置信度和class probabilities 

    3、進行非極大值抑制,篩選Boxes

                                                           

  算法結構

    網絡方面主要采用GoogLeNet,(YOLO未使用inception module,而是采用1*1卷積層,為了跨通道信息整合+3*3卷積層簡單代替

    包含24個卷積層和2個全連接層,卷積層主要用來提取圖像特征,全連接層主要用來預測圖像位置類別概率

    最后輸出是7*7*30(30是5*2+20),7*7就是切分的網格(grid cell)的數量,可能對於inception的改動,最后幾層全連接的改動,

    重點在於最后一層的輸出是7*7*30

    輸入圖像分辨率為448*448,所有預測結果歸一化0~1,使用Leaky Relu作為激活函數第一個全連接層后面接了一個ratio=0.5的Dropout層

    參考鏈接 :http://www.imooc.com/article/36391

 

     

直接把訓練好的YOLO網絡模型輸入一張圖片,得到一個7*7*30的結果向量,通過NMS(非極大值抑制)來選擇最終的結果;

NMS就是通過打分來選出最好的結果,與這個結果重疊的對象去掉,是一個不斷迭代的過程。

                                                          score = 某個對象的概率 * 置信度

 

所以對於每個網格有20*2個得分,每個對象有49*2個得分;這里的2是bounding box的個數;

具體的過程是:

1,設置一個分數閾值,低於的直接置為0;

2,遍歷對於每個對象:

         選出分數最高的那個及其bounding box放到輸出列表中;

         將其他的與上面選出的分數最高的那個計算IOU,設置一個閾值,大於閾值的表示重疊度較高,把分數置為0;

         如果所有的bounding box都在輸出列表中或者分數為0,那么這個對象的NMS就結束

     對接下來的對象執行此過程

3.得出輸出結果;

 

  算法優點

    1、YOLO檢測物體非常快

    2、YOLO可以很好的區分背景與物體,不像其他物體檢測使用滑窗或者region proposal,分類器只能得到局部圖像的局部信息,

      YOLO在訓練和測試時都能看到一整張圖像的信息,因此YOLO在檢測物體時能很好的利用上下文信息,從而不容易背景上預測儲錯誤的物體信息。

      和Fast-RCNN相比,YOLO的背景錯誤不到Fast-RCNN的一半

    3、YOLO具有高度泛化能力,因此應用新領域或碰到意外的的輸入時不太可能出現故障

  算法缺點

    1、位置精確性差,容易產生物體的定位錯誤,輸入尺寸固定

    2、對相互靠的很近的物體,對於小目標物體,很小的群體檢測效果不好

    3、YOLO雖然可以降低將背景檢測為物體的概率,但同時導致召回率較低

  

參考博客: 

https://blog.csdn.net/duanyajun987/article/details/81940284

http://www.imooc.com/article/36391

https://www.cnblogs.com/ywheunji/p/10761239.html

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM