Paper Link: https://arxiv.org/abs/2003.10401
GitHub (PyTorch): https://github.com/yanwei-li/DynamicRouting
Introduction
- 如何有效應對輸入圖像中目標尺度的差異與多樣性,是語義分割面臨的一個難題;
- 傳統的解法主要是設計良好的靜態網絡結構:
- FCN, U-Net, PSPNet, Conv-Deconv, SegNet等;
- 針對特定場景與目標硬件,也可以通過NAS自動搜索有效的網絡結構:
- Auto-DeepLab等;
- 然而,單一、靜態的網絡結構,缺乏對真實世界中多樣化尺度分佈的良好適應能力;
- 本文提出了動態路由方法 (dynamic routing):
- 在推理時能夠生成數據依賴路徑,即網絡結構會隨着輸入的變化而變化,以適應不同的目標尺度分佈情況,從而在獲得良好語義表徵的同時、確保較高的執行效率;
- 類似於SuperNet、DARTS的結合與延伸,Dynamic Routing將超網絡作爲主體,根據實時輸入數據生成網絡結構參數,用於在線、動態地選擇網絡結構;
- 具體例子如下:
Dynamic Routing結構
- Dynamic Routing的總體結構如上圖所示,具體描述爲:
- Stem Block:包含三個網絡層(SepConv3x3),負責1/4降採樣;
- Routing Space:
- 包含L個網絡層,每層包含若干個cell,支持skip connection與multi-path routes;
- 相鄰cell之間,降採樣率或上採樣率=2;
- 相比於輸入,降採樣率最高可達32,因此每個layer的cell數最多爲4;
- 每個cell的輸出,存在三條尺度變換路徑,即:
- up-sampling:conv1x1+bilinear interpolation;
- down-sampling:conv1x1 with stride=2;
- keeping resolution;
- 在cell內部,會執行特徵變換/聚合(feature aggregation)、與尺度變換路徑選擇操作;
- Routing Process:
- 輸入特徵相加:將cell的多尺度輸入特徵予以相加:
- Cell操作與特徵聚合:
- 基本的操作路徑包括SepConv、與identity mapping,其中每條SepConv路徑由若干SepConv3x3堆疊而成 (實驗表示兩個SepConv3x3堆疊,效果最好);
- 將不同操作路徑的輸出予以相加或聚合,獲得Hidden state:
- Soft Conditional Gate:
- 每條尺度路徑的選擇概率,由Gate function生成;Gate function是輕量的、可微分的卷積操作模塊:
- 歸一化的選擇概率、或激活因子,由生成,即;其中B表示batch size,數字3表示三條尺度變換路徑都有各自的激活因子;
- 針對第j 條尺度變換路徑 (),其輸出特徵可表示爲: 其中表示尺度變換操作 (up-sampling、keeping resolution或down-sampling);
- 綜上所述,Routing Process可表示爲: 根據data-dependent激活因子的實際取值,能夠支持cell drop、multi-path routes等dynamic routing,從而在線生成能夠有效應對多樣化尺度分佈的動態網絡結構。而一些經典的分割網絡模型,其靜態網絡結構亦可從routing space抽取表示:
- 資源預算約束與訓練loss:
- 考慮到每個操作的計算成本 (比如FLOPS),基於資源約束的loss function定義如下,其中C表示整個routing space的實際資源開銷,表示衰減因子:
- 則訓練時,結合資源約束的聯合loss表示爲:
Experiments
- 數據集包括Cityscapes、PASCAL VOC;
- 不同網絡結構的對比:
- 經典靜態網絡:FCN-32s, U-Net, DeepLabV3, HRNetV2, and Auto-DeepLab;
- 從routing space採樣的靜態網絡:
- Dynamic routing,Dynamic-A、B、C的資源約束 (FLOPS)分別爲45G、55G、65G;
- 對比結果:
- Cell操作對比:對比了BottleNeck、MBConv與SepConv,實驗結果表明堆疊兩個SepConv3x3作爲特徵變換,效果最好;
- 激活因子生成函數:實驗表明效果最好;
- 在Cityscapes、PASCAL VOC上的實驗結果: