trybeetle

take it slow!!

Photo OCRについて


Posted on Aug. 1, 2018, 8:14 p.m.



Photo OCR(Optical Character Recognition)について記載します。Photo OCRを使用し、写真からテキストを読み取ったり、顔を判別したりすることができます。
CourseraのMachine Learningコースを元にしています。


Photo OCRの流れ

Photo OCRのパイプラインは下記の様に分けることができます。

  • Text detection
    認識したいTextのサイズに合わせて、Rectangleのサイズを設定し、写真内をスライドさせる。(1回あたりどのくらいの幅でスライドさせるかは、step sizeで指定する必要がある。例:step_size=4px)各スライドで切り取ったものをpatchといい、patch内にテキストがある場合はy=1(なければy=0)といったclassificationの問題にする。パッチを統合し、テキストがあると判定された部分を抜き出し、次のcharacter segmentationに渡す。
  • Character segmentation
    Text Detectionで受け取った画像を、上記同様にsliding windowを実施する。各パッチ内で、文字が複数あり、splitされている場合は、y=1(なければ、y=0)とする。その結果、テキストを1文字単位の画像に分けることができ、それをCharacter classificationに渡す。
  • Character classification
    Neural Networkなどで、classificationの問題として処理する。

Artificial Data Systhesis

Artificial Data Systhesisにより、datasetを作成したり、増やしたりすることができます。

新規作成するときの例として、文字の画像を作成する例があります。
様々なfontデータを、ランダムに作成した背景に貼り付け、その画像を歪めたりすることにより、文字の写真データの様に扱うことができます。

また、今あるデータを歪めたりして特殊効果を付与することで、複数のデータに増やすこともできます。例え、1つのデータから、歪みパターンが5つあった場合には、6個に増やすことができます。(Original 1個 + 歪みパターン 5個)


Ceiling Analysis

Ceiling Analysisによって、パイプラインの中で、コンポーネント毎のaccuracyを確認することができます。それにより、どのコンポーネントにより労力を費やすべきか判断することができます。

下記の表は、Photo OCRのパイプラインにCeiling Analysisを行った例です。accuracyでは、対象コンポーネントまでの精度が100%の時(推定値にラベルデータをそのまま使用する)のaccuracyを算出しています。


Component> Accuracy 改善余地
Overall system 72% -
Text detection 89% 17% UPの改善余地
Character segmentation 90% 1% UPの改善余地
Character Recognition 100% 10% UPの改善余地

以上です。


Category:ML
Tag: ML Octave
Aug. 1, 2018, 8:14 p.m.

Comments