2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
提供:LINE株式会社
リンクをコピー
記事をブックマーク
Hwalsuk Lee氏:みなさま、こんにちは。Hwalsuk Leeと申します。NAVER Clova OCR Teamから参りました。今回の話の中では、日本語向けの深層学習を用いたOCR技術の開発についてお話ししたいと思います。
NAVER Clova OCRは「LINE BRAIN OCR」として日本でもサービスが展開されています。では、OCRとは何なのでしょうか? OCRはOptical Character Recognitionの略称です。
OCRは2つのステップからなっています。まず最初のステップはテキスト検出です。これによってテキストの領域を特定します。2つ目がテキストの認識です。これは、各テキスト領域の文字列を識別することです。
我々のチームは、テキスト検出の論文をCVPR 2019で発表しました。ICCV 2019ではテキスト認識の論文も発表しました。
我々のチームがOCRの研究を始めたときにたくさんの質問が寄せられました。「OCRはもう確立された技術じゃないんですか?」。みなさん、どう思いますか? いや、私はそうじゃないと言いたいと思います。
1つの例ですが、この画像の中で縦に書かれた日本語のテキストがありますね。それから回転したテキストや非常に小さいテキストもありますが、最も良い検出結果はどういうものなのでしょうか?
Tesseractというオープンソースのテストはこちらです。シンプルな水平のテキストを読み込みます。しかし、これはうまくいきませんでした。この画像にはシンプルな水平のテキストがないからですね。
同じ画像を入力したときの我々の結果はこちらになります。
最近、深層学習によって非常に小さいテキストまで検出できるようになりました。向きが変わったもの、垂直のテキスト、それから多言語のテキストも、偽陽性なく検出することができます。
さて、こちらが今日のアジェンダです。
まず、最近のOCRのアプローチを日本語に当てはめた場合にどうなるか。そして2つ目に、我々のテキスト検出器のご紹介。それから3つ目に、我々のテキスト認識器について。そして4つ目ですが、我々のLINE BRAIN OCR向けフルパイプラインのご説明をします。
OCRはかなり改良を重ねてきましたが、それを直接日本語に当てはめようとすると、まだ多くの問題があります。
ディープラーニングが2012年頃に使われるようになってから、OCRの分野で深層学習を使っていろいろなリサーチが行われてまいりました。
左側のグラフはテキスト検出の精度を表しております。深層学習ベースの検出器が継続的に改良しているのがわかります。右側のグラフはテキスト認識の結果です。やはり同じような傾向が見られます。
ところが、ほとんどの論文が対象にしているのは、日本語ではなくて英語です。OCRは言語に関連した技術ですので、日本語と英語の違いに十分注意を払う必要があります。
最初の違いというのは、日本語の場合には単語の間にスペースがないことです。
そして2つ目の違いは、多くの場合、縦書きのものが用いられていることです。
※新聞のイメージは2010年6月15日の毎日新聞号外より引用
この例であっても、新聞の場合でも、垂直に書いたもの、水平に書いたものが混在するような印刷になっております。
3番目の違いですが、文字の種類の多さが違います。
英語の場合には26文字しか用いません。しかしながら、日本語の場合には3,000以上の文字が用いられているわけです。
これだけの違いがありますので、これを頭に入れながら次の説明を聞いていただきたいと思います。
これから日本語の場合のテキスト検出についてお話ししたいと思います。先ほども言いましたが、既存の論文は、1つの単語あるいは1つの行単位での検出に特化しています。つまり、既存の検出器はボックス内にスペースを許容しないわけです。
この長い日本語の文章を取り扱うためには、それぞれの文字をまとめる作業が必要になります。それが我々のアプローチです。
テキストを検出するのに何が困難かですが、一般的な物体検出に比べて極端なアスペクト比があることです。
テキストが紙や布の上に書かれていた場合、形が歪んでしまうという問題もあります。それから3つ目は、いろいろな文字サイズが存在することです。
こういった要素は、行や単語のレベルでの検出に問題をもたらします。
それでは、文字レベルでの検出はどうでしょうか? 極端なアスペクト比という難しさは、テキスト領域が1つの文字を含んでいるので、問題になりません。
それから、文字レベルの検出の場合には、形が歪むことも単語や行単位の検出に比べて少なくなります。それから、文字のサイズが違うというのも問題ではありません。つまり、文字はそれぞれ独立して処理されるので、問題にならなくなります。
それではアノテーションには何が必要なのでしょうか? こちらの例は文字レベルで我々がアノテーションを行ったものです。
これだけのことをやるとすごくコストも時間もかかるということはおわかりいただけるかと思います。ですので我々のチームでは、弱教師あり学習(Weakly Supervised Learning) を検討しました。
ピクセルレベルのアノテーションは、Strong Supervisionであり、難しいセグメンテーションのタスクになります。一方、オブジェクトに対してのアノテーションは、Weak Supervisionです。これはボックス、点、もしくはテキスト単位で行います。
ということで、文字レベルのアノテーションなしで、テキストを文字レベルで検出したいわけです。
さて、ここでCRAFTのモデルについてお話ししたいと思います。CRAFTというのはCharacter Region Awareness for Text Detectionの略です。
CRAFTには2つの出力があります。一番最初はRegion Scoreです。これはピクセルが文字の真ん中に来る確率です。2つ目の出力は、Affinity Scoreですね。これはピクセルが隣接する文字ボックス間のスペースの中心である確率です。
例を出します。
この画像が入力されたとします。そうするとRegion Scoreはこのようなヒートマップになります。これを使って、個別の文字領域を探します。Affinity Scoreというのは、このようなヒートマップになります。これを使って、行、もしくは単語レベルで探します。
CRAFTモデルの学習にはGround Truthが必要です。
Region ScoreとAffinity Scoreの両方のGround Truthを提示しなければいけません。文字レベルのアノテーションが提供されたとき、2次元の正規分布を作成します。それぞれの文字ボックスの長方形からRegion ScoreのGround Truthを生成します。
Affinity ScoreのGround Truthを作成するためには、このAffinity Boxを2つの隣接する文字ボックスから作られなければいけません。この対角線を文字ボックスに引くと、三角が上下にできますね。Affinity Boxというのが、隣接するボックスの上下三角の中心点を結んだ線からできます。
このように、このAffinity Boxが簡単に定義できます。それから、Affinity ScoreのGround Truthを作るときには、Affinity Boxと、それに対応するガウス分布から作られます。これはRegion ScoreのGround Truthの作り方と同じです。
先ほど言ったように、文字の境界になるボックスをアノテーションしたくない。単語もしくは行レベルのアノテーションを使いたい。それを弱教師あり学習(Weakly Supervised Learning)で提供したいということですね。
弱教師あり学習(Weakly Supervised Learning)には2つのステップがあります。
1つ目のステップは、モデルを合成画像で学習させるということ。文字レベルのアノテーションを合成画像に与えることができるので、モデルは直接その合成データで学習することができます。
2つ目のステップでは、モデルの学習を実際の画像で行います。
文字レベルのアノテーションを実画像で得るために、テキスト領域を切り取るわけです。単語もしくは行レベルのアノテーションで切り取ります。この切り取った画像をモデルに入力しますと、モデルがRegion Scoreを概算します。
そして、分割処理を行って、この各文字のBounding Boxを取得します。
そうすることで実画像の擬似的なGround Truthが得られます。そして、この擬似的なGround Truthでモデルを文字レベルのアノテーションで学習するわけです。
これが擬似的なGround Truthを作る概略になります。単語レベルのアノテーションが提供されているので、テキスト領域を切り取って、それをネットワークに入力してRegion Score Mapを獲得します。そして、Watershed LabelingとMinimum Bounding Boxのオペレーションをすることで文字ボックスのアノテーションが得られるというわけです。
これは、学習が進むにつれて、文字のRegion Scoreが変わるということを示しています。
学習が進むと予測がより正確になり、文字ボックスの概算もより正確になります。
では、post-processingについてお話ししましょう。
post-processingは非常に単純です。与えられた画像に対して、Region Score MapとAffinity Score Mapをバイナリ化します。そうすることで、Character regionと、Affinity regionを得ることができます。
今度は2つのバイナリマップを結合して、ラベリング処理をOpenCVの関数で行います。
最終的にMinimum Bounding Boxオペレーションを行って、単語レベルのテキスト領域が得られます。
Post-processingは非常にシンプルですが、効率がいいということがおわかりだと思います。我々は3つのOpenCVの関数しか使っておりません。
では、定性的な評価例をご紹介しましょう。
CRAFTが概算するRegion ScoreとAffinity Scoreがあり、そしてPost-processingを行います。
多言語の場合でも、CRAFTの概算するのはRegion ScoreとAffinity Scoreで、そしてまたPost-processingも行います。
CRAFTはこの曲がったテキストエリアの位置がわかりますので、このカーブしたテキスト領域を直線のテキスト領域に修正することも可能です。
こちらは我々の手法をご紹介するビデオです。
(映像が流れる)
CRAFTは、より良い認識結果を得るために修正することができます。フレームごとの検出になっていて、左がRegion Score、右がAffinity Scoreです。
まとめです。文字レベルの検出手法を使うことによって、水平もしくは垂直の長い文字列も検出できます。長いカーブしたテキストでも検出をすることが可能です。
LINE株式会社
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略