[DeeplearningAI筆記]卷積神經網絡3.1-3.5目標定位/特征點檢測/目標檢測/滑動窗口的卷積神經網絡實現/YOLO算法


4.3目標檢測

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

吳恩達老師課程原地址

3.1目標定位

對象定位localization和目標檢測detection

  • 判斷圖像中的對象是不是汽車--Image classification 圖像分類
  • 不僅要判斷圖片中的物體還要在圖片中標記出它的位置--Classification with localization定位分類
  • 當圖片中有 多個 對象時,檢測出它們並確定出其位置,其相對於圖像分類和定位分類來說強調一張圖片中有 多個 對象--Detection目標檢測

對象定位localization

  • 對於普通的圖像分類問題:在最后的輸出層連接上softmax函數,其中softmax神經元的數量取決於分類類別數。
  • 對於 定位分類 可以讓神經網絡多輸出幾個單元,輸出一個邊界框(bounding box),\(b_x,b_y,b_h,b_w\)
    • 本節課程中將圖片左上角標記為(0,0),右下角標記為(1,1),邊界框中心標記為\(b_x,b_y\),邊界框寬度表示為\(b_w\),高度表示為\(b_h\)
    • 因此,訓練集中的數據不僅包括神經網絡要預測的 對象分類標簽 還要有 對象的邊框位置的四個參數值
    • 假設圖片中的對象有四類:1.pedestrian行人,2.car汽車,3.motorcycle摩托車,4.background背景,其中如果圖片中沒有1-3類對象,則默認其為背景。
    • 對於目標標簽(target label),其可表示為一個向量,其中第一個組件Pc表示是否有對象。如果對象屬於前三類,則Pc=1,如果圖片中沒有目標對象,即是背景,則Pc=0.

訓練樣本目標標簽

損失函數

  • 對於目標標簽中不同的參數,也可以使用不同的損失函數,例如Pc使用邏輯回歸而其余的使用平方和誤差。

3.2特征點檢測Landmark detection

  • 對於特征點檢測,給出一個識別面部表情的基本構造模塊,即選取面部圖片當中的64個坐標作為特征點。
  • 注意:所有的特征點landmark在整個數據集中表示的含義應當一致
  • 則目標標簽的向量可表示為:
    • 訓練集中特征點的坐標都是人為辛苦標注的

人體姿態檢測people post-detection

  • 通過神經網絡標注人物姿態的關鍵特征點,通過這些特征點的坐標可以辨別人物的姿態。

3.3目標檢測Object detection

基於滑動窗口的目標檢測算法(sliding windows detection algorithm)

  • 對於訓練集樣本,X使用經過裁剪的,檢測目標基本在圖像中心的圖片。Y表示樣本圖片中是否有需要檢測的對象。訓練完這個卷積神經網絡,接下來就可以用它來實現滑動窗口目標檢測。
  • 首先選定一個特定大小的窗口,並使用以上的卷積神經網絡判斷這個窗口中有沒有車,滑動目標檢測算法會從左上角向右並向下滑動輸入窗口,並將截取的圖像都輸入到 已經訓練好的卷積神經網絡中 以固定步幅滑動窗口,遍歷圖像的每個區域
  • 然后使用比以上使用的窗口大一些的窗口,重復進行以上操作。然后再使用比上一次更大的窗口進行圖像的截取與檢測。
  • 所以無論目標在圖像中的什么位置,總有一個窗口可以檢測到它。
  • 但是滑動窗口目標檢測算法有十分消耗計算成本的缺點,因為使用窗口會在原始圖片中截取很多小方塊,並且卷積神經網絡需要一個個的進行處理。雖然使用較大的步長可以有效的節省計算成本,但是粗粒度的檢測會影響性能,小步幅和小窗口就會大量的耗費計算成本
  • 早些時候在普通的線性分類器上使用滑動窗口目標檢測算法可以有很好的性能,但是對於卷積神經網絡這種對於圖像識別相當耗費性能的算法而言,需要對滑動窗口算法進行重新設計。

3.4卷積的滑動窗口實現Convolutional implementation of sliding windows

  • 3.3中使用的基於滑動窗口的目標檢測算法效率很低十分消耗計算成本,本節將介紹使用於卷積神經網絡的滑動窗口算法。

將全連接層轉換為卷積神經層Turning FC layer into convolutional layers

  • 使用大小為\(14*14*3\)的圖片作為圖片數據,使用16個\(5*5\)的卷積核做卷積操作,得到\(10*10*16\)的特征圖,然后使用\(2*2\)的max-pooling池化算法,得到\(5*5*16\)的特征圖.將結果輸入到兩層具有400個神經元節點的全連接層中,然后使用softmax函數進行分類--表示softmax單元輸出的4個分類出現的概率。
  • 接下來要將最后連接的兩個全連接層FC1和FC2轉換為卷積層。
  • 方法是 使用與得到的特征圖大小相同的卷積核進行卷積,卷積核的數量對應全連接層中神經元節點的數量

卷積層的滑動窗口實現Convolution implementation of sliding windows

參考文獻
Sermanet P, Eigen D, Zhang X, et al. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks[J]. Eprint Arxiv, 2013.

  • 使用卷積層代替全連接層的網絡結構

  • 假設\(14*14*3\)的圖像是從\(16*16*3\)的圖像中截取出來的,即原始圖像的大小為\(16*16*3\).即首先截取原始圖片中的紅色區域輸入網絡,然后截取綠色區域,接着是黃色區域,最后將紫色區域截取出來作為圖像數據集。
  • 結果發現,滑動窗口得到的圖片進行的這四次卷積運算中的很多計算都是重復的
  • 得到的最終的\(2*2*4\)的稠密特征圖各不同顏色部分都對應了原始圖片中相同顏色的經過卷積操作后的結果。
  • 所以正確的卷積操作的原理是我們不需要把輸入圖片分割成四個子集,分別傳入卷積神經網絡中進行前向傳播,而是把它們作為一張圖片輸入給卷積網絡進行計算,其中共有的區域可以共享很多計算

總結

  • 對於卷積神經網絡的滑動窗口實現,不需要依靠連續的卷積操作來識別圖片中的汽車,而是可以對整張圖片進行卷積操作,一次得到所有的預測值。如果足夠幸運,神經網絡便可以識別出汽車的位置。

補充

  • 卷積神經網絡的滑動窗口實現提高了整個算法的效率,但是這個方法仍然存在一個缺點: 邊界框的位置可能不夠准確

3.5得到更精確的邊界框Bounding box predictions

  • 有時邊界框並沒有完整的匹配圖片中的對象,或者最佳的邊界框並不是正方形,而是橫向略有延伸的長方形。

YOLO algorithm

Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2016:779-788.

  • 其中一個可以得到較精確的邊界框的算法時YOLO算法--即You only look once

  • 具體操作方式是:假設圖像的大小是\(100*100\),然后在圖像上放一個網格,為了描述的簡潔,在此使用\(3*3\)的網格,實際中會使用更加精細復雜的網格,可能是\(19*19\).

    • 基本思想是使用圖像分類和定位算法(image classification and Localization algorithm)然后將算法應用到九個格子上。
    • 更具體的是:你需要對每個小網格定義一個8維向量的目標標簽,

    如何編碼邊界框how to encode the bounding boxes

    \[\begin{equation} A=\left[ \begin{matrix} p_{c}\\ b_{x}\\ b_{y}\\ b_{h}\\ b_{w}\\ 0\\ 1\\ 0\\ \end{matrix} \right] \left[ \begin{matrix} 使用0和1表示網格中是否有目標物體\\ 邊框中心點橫坐標值的范圍在(0,1)之間\\ 邊框中心點縱坐標的范圍在(0,1)之間\\ 邊框高可以大於1,因為有時候邊框會跨越到另一個方格中\\ 邊框寬可以大於1,因為有時候邊框會跨越到另一個方格中\\ 行人\\ 汽車\\ 摩托車\\ \end{matrix} \right] \end{equation}\]

    • YOLO算法使用的是取目標對象邊框中心點的算法,即考慮邊框的中心點在哪個格子中。對於中間的三個邊框,認為目標對象只存在於第二排第一個和第二排第三個網格中。
    • 由於有3*3個網格,所以輸出的標簽的大小為\(3*3*8\),即8表示目標標簽的深度,標簽堆疊成為了一個長方體的形式而不是二維的堆疊方式


免責聲明!

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



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