1. 程式人生 > >YOLO背景介紹

YOLO背景介紹

一、背景介紹

YOLO(You Only Look Once: Unified, Real-Time Object Detection),是Joseph Redmon和Ali Farhadi等人於2015年提出的基於單個神經網路的目標檢測系統。在2017年CVPR上,Joseph Redmon和Ali Farhadi又發表的YOLO 2,進一步提高了檢測的精度和速度。本博僅學習YOLO!

  1. // 論文下載地址
  2. https: //pjreddie.com/media/files/papers/yolo.pdf

下邊簡單說一下目標檢測( Object detection)發展:

早期的目標檢測方法通常是通過提取影象的一些 robust 的特徵(如 Haar、SIFT、HOG 等),使用 DPM (Deformable Parts Model)模型,用滑動視窗(silding window)的方式來預測具有較高 score 的 bounding box。這種方式非常耗時,而且精度又不怎麼高。

後來出現了object proposal方法(其中selective search為這類方法的典型代表),相比於sliding window這中窮舉的方式,減少了大量的計算,同時在效能上也有很大的提高。利用 selective search的結果,結合卷積神經網路的R-CNN出現後,Object detection 的效能有了一個質的飛越。基於 R-CNN 發展出來的 SPPnet、Fast R-CNN、Faster R-CNN 等方法,證明了 “Proposal + Classification” 的方法在 Objection Detection 上的有效性。

相比於 R-CNN 系列的方法,本論文提供了另外一種思路,將 Object Detection 的問題轉化成一個 Regression 問題。給定輸入影象,直接在影象的多個位置上回歸出目標的bounding box以及其分類類別。

YOLO是一個可以一次性預測多個Box位置和類別的卷積神經網路,能夠實現端到端的目標檢測和識別,其最大的優勢就是速度快。事實上,目標檢測的本質就是迴歸,因此一個實現迴歸功能的CNN並不需要複雜的設計過程。YOLO沒有選擇滑動視窗(silding window)或提取proposal的方式訓練網路,而是直接選用整圖訓練模型。這樣做的好處在於可以更好的區分目標和背景區域,相比之下,採用proposal訓練方式的Fast-R-CNN常常把背景區域誤檢為特定目標。


二、論文摘要

下圖所示是YOLO檢測系統流程:

  1. 將影象Resize到448*448;
  2. 執行CNN;
  3. 非極大抑制優化檢測結果。



YOLO是基於Pascal VOC2012資料集的目標檢測系統。它能夠檢測到20種Pascal的目標類別,包括:

  • 鳥,貓,牛,狗,馬,羊
  • 飛機,自行車,船,汽車,摩托車,火車
  • 瓶子,椅子,桌子,盆栽植物,沙發,電視或者顯示器

YOLO的總體框架示意圖如下:


一體化的設計方案:

YOLO的設計理念遵循端到端訓練和實時檢測。YOLO將輸入影象劃分為S*S個網格,如果一個物體的中心落在某網格(cell)內,則相應網格負責檢測該物體。

在訓練和測試時,每個網路預測B個bounding boxes,每個bounding box對應5個預測引數:

  1. bounding box的中心點座標(x,y),寬高(w,h)
  2. 和置信度評分(confidence)

這個置信度評分:


綜合反映了:

  1. 當前bounding box中含有object的置信度Pr(Object)
  2. 當前bounding box預測目標位置的準確性IOU(pred|truth)

如果bouding box內不存在物體,則Pr(Object)=0。如果存在物體,則根據預測的bounding box和真實的bounding box計算IOU,同時會預測存在物體的情況下該物體屬於某一類的後驗概率Pr(Class_i|Object)。

假定一共有C類物體,那麼每一個網格只預測一次C類物體的條件類概率Pr(Class_i|Object), i=1,2,...,C;每一個網格預測B個bounding box的位置。即這B個bounding box共享一套條件類概率Pr(Class_i|Object), i=1,2,...,C。基於計算得到的Pr(Class_i|Object),在測試時可以計算某個bounding box類相關置信度:Pr(Class_i|Object)*Pr(Object)*IOU(pred|truth)=Pr(Class_i)*IOU(pred|truth)。如果將輸入影象劃分為7*7網格(S=7),每個網格預測2個bounding box (B=2),有20類待檢測的目標(C=20),則相當於最終預測一個長度為S*S*(B*5+C)=7*7*30的向量,從而完成檢測+識別任務,整個流程可以通過下圖理解。