1

ストローク幅変換アルゴリズムを部分的に実装しました。私の実装は醜いですが、何かが機能します

私の実装は私に多くの候補を与えます(私はそれらをフィルタリングするためにいくつかのルールを使用します)。しかし、私にはまだ多くの非キャラクター候補がいます。ニューラルネットワーク(または別のMLアルゴリズム)を使用してそれらをフィルタリングしたいと思います。

分類器にはどの機能を使用する必要がありますか?

(コンポーネントのSW値の)平均/標準と幅/高さを抽出できます。

例:

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

赤い長方形は文字候補です(実装ではライトオンダーク文字は検出されません。「ランドローバー」の検出不良は正常です)コンポーネントフィルタリング後のSWT画像

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

4

2 に答える 2

1

ニューラル ネットワークや SVM などのその他の手法は、入力のフィルタリングには使用されず、代わりに入力の分類に使用されます。違いは、フィルタリングは、課されたルールに一致するかどうかに基づいて入力を破棄するため、実際にはトレーニングを必要としないことです (いくつかの適切なしきい値が必要になる可能性が高くなります)。一方、/trained/ 分類器は、指定された入力にクラスを割り当てます。つまり、予想されるクラスと負のサンプルを使用して分類器を適切にトレーニングする必要があります。そのため、前者を実行するか後者を実行するかによってアプローチは異なりますが、前者で使用する機能は後者にも役立つ場合があります。

どのようなパスを使用する場合でも、基本的な前処理として、最初により明確なコンポーネントを取得する必要があります。これは、例にあるコンポーネント内の不要な白い点を削除することを意味します。その後、多くのオプションが利用可能です。基本的な幅と高さの測定値を使用して、予想と一致しないことが確実なコンポーネントをフィルタリングできるため、分類する必要もありません。接続されたコンポーネントのスケルトンを考慮することで、2 つのフィーチャを形成する端点と分岐点が得られます。オイラー数もまた別の 1 つであり、実際には抽出できる特徴が多すぎて、ここにすべてをリストすることはできません。これらの機能の特徴は、それらがすべてスケール、回転、および移動に対して不変であることです。これは、区別するために別の機能が必要であることも意味します。9から、6スケルトンの穴の重心がそのような例の 1 つになります (この機能の直接抽出は何に対しても不変ではないため、注意してください)。

単純な機能でさえ、文字セット全体を分離するのに役立つことに注意してください。たとえば、オイラー数 = 0 の場合、「A」、「D」、「O」、「P」、「Q」、「R」、「0」、「4」、「6」、または '9'、ascii alphanum、行儀の良いフォント、および入力の適切な前処理を想定しています。

最後に、SWT 以外の詳細情報やさまざまなアプローチを探すためのかなりの量の論文があります。たとえば、T-HOGはそれらの最近の 1 つであり、公開された結果によると、SWT よりわずかに優れています。

編集:再開と拡張:

機械学習を使用する場合は、トレーニングとテスト用に分離できるラベル付きデータがいくつか必要になります。目的が「これは文字である」と「これは文字ではない」を区別することだけであり、後者のクラスが適切に記述されていない場合 (つまり、文字ではないものの例がほとんどないか、それを特徴付けることができない場合)受信可能なあらゆる種類の入力)、ワンクラス SVM はオプションです。

個々のキャラクターから抽出される特徴は、前述のように数が多すぎて、アプローチが多すぎます。論文「文字認識のための特徴抽出方法 -- 調査」(1995 年、最近のものではありません) では、それらのいくつかについて説明されています (トレーニング データの予想される最小サイズについても言及されています。必ず読んでください)。その内容の一部をここに。

文字から抽出するのにおそらく良い機能 (グレースケールとバイナリ イメージの両方):

  • Hu、Reiss、Flusser、Suk、Bamieh、de Figueiredo Moments (すべての幾何学的モーメント不変量は、「瞬間不変量による視覚的パターン認識」での Hu による初期作業の改善に基づいています)。
  • ゼルニケモーメント

スケルトン化されたキャラクターから抽出するのに適した機能:

  • T ジョイントの数;
  • X ジョイントの数。
  • 屈曲点の数;
  • エンドポイントの数。
  • 原点を形状の重心に置くことによる軸との交差の数。
  • 半円の数

前述の論文で説明されているように、フーリエ記述子は、文字のスケルトン、バイナリ表現、またはグラフ表現のいずれかに適用することもできます。

于 2013-02-09T16:02:58.923 に答える
1

実際に使用されているアプローチの 1 つは、すべての候補を同じサイズ (幅 x 高さ) にスケーリングしてから、これらの各ピクセルをニューラル ネットワークに入力することです。

次に、各文字の出力があります (一致にどれだけ近いかについて、0 と 1 の間で返されます) (そして、おそらく一致しないことを示す最後の出力ですが、これは明確な候補文字がないことから結論付けられる可能性があります)。

ニューラル ネットワークでは、かなりの量のトレーニング データが必要になります。必要なトレーニング データを手動で取得することを避けるためのオプション:

  • オンラインでトレーニング データを探す
  • トレーニング データをアルゴリズムで生成する (文字と背景を描画して NN にフィードするアルゴリズムを作成する)
  • 取得済みのトレーニング データに対して変換を実行します (回転、サイズ変更、色の変更)。これにより、かなり小さいトレーニング セットがかなり大きくなる可能性があります。この方法で大量のデータを生成しようとしないでください。そうしないと、ネットワークのパフォーマンスが低下する可能性があります。
于 2013-02-09T14:29:56.293 に答える