0

これを読んでくれてありがとう。

そこで、画像内の特定のロゴを認識するためのニューラル ネットワークを作成しようとしています。私は基本的に、現在のウィンドウを入力の予想されるサイズにスケーリングする特定のアスペクト比のスライディング ウィンドウを持っています。ウィンドウがスライドしてネットワークに入力を送り込み、出力を調べて、ウィンドウ内にあるものが探しているロゴであるかどうかを判断します。その場合、ウィンドウの端にボックスが描画され、ロゴの輪郭が描かれます。

私の問題は、ニューラル ネットワークが画像の他の部分の信頼性が高すぎると報告し、元の画像の多くを見ることが不可能なほど多くのボックスがいたるところに描画されるという事実にあります。したがって、明らかにニューラル ネットワークに問題があります。

画像を入力するために、グレースケールとカラーとして展開してみました。どちらの方法でも機能しません。入力サイズのバリエーションも試しました。小さすぎると悪化しますが、57x22x3 のカラー展開された入力でも失敗します。

だから、それも問題ではないと思います。私のニューラル ネットワークには X 個の入力ニューロンがあります (X は幅 * 高さ * num_colors です)。これもサイズ X の隠れ層が 1 つあります。最後に、出力層に 1 つの出力ニューロンがあり、0.0 から 1.0 の間の値を出力し、合計信頼度を表します。

17 個の肯定的なトレーニング例 (理想的な出力は 1.0) と、19 個の否定的なトレーニング例 (理想的な出力は 0.0) があります。トレーニング後、ネットワークは、すべての正のサンプルに対して ~0.95 のほぼ等しい信頼度をレポートし、すべてのネガティブなサンプルに対してほぼ等しい信頼度 ~0.013 をレポートします。

私の理論では、私が持っているトレーニング例の数が少なすぎるので、もっと収集/生成する必要があります。最初はそれぞれ 5 つしかありませんでしたが、17+ まで上げても何の利益も見られませんでした。

Encog と Neuroph を使用してみましたが、どちらも非常に似た結果が得られたことに注意してください。私は学習にバックプロパゲーションを使用しており、0.3 から 0.7 の間の学習率と 0.0 から 0.8 の間の運動量値を使用してみました。とにかく、結果はほとんど常に同じです。

ご協力ありがとうございました。

4

2 に答える 2

0

通常、ニューラル ネットワークは学習のために多くのサンプルを必要としますが、これが問題であると断言することはできません。

マッチングを行うためのより良いアイデアは、パターン内の各ピクセルと、指定された画像内のパターンが存在する可能性のあるピクセルの一致率を見つけることです (たとえば、スライディング ウィンドウ スタイルを使用します)。

パターンに一致するピクセルの色の配列がある場合:

0xFF0000、0x00FF00、0x0000FF

これらのピクセル色のパターン:

0xEE0000、0x00FF00、0x0101DE

各ピクセルのデルタを % で取得し、それらを平均化できます。現在、平均化する方法は複数あります (加重平均、指数加重平均など)。最後に、パターン全体の一致率を取得できます。つまり、パターンがスライディング ウィンドウ内の現在のピクセルとどの程度一致しているかを示します。常に最大スコアを追跡できるので、最後に 1 つのボックス (パターンに一致する可能性が最も高いボックス) のみを表示します。

ピクセルごとにニューロンを作成でき、樹状突起は色の 16 進数の異なる部分にすることができます。たぶん、R、G、Bごとに樹状突起。上記の例では、色の整数全体に対して 1 つのデンドライトを使用しました。

于 2012-12-17T20:49:06.873 に答える
0

スライディング ウィンドウ入力を分類するために SOM/LVQ ニューラル ネットワークを使用してみてください。

于 2012-12-19T03:38:58.093 に答える