Faster RCNN中三個比較重要的層,其作用位置、功能詳細對比如下。三種層的出現順序依次爲AnchorTargetLayer、ProposalLayer、ProposalTargetLayer:
Alt trainging | End2End trainging | 輸入框個數 | 輸出框個數 | |
AnchorTargetLayer | train | train | 6000個anchor | 256個anchor與其對應的groundtruth |
ProposalLayer | train/test | train/test |
訓練:20000 測試:6000 |
訓練:2000 測試:300 |
ProposalTargetLayer (端到端訓練中這部分功能RoIDataLayer實現) |
/ | train | 由ProposalLayer輸入的2000個proposal | 128個proposal與其對應的groundtruth |
通過上表可以發現,AnchorTargetLayer與ProposalTargetLayer極其相似,都是隻用於訓練階段,輸出都是n個“框”與其對應的groundtruth,輸入稍有不同,AnchorTargetLayer的輸入是原始的anchor,而ProposalTargetLayer的輸入是經過迴歸後生成的proposal。
現對兩者通過下表進行詳細對比:
輸入框個數 | 輸出框個數 | 正負樣本比例 | 正負樣本閾值 | |
AnchorTargetLayer | 6000個anchor | 256 | 1:1(正:負) |
正樣本:>=0.7 負樣本:<0.3 與groundtruth |
ProposalTargetLayer | 2000個proposal | 128 | 1:3(正:負) |
正樣本:>=0.5 負樣本:<0.5 && >=0.1 與groundtruth |
這個還要再額外解釋一點:ProposalLayer產生的RoI都是正樣本,與groundtruth算了一次IoU後,根據閾值又分成了正負樣本,然後送入Fast RCNN繼續訓練。AnchorTargetLayer、ProposalTargetLayer在測試階段乾脆就沒有了。ProposalLayer直接產生300個RoI,送入Fast RCNN進行預測。