作者:louwill 個人公眾號:機器學習實驗室,致力於資料科學、機器學習和深度學習的應用與研究。有著多年的R語言和Python程式設計經驗

配套影片教程:Python機器學習全流程專案實戰精

https://

edu。hellobi。com/course/

284

涵蓋

需求分析

->資料採集->資料清洗與預處理->資料分析與視覺化->

特徵工程

->機器學習建模->模型調優->報告輸出。以Python為工具實現機器學習全流程。

在上一期的經典論文研讀中,筆者和大家介紹了 Fast R-CNN,提出了 RoI 層來解決之前的空間金字塔池化網路卷積層權重不能更新的問題,也使得檢測速度更加快速了一些。但總體上而言,Fast R-CNN 的候選框生成策略仍然沿襲了之前的 R-CNN 和 SPP-Net 的

選擇性

搜尋(Selective Search)的方法,這使得網路檢測的整體效能依然不是很高。

基於深度學習的目標檢測演算法發展到 2016 年,以選擇性搜尋為代表的一類的候選區域生成方法早已不合時宜,以至於筆者很猜想之前的各位大佬像是擠牙膏一樣的每次擠一點,直到最後牙膏擠完了才決定解決這個問題。於是任少卿、

何愷明

、RBG 和孫劍等一干大佬聯手提出了 Faster R-CNN 和 RPN 網路,一舉將之前遺留下來的兩階段目標檢測演算法的候選框生成問題解決,使得兩階段的目標檢測演算法速度變得更快。

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

Faster R-CNN 的關鍵貢獻就在於提出了 RPN (Region Proposal Net 區域候選網路),利用輸入圖形進行整體卷積形成的特徵圖再次進行卷積來生成候選區域,且 RPN 的卷積層與檢測網路 Fast R-CNN 共享,這使得 Faster R-CNN 的檢測速度大為提升。所以 Fast R-CNN 的網路結構可以歸納為 RPN + Fast R-CNN 的架構:

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

Faster R-CNN = RPN + Fast R-CNN

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

RPN 網路

簡單來說,RPN 就像是 Fast R-CNN 的

注意力機制

,它告訴 Fast R-CNN 應該往哪看,應該確定影象中哪些物體為

目標物體

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

RPN 的示意圖如下:

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

如上圖左邊 RPN 結構所示:RPN 對於整體上輸入影象產生的

特徵圖

採用一個滑動視窗(sliding window)進行掃描,並透過每個滑窗位置產生兩個連線的卷積層(全連線層),將特徵圖對映到一個更低維的

特徵向量

,第一個卷積層將特徵圖每個滑窗位置編碼成為一個特徵向量,第二個卷積層則對應了每個滑窗位置輸出 k 個區域得分和 k 個迴歸後的區域建議。第二個卷積層可以理解為兩個並行的卷積層,一個是產生 k 個區域得分的分類層(cls layer),另一個則是產生 k 個迴歸區域的座標位置層(

reg layer

)。

於此同時,如上圖右邊所示,在滑窗時為每個滑動視窗生成了 k 個 anchors,翻譯成錨定候選框,即參考候選框。這就意味著每個滑窗位置會同時預測 k 個候選區域,那麼對於一個 W x H 的特徵圖而言,總共生成的候選框有 W x H x k 個。anchors 的作用相當於一種模板,anchors 生成之後根據影象大小計算滑窗中心點對應的原圖中的區域中心點,透過中心點以及滑窗的大小即可得到滑窗的位置與原圖位置的對映關係,然後根據原圖和標籤的 IOU 劃定正負樣本,讓 RPN 網路學習該 anchor 是否有目標物體即可。

Faster R-CNN 的訓練

Faster R-CNN 的訓練和之前的網路一樣,也是需要藉助經典網路的預訓練結果來完成初始化和微調。具體過程包括 RPN 網路的預訓練、Fast R-CNN 網路預訓練、RPN 網路的微調和 Fast R-CNN 網路的微調和 RPN 網路與 Fast R-CNN 網路的聯合訓練等五個過程。

其中 RPN 網路和 Fast R-CNN 網路的預訓練均在 ZF-Net 或者 VGG16 上完成初始化,而 RPN 網路的微調訓練也是對 ZF-Net 或者 VGG16 完成。對於ZF網路微調所有層,對

VGG-16

網路僅微調 conv3_1 及 conv3_1 以上的層,以便節省記憶體。多工損失函式形式如下:

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

在四種預訓練和微調訓練完成之後,便是對 RPN 網路與 Fast R-CNN 網路進行聯合訓練,聯合訓練的目的就是為了讓兩個網路的卷積層做到共享,降低計算量的同時加快了檢測速度。以下是 Faster R-CNN 在 PASCAL VOC 2007 測試集上的效果。主要使用了 ZF-Net 作為預訓練網路。

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

論文最後作者們還做了多組實驗在不同的檢測資料集上來驗證 Faster R-CNN 的效果,筆者這裡不再細述,感興趣的朋友可以找來原文認真研讀。

深度學習第28講:目標檢測演算法經典論文研讀之Faster R-CNN

論文原文地址:

https://

arxiv。org/abs/1506。0149

7

Faster R-CNN 原始碼:

https://

github。com/shaoqingren/

faster_rcnn

參考資料:

Ren S, He K, Girshick R, et al。 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]。 IEEE Trans Pattern Anal Mach Intell, 2015, 39(6):1137-1149。

https://

blog。csdn。net/wopawn/ar

ticle/details/52223282

往期精彩:

深度學習第27講:目標檢測演算法經典論文研讀之Fast R-CNN

深度學習第26講:目標檢測演算法經典論文研讀之空間金字塔池化網路SPP-Net

深度學習第25講:目標檢測演算法經典論文研讀之R-CNN

深度學習第24講:計算機視覺之目標檢測演算法綜述

深度學習第23講:PyTorch入門及快速上手指南

深度學習第22講:搭建一個基於keras的遷移學習花朵識別系統(附資料)

深度學習第21講:遷移學習的基本原理和實踐

深度學習第20講:CNN經典論文研讀之GoogLeNet Inception網路

深度學習第19講:CNN經典論文研讀之殘差網路ResNet及其keras實現

深度學習第18講:CNN經典論文研讀之VGG網路及其tensorflow實現

深度學習第17講:keras入門和快速上手指南

資料分析入行半年之經驗、感悟與思考

談談過擬合

一個統計方向畢業生的2017年資料科學從業之路總結