4.3)深度卷积网络:目标检测
目錄
1)Object localization(重點)
2)Landmark detection
3)Object detection
4)Convolutional implementation of sliding windows
5)Bounding box prediction(重點)
6)Intersection over union
7)Non-max suppression(重點)
8)Anchor Boxes(重點)
9)Putting it together:YOLO algorithm
10 ) Region proposals
以下筆記是吳恩達老師深度學習課程第四門課第三周的的學習筆記:Object detection。筆記參考了黃海廣博士的內容,在此表示感謝。
目標檢測是計算機視覺領域中一個新興的應用方向,其任務是對輸入圖像進行分類的同時,檢測圖像中是否包含某些目標,并對他們準確定位并標識。
1)Object localization(重點)
定位分類問題不僅要求判斷出圖片中物體的種類,還要在圖片中標記出它的具體位置,用邊框(Bounding Box,或者稱包圍盒)把物體圈起來。一般來說,定位分類問題通常只有一個較大的對象位于圖片中間位置;而在目標檢測問題中,圖片可以含有多個對象,甚至單張圖片中會有多個不同分類的對象。
為了定位圖片中汽車的位置,可以讓神經網絡多輸出 4 個數字,標記為。將圖片左上角標記為 (0, 0),右下角標記為 (1, 1),則有:
-
紅色方框的中心點:
-
邊界框的高度:
-
邊界框的寬度:
原始圖片經過CONV卷積層后,Softmax層輸出8 x 1向量。輸出label可表示為,其中,表示存在第 n個種類的概率;如果 ,表示沒有檢測到目標,則輸出標簽后面的 7 個參數都是無效的,可以忽略(用 ? 來表示)。
? ? ? ? ? ??? ,??????????? ,???????
損失函數可以表示為 ,如果使用平方誤差形式,對于不同的 有不同的損失函數(注意下標 i指標簽的第 i個值):
,即:
,即:
除了使用平方誤差,也可以使用邏輯回歸損失函數,類標簽 也可以通過 softmax 輸出。相比較而言,平方誤差已經能夠取得比較好的效果。
2)Landmark detection
神經網絡可以像標識目標的中心點位置那樣,通過輸出圖片上的特征點,來實現對目標特征的識別。在標簽中,這些特征點以多個二維坐標的形式表示。例如人臉識別,可以對人臉部分特征點坐標進行定位檢測,并標記出來,如下圖所示:
通過檢測人臉特征點可以進行情緒分類與判斷,或者應用于 AR 領域等等。也可以透過檢測姿態特征點來進行人體姿態檢測。
3)Object detection
想要實現目標檢測,可以采用基于滑動窗口的目標檢測(Sliding Windows Detection)算法。該算法的步驟如下:
訓練集上搜集相應的各種目標圖片和非目標圖片,樣本圖片要求尺寸較小,相應目標居于圖片中心位置并基本占據整張圖片。
使用訓練集構建 CNN 模型,使得模型有較高的識別率。
選擇大小適宜的窗口與合適的固定步幅,對測試圖片進行從左到右、從上倒下的滑動遍歷。每個窗口區域使用已經訓練好的 CNN 模型進行識別判斷。
可以選擇更大的窗口,然后重復第三步的操作。
滑動窗口目標檢測的優點是原理簡單,且不需要人為選定目標區域;缺點是需要人為直觀設定滑動窗口的大小和步幅。滑動窗口過小或過大,步幅過大均會降低目標檢測的正確率。另外,每次滑動都要進行一次 CNN 網絡計算,如果滑動窗口和步幅較小,計算成本往往很大。
所以,滑動窗口目標檢測算法雖然簡單,但是性能不佳,效率較低。
4)Convolutional implementation of sliding windows
相比從較大圖片多次截取,在卷積層上應用滑動窗口目標檢測算法可以提高運行速度。所要做的僅是將全連接層換成卷積層,即使用與上一層尺寸一致的濾波器進行卷積運算,如圖所示:
上圖,對于 16x16x3 的圖片,步長為 2,CNN 網絡得到的輸出層為 2x2x4。其中,2x2 表示共有 4 個窗口結果。對于更復雜的 28x28x3 的圖片,得到的輸出層為 8x8x4,共 64 個窗口結果。最大池化層的寬高和步長相等。
運行速度提高的原理:在滑動窗口的過程中,需要重復進行 CNN 正向計算。因此,不需要將輸入圖片分割成多個子集,分別執行向前傳播,而是將它們作為一張圖片輸入給卷積網絡進行一次 CNN 正向計算。這樣,公共區域的計算可以共享,以降低運算成本。
相關論文:Sermanet et al., 2014. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
5)Bounding box prediction(重點)
在上述算法中,邊框的位置可能無法完美覆蓋目標,或者大小不合適,或者最準確的邊框并非正方形,而是長方形。
YOLO(You Only Look Once)算法可以用于得到更精確的邊框。YOLO 算法將原始圖片劃分為 n×n 網格,并將目標定位一節中提到的圖像分類和目標定位算法,逐一應用在每個網格中,每個網格都有標簽如:
若某個目標的中點落在某個網格,則該網格負責檢測該對象。
如上面的示例中,如果將輸入的圖片劃分為 3×3 的網格、需要檢測的目標有 3 類,則每一網格部分圖片的標簽會是一個 8 維的列矩陣,最終輸出的就是大小為 3×3×8 的結果。要得到這個結果,就要訓練一個輸入大小為 100×100×3,輸出大小為 3×3×8 的 CNN。在實踐中,可能使用更為精細的 19×19 網格,則兩個目標的中點在同一個網格的概率更小。
YOLO 算法的優點:
和圖像分類和目標定位算法類似,顯式輸出邊框坐標和大小,不會受到滑窗分類器的步長大小限制。
仍然只進行一次 CNN 正向計算,效率很高,甚至可以達到實時識別。
如何編碼邊框 ?YOLO 算法設的值是相對于網格長的比例。值得注意的是,當前網格左上角坐標設定為(0, 0),右下角坐標設定為(1, 1),且 在 0 到 1 之間,而 可以大于 1。當然,也有其他參數化的形式,且效果可能更好。這里只是給出一個通用的表示方法。劃分的網格可以更密一些。網格越小,則多個目標的中心坐標被劃分到一個網格內的概率就越小,這恰恰是我們希望看到的。
相關論文:Redmon et al., 2015. You Only Look Once: Unified, Real-Time Object Detection。
6)Intersection over union
交互比(IoU, Intersection Over Union)函數用于評價對象檢測算法,它計算預測邊框和實際邊框交集(I)與并集(U)之比,如下圖所示:
紅色方框為真實目標區域,藍色方框為檢測目標區域。兩塊區域的交集為綠色部分,并集為紫色部分。藍色方框與紅色方框的接近程度可以用IoU比值來定義:
IoU 的值在 0~1 之間,且越接近 1 表示目標的定位越準確。IoU 大于等于 0.5 時,一般可以認為預測邊框是正確的,當然也可以更加嚴格地要求一個更高的閾值。
7)Non-max suppression(重點)
YOLO 算法中,可能有很多網格檢測到同一目標。非極大值抑制(Non-max Suppression)會通過清理檢測結果,找到每個目標中點所位于的網格,確保算法對每個目標只檢測一次。
進行非極大值抑制的步驟如下:
將包含目標中心坐標的可信度小于閾值(例如 0.6)的網格丟棄;
選取擁有最大的網格;
分別計算該網格和其他所有網格的 IoU,將 IoU 超過預設閾值的網格丟棄;
重復第 2~3 步,直到不存在未處理的網格。
上述步驟適用于單類別目標檢測。進行多個類別目標檢測時,對于每個類別,應該單獨做一次非極大值抑制。
8)Anchor Boxes(重點)
到目前為止,我們討論的情況都是一個網格只檢測一個對象。如果要將算法運用在多目標檢測上,需要用到 Anchor Boxes。一個網格的標簽中將包含多個 Anchor Box,相當于存在多個用以標識不同目標的邊框。
在上圖示例中,我們希望同時檢測人和汽車。因此,每個網格的的標簽中含有兩個 Anchor Box。輸出的標簽結果大小從 3×3×8 變為 3×3×16。若兩個? 都大于預設閾值,則說明檢測到了兩個目標。
在單目標檢測中,圖像中的目標被分配給了包含該目標中點的那個網格;引入 Anchor Box 進行多目標檢測時,圖像中的目標則被分配到了包含該目標中點的那個網格以及具有最高 IoU 值的該網格的 Anchor Box。
Anchor Boxes 也有局限性,對于同一網格有三個及以上目標,或者兩個目標的 Anchor Box 高度重合的情況處理不好。
Anchor Box 的形狀一般通過人工選取。高級一點的方法是用 k-means 將兩類對象形狀聚類,選擇最具代表性的 Anchor Box。
9)Putting it together:YOLO algorithm
這節介紹了YOLO算法的流程,算是對前幾節內容的回顧。網絡結構如下圖所示,包含了兩個Anchor Boxes。
- ??? 1. For each grid call, get 2 predicted bounding boxes.
- ??? 2. Get rid of low probability predictions.
- ??? 3. For each class (pedestrian, car, motorcycle) use non-max suppression to generate final predictions.
?
10 ) Region proposals
前面介紹的滑動窗口目標檢測算法對一些明顯沒有目標的區域也進行了掃描,這降低了算法的運行效率。為了解決這個問題,R-CNN(Region CNN,帶區域的 CNN)被提出。通過對輸入圖片運行圖像分割算法,在不同的色塊上找出候選區域(Region Proposal),就只需要在這些區域上運行分類器。
R-CNN 的缺點是運行速度很慢,所以有一系列后續研究工作改進。例如 Fast R-CNN(與基于卷積的滑動窗口實現相似,但得到候選區域的聚類步驟依然很慢)、Faster R-CNN(使用卷積對圖片進行分割)。不過大多數時候還是比 YOLO 算法慢。
相關論文:
-
R-CNN:Girshik et al., 2013. Rich feature hierarchies for accurate object detection and semantic segmentation
-
Fast R-CNN:Girshik, 2015. Fast R-CNN
-
Faster R-CNN:Ren et al., 2016. Faster R-CNN: Towards real-time object detection with region proposal networksho
總結
以上是生活随笔為你收集整理的4.3)深度卷积网络:目标检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pcard.exe是什么进程 pcard
- 下一篇: 详解两阶段3D目标检测网络PVRCNN: