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

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

Deformable ConvNets v2: More Deformable, Better Resultsを読んだのでメモ

はじめに

Deformable ConvNets v2: More Deformable, Better Resultsを読んだのでメモ.MSRAのインターンの成果でdeformable convolutionを改良したとのこと.著者は元の論文の人と一部同じ.

気持ち

Deformable convolutionはより柔軟に物体の構造を捉えることができるように提案された手法で,実際物体検出等のタスクで良好な結果を示した.ただ,deformable convolutionが参照している領域を可視化してみると,大体は単一の物体を参照するように畳み込みのカーネルが変形しているが,うまく物体をカバーできていない部分もあったとのこと.逆に言えばまだdeformable convolutionのポテンシャルがあるから,最大限に性能を引き出すために改善するという感じ.

Analysis of deformable convnet behavior

Deformable convnetがあまりうまく働かない状況を受容野の可視化を通して解析する.ただここでは受容野の可視化にeffective receptive fieldsという方法を使っていて,この手法を知らなかったで次回読む.また,deformable convolutionがどの領域からサンプリングしているかの可視化もeffective receptive fieldsを応用して行うことで解析に役立てる.中身は置いておいてeffective receptive fieldsは単純な受容野だけでなく受容野に含まれる領域がどれだけ出力に寄与しているかも含めて可視化する方法らしい.

可視化の結果はFigure 1にまとまっていて,結果から以下のことがわかる.

  1. 通常のConvNetsはある程度の範囲の幾何的な構造をモデル化できる.

  2. Deformable ConvNetsはConvNetsの幾何構造を捉える能力を劇的に高めている.ただし,サンプリングされたピクセルの識別への寄与率をみると前景と背景どちらの領域にも広がっていることがわかる.

  3. ConvNetsはカーネルの形状が固定なのでその重みを調整することでうまく幾何構造を捉えているが,これはカーネルのオフセットと重み両方を学習するDeformable ConvNetsでも成り立つはずである.

すなわちちゃんと興味対象に焦点を当てるようカーネルをdeformするようにすればより良くなるはずとのこと.論文では言及されてなかったが,おそらく幾何的な構造を捉える部分がoffsetの推論に押し付けられているのがよくないとの解釈で問題はないかと.

More Deformable ConvNets

Stacking More Deformable Conv Layers

可視化をして色々分析したわりに最初の改善案としてはdefomable convを導入しまくるというもの.元々のdeformable ConvNetsは元のネットワーク構造の一部のみをdeformConvに置き換えるというものだった.なのでもっとたくさん導入すれば幾何的な変形を捉える能力がより高まるはずという脳筋的発想.具体的にはResNet-50のconv3からconv5までのフィルタサイズ3\times 3の畳み込みを全てdeformable convlutionに置き換える.色々試したけどdeformable convolutionを導入し過ぎてもダメで,conv3からconv5に入れるのが良かったらしい.

Modulated Deformable Modules

さらなる表現力向上を目指して,modulation mechanismを導入する.このメカニズムによって入力の特徴を認識するためにオフセットを調整するだけでなく特徴のamplitudesを調整することも可能になる.特徴のamplitudeをゼロにすることで特定の領域から信号を受け取ることがなくなる.すなわち幾何構造を捉えるためにはoffsetだけでは難しいという状況にすることで構造のモデル化というタスクを分散させることが可能になるということ.

ここから定式化.畳み込みのカーネルK個の領域(3x3カーネルならK=9)からサンプリングを行うものとし,w_kp_kをそれぞれk番目のピクセルに対する重みとあらかじめ定義されたオフセットを表す.K=9の場合にはp_k\in\{(-1,-1),(-1,0),\dots,(1,1)\}になる.x(p),y(p)を入力の特徴マップxと出力の特徴マップyの位置pにおける値とする.modulated deformable convolutionは次のように表現される.

\displaystyle
y(p)=\sum_{k=1}^K w_k\cdot x(p+p_k+\Delta p_k)\cdot\Delta m_k

\Delta p_k,\Delta m_k\in[0,1]は位置kに対する学習可能なオフセットとmodulationでスカラー値.どちらの値も元のdeformable convolutionと同様,別なconvolution層の出力として得られる.また,基本的な計算方法もdeformable convolutionと変わらずbilinear interpolationを利用して計算する.オフセットとmodulationを出力する層の重みの初期値は0で初期化,すなわち初期段階は通常の畳み込みと等しい結果になるよう初期化する.また学習率はネットワークを学習するための学習率の0.1倍に設定すると良いとのこと.

RoIpoolingも同じようにmodulated deformable RoIpoolingへと次のように拡張する.

\displaystyle
y(k)=\sum_{j=1}^{n_k}x(p_{kj}+\Delta p_k)\cdot\Delta m_k/n_k

p_{kj}はRoIpoolingを行うときに定義されるグリッドのj番目のセル内の位置kピクセルを表す.n_kはグリッドに含まれるピクセル数で,n_kで正規化していることから平均プーリングになっている(RoIpoolingは元々はmax poolingだった気もする).

Modulateという言葉を使っているがニューラルネット界隈でよく使われる表現を使えばattentionを(厳密にはsoftmaxを使っていないのでちょっと違うかもしれないが)導入したということ.こういう言い回しも新規性ある風に見せる時に重要なのかなと思ったり.

R-CNN Feature Mimicking

Feature mimickingという闇深そうな技術がECCV2018で発表されていたよう.知らなかったのと今回の論文の本質とは無関係なためここでは割愛.Feature mimickingの論文は今度読んでみる予定.

まとめ

手法自体はattention的なものを導入して適用する層の数を増やしたというところ.精度は元のdeformable convolutionの適用数を増やすだけで元のdeformable convolutionより3%の向上があり,modulatedは1%弱しか寄与していない.というか元の論文でdeformable convolutionの適用数に関してそんなに実験してなかったのか.