コネクショニスト時間分類(CTC)とは何ですか?


15

私は、光学式文字認識(OCR)プロジェクトを実行したいと考えています。いくつかの調査を行った後、興味深いと思われるアーキテクチャに出会いました:CNN + RNN + CTC。私は畳み込みニューラルネットワーク(CNN)とリカレントニューラルネットワーク(RNN)に精通していますが、コネクショニスト時間分類(CTC)とは何ですか?素人の言葉で説明をお願いします。


3
起源の論文を読むことをお勧めします:Graves、et al。(2006)コネクショニストの時間的分類:非セグメント化シーケンスデータのリカレントニューラルネットワークへのラベル付け、第23回機械学習に関する国際会議の議事録pdf)。
ネオ李

回答:


28

次を含むデータセットがあります:

  • 画像I1、I2、...
  • グラウンドトゥルーステキストT1、T2、...画像I1、I2、...

したがって、データセットは次のようになります。

ここに画像の説明を入力してください

ニューラルネットワーク(NN )は、画像の可能性のある各水平位置(文献ではタイムステップ t と呼ばれることが多い)のスコアを出力します。これは、幅2(t0、t1)と2つの可能な文字( "a"、 "b")を持つ画像の場合、次のようになります。

| t0 | t1 --+-----+---- a | 0.1 | 0.6 b | 0.9 | 0.4

このようなNNをトレーニングするには、画像ごとにグラウンドトゥルーステキストの文字が画像内で配置される場所を指定する必要があります。例として、「Hello」というテキストを含む画像を考えてください。ここで、「H」の開始位置と終了位置を指定する必要があります(例えば、「H」は10ピクセル目から25ピクセル目まで)。「e」、「l、...」についても同じです。これは退屈に聞こえますが、大規模なデータセットでは大変な作業です。

この方法で完全なデータセットに注釈を付けたとしても、別の問題があります。NNは、各タイムステップで各キャラクターのスコアを出力します。玩具の例については、上記の表を参照してください。これで、タイムステップごとに最も可能性の高いキャラクターを取得できました。これは、おもちゃの例では「b」と「a」です。ここで、「Hello」などの大きなテキストを考えます。ライターが水平方向に多くのスペースを使用するライティングスタイルを持っている場合、各文字は複数のタイムステップを占有します。タイムステップごとに最も可能性の高いキャラクターを取得すると、「HHHHHHHHHeeeellllllllloooo」のようなテキストが得られます。このテキストを正しい出力にどのように変換する必要がありますか?重複する各文字を削除しますか?これにより、「Helo」が生成されますが、これは正しくありません。したがって、巧妙な後処理が必要になります。

CTCは両方の問題を解決します。

  • CTCロスを使用して、キャラクターが発生する位置を指定することなく、ペア(I、T)からネットワークをトレーニングできます。
  • CTCデコーダーがNN出力を最終テキストに変換するため、出力を後処理する必要はありません。

これはどのように達成されますか?

  • 特定のタイムステップで文字が表示されないことを示すために、特殊文字(このテキストでは「-」と表示されるCTCブランク)を導入します
  • CTCブランクを挿入し、あらゆる可能な方法で文字を繰り返すことにより、グラウンドトゥルーステキストTからT 'を変更します。
  • 画像は知っていますが、テキストは知っていますが、テキストの位置はわかりません。それでは、テキスト「Hi ----」、「-Hi ---」、「-Hi-」、...の可能な位置をすべて試してみましょう。
  • また、画像内で各キャラクターが占めるスペースもわかりません。「HHi ----」、「HHHi ---」、「HHHHi--」などのように文字を繰り返すことで、可能なすべての配置を試してみましょう...
  • ここに問題がありますか?もちろん、キャラクターに複数回の繰り返しを許可する場合、実際の処理方法は、「こんにちは」の「l」のような重複文字ますか?さて、これらの状況では常にブランクを挿入するだけです。たとえば、「He​​l-lo」または「Heeellll ------- llo」
  • 可能な各T '(つまり、各変換およびこれらの各組み合わせ)のスコアを計算し、ペア(I、T)の損失をもたらすすべてのスコアを合計します
  • デコードは簡単です。たとえば、「HHHHHH-eeeellll-lll--oo ---」などの各タイムステップで最高スコアの文字を選択し、重複文字「H-el-lo」を捨て、空白「Hello」を捨てます。完了です。

これを説明するために、次の画像を見てください。これは音声認識のコンテキストですが、テキスト認識もまったく同じです。文字の配置と位置が異なっていても、デコードすると両方のスピーカーで同じテキストが生成されます。

ここに画像の説明を入力してください

参考文献:


少なくとも私にとっては、「各画像T1、T2、...のグラウンドトゥルーステキスト」が最初に意味することは、少々紛らわしいです。説明から始めてください。また、概念に精通していない場合、「A Neural Network(NN)が画像の可能な水平位置(タイムステップt)ごとにスコアを出力する」という意味はあまり明確ではありません。画像に時間ステップがあるのはなぜですか?要約すると、最初の声明のいくつかは、いくつかの概念を知っていることを前提としているように見えますが、最終的にこの同じ答えで理解されますが、私見では、これらの概念を明確にする必要があります。
nbro

フィードバックをお寄せいただきありがとうございます。データセットに関する図を追加し、説明を改善しました。さらに、時間ステップという用語は、テキスト認識のコンテキストでは単に「水平位置」またはx座標を意味します。この用語は、音声認識(同様のタスク)に由来する可能性が最も高く、タイムステップはオーディオ信号の時間的な位置を指します。
ハリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.