吳恩達【深度學習工程師】 04.卷積神經網絡 第三周目標檢測 (2)YOLO算法


該筆記介紹的是《卷積神經網絡》系列第三周:目標檢測 (2)YOLO算法

主要內容有:

1.YOLO算法思想

2.交並比

3.非最大抑制

4.Anchor Box

5.YOLO算法例子

YOLO算法思想

基本的滑動窗口對象檢測算法並不能精准描繪邊框,所以我們要學習一個能夠得到准確邊框的算法YOLO(You Only Look Ones)算法。

 算法思想:在圖片上放置n*n的網格,並將圖像分類和定位算法運用到每個網格上面去。

        

與滑動窗口對象檢測算法的區別:

    a.窗口滑動由放置網格取代,YOLO算法會對每個網格使用圖像分類和圖像定位算法,相比滑動窗口會大大的減少了運算量。

    b.一個對象可能在多個網格中,YOLO算法會找到該對象的中心點,並把對象分給包含中心的網格。(bh,bw是可以大於網格大小,實踐中會使用更精細的去分割網格,所以對象會橫跨多個網格)

         c.顯示的輸出邊界框架,讓神經網絡輸出的框架可以具有任意的寬高比,並且能輸出更精確的坐標。

        

*由於YOLO算法的特性使得,每個格子的對象不能超過一個,但是實踐過程中網格會分的很精細所以基本上不用擔心這個問題。

YOLO算法的輸出

由於YOLO算法是對每個網格進行運行,在視頻給出的例子中輸出結果3*3*8

3*3是圖片的分割的網格數量

8是輸出圖片預測和邊框位置等信息,其實就等於給出的標簽y的具體信息:

       

 

 

 交並比(IOU)

計算兩個邊框交集和並集之比,IOU是用來衡量兩個邊框的重疊的大小。

      

交集/並集=

      

一般認為IOU>=α(閥值,一般人為約定為0.5)是可接受的,由不同場景可自己設置。

 

 非最大抑制

 抑制不是極大值的元素,搜索局部的極大值,確保每個對象只檢測一次。

YOLO算法在運行中存在一個問題,理論上圖片上每一個對象只存在一個中心點,實踐中可能會有幾個網格都會認為對象的中心在自己網格中。

      

於是就會生成多個邊框

      

非最大抑制的作用就是,對於每個對象只保留其Pc預測最大的值

      

非最大抑制用法

    a.去掉IOU沒到達到閥值的邊框

    while(存在剩下的邊框):

      b.選擇概率Pc的邊框,輸出為預測結果

      c.剩下邊框中所以和輸出邊框有很大的交並,則它們的輸出被抑制。

 *如果存在多種類型的對象(即是c1,c2,c3),每種類型的對象要單獨運行最大抑制(不同類型對象的交並值會對結果產生影響)。

 

 Anchor Box

使用Anchor Box可以讓一個檢測出多個對象(不同類別的)。

      

 Anchor Box思路:

    a.預先定義多個個不同形狀的的Anchor Box,Anchor Box的形狀是與預測結果關聯起來的。

      

    b.現在每個對象都和以前一樣分配到同一個格子里面,但是現在還要分配到一個Anchor Box,分配的原則是比較並選擇該格子內對象與定義的Anchor Box不同形狀之間的IOU交並比最高的那個。

 

於是標簽y(對於視頻中的例子)就變成下圖這樣了,每一個Pc對應這一個Anchor Box形狀。

      

使用Anchor Box的好處:

    a.處理兩個不同類型的對象出現在同一格子里面,實際情況中如果格子夠細致的話,一般不會出現兩個格子在一個對象里面的。

    b.能夠讓算法更有針對行(監督學習),如果你的數據給出的對象的形狀大概相似。

如何選擇Anchor Box:

  一般手動根據對象制定Anchor Box形狀,可以選擇5個到10個形狀,可以涵蓋你想要檢測對象的各種對象。

 

YOLO算法例子

上面講的都是構建YOLO算法中所需要知道的一些知識,下面就通過一個例子把所有的知識點穿插起來。

視頻使用的例子還是在圖片中檢測pedestrian(行人)、car(車)和motorcycle(摩托車)

      

輸出數據形狀是3x3x16:

    a.3x3是分的格子形狀

    b.16(=2x8)其中2是使用的Anchor Box的個數,8就是輸出的參數個數(Pc,bw,bx,bh,bw,c1,c2,c3

輸出標簽y:

       

Anchor Box選擇:

使用Anchor Box 1表示pedestrian(行人),Anchor Box 2表示car(車)和motorcycle(摩托車),這里是不知道為什么摩托車沒Anchor形狀,所以我認為可能摩托車形狀與Anchor Box 2差不多。

 

使用卷積神經網絡訓練:

      

最后是使用非最大抑制:

沒有使用非最大抑制時,由於使用了兩個Another Box,每個格子都會有兩個檢測邊界框,只是Pc概率不同而以。

       

你需要做的是:

    a.拋棄概率比較低的預測邊框

      

    b.如果存在三個對象檢測的類別(行人,車和摩托車),對每一類單獨運行非最大抑制。這里的意思對於行人Anchor Box 1的形狀的概率明顯高於Anchor Box 2的概率。所以去掉Anchor Box 2形狀的邊框。

 


免責聲明!

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



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