0

こんにちは私は2つのクラスの犬と猫で自分のCNNを構築しています。これを訓練して、今では犬と猫の画像を分類できます。しかし、私は新しい未分類オブジェクトのクラスを導入したいのですが?例えば、私のネットワークに花のイメージを送ると、ネットワークは私に間違った分類を与えます。私は新しい未分類のオブジェクトのための第3のクラスで私のネットワークを構築したい。しかし、どうすればこの第3のクラスを構築できますか?犬や猫とは違う新しいオブジェクトのクラスを取得するために使用する必要がある画像はどれですか? 実際に私のネットワークの終わりに私はSoftmaxを使い、私のコードはtensorflowを使って開発されています。誰かが私にいくつかの提案を提供できますか?ありがとうテンソルフローで分類されていないオブジェクトのクラスを作成するにはどうすればいいですか?

答えて

2

ネットワークに3番目の「something else」クラスを追加する必要があります。あなたはそれについて行くことができるいくつかの方法があります。一般的に、検出したいクラスがある場合、そのクラスのサンプルが必要です。新しいクラスでラベルされたトレーニングデータに、猫や犬のない画像を追加することができます。しかし、これはややこしいことです。なぜなら、新しいクラスは定義上、宇宙ではなく犬や猫のすべてなので、訓練するのに十分なデータがあるとは予想できません。しかし実際には、十分な例があれば、ネットワークはおそらく、最初の2つが始動していないときはいつでも、3番目のクラスが起動されることを知るでしょう。

過去に私が使用していたもう1つのオプションは、通常のクラスとは少し異なる「デフォルト」クラスをモデル化することです。したがって、実際に猫や犬ではない画像を実際に学習しようとするのではなく、猫や犬のニューロンを活性化しないものだけを明示的に言うことができます。私はこれをsoftmaxの最後のレイヤーをsigmoidsに置き換えることでこれを行いました(損失はソフトマックスクロスエントロピーの代わりにシグモイドクロスエントロピーとなり、出力はそれ以上カテゴリカル確率分布にならないでしょうが正直言って私の場合はパフォーマンスに差があります)、 "default"クラスを他のすべてのクラスからの最大アクティベーション値から1を引いたものとして表現します。したがって、0.5以上の活性化(すなわち、そのクラスであると推定される50%の確率)の活性化がないクラスが存在しない場合、「デフォルト」クラスが最も高いスコアリングクラスとなる。これを他の同様のスキームで探索することができます。

+0

あなたのソリューションに感謝します。まず、私のモデルに別のクラスを追加し、その結果を参照してsoftmaxレイヤーを置き換えようとします。 –

1

犬や猫ではない画像をデータセットに追加し、"Other"というラベルを付けて、すべてのコードで通常のクラスとして"Other"としてください。特にあなたは3つのクラス以上のsoftmaxを得るでしょう。

使用している画像は何でもかまいませんが(ネコや犬はもちろんですが)、ネットワークを使用しているときにテストしている画像と同じ種類である必要があります。たとえば、犬、猫、その他の動物の画像をテストすることがわかっている場合は、花の写真ではなく、他の動物と一緒に練習してください。あなたが何を試しているのかわからない場合は、さまざまなソースからさまざまな画像を取得しようとするので、ネットワークはこのクラスが「猫と犬以外のもの」(広範囲の画像現実の世界では、このカテゴリの秋はあなたの訓練データセットに反映されるべきです)。

+0

よろしくお願いいたします。 –

関連する問題