📠

ECCV 2022 におけるテキスト認識

2022/12/12に公開

はじめに

早いもので今年も残すところあと少し。皆さまいかがお過ごしでしょうか。私はワールドカップの影響で常時寝不足な12月です。今年は厳冬だそうで、健康には気をつけましょう。

今年1年を振り返ってみると、 OCR チームのリーダーをやってみたり、社内で MLOps 推進をやってみたりと慣れない仕事が多かった印象で、それにかまけて技術的なアウトプットをサボってしまったと反省しています。贖罪にはなりませんが、本エントリでちょっとした悪あがきをしたいところです。

ECCV とは

ECCV (European Conference on Computer Vision) は、2年に1度開催されるコンピュータビジョン分野のトップカンファレンスで、今年の会場はイスラエルのテルアビブだったそうです。個人的にはテルアビブはサッカークラブの印象が強いです。
https://eccv2022.ecva.net/

ECCV 2022 に採択された論文は下記ページで一覧できます。数えてみると、全部で1645本の論文が採択されたことがわかります。流石に多くて追うのが大変ですね…
https://www.ecva.net/papers.php

テキスト認識 とは

本エントリで対象とするテキスト認識 (Text Recognition) とは、事前に切り出されたテキスト領域を入力として、その中に含まれるテキストを文字に起こす問題を指します。言い換えると、入力画像から文字ラベルの系列を生成する問題であり、流行りの Vision-and-Language の低レベル版といったところでしょうか。

近年は文書というより自然環境下における看板や標識を対象としたシーンテキスト認識 (Scene Text Recognition; STR) がホットであり、特有の歪みを含むコンテキストの少ない画像から精度良くテキストを認識する手法について検討が進んでいます。

以下では、先程の論文一覧から伝家の宝刀 目grep によってテキスト認識に関連する論文を抽出し、 Dockdone-and-Henkehn 法でまとめた次のトレンドを紹介していきたいと思います。

  • トレンド1: 言語モデルとの融合
  • トレンド2: ViTSTR の派生
  • トレンド3: 表現学習
  • トレンド4: 特定ドメインへの応用

トレンド1: 言語モデルとの融合

近年のテキスト認識におけるトレンドとして、自然言語処理における知見をうまく活用し、画像のみで判断が難しいサンプルに対する頑健性を向上させようとする研究があります。我々人間も、視界が悪くテキストがはっきり見えない場合には、周囲の文脈など視覚以外の情報を用いて文字を補完するため、直感的なアプローチと言えるでしょう。

これらの手法群のベースラインとして SRN (Semantic Reasoning Network) [1] 、 ABINet (Autonomous, Bi-directional and Iterative Network) [2] といったモデルがよく引用されます。

SRN は、次のように画像からテキストとアライメントをとった特徴を計算する PVAM (Parallel Visual Attention Module) と、それらを言語モデル (LM) に入力して補正する GSRM (Global Semantic Reasoning Module) によって構成されます。最終的な出力は、 PVAM と GSRM の統合したものとなります。


SRN の構造。([1:1]から引用)

ABINet は、基本的に SRN の構造を踏襲していますが、ビジョンモデル (VM) の出力を言語モデルへ入力する際に勾配をブロックすることで VM と LM を独立させます。これにより、 LM は画像特徴に依存しないため、反復的にテキストを修正でき、 LM 単体での事前学習も可能になります。


ABINet の構造。([2:1]から引用)

手前味噌ですが、 ABINet に関しては下記説明資料も参照ください。

また、類似の手法に VisionLAN [3] があります。 VisionLAN は入力画像の一部をマスクし、マスクされている文字を推論することで、言語 な特徴を獲得する方法です。この方法は、 BERT[4] の事前学習における MLM (Masked Language Modeling) に着想を得たものですが、明示的に LM を用いるものではない点で大変興味深いです。

VisionLAN の構造。([3:1]から引用)

Multi-modal Text Recognition Networks: Interactive Enhancements between Visual and Semantic Features [5]

上述のように、テキスト認識において VM と LM を統合する手法は多く提案されています。思い思いの図で説明されているため、ぱっと見で違いが分かりにくいですが、これらの手法の差異について統一的なフォーマットで表すと、下図 (a)-(c) になります。これを見ると、 SRN を基点として、 ABINet と VisionLAN は画像特徴と言語特徴のどちらか一方のみを強調する手法ということがわかります。


MATRN と既存手法の比較。それぞれ (a)SRN 、 (b)ABINet 、 (c)VisionLAN 、 (d)MATRN を表す。([5:1]から引用)

本論文では、画像特徴と言語特徴の両方を強調する手法がないことに着目し、次の図のような MATRN (Multi-modAl Text Recognition Network) を提案しています。単純に組み合わせたという側面もありますが、マルチモーダルに特徴を強調するモジュールに入力する前に共通の Attention マップを使い、 VM 特徴のマスク及び LM 特徴への位置埋め込みを行う点が賢いなと感じました。


MATRN の構造。([5:2]から引用)

結果は言わずもがな SOTA なわけですが、 ABINet と比較して単にモジュールを付け加えたモデルであるため、 ABINet をスケールアップしてパラメータ数や推論時間を揃えた状態で比較も行っています。結果を見ると、実用上 ABINet に比べて優位性がありそうです。ただ、 VM と LM を両方スケールアップした結果が載っていなかった点は少し気になりました。


ABINet との比較。([5:3]から引用)

下記でコードも公開されているので、自分でも見てみたいと思います。

https://github.com/byeonghu-na/MATRN

Levenshtein OCR [6]

SRN は、特徴の統合時に PVAM の出力を直接利用するため、 PVAM の段階で推論する文字数を誤ると GSRM によって補正するのは難しくなります。 ABINet では、独立した LM を反復的に適用するため、ある程度文字数の修正も可能とされていますが、文字の追加・削除を明示的に行えませんでした。

言語処理分野では、トークンの追加・削除を明示的に行う手法はいくつか提案されており、代表的な手法に LevT (Levenshtein Transformer) [7] があります。 LevT は、①トークンの削除、②トークン間に挿入するプレースホルダの個数、③プレースホルダを埋めるトークンのクラスを反復的に推論することで、柔軟に系列長を変えながら出力を補正していきます。


LevT のデコードステップ。([7:1]から引用)

本論文では、 LM に LevT を導入することで、前述の文字数の相違を解決しながら出力を補正する LevOCR (Levenshtein OCR) を提案しています。結果も良好で、 LevT を単純な Transformer [8] に置き換えた場合と比べて、 Accuracy が 2.1 ポイントほど改善しています。


LevOCR の補正ステップ。([6:1]から引用)

実際に補正結果を可視化すると、次の結果になります。赤字部分は文字の削除、青字は挿入するプレースホルダ、紫字はプレースホルダを埋めた結果を示しています。左から3列目は LevT への初期入力を意味しており、 \mathbf{y}^0_{VP} は VM の出力であるため、 LevOCR の結果ということになります。対して、 \mathbf{y}^0_{emp}, \mathbf{y}^0_ {rand} は、それぞれ空テキストと Ground Truth をランダムに崩したテキストであり、1回で Ground Truth には到達できない場合はあるものの、反復回数を増やすと良好な結果が得られることがわかります。


LevOCR の補正結果。([6:2]から引用)

一方、学習方法については模倣学習的なアプローチが取られており、馴染みがなく理解の及ばない部分があったので、下記での公開が待たれます(現在推論コードのみ公開されている)。

https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/LevOCR

トレンド2: ViTSTR の派生

ViT (Vision Transformer) [9] の提案以降、 CV 界隈は猫も杓子も ViT という様相を呈していますが、テキスト認識分野も例外ではありません。昨年の ICDAR (International Conference on Document Analysis and Recognition) において、 ViT を応用した ViTSTR [10] が提案されました。次の図のように、 ViTSTR は非常にシンプルな構造をしており、 Vanilla ViT の各パッチ状に文字出力用のヘッドをつけたものです。

ViTSTR の構造。([10:1]から引用)

ViTSTR は全てのトークンを並列に計算する Non-autoregressive (NAR) なモデルであり、1文字ずつトークンをデコードしていく Autoregressive (AR) なモデルに比べ高速に動作します。加えて、特徴のエンコードとデコード別れていないため、輪をかけて高速です。しかしながら、さすがにコンテキストが少なすぎるためか、性能は既存モデルに及ばないという特徴もあります。

Scene Text Recognition with Permuted Autoregressive Sequence Models [11]

前述のように、 ViTSTR は高速ですがコンテキストの少なさから精度が微妙という状況でした。どうにか AR と NAR の合の子を取れると良いですが、 ViTSTR の著者らも考えることは同じようです。以下では、 AR と NAR を統一的に取り扱う方法について考えていきます。

Transformer ベースの AR モデルでは、 Decoder でトークン間の関係をモデリングするために Self-Attention を計算します。 ナイーブな Self-Attention では未来の情報を参照できてしまうため、 Transformer Decoder では、未来の情報に対する Attention が0になるようなマスクを導入し、リークを防いでいます。詳しくは、次の動画の 9:53- 辺りをご覧ください。

https://www.youtube.com/watch?v=4Bdc55j80l8

この工夫をもう少し一般化して言うと、参照できる情報はマスクによって操作可能ということです。全トークンを並列に参照する NAR モデルや、周囲のトークンから穴埋めを行う Cloze モデルも、次のようなマスク操作のみで表現できます。このことから、うまくマスクを操作すると、1つのモデルで AR/NAR での推論 → Cloze モデルによる補正が可能になります。


モデル種類ごとの Attention マスク。それぞれ (a)AR、 (b)NAR、 (c)Cloze。([11:1]から引用)

本論文では、 PLM (Permutation Language Modeling) というモデリング手法を用いて、各タスクを統一的に学習する PARSeq (Permuted Autoregressibe Sequence Model for STR) を提案しています。 PLM はその名の通り、並び替えたトークン列を用いて LM を学習する方法です。自然言語処理では XLNet [12] など著名なモデルで用いられます。トークンの並び替えもマスク操作で表現することで、シンプルに実装することができます。


並び替えに対するマスク。([11:2]から引用)

PLM を使うと何が嬉しいのか、少し数式を使って考えてみます。入力画像 \mathbf{x} 、ラベル \mathbf{y} = \{y_1, y_2, y_3\} に対する予測確率 P(\mathbf{y}|\mathbf{x}) は、 各ラベルの独立性を仮定すると、次の P(\mathbf{y}|\mathbf{x})_{[\ast]} のように近似できます。


([11:3]から引用)

左辺を見ると、過去の推論結果をコンテキストとする AR モデルの予測確率となっています。また、右辺の先頭は画像以外のコンテキストを持たない NAR モデル、末尾は周辺トークンをコンテキストとする穴埋めモデルの予測確率となっています。したがって、 AR/NAR/Cloze タスクは PLM を介して統一的に学習できてしまいます。

実験のセクションでは、 次のモデルに対して評価を行なっています。

  • \mathrm{PARSeq}_A: AR モデルの出力を Cloze モデルで1回補正
  • \mathrm{PARSeq}_N: NAR モデルの出力を Cloze モデルで2回補正

これらと既存手法を比較し、\mathrm{PARSeq}_A が全てのデータセットで SOTA 、 \mathrm{PARSeq}_N も既存手法とコンパラな上高速に動作することが確認できていました。次のように、性能と計算コストとトレードオフも良好なようでした。


性能と計算コストとトレードオフ。赤が \mathrm{PARSeq}_A 、青が \mathrm{PARSeq}_N 。([11:4]から引用)

コードは下記で公開されています。 Hugging Face Spaces のデモもあって色々遊べます。

https://github.com/baudm/parseq
https://huggingface.co/spaces/baudm/PARSeq-OCR

Multi-Granularity Prediction for Scene Text Recognition [13]

ViTSTR は、 Vanilla ViT の各パッチ上に文字出力用のヘッドをつけたモデルであるため、 i 番目の文字は i 番目のパッチに対応することになります。直感的に、出力に近いブロックは文字の関係性を記述するのに注力するため、最大ラベル長より後ろの特徴が無駄になってしまいます。 Encoder-Decoder 構造ではこのような問題は発生しないのですが、 ViTSTR の派生モデルでは、文字とパッチの特徴をうまく分離する方法について検討されてきています。

本論文では、 \mathrm{A}^3 (Adaptive Adressing and Aggregation) というモジュールを用いて文字とパッチの特徴を分離する方法を提案し、複数の粒度で \mathrm{A}^3 モジュールを活用することで暗黙的な言語知識を獲得する方法を提案しています。


提案モデル (MGP-STR) の構造。([13:1]から引用)

\mathrm{A}^3 モジュールは、 ViT によりエンコードされた特徴から空間的な Attention マップを計算するモジュールです。中身は単なるカーネルサイズ 1 \times 1 の Group Convolution みたいです。 MGP-STR では、文字インデックスごとに独立した \mathrm{A}^3 モジュールを用意するため、最大文字列長が T であれば、 T 個の文字レベル \mathrm{A}^3 モジュールを用意することになります。

続いて言語特徴を獲得する方法です。こちらも非常にシンプルで、 Ground Truth を BPE (Bytes-Pair Encoding) [14] 、 WordPiece [4:1] でトークナイズして、異なる粒度のサブワードで出力してやろうという感じです。ここまでで ViTSTR に対し Accuracy が1.2-1.7ポイントほど向上するらしいです。


\mathrm{A}^3 モジュールと Multi-Granuality Prediction。 ([13:2]から引用)

複数粒度での推論によって、特徴レベルで暗黙的に言語特徴を獲得して文字レベルの性能が改善したわけですが、せっかく各粒度での推論値があるのでうまく活用したくなります。ただし、これらのアラインメントを取るのは結構難しいので、単に確信度 (i.e., トークン予測確率の cumprod) がもっとも高い結果を出力します。論文中の Fusion という表現と全くマッチしていないですが、これで Accuracy が0.5ポイント程度上昇するようです。

コードを探しているタイミングで気づいたのですが、 LevOCR と完全に同じ著者陣で、同じレポジトリにコードが同居していました。「言語モデルを導入するぜ!」という研究と「言語モデルいらないよ!」という研究が並列で走ってるのはなかなか面白い。

https://github.com/AlibabaResearch/AdvancedLiterateMachinery/tree/main/OCR/MGP-STR

トレンド3: 表現がk...

おわりに

あと6本くらい紹介したかったのですが、完全に力尽きました…

年内には続編を出します…

脚注
  1. D. Yu et al., “Towards Accurate Scene Text Recognition With Semantic Reasoning Networks,” in 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Seattle, WA, USA, 2020, pp. 12110–12119. ↩︎ ↩︎

  2. S. Fang, H. Xie, Y. Wang, Z. Mao, and Y. Zhang, “Read like humans: Autonomous, bidirectional and iterative language modeling for scene text recognition,” in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2021, pp. 7098–7107. ↩︎ ↩︎

  3. Y. Wang, H. Xie, S. Fang, J. Wang, S. Zhu, and Y. Zhang, “From two to one: A new scene text recognizer with visual language modeling network,” in Proceedings of the IEEE/CVF International Conference on Computer Vision, 2021, pp. 14194–14203. ↩︎ ↩︎

  4. J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova, “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,” in Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), 2019, pp. 4171–4186. ↩︎ ↩︎

  5. B. Na, Y. Kim, and S. Park, “Multi-modal Text Recognition Networks: Interactive Enhancements Between Visual and Semantic Features,” in Computer Vision – ECCV 2022, 2022, pp. 446–463. ↩︎ ↩︎ ↩︎ ↩︎

  6. C. Da, P. Wang, and C. Yao, “Levenshtein OCR,” in Computer Vision – ECCV 2022, 2022, pp. 322–338. ↩︎ ↩︎ ↩︎

  7. J. Gu, C. Wang, and J. Z. Junbo, “Levenshtein transformer,” in Proceedings of the 33rd International Conference on Neural Information Processing Systems, Red Hook, NY, USA: Curran Associates Inc., 2019, pp. 11181–11191. ↩︎ ↩︎

  8. A. Vaswani et al., “Attention is All you Need,” in Advances in Neural Information Processing Systems, 2017, vol. 30, pp. 5998–6008. ↩︎

  9. A. Dosovitskiy et al., “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale,” 2020. ↩︎

  10. R. Atienza, “Vision Transformer for Fast and Efficient Scene Text Recognition,” in Document Analysis and Recognition – ICDAR 2021, 2021, pp. 319–334. ↩︎ ↩︎

  11. D. Bautista and R. Atienza, “Scene Text Recognition with Permuted Autoregressive Sequence Models,” in Computer Vision – ECCV 2022, 2022, pp. 178–196. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  12. Z. Yang, Z. Dai, Y. Yang, J. Carbonell, R. Salakhutdinov, and Q. V. Le, “XLNet: Generalized Autoregressive Pretraining for Language Understanding,” arXiv [cs.CL], Jun. 19, 2019. Accessed: Dec. 12, 2022. [Online]. ↩︎

  13. P. Wang, C. Da, and C. Yao, “Multi-granularity Prediction for Scene Text Recognition,” in Computer Vision – ECCV 2022, 2022, pp. 339–355. ↩︎ ↩︎ ↩︎

  14. R. Sennrich, B. Haddow, and A. Birch, “Neural Machine Translation of Rare Words with Subword Units,” in Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), Aug. 2016, pp. 1715–1725. ↩︎

Discussion