ニューラル ネットワークの仕組みは理解できましたが、実際の文字認識などの画像処理に使用したい場合、画像データをニューラル ネットワークに入力する方法がわかりません。
A私は手紙の非常に大きなイメージを持っています。たぶん、画像から情報/仕様を取得して、その仕様の値のベクトルを使用する必要がありますか? そしてそれらはニューラルネットの入力になりますか?
誰がすでにそのようなことをしたことがありますか?その方法を説明できますか?
ニューラル ネットワークの仕組みは理解できましたが、実際の文字認識などの画像処理に使用したい場合、画像データをニューラル ネットワークに入力する方法がわかりません。
A私は手紙の非常に大きなイメージを持っています。たぶん、画像から情報/仕様を取得して、その仕様の値のベクトルを使用する必要がありますか? そしてそれらはニューラルネットの入力になりますか?
誰がすでにそのようなことをしたことがありますか?その方法を説明できますか?
最も簡単な解決策は、トレーニングとテストの両方ですべての画像を正規化し、同じ解像度にすることです。また、各画像の文字はほぼ同じサイズにする必要があります。また、グレースケール画像を使用することもお勧めです。これにより、各ピクセルで数値が 1 つだけになります。次に、各ピクセル値をネットワークへの 1 つの入力として使用できます。たとえば、サイズが 16x16 ピクセルの画像がある場合、ネットワークには 16*16 = 256 個の入力ニューロンがあります。最初のニューロンは (0,0) でピクセルの値を認識し、2 番目のニューロンは (0,1) でピクセルの値を認識します。基本的に、画像の値を 1 つのベクトルに入れ、このベクトルをネットワークにフィードします。これはすでに機能しているはずです。
最初に画像から特徴 (エッジなど) を抽出し、それらの特徴に対してネットワークを使用することで、おそらく学習速度を上げ、検出をより堅牢にすることができます。その場合に行うことは、事前知識を組み込むことです。文字認識については、特定の関連機能を知っています。したがって、それらを前処理ステップとして抽出することにより、ネットワークはそれらの機能を学習する必要がなくなります。ただし、間違った、つまり無関係な機能を提供すると、ネットワークは画像 --> 文字マッピングを学習できなくなります。
あなたが解決しようとしている問題の名前は「特徴抽出」です。それは明らかに自明ではなく、活発な研究の対象です。
これを行う単純な方法は、画像の各ピクセルを対応する入力ニューロンにマッピングすることです。明らかに、これはすべて同じサイズの画像に対してのみ機能し、一般的に効果は限られています。
これ以外にも、できることはたくさんあります...一般的な例をいくつか挙げると、ガボール フィルター、Haar のような機能、PCA と ICA、スパース機能などがあります。私のアドバイスは、ニューラル ネットワークとパターン認識、具体的には光学式文字認識に関する教科書を手に取ることです。
画像への NN の適用に関するこれらすべての考慮事項は、2002 年のレビュー ペーパー (特徴ベース、ピクセル ベース、スケール不変性など) で説明されています。
あなたの最大の課題は、いわゆる「次元の呪い」です。
NN のパフォーマンスをサポート ベクター マシンのパフォーマンスと比較します (どのカーネルを使用するかは難しい)。
実際のピクセルを入力として使用できます。これが、入力画像の解像度を小さくした方がよい場合がある理由です。
ANN の優れた点は、何らかの形で特徴を選択できることです (これらの入力ノードにほぼゼロの重みを割り当てることにより、重要でないピクセルを無視します)。
いくつかの手順を次に示します。カラー/グレー スケール イメージがバイナリ イメージであることを確認します。これを行うには、いくつかのしきい値操作を実行します。それに続いて、ある種の特徴抽出が行われます。OCR / NN の場合、この例が役立つかもしれませんが、ルビーでは: https://github.com/gbuesing/neural-net-ruby/blob/master/examples/mnist.rb