BiSeNet

未分類

一言で言うと

高速で高性能なSegmentationを実現

基本情報

論文

BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation(2018年)

arxivリンク

コード

おそらく非公式実装と思われる

GitHub - CoinCheung/BiSeNet: Add bisenetv2. My implementation of BiSeNet
Add bisenetv2. My implementation of BiSeNet. Contribute to CoinCheung/BiSeNet development by creating an account on GitH...

既存手法への問題提起

高速化手法とその欠点

既存の計算量を減らすアプローチでは、精度が低下してしまう問題がある。

1.切り抜きやリサイズによって入力サイズを小さくする

高解像度の情報(=局所的な特徴量)が失われるため,特に境界付近の予測精度が低下してしまう。

2.モデルの初期段階のチャネルを減らす(=プルーニングする)

高解像度の情報(=局所的な特徴量)を保持する容量が小さくなってしまい、精度の低下につながる。

3.モデルの最終ステージをなくす(Enet)

モデルの受容野(畳み込みのカーネル)が大きな物体(=大域的な特徴量)をカバーしきれず、識別能力が低くなる。

U-shape structure(≒U-Net)の問題点

U-shapeは、十分にダウンサンプリングを行うことで大きな物体の情報(=大域的な特徴量)をカバーする。加えて、アップサンプリング時にconcatすることで、ダウンサンプリング時に欠落してしまった細部の情報(=局所的な特徴量)を補完する。しかし、U字形に情報を伝達する(アップサンプリングに計算量が必要)ため、速度が低下してしまう可能性がある。また、プルーニングやクロッピングで失われた高解像度の情報はconcatでは回復できない。

BiSeNet

BiSeNetは、以下の2つの部分からなる。

  • Spatial Path (SP):高解像度の情報(=局所的な特徴量)を抽出
  • Context Path (CP):大きな物体の情報(=大域的な特徴量)を抽出

この2つの文脈でセグメンテーションを行うので、「Bilateral」なんだと思う。

高速化手法として、以下の2つの構造を持つ。

  • Attention Refinement Module (ARM):つまりSENet。(広義の?)attention。アップサンプリング処理を行わないため、計算コストはごくわずか。
  • Feature Fusion Module (FFM):SPからの特徴量とCPからの特徴量を融合する。

ネットワーク構造

BiSeNetの全体像(引用元:論文fig.2)

論文にあるこの図を見ても全体の雰囲気しか分からなかったので、githubに置いてあったコードを見て、詳細なアーキテクチャ図を作成してみた。この図は入力が256×256の場合(全結合層は無いので入力サイズは可変)。出力はnチャンネル(nはセグメンテーションの数)。Context Pathのメインストリームは論文中ではXceptionだが、このgithubではResNet18を使用している点に注意。

BiSeNet 詳細アーキテクチャ(https://github.com/CoinCheung/BiSeNetのBiSeNet v1を基に作成)