圖像處理--對象的定位與識別

對象的定位與識別

這一章節主要講解兩個算法,Faster-RCNN 和SSD,在這之前把卷積神經網絡的其他小細節做一個總結。

Back Propagation

BP網絡能學習和存儲大量的輸入-輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程,他的學習規則是使用最速下降法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡的誤差平方和最小:
在這裏插入圖片描述
BP算法的公式:
在這裏插入圖片描述
在這裏插入圖片描述

Batch Normalization

在神經網絡中,數據的分佈會對訓練產生影響,當我們在隱藏層中用激活函數進行激活是,就會產生另外一個問題:不會對x比較大的特徵範圍敏感了,相當於人的感官系統失效。
Batch normalization 的 batch 是批數據, 把數據分成小批小批進行 stochastic gradient descent(隨機梯度下降). 而且在每批數據進行前向傳遞 forward propagation 的時候, 對每一層都進行 normalization 的處理。
希望激勵後的結果是高斯分佈的,那麼我們手動修一下,另:
在這裏插入圖片描述
BN通常在全連接層後,激勵層前做,我們希望CNN學習出來這麼一個規則,對輸出的結構限制。
在這裏插入圖片描述
在這裏插入圖片描述

關於Batch Normalization的好處

  • 梯度傳遞(計算)更爲流暢
  • 學習率設高一點也沒關係
  • 對於初始值的依賴變少
  • 說起來,其實這裏可以看成一種正則化,減少了對output的需求
    下面看一下使用BN的結果與不使用有什麼差別:
    在這裏插入圖片描述
    很明顯,在不使用的情況下,輸出的值往兩個極端聚攏,在有BN的條件下,我們可以控制輸出的範圍。

Dropout

神經網絡的正則化方式:別一次打開所有的學習單元

randomly set some neurons to zero int the forward pass
在這裏插入圖片描述

Dropout如何預測

實際上在訓練的時候是可以這樣做的,但是在預測的時候會很麻煩。
所以在做預測的時候會把所有的x乘以一個概率p ,因此在做預測的時候,不會去中途把這個開關打開或關上 ,而是把所有的x 都乘以一個概率p ,這是實際上做的工作。
還有另外一個更好的辦法是在訓練時把所有的x 都除以p ,實際上在做真的predict時候,什麼事情都不用幹,因爲剛纔還要乘以p ,現在把乘以p 的過程,在訓練的過程中除以P已經完成了,我已經完成係數的縮放了,因此在做預測的過程中,是多少x 就輸入多少x ,直接算就好了,是什麼樣的權重w 就用什麼樣的權重,就可以得到標準的結果。

Dropout爲什麼能防止過擬合

因爲這個神經網絡沒有記住那麼多的東西,只是挑了重要的記住,有很好的泛化能力,比如說下面的一幅圖,貓有耳朵,但是狗也有耳朵,貓的皮毛毛茸茸,狗也是很毛茸茸,所以,網絡不用記下這麼多的共同信息,只需要記住其中某些特徵。
在這裏插入圖片描述
另外的理解方式:
每次都關掉一些感知器,得到一個模型,最後做融合,不至於聽一
家之言

Dropout可以用於卷積層嗎?BN可以用於全連接層嗎?

應該僅在全連接層上使用Dropout操作,並在卷積層之間使用批量標準化。
首先,在對卷積層進行正則化時,Dropout通常不太有效;原因在於卷積層具有很少的參數,因此初始時他們需要較少的正則化操作,卷積層參數較少,加入dropout作用甚微。此外,由於特徵映射的空間關係,激活值可以變得高度相關,這使得Dropout無效。
實驗證明使用Dropout的模型性能往往比不使用任何操作的模型性能更差。
應該在卷積層之間插入Batch Normalization(批量標準化),這項技術將使得模型正則化化,進而使得模型在訓練期間更加地穩定。

two stage 經典算法:Faster R-CNN

two stage 經典算法是先由算法生成一系列作爲樣本的候選框,再通過卷積神經網絡進行樣本分類。
這篇文章是和何凱明大神在2016年出的一篇paper
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

  • 基本思想:RPN + CNN + ROI
  • 引入Region Proposal Network(RPN)替代 Selective Search(SS),引入anchor box應對目標形狀的變化。
  • 這篇論文中提到了一系列目標邊框,該文在生成目標選框中做了一些改進。RPN 通過一個較大範圍的尺寸與比例係數來高效的預測候選區域。以前的方法是使用圖像金字塔,和不同大小的卷積核進行處理,本文提出了不同尺寸與比例係數組合得到的多個 anchor 用於生成 proposal 作爲參考,提高了測試的速度。

在這裏插入圖片描述
RPN 網絡主要用於生成 region proposals,首先生成一堆 Anchor box,對其進行裁剪過濾後通過 softmax 判斷 anchors 屬於前景(foreground)或者後景(background),即是物體 or 不是物體,所以這是一個二分類;同時,另一分支 bounding box regression 修正 anchor box,形成較精確的 proposal
在這裏插入圖片描述
首先通過 Conv layers 得到 feature map,然後進入 RPN 層,先經過一次 3*3 的卷積,逐像素對其 9 個 Anchor box 進行二分類, 逐像素得到其 9 個 Anchor box 四個座標信息.
在這裏插入圖片描述
特徵圖 60乘40 上的每個像素生成 9 個 Anchor box,並且對生成的 Anchor box 進行過濾和標記
針對 RPN 的訓練,對每個 anchor 進行兩類標記,前景/背景(二分類)。
如果 anchor box 與 ground truth 的 IoU 值最大,標記爲正樣本,label=1
如果 anchor box 與 ground truth 的 IoU>0.7,標記爲正樣本,label=1
如果 anchor box 與 ground truth 的 IoU<0.3,標記爲負樣本,label=0
剩下的既不是正樣本也不是負樣本,不用於最終訓練,label=-1
除了對 anchor box 進行標記外,另一件事情就是計算 anchor box 與 ground truth 之間的偏移量

ANCHOR(錨點)

在 feature maps 上進行滑窗操作(sliding window). 滑窗尺寸爲 n×n, 如 3×3. 對於每個滑窗, 會生成 9 個錨框,這些錨框具有相同的中心 center=(x 𝑎 , 𝑧 𝑎 ) ,且具有3種不同的長寬比(aspect ratios) 和 3 種不同的尺度(scales), 如圖
在這裏插入圖片描述
在這裏插入圖片描述
以每個點爲中心生成9個大小不一的框,那麼一定有跟ground truth很接近的框。

RPN結構圖(頭部)

classification 分支輸出一個概率值, 表示bounding-box 中是否包含 object (classid = 1),或者是 background (classid = 0), no object.
regression 分支輸出預測的邊界框參數: (x, y, w, h).
在這裏插入圖片描述

Bounding box regression

紅色框A是原始anchor box,綠色框G代表目標的GroundTruth。
我們的目標是尋找一種關係,使得輸入的A經過映射得到一個跟真實窗口G更接近的迴歸窗口G’。對A的調整,就是Bounding Box迴歸。
對於邊界框一般使用四維向量(x, y, w, h)表示,分別表示邊界框的中心點座標和寬高。給定A=(Ax, Ay, Aw, Ah),尋找一種映射f,使得f(Ax, Ay, Aw, Ah)=(G’x, G’y, G’w, G’h),其中(G’x, G’y, G’w, G’h)≈(Gx, Gy, Gw, Gh)。核心思想:通過平移和縮放方法對物體邊框進行調整和修正。
在這裏插入圖片描述

  • 原始的anchor box與預測的ground truth之間的偏移量(𝑡 𝑦 ,𝑡 𝑧 )原始的anchor box與預測的ground truth之間的偏移量(𝑡 𝑦 ,𝑡 𝑧 )
  • 在這裏插入圖片描述
  • 𝑦,𝑧,𝑥和ℎ表示邊界框的中心座標及其寬和高。變量𝑦,𝑦 𝑎 和𝑦 ∗ 分別
    表示預測邊界框、錨框和實際邊界框橫座標,其他符號同理。

具體分析

在這裏插入圖片描述

損失函數

正樣本:IoU(anchor,ground truth)>0.7;
負樣本:IoU(anchor,ground truth)<0.3。
在這裏插入圖片描述

𝑖:每個mini-batch中錨點的序號;
𝑝 𝑖 :錨點i是目標的概率, 𝑝 𝑖 ∗ :標籤(只能是0或1);
𝑡 𝑖 :預測邊界框的4個參數化座標的向量;
𝑡 ∗ :與正錨點相關的標定框的參數向量;
𝐿 𝑐𝑙𝑡 :分類損失函數, 𝐿 re𝑔 :迴歸損失函數;
𝑝 𝑖 ∗ 𝐿 re𝑔 表示迴歸只對正樣本進行(負樣本𝑝 𝑖 ∗ =0)。
這兩部分由𝑁 𝑐𝑙𝑡 (mini-batch的大小決定,這裏是256)和𝑁 𝑠𝑒𝑔 (錨點位置數決定,這裏約等於2400)進行規範化,並通過一個平衡參數λ進行加權。默認情況下,設λ=10 。
原圖爲1000∗600,卷積後feature map爲原圖的1/16,即約60*40。

交替訓練

  • RPN與Fast R-CNN共享特徵提取的卷積網絡,爲了精調這個網絡,對RPN和Fast R-CNN交替訓練:先訓練 RPN,用RPN提取的候選區域訓練Fast R-CNN,接着在Fast R-CNN的參數基礎上訓練RPN,重複交替迭代。
    在這裏插入圖片描述

ROI pooling( ROI: Region of interest )

• 輸入特徵圖尺寸不固定,但是輸出特徵圖尺寸固定;
• ROI pooling具體操作如下:
• (1)根據輸入image,將ROI映射到feature map對應位置;
• (2)將映射後的區域劃分爲相似或相同大小的sections
(sections數量與輸出的維度相同);
• (3)對每個sections進行max pooling操作;這樣我們就可以從
不同大小的方框得到固定大小的相應的feature maps。

分類層

在這裏插入圖片描述
通過全連接層與softmax,就可以計算屬於哪個具體類別,比如人,狗,飛機,並
可以得到cls_prob概率向量。同時再次利用bounding box regression精細調整proposal位置,得到bbox_pred,用於迴歸更加精確的目標檢測框。

實驗結果序: mAP的定義

  • True positives(TP): 被正確地劃分爲正例的個數,即實際爲正例且被分類器劃分爲正例的實例數;
  • False positives(FP): 被錯誤地劃分爲正例的個數,即實際爲負例但被分類器劃分爲正例的實例數;
  • False negatives(FN):被錯誤地劃分爲負例的個數,即實際爲正例但被分類器劃分爲負例的實例數;
  • True negatives(TN): 被正確地劃分爲負例的個數,即實際爲負例且被分類器劃分爲負例的實例數。
  • 精確率、準確率:Accuracy=(TP+TN)/(TP+TN+FN+FP)
  • 精準率、查準率: P = TP/ (TP+FP),即預測樣本中實際正樣本數佔所有正樣本數的比例
  • 召回率、查全率: R = TP/ (TP+FN),即預測樣本中實際正樣本數佔所有預測的樣本的比例
  • 真正例率(同召回率、查全率):TPR = TP/ (TP+FN)
    在這裏插入圖片描述
    在目標檢測中,每一類都可以根據recall和precision繪製P-R曲線AP( Average Precision,平均精確度)就是該曲線下的面積。
    mAP值
    Mean Average Precision,即
    均值平均精度
    ,是 object detection 中衡量檢測精度的指標。是對多個驗證集個體求平均AP值 。
    計算公式爲:
    mAP = 所有類別的平均精度求和除以所有類別
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章