一文帶你了解 Faster R-CNN

本文為 AI 研習社編譯的技術博客,原標題 :

Faster R-CNN Explained

翻譯 | 老趙 校對 | 老趙 整理 | 菠蘿妹

原文鏈接:

https://medium.com/@smallfishbigsea/faster-r-cnn-explained-864d4fb7e3f8

Fast R-CNN解釋

Fast R-CNN 有兩個網絡:建議窗口網絡(RPN)生成建議窗口並使用這些窗口檢測物體。與Fast R-CNN 的主要區別在於後者使用選擇性搜索來生成建議窗口。當RPN與物體檢測網絡共享最多計算時,RPN中生成建議窗口的時間成本比選擇性搜索小得多。 簡而言之,RPN對區域框(稱為錨點)進行排名,並提出最可能包含物體的框。 結構如下。

一文带你了解 Faster R-CNN

Fast R-CNN 結構

錨在Fast R-CNN 中扮演著重要角色。 錨是一個盒子。 在Fast R-CNN 的默認配置中,圖像位置有9個錨點。 下圖顯示了尺寸為(600,800)圖像的位置(320,320)的9個錨點。

一文带你了解 Faster R-CNN

錨點(320,320)

讓我們仔細看看:

1. 三種顏色代表三種尺度或尺寸:128x128,256x256,512x512。

2. 讓我們挑出紅色的盒子/錨點。 三個盒子的高寬比分別為1:1,1:2和2:1。

如果我們以步長16選擇一個位置,那麼將有1989(39x51)個位置。 這導致17901(1989 x 9)盒子需要考慮。 絕對的尺寸不小於滑動窗和金字塔的組合。 或者你可以推斷這就是為什麼它的覆蓋範圍和其他最先進的方法一樣好。 這裡的好處是我們可以使用建議窗口網絡,Fast R-CNN 中的方法來顯著減少數量。

這些錨點適用於Pascal VOC數據集以及COCO數據集。 但是,你可以自由設計不同類型的錨/盒。 例如,你正在設計一個計算乘客/行人的網絡,你可能不需要考慮非常短,非常大或方形的盒子。 一套趁手的錨可以同時提高速度和準確率。

建議窗口網絡

建議窗口網絡(RPN)的輸出是一組窗口/盒子,將由分類器和迴歸器檢查以最終檢查物體的發生。 更準確地說,RPN預測錨是背景或前景的可能性,並細化錨。

一文带你了解 Faster R-CNN

訓練建議窗口網絡

背景和前景的分類器

訓練分類器的第一步是產生訓練數據集。 訓練數據是我們從上述過程和準確值框中獲得的錨點。 這裡需要解決的問題是我們如何使用準確值盒來標記錨點。 這裡的基本思想是我們想要將具有較高重疊的錨點標記為準確值框作為前景,將具有較低重疊的錨點標記為背景。 顯然,它需要一些調整和妥協來分離前景和背景。 你可以在實現過程中查看此處的詳細信息。 現在我們有錨的標籤。

這裡的第二個問題是錨的特徵是什麼。

假設應用CNN後,600x800圖像會縮小16次成為39X51的特徵圖。特徵圖中的每個位置都有9個錨點,每個錨點都有兩個可能的標註(背景,前景)。如果我們將特徵映射的深度設置為18(9個錨點x 2個標籤),我們將使每個錨點都有一個帶有兩個值(正常稱為logit)的向量,表示前景和背景。如果我們將logit提供給softmax / logistic迴歸激活函數,它將預測標籤。現在,訓練數據包含特徵和標籤。

如果你想在這個過程中重新使用經過訓練的網絡作為CNN,你可能會注意的另一件事是感受野。確保要素圖上每個位置的感受野覆蓋它所代表的所有錨點。否則,錨點的特徵向量將沒有足夠的信息來進行預測。如果你想了解更多關於感受野的話,這裡有一個很好的解釋。

邊界框的迴歸

如果你遵循標記錨點的過程,你還可以根據迴歸量的類似標準來挑選錨點以進行細化。 這裡有一點是標記為背景的錨點不應該包含在迴歸中,因為我們沒有地面實例框。 特徵圖的深度為32(9個錨點×4個位置)。

本文使用左上方位置(x,y)的平滑L1損失,以及高度和寬度的對數,與Fast R-CNN 中的相同。

一文带你了解 Faster R-CNN

迴歸量的損失函數

RPN的總體損失是分類損失和迴歸損失的組合

ROI 池化

在RPN之後,我們得到了不同大小的建議窗口。 不同大小的窗口意味著不同大小的CNN特徵映射。 要建立一個有效的結構來處理不同大小的特徵映射並不容易。 池化感興趣區域可以通過將特徵映射減少到相同的大小來簡化問題。 與具有固定大小的Max-Pooling不同,ROI Pooling將輸入特徵映射分成大致相等區域的固定數字(比如說k),然後在每個區域應用Max-Pooling。 因此,無論輸入大小如何,ROI Pooling的輸出始終為k。 這是關於ROI Pooling的一個很好解釋。

使用固定的ROI Pooling輸出作為輸入,我們對最終分類器和迴歸器的體系結構有很多選擇。

訓練

本文提到了兩種方式:先訓練RPN,最後的分類器和迴歸器; 同時訓練他們。 後者的速度提高了1.5倍,精度相似。 梯度以兩種方式反向傳播到CNN。

想要繼續查看該篇文章更多代碼、鏈接和參考文獻?

戳鏈接:

http://www.gair.link/page/TextTranslation/946雷鋒網雷鋒網雷鋒網

AI研習社每日更新精彩內容,點擊文末【閱讀原文】即可觀看更多精彩內容:

卷積神經網絡(CNN) 詳解及資料整理

用卷積 LSTM 來預測海水溫度(上)

用卷積 LSTM 來預測海水溫度(下)

手把手教你從零開始用Python打造自己的神經網絡

等你來譯:

如何開發人類活動識別時間序列分類的RNN模型

讓你的深度神經網絡跑得更快

神經網絡嵌入詳解

用 4 種卷積神經網絡,輕鬆分類時尚圖像

一文带你了解 Faster R-CNN


分享到:


相關文章: