目標檢測入門系列手冊四:Faster R-CNN 訓練教程
,學習全套目標檢測演算法&模型
Faster R-CNN
Faster R-CNN [3] 作為目標檢測的經典方法在現今很多實戰專案和比賽中頻頻出現。其實,Faster R-CNN 就是在Fast R-CNN 的基礎上構建一個小的網路,直接產生region proposal 來代替透過其他方法(如selective search)得到ROI。這個小型的網路被稱為區域預測網路(Region Proposal Network,RPN)。Faster R-CNN 的訓練流程如圖2-10 所示,其中的RPN 是關鍵,其餘流程基本和Fast R-CNN 一致。
圖2-10 Faster R-CNN 訓練流程[9]
RPN 的思想是構建一個小的全卷積網路,對於任意大小的圖片,輸出ROI 的具體位置以及該ROI 是否是物體。RPN 網路在卷積神經網的最後一個特徵層上滑動。
接下來我們對著圖2-11 來進一步解釋RPN 網路。圖2-11(a)中最下面灰色的網格表示卷積神經網路的特徵層,紅框表示 RPN 網路的輸入,其大小為3×3,而後連線到256 維的一個低維向量。這3×3 的視窗滑動經過整個特徵層,並且每次計算都將經過這256 維的向量並最終輸出2 個結果:該3×3 滑動視窗位置中是否有物體以及該滑動視窗對應物體的矩形框位置。如果還是不好理解,我們將圖2-11(a)中的RPN 網路順時針旋轉90 度,如圖2-11(b)所示,現在可以很清晰地看出神經網路結構了,這裡input 維度是9,即圖2-11(a)中的3×3 大小。
(a)
(b)
圖2-11 RPN 網路原理[3]
為了適應多種形狀的物體,RPN 網路定義了k 種不同尺度的滑窗(因為有的目標是長的,有的是扁的,有的是大的,有的是小的,統一用一個3×3 的滑窗難以很好地擬合多種情況),這裡給它一個專業的名詞——anchor,每個anchor 都是以特徵層(feature map)上的畫素點為中心並且根據其尺度大小進行後續計算的。在Faster-RCNN 論文中,滑窗在特徵層的每個位置上使用3 種大小和3 種比例共3×3=9 種anchor,在圖2-11(a)中n=9。
根據上面的介紹我們知道RPN 網路有2 類輸出:二分類網路輸出是否是物體,迴歸網路返回矩形框位置對應的4 個值。
接下來,我們看一下訓練過程中的一些細節問題。首先,針對分類任務,對於滑窗產生的每一個anchor 都計算該anchor 與真實標記矩形框的IOU。當IOU 大於0.7 時,便認為該anchor 中含有物體;當IOU 小於0.3 時,便認為該anchor 中不含物體;當IOU 介於0.3-0.7 之間時,則不參與網路訓練的迭代過程。
對於迴歸任務,這裡定義為anchor 中心點的橫、縱座標以及anchor 的寬高,學習目標為anchor 與真實bbox 在這四個值上的偏移。RPN 網路為一個全卷積網路,可以用隨機梯度下降的方式端到端地進行訓練。
這裡需要注意,訓練過程中能與真實物體矩形框相交的IOU 大於0.7 的anchor並不多,絕大多數都是負樣本,因此會導致正負樣本比例嚴重失衡,從而影響識別效果。因此,在RPN 訓練的過程,每個batch 進行隨機取樣(每個batch 中有256個樣本)並保證正負樣本的比例為1:1,而當正樣本數量小於128 時,取全部的正樣本,其餘的隨機使用負樣本進行補全。
使用RPN 網路產生ROI 的好處是可以和檢測網路共享卷積層,使用隨機梯度下降的方式端到端地進行訓練。接下來我們看下Faster R-CNN 的訓練過程:
(1)使用ImageNet 預訓練好的模型訓練一個RPN 網路。
(2)使用ImageNet 預訓練好的模型,以及第(1)步裡產生的建議區域訓練Fast R-CNN 網路,得到物體實際類別以及微調的矩形框位置。
(3)使用(2)中的網路初始化RPN,固定前面卷積層,只有調整RPN 層的引數。
(4)固定前面的卷積層,只訓練並調整Fast R-CNN 的FC 層。
有了RPN 的幫助,Faster R-CNN 的速度大大提升,(如圖2-12 所示。RCNN、Fast R-CNN、Faster R-CNN 幾個模型的對比如圖2-13 所示。
圖2-12 RCNN、Fast R-CNN、Faster R-CNN 模型耗時對比
圖2-13 RCNN、Fast R-CNN、Faster R-CNN 模型對比
從R-CNN 到Faster R-CNN,前面講了基於proposal 想法做目標檢測的發展史,這種思路分為產生proposal 和檢測兩個步驟,可以得到相對較好的精度,但缺點是速度較慢。接下來我們介紹另外幾種常用於檢測的方法。
文章來源:阿里雲-機器智慧技術
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956605/viewspace-2667680/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 目標檢測入門系列手冊三:Fast R-CNN 訓練教程ASTCNN
- 目標檢測入門系列手冊二:RCNN訓練教程CNN
- 目標檢測入門系列手冊五:YOLO訓練教程YOLO
- 目標檢測入門系列手冊六:SSD訓練教程
- 深度學習目標檢測(object detection)系列(四) Faster R-CNN深度學習ObjectASTCNN
- 目標檢測技術演化:從R-CNN到Faster R-CNNCNNAST
- 目標檢測入門系列手冊一:定位 + 分類問題的解法
- 目標檢測入門系列手冊七:目標檢測的產品應用實踐【工業視覺篇】視覺
- 一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSDCNNASTYOLO
- 【目標檢測】R-CNNCNN
- 訓練一個目標檢測模型模型
- 目標檢測---教你利用yolov5訓練自己的目標檢測模型YOLO模型
- Yolov5——訓練目標檢測模型YOLO模型
- 深度學習與CV教程(12) | 目標檢測 (兩階段,R-CNN系列)深度學習CNN
- 深度學習目標檢測(object detection)系列(一) R-CNN深度學習ObjectCNN
- 目標檢測 YOLO v3 訓練 人臉檢測模型YOLO模型
- 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度學習平臺的實戰ASTCNN深度學習
- 「技術綜述」一文道盡R-CNN系列目標檢測CNN
- 二階段目標檢測網路-Faster RCNN 詳解ASTCNN
- 目標檢測之YOLO系列YOLO
- 【目標檢測】Fast R-CNN演算法實現ASTCNN演算法
- 大話目標檢測經典模型:Mark R-CNN模型CNN
- faster-RCNN臺標檢測ASTCNN
- 【深度學習】像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程深度學習ASTCNN
- Pytorch版Faster R-CNN 原始碼分析+方法流程詳解——訓練篇PyTorchASTCNN原始碼
- TorchVision Faster R-CNN 微調,實戰 Kaggle 小麥檢測ASTCNN
- Faster R-CNNASTCNN
- 深度學習與CV教程(13) | 目標檢測 (SSD,YOLO系列)深度學習YOLO
- 目標檢測 - Sparse R-CNN: End-to-End Object Detection with Learnable ProposalsCNNObject
- CVPR 2018|Cascade R-CNN:向高精度目標檢測器邁進CNN
- CVPR 2019 | 天秤座R-CNN:全面平衡的目標檢測器CNN
- 目標檢測
- 乾貨 | 目標檢測入門,看這篇就夠了(下)
- 乾貨 | 目標檢測入門,看這篇就夠了(上)
- 2018目標檢測
- 九、目標檢測
- 【目標檢測】:SPP-Net深入理解(從R-CNN到SPP-Net)CNN
- NeurIPS 2024 | 無需訓練,一個框架搞定開放式目標檢測、例項分割框架