CV崗位面試題:簡單說下YOLOv1,v2,v3,v4各自的特點與發展史



點擊上方AI算法與圖像處理”,選擇加"星標"或“置頂”

重磅乾貨,第一時間送達


文 | 七月在線
編 | 小七


解析:


文章目錄
    一、任務描述
    二、設計思想
    三、發展歷程
        1. YOLOv1
        2. YOLOv2
        3. YOLOv3
        4. YOLOv4
    四、總結


一、任務描述

目標檢測是爲了解決圖像裏的物體是什麼,在哪裏的問題。輸入一幅圖像,輸出的是圖像裏每個物體的類別和位置,其中位置用一個包含物體的框表示。


需要注意,我們的目標,同時也是論文中常說的感興趣的物體,指我們關心的類別(行人檢測只檢測人,交通檢測只關心交通工具等),或者數據集包含的類別,並不是圖像裏所有的物體都是目標,比如建築,草坪也是物體,但他們常常是背景。

從計算機視覺的角度看,目標檢測是分類+定位,從機器學習的角度看,目標檢測是分類+迴歸。

二、設計思想

目標檢測架構分爲兩種,一種是two-stage,一種是one-stage,區別就在於 two-stage 有region proposal 過程,類似於一種海選過程,網絡會根據候選區域生成位置和類別,而 one-stage 直接從圖片生成位置和類別。

今天提到的 YOLO 就是一種 one-stage 方法。YOLO 是 You Only Look Once 的縮寫,意思是神經網絡只需要看一次圖片,就能輸出結果。




YOLO 一共發佈了四個版本,其中 YOLOv1 奠定了整個系列的基礎,後面的系列就是在第一版基礎上的改進,只爲提升性能。

YOLOv1 的檢測方法如下:

①將輸入圖像劃分爲 S×S 網格(grid),比如這裏劃分成 7×7=49 個 grid,如果目標的中心落入網格單元,則該網格單元負責檢測該目標。注意不是整個物體落入單元格,只需要物體中心在即可。

把圖片劃分成 49 個網格


②每個網格單元預測 B(文中 B=2) 個邊界框和這些框的置信度得分。這個分數反映這個框包含物體的概率 Pr(Object) 以及預測框的位置準確性 IOU,所以置信分數也由這兩部分定義;

③每個 bounding box 都要包含 5 個預測值,x, y, w, h, confidence。(x,y)框中心是相對於網格單元的座標,w 和 h 是框相當於整幅圖的寬和高,confidence 代表該框與 ground truth 之間的 IOU(框裏沒有物體分數直接爲 0 )


定位:每個網格都要預測 B = 2 個框框,49 個網格就會輸出 98 個邊界框,每個框還有它的分數

④因爲位置和類別需要同時預測,所以每個單元格除了輸出 bounding box 也輸出物體的條件概率(該物體屬於某一類的概率,當然這些概率以包含對象的網格單元爲條件)。每個網格單元輸出一個概率集合,不考慮這個 grid 預測幾個 bounding box。


分類:每個網格輸出一個類別概率,也就是說一個網格只能屬於概率最大的那一類

④測試階段,在測試時,我們將條件分類概率與各個框的置信度預測相乘,作爲每個框特定於每個類的置信分數(這個分數編碼了類別和位置兩部分信息)。

與 R-CNN 系列方法相比:
i) R-CNN 及其變體採用 region proposals 而不是滑動窗口法找物體,是一種多階段方法。調網絡的時候需要分開調,運行慢。

ii)YOLO 與 R-CNN 相似的地方是在網格單元找可能的邊界框,用 CNN 提取特徵。不同的是,加在網格單元的空間限制有助於防止同一個目標的重複檢測,預測的邊界框也少(98 個),還有把多個階段結合成一個階段。

三、發展歷程

1、YOLOv1

問題背景

之前 two-stage 方法如 R-CNN 把檢測問題分成兩部分,先生成候選區域(region proposal),再用分類器對區域分類,多階段訓練導致不易優化。

創新點

把檢測當作迴歸問題,用一個網絡輸出位置和類別,實現了一個 unified system,從檢測的角度是 one-stage的

訓練流程
和 R-CNN 差不多
首先 ImageNet 1000類 競賽數據集上對卷積層進行預訓練
然後再把網絡根據檢測任務微調

檢測流程
a) 輸入一幅多目標圖像
b) 將圖像劃分成多個網格
c) 通過網絡得到每個網格的分類概率,以及各網格預測的框+置信度
d) 針對每個框,把概率與置信分數相乘,作爲每個框特定於每個類的置信分數
e) 輸出位置和類別信息

優點
快。因爲迴歸問題沒有複雜的流程(pipeline)。


可以基於整幅圖像預測(看全貌而不是隻看部分)。與基於滑動窗口和區域提議的技術不同,YOLO在訓練和測試期間會看到整個圖像,因此它隱式地編碼有關類及其外觀的上下文信息。因爲能看到圖像全貌,與 Fast R-CNN 相比,YOLO 預測背景出錯的次數少了一半。

學習到物體的通用表示(generalizable representations),泛化能力好。因此,當訓練集和測試集類型不同時,YOLO 的表現比 DPM 和 R-CNN 好得多,應用於新領域也很少出現崩潰的情況。

缺點
空間限制:一個單元格只能預測兩個框和一個類別,這種空間約束必然會限制預測的數量;

難擴展:模型根據數據預測邊界框,很難將其推廣到具有新的或不同尋常的寬高比或配置的對象。由於輸出層爲全連接層,因此在檢測時,YOLO 訓練模型只支持與訓練圖像相同的輸入分辨率。

網絡損失不具體:無論邊界框的大小都用損失函數近似爲檢測性能,物體 IOU 誤差和小物體 IOU 誤差對網絡訓練中 loss 貢獻值接近,但對於大邊界框來說,小損失影響不大,對於小邊界框,小錯誤對 IOU 影響較大,從而降低了物體檢測的定位準確性。

2. YOLOv2

問題背景
YOLOv1 檢測性能低
當前的檢測任務受數據集標籤的限制(數據集必須有標籤或通過分類賦予標籤)。但是,標記檢測圖像比標記分類圖像昂貴得多,所以檢測數據和分類數據不是一個規模。

創新點
針對第一個問題,使用一些方法提升 YOLOv1 的性能,得到 YOLOv2。
針對第二個問題,提出了 ImageNet 和 COCO 數據集的結合方法,以及聯合訓練方法,訓練 YOLOv2 後得到的模型叫 YOLO9000。

提升性能的方法
Accuracy: Batch Normalization, High Resolution Classifier, Convolutional With Anchor Boxes, , Direct location prediction, Fine-Grained Features, Multi-Scale Training
Speed: 提出一個新網絡 Darknet-19

訓練流程
論文提出了一種聯合訓練算法,該算法可以在檢測和分類數據上訓練目標檢測器。利用標記的檢測圖像來學習精準定位,同時使用分類圖像來增加其“詞彙量”和健壯性。

一、分類檢測數據集結合方法:
檢測數據集的標籤少且普通,分類數據集的標籤多且具體,如果我們想在兩個數據集上訓練,就得把它們的標籤合併起來。很多分類方法都用一個 softmax layer ,但它的前提是假設所有類互斥,但我們的數據集類別是不都是互斥的(有可能是包含關係,例如狗和金毛犬),所以我們使用了一個多標籤模型來組合數據集(無互斥的要求),及使用多個 softmax 。大多數分類方法都假定標籤採用扁平結構,但是對於組合數據集我們需要層次化的結構。

ImageNet 標籤採用有向圖結構。在這裏,作者把數據集的結構簡化爲結構樹(hierarchical tree)。通過改造圖,最後得到一個 WordTree,這樣每個節點/標籤都有自己的概率,解決了類別之間不互斥的問題,就能在檢測集和分類集上聯合訓練。

二、聯合訓練方法:

把檢測和分類數據混合,訓練過程中遇到帶標籤的檢測圖像,就基於 YOLOv2 整個損失函數進行反向傳播,遇到分類圖像,只反向傳播網絡的分類損失。

3. YOLOv3

問題背景
YOLOv3 的提出不是爲了解決什麼問題,整篇論文其實是技術報告。
YOLOv3 在 YOLOv2 基礎上做了一些小改進,文章篇幅不長,核心思想和 YOLOv2、YOLO9000差不多。

模型改進
邊界框預測:定位任務採用 anchor box 預測邊界框的方法,YOLOv3 使用邏輯迴歸爲每個邊界框都預測了一個分數 objectness score,打分依據是預測框與物體的重疊度。如果某個框的重疊度比其他框都高,它的分數就是 1,忽略那些不是最好的框且重疊度大於某一閾值(0.5)的框
類別預測:和 YOLOv2 一樣,YOLOv3 仍然採取多標籤分類
多尺度預測使用新網絡 Darknet-53 提取特徵

4. YOLOv4

問題背景
YOLO 原作者之前宣佈退出CV界,YOLOv4 的作者其實不是前三篇 YOLO 的一作

YOLOv4 是對 YOLOv3 的一個改進。它的改進方法就是總結了幾乎所有的檢測技巧,又提出一點兒技巧,然後經過篩選,排列組合,挨個實驗(ablation study)哪些方法有效。

值得注意的是文章第二部分相關工作,簡直就是目標檢測的一個簡單綜述,閱讀該部分,你就能瞭解模型及方法,如果它提到的每個方法你都瞭解,說明你在這個方向的研究較全面深入(我沒達到)。

框架方法
下面這幅論文中的圖介紹了 YOLOv4 檢測器的構成及使用的訓練方法,這些是經過大量實驗選出的性能最好的組合

四、總結
回顧 YOLO 系列的發展,我們可以看出 YOLO 後期沒有提出新穎的想法,更重視應用落地。



   
       
       
       
個人微信(如果沒有備註不拉羣!
請註明: 地區+學校/企業+研究方向+暱稱



下載1:何愷明頂會分享


AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析


下載2:終身受益的編程指南:Google編程風格指南


AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!



 
     
     
     
下載3 CVPR2021

AI算法與圖像處公衆號後臺回覆: CVPR 即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文

點亮 ,告訴大家你也在看


本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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