Closed5

【論文読解めも】On Recognizing Texts of Arbitrary Shapes with 2D Self-Attention

takoroytakoroy

ネットワーク構造

Transformerの構造であるが、Encoder側では2次元情報を保持しつつ情報を抽出する。Decoder側は、入出力がトークンとなる一般的なTransformer Decoderである。

💡Encoder側は完全なTransformerではなく、一部CNNが使用されている。

Shallow CNN block

Encoder側の入力は、まず2つのConv層+MaxPoolingの組からなる浅いCNNになっている。入力画像は1/4のサイズの特徴マップに変換される。

takoroytakoroy

Adaptive 2D positional encoding

特徴マップに対してPositional Encodingを加える。ここで問題になるのは、画像中の文字は、シーケンスデータと異なり、様々な順序で現れるということである。例えば、縦書きの時と横書きの時では、どの位置から始まりどのような順番で読むかは変化するため、必要とされるPositional Encodingは異なる。そのため、特徴マップをもとに、適応的にPositional Encodingを決めるという発想が必要になる。

このような2次元の適応的PositionalEncoding(A2DPE)は、以下のように表される。\boldsymbol{\alpha}(\mathbf{E}),\boldsymbol{\beta}(\mathbf{E})は、浅いCNNの出力\mathbf{E}をもとに適応的に決まる部分である。これは、単純な2層のネットワークになっている(\boldsymbol{g}はGlobalPooling)。

\mathbf{p}_{h w}=\boldsymbol{\alpha}(\mathbf{E}) \mathbf{p}_{h}^{\mathbf{s i n u}}+\boldsymbol{\beta}(\mathbf{E}) \mathbf{p}_{w}^{\mathbf{s i n u}}
\begin{array}{l} \boldsymbol{\alpha}(\mathbf{E})=\operatorname{sigmoid}\left(\max \left(0, \boldsymbol{g}(\mathbf{E}) \mathbf{W}_{1}^{\mathrm{h}}\right) \mathbf{W}_{2}^{\mathrm{h}}\right) \\ \boldsymbol{\beta}(\mathbf{E})=\operatorname{sigmoid}\left(\max \left(0, \boldsymbol{g}(\mathbf{E}) \mathbf{W}_{1}^{\mathrm{w}}\right) \mathbf{W}_{2}^{\mathrm{w}}\right) \end{array}

一方で、\mathbf{p}_{h}^{\mathbf{s i n u}},\mathbf{p}_{w}^{\mathbf{s i n u}}は、縦方向と横方向に関する、ベースとなるPositionalEncodingである。いずれも同じ形で書けるが、Dを特徴マップの深さ方向の次元数、pを縦横の位置に関するインデックス、iを深さ方向のインデックスとすると、以下のように書ける。

\begin{array}{l} \mathbf{p}_{p, 2 i}^{\operatorname{sinu}} \sin \left(p / 10000^{2 i / D}\right) \\ \mathbf{p}_{p, 2 i+1}^{\operatorname{sinu}}-\cos \left(p / 10000^{2 i / D}\right) \end{array}

以上のA2DPEを用いて、Multi-head attentionの入出力は、以下のように書ける。

\text { att-out }_{h w}=\sum_{h^{\prime} w^{\prime}} \operatorname{softmax}\left( \frac{\mathbf{q}_{h w} \mathbf{k}_{h^{\prime} w^{\prime}}^\mathrm{T}}{\sqrt{D}} \right) \mathbf{v}_{h^{\prime} w^{\prime}}

ここで、\mathbf{e}_{h w}は特徴マップ\mathbf{E}(h,w)における特徴量で、\mathbf{q}_{h w}=\mathbf{e}_{h w} \mathbf{W}_{q}, \mathbf{k}_{h w}=\mathbf{e}_{h w} \mathbf{W}_{k}, \mathbf{v}_{h w}=\mathbf{e}_{h w} \mathbf{W}_{v}である。

💡出力のh, wとQueryのh, wが一致している。

takoroytakoroy

Locality-aware feedforward layer

feedforward layerも2次元対応する必要がある。単純にCNN化するだけで良いが、実験では3通りの方法を考えている。(b)と(c)が良い結果になっており、精度とFLOPsのトレードオフになる((b)のほうが精度が良くなるが、遅い)。

takoroytakoroy

🤔visual transformer(ViT)よりも前に提案されている手法なので、Encoder部分はCNNとTransfomerの組み合わせになっている。タスクによってViT風の実装が良いのか、CNNも組み合わせたほうがいいのかは変わるのだろうか?

このスクラップは2021/01/30にクローズされました