機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Gated-SCNN: Gated Shape CNNs for Semantic Segmentationを読んだのでメモ

はじめに

Gated-SCNN: Gated Shape CNNs for Semantic Segmentationを読んだのでメモ.

気持ち

従来のCNNを使ったsegmentation手法は色だの形だのテクスチャだのをCNNの内部で一緒くたに扱っていて,その扱い方を疑問視した論文.ここではshapeに関する推論を分離したほうがいいという仮説を立てて,通常のCNN(regular stream)にshapeを扱うブランチ(shape stream)を加えたtwo stream型のモデルを提案.

Gated Shape CNN

上で説明した通り,regular streamとshape streamからなるモデルを作る.その際にちゃんとshape streamがshape(ここではboundary)に関する情報のみを扱えるよう,Gated Convolution Layer (GCL)を導入する.

Regular Stream

Regular streamは特筆すべき事はなく,いわゆる従来のbackboneに当たる.なので入力を画像I\in\mathbb{R}^{3\times H\times W}とし,出力はr\in\mathbb{R}^{C\times \frac{H}{m}\times\frac{W}{m}}とするモデル.ただし,mはstrideを表す.今回はモデルにResNetライクなモデルを使用とのこと.以降Regular Streamは\mathcal{R}_\theta(I)として表現する.

Shape Stream

Shape streamは\mathcal{S}_\phiで表記され,微分画像\Delta Iとregular streamの1層目の出力を入力とし,semantic boundaryを出力とする.モデルの構造としてはいくつかのresidual blockとGCLからなる.このGCLのおかげでshape streamは境界情報のみを扱うことが可能とのこと(詳細は後述).出力はs\in\mathbb{R}^{H\times W}のboundary mapでground-truthはsemantic segmentationのラベルから作れるため,binary cross entropyによる教師あり学習が可能.

Fusion Module

Fusion Moduleは\mathcal{F}_\gamma(sir)=p(y|s,r)で表記され,二つのstreamの特徴マップを統合してsemantic labelを出力する役割をする.噛み砕いて言えばdecoder.Deeplabで使われたatrous spatial pyramid pooling (ASPP)が導入されている.

Gated Convolution Layer

GCLはこの論文の最も重要な部分で,簡単に言えばshapeに関する情報以外を削ぎ落とす役割をする.

t\in 0,1,\dotsをregular streamとshape streamの中間出力のインデックス(r_t,s_t)とする.GCLを適用するため,まずアテンションマップ\alpha_t\in\mathbb{R}^{H\times W}s_t,r_tを結合させた特徴マップから1x1 convolution C_{1\times 1}シグモイド関数\sigmaを通して得る.

\displaystyle
\alpha_t=\sigma(C_{1\times 1}(s_t\| r_t))

このアテンションマップとchannel-wiseの重み付け,residual connectionを使って次のような変換を行う層をGCLとする.

\displaystyle
\hat{s}_t^{(i,j)}=( (s_{t_{(i,j)}}\odot\alpha_{t_{(i,j)}})+s_{t_{(i,j)}})^Tw_t

\odotは要素積を表す.アテンションマップ\alphaは重要な境界情報を持つ領域により大きな重みを持つものと解釈可能らしい.GCLは3箇所に導入し,アテンションマップを出す際の特徴マップの結合時に,r_ts_tの解像度の差を埋めるためbilinear補間を利用したとのこと.

Joint Multi-Task Learning

通常のsemantic segmentationのタスクに加え,shape streamのboundary predictionのタスクが入るため,それぞれのロスを足し合わせたものを最終的なロスとする.ただし,足し合わせる際にハイパーパラメータとなる重み係数\lambda_1,\lambda_2を導入する.

Dual Task Regularizer

Semantic segmentationの結果から計算されたsemantic boundaryと正解(shape streamの正解に使われれる値)が等しくなるような正則化項を考える.semantic boundaryを次のように計算する.

\displaystyle
\xi =\frac{1}{\sqrt{2}}\|\Delta(G\ast\mathrm{argmax}_{k}p(y^k|r,s))\|

Gはガウシアンフィルタを表す.正解値\hat{\xi}も真のsemantic labelを使って同様に計算される.ロス関数としては次のような絶対誤差を利用.

\displaystyle
\mathcal{L}_{reg\rightarrow}^{\theta,\phi,\gamma}=\lambda_3\sum_{p^+}|\xi(p^+)-\hat{\xi}(p^+)|

p^+は非ゼロ要素の入ったピクセルを表す.このロスはshape streamのboudary predictionとsemantic segmentationの整合性を暗に要請することになる.ただし,上記のロスを単純に計算して微分をしてもargmaxのせいでbackprop不可なためGumbel softmaxで代用するとのこと.

また同様に,boundary predictionとsemantic segmentationの一致を取るための次のような正則化も加える.

\displaystyle
\mathcal{L}_{reg\leftarrow}^{\theta,\phi,\gamma}=\lambda_4\sum_{k,p}\mathcal{1}_{s_p}[\hat{y}_p^k\log p(y_p^k|r,s)]

p,kは画像のピクセルとクラスカテゴリを表しており,\mathbb{1}_s=\{1:s\gt thrs\}は指示関数.閾値thrsは0.8としたとのこと.boundary上のsemantic labelが正しいかどうかを判断するもの.そこまで意味があるかはよくわからない.

まとめ

実験で,GCLのアテンションやshape streamからfusion moduleに繋がる部分の可視化をしていて,それを見る限りはうまくboundaryを分離できているよう.ただこんな上手くいくものかと言う印象もある.