1. 程式人生 > >Speed Accuracy TradeOffs (CVPR, 2017)

Speed Accuracy TradeOffs (CVPR, 2017)

文章: Speed/accuracy trade-offs for modern convolutional object detectors
作者: Jonathan Huang, Vivek Rathod, Chen Sun, Menglong Zhu, Anoop Korattikara, Alireza Fathi, Ian Fischer, Zbigniew Wojna, Yang Song, Sergio Guadarrama, Kevin Murphy
備註: Google

核心亮點

本文實現了一個靈活統一的目標檢測框架, 並對三個主流的目標檢測模型做了詳細客觀的分析和討論


通過該框架, 本文對目前主流的各個模型(Faster, R-FCN, SSD)影響精確度和速度的各個因素展開了詳細的分析和討論, 以此希望能夠幫助從業者在面對真實應用場景時, 能夠選擇適當的模型來解決問題. 同時, 本文還發現了一些新的trick, 使得可以在保持精度的前提下, 提升模型的速度.

論文細節

摘要

本篇文章的目的主要是為在給定平臺和應用環境下選擇一個合適的目標檢測模型提供指導, 即要達到合適的 speed/memory/accuracy 平衡. 為此, 我們研究了多種方法來平衡現代卷積網路檢測模型的速度, 準確度, 記憶體消耗等. 近年來有大量成功的檢測模型被提出, 但是, 我們很難直接將這些模型互相比較, 因為它們採用的特徵提取器不同(eg, VGG, ResNet), 採用的圖片尺寸不同, 硬體裝置和軟體平臺也不同. 因此, 本文提供了一個基於 FasterRCNN, R-FCN, SSD 的統一實現版本, 我們稱之為- meta-architectures, 然後通過使用不同的特徵提取器, 不同的關鍵引數來跟蹤這些模型之間的差異. 最終的模型有兩個極端, 一是極度關注速度, 要求最終的模型可以執行在移動裝置上, 二是極度關注準確度, 要求能夠在 COCO 資料集上達到最高的分數.

介紹

目前有眾多成功的模型, 但是卻很難決定哪種場景下使用哪種模型, mAP 評價標準並不能反映所有問題, 還需要同時考慮模型的執行速度和記憶體消耗.
目前, 只有很少的模型討論的執行速度(R-FCN, SSD, YOLO), 但是它們大多都只是聲稱它們達到了某個 fps, 並沒有深入的展開關於速度和精度之間的討論.
在這篇文章中, 我們希望以一種詳盡而公平的方式來探討這些模型的速度的精度之間的平衡關係. 在評估時, 我們不使用任何 tricks(ensembling, multi-crop, flipping等等), 僅僅評估單一模型的效能, 對於時間的測量, 我們僅關注預測階段的執行時間, 而不在意訓練時長.
本文的貢獻主要有以下幾點:

  • 提供了一個關於現代卷積檢測系統的具體調研報告, 並闡述了這些先進模型在設計模式上共有的通性.
  • 用 TensorFlow 實現了一個靈活統一的檢測框架 meta-architectures, 包含 FasterRCNN, R-FCN 和 SSD 三種模型
  • 本文發現, 通過使用較少的候選區域框可以大大提高 FasterRCNN 的檢測速度, 並且在精度上不會有太大損失. 同時, 我們還發現 SSDs 的效能表現在面對不同的特徵提取器時, 不像 FasterRCNN 和 R-FCN 那麼敏感. 並且我們在 acc/speed 曲線上確定了 sweet spots, 這些點上的 acc 只有在犧牲 speed 的情況下才能夠提升.
  • 我們嘗試了一些以前從未出現過的 meta-architecture 和 feature-extractor 的結合方式, 並討論瞭如何利用這些方式來訓練 winning entry of the 2016 COCO object detection challenge.

Meta-architectures

在我們的文章中, 我們主要討論三種主流模型: SSD, FasterRCNN 和 R-FCN. 在這三個模型的原文中各自使用了特定的特徵提取器(eg, VGG, ResNet). 現在我們將模型和特徵提取器解耦, 重新審視這些模型結構.

SSD

將畫框和分類預測同時進行, 代表一眾 one-stage 檢測方法

FasterRCNN

FasterRCNN 是自 2015 年以來最主流的 two-stage 目標檢測模型, 它首先提出了 RPN 網路, 使得候選框推薦的步驟可以整合到神經網路中去, FasterRCNN 也衍生出了多種的版本, 代表著經典的 two-stage 模型.

R-FCN

儘管 FasterRCNN 比 FastRCNN 快了一個數量級, 但是相對於 one-stage 方法, 它仍然很慢. 為此, 有人提出了 R-FCN 檢測模型, 它和 FasterRCNN 模型類似, 但是將候選框的劃取階段移到了網路模型的最後一層, 使得有更多的卷積層可以共享計算結果, 同時還提出了 PSRoI(position-sensitive), 大大加快了模型的運算速度.

Experimental setup

各個模型的實現在所用框架, 優化程度, 資料集等都有所不同, 因此, 單單比較 COCO 或 ImageNet 的 mAP 是不全面的. 因此, 為了更好地比較各個模型之間的差異, 我們用 TensorFLow 實現了一個目標檢測框架, 從而可以讓我們較為客觀公平的進行對比.

Architectural configuration

Feature extractors: VGG-16, ResNet-101, Inception v2, Inception v3, Inception ResNet v2, MobileNet.
對於 FasterRCNN 和 R-FCN 來說, 我們需要確定使用特徵提取器的哪一層卷積特徵圖譜來預測候選區域框. 我本文的實驗中, 我們儘可能的使用原文中的設定, 如果原文沒有提到的, 我們則儘可能的選擇相類似的設定.
在 SSD 中, 因為使用了多個不同尺度的特徵圖譜來預測 box 的位置和分類, 因此, 特徵圖譜的選擇是至關重要的. 在 VGG 中, 原文使用了 conv4_3, fc7, 以及後續的幾層卷積層, 與原文不同的是, 我們在每一個附加層之後都使用了 BN 層.

Number of proposals
FasterRCNN & R-FCN : 10~300 (trade-off)

Output stride setting for Resnet and Inception ResNet
採用stride 16, 將 conv5_1 的stride從2變為1, 並在後面使用 Atrous 卷積(Dilation 卷積) 來彌補縮小的感受野. 另外, 通過改變 conv4_1
的stride, 還測試了 stride 8 的情況. 相比於 stride 16, stride 8 的 mAP 提升了 5%, 但是執行時間也變慢了 63%.

Matching
同樣採用原文推薦的引數設定來將候選框與真實框匹配.

Box encoding:
與原文相同:

( b a ; a ) = [ 10 x c w a , 10 y c h a , 5 log w , 5 log h ] (b_a;a) = [10\cdot \frac{x_c}{w_a}, 10\cdot \frac{y_c}{h_a}, 5\cdot \log w, 5\cdot \log h]

需要注意的是, 標量 10 和 5 在原文的程式碼實現中都有使用, 即使在原文中沒有提及.

Location loss: Smooth L1

Input size configuration: M=300 / 600.

Training and hyperparameter tuning; 對於 FasterRCNN 和 R-FCN, 我們用 TF 的 crop_and_resize 操作來代替 RoIPooling 和 PSRoIPooling, 該操作是利用雙線性插值進行反向投影的, 其求導機制和原文中的類似.

Benchmarking procedure: 32GB RAM, Intex Xeon E5-1650 v2 processor, Nvidia GTX Titan X.

下面的表2總結了本文使用的特徵提取器

Results

分析

通常來說, R-FCN 和 SSD 模型要比 Faster RCNN 模組快得多, 但是 Faster RCNN 的精確度更高. 但是, FasterRCNN 可以通過降低候選區域框的數量來提升速度.

The effect of the feature extractor: 整體來說, 越強的特徵提取器與 mAP 分數成正比, 但是對於 SSD 來說, 這種提升並不明顯 (為什麼 Inception v2 的 FasterRCNN 和 R-FCN 的 mAP 值那麼低?)

The effect of object size:

The effect of image size: 當 image size 從 600 降到 300 時, 精度度平均會降低 15.88%, 同時 inference time 也會降低 27.4%.

The effect of the number of proposals: proposals 可以大幅度降低測試時間, 同時 mAP 值只會降低一點(Inception ResNet v2, 300 -> 10, 35.4% -> 29%). 我們找到的 sweet point 大約是 50 個候選區域框, 此時可以在保持 300 候選區域框精度的 96% 的前提下, 將測試速度提升 3 倍.

FLOPs analysis:
FLOPs(multiply-adds)

Memory analysis:

Good localization at .75 IOU means good localization at all IOU thresholds:

表4總結了我們模型的效能(融合了5個FasterRCNN), 並且突出瞭如何在 COCO 評價標準上提升效能.
在模型融合時, 我們選取了5個FasterRCNN模型, 每個模型都是基於ResNet 和 Inception Resnet的, 他們的 stride 不同, 並且使用了不同的損失函式, 以及不完全相同的訓練資料. 最終使用ResNet論文中的附錄A的方法融合這些模型的檢測結果.

表5總結了最後選定的模型的效能表現. 模型融合以及 multi-crop inference 大約使模型的精度提升了7個百分點.

表6比較了單個模型和模型融合之間的效能差異