これを読んでくれてありがとう。
そこで、画像内の特定のロゴを認識するためのニューラル ネットワークを作成しようとしています。私は基本的に、現在のウィンドウを入力の予想されるサイズにスケーリングする特定のアスペクト比のスライディング ウィンドウを持っています。ウィンドウがスライドしてネットワークに入力を送り込み、出力を調べて、ウィンドウ内にあるものが探しているロゴであるかどうかを判断します。その場合、ウィンドウの端にボックスが描画され、ロゴの輪郭が描かれます。
私の問題は、ニューラル ネットワークが画像の他の部分の信頼性が高すぎると報告し、元の画像の多くを見ることが不可能なほど多くのボックスがいたるところに描画されるという事実にあります。したがって、明らかにニューラル ネットワークに問題があります。
画像を入力するために、グレースケールとカラーとして展開してみました。どちらの方法でも機能しません。入力サイズのバリエーションも試しました。小さすぎると悪化しますが、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 の間の運動量値を使用してみました。とにかく、結果はほとんど常に同じです。
ご協力ありがとうございました。