クラスごとにCNNのトレーニングに十分な画像の数


11

画像からスニーカーのタイプを特定するというタスクのプロジェクトを始めています。私は現在TensorFlowTorchの実装を読んでいます。私の質問は、妥当な分類パフォーマンスに到達するためにクラスごとにいくつの画像が必要ですか?


「妥当」を定義しますか?本番システムで使用できる精度を実現することを目標としていますか?あなたの目標は他に何かありますか?クラスはいくつありますか?事前トレーニングと半教師付きトレーニングにはいくつかのバリエーションがあり、労力を節約できるため、懸念が画像のラベル付けにあるのか、それとも単に画像を調達するのかを明確にすることができます。最後に、ターゲットイメージはどれほどクリーンでシンプルですか?照明とポーズが固定されている画像は、スニーカーを着用している「実世界」の写真よりもトレーニングが簡単になります。
Neil Slater

はい、これは本番環境で使用されます。画像ライブラリにあるスニーカーの種類がいくつあるのかわからないので、クラスがいくつあるのか現在はわかりません。私の推測では50〜100程度ですが、スニーカーの説明が粗ければ、クラスは少なくなります(たとえば、エアジョーダンとエアジョーダンウルトラフィット)。残念ながら、画像ライブラリは、着用されているスニーカーと白い背景の固定アイテムとして提示されたスニーカーの組み合わせです。
Feynman27

回答:


1

ニューラルネットワークを訓練するときどのようにいくつかの訓練例の数が少なすぎるのですか?CV:

それは実際にはデータセットとネットワークアーキテクチャに依存します。私が読んだ経験則の1つ(2)は、ニューラルネットワークが非常にうまく機能し始めるために、クラスごとに数千のサンプルでした。実際には、人々は見てみます。


より多くのトレーニングサンプルを用意することがどの程度有益であるかを大まかに評価する良い方法は、ニューラルネットワークのパフォーマンスをトレーニングセットのサイズに基づいてプロットすることです(例:(1)から):

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



0

最善の方法は、できる限り多くのデータを収集することです。次に、プロジェクトを開始して、データモデルを作成します。

これで、モデルを評価して、モデルに高バイアスまたは高分散があるかどうかを確認できます

高い分散:この状況では、クロス検証エラーは収束後のトレーニングエラーよりも高いことがわかります。トレーニングデータサイズに対してそれをプロットすると、大きなギャップが生じます。

高バイアス:この状況では、クロス検証エラーは、トレーニングデータサイズに対してプロットした場合にそれ自体が高いトレーニングエラーよりもわずかに高くなります。つまり、トレーニングデータサイズに対してプロットすることで、保持しているトレーニングデータのサブセットを入力し、サブセットサイズを増やし続けることができます。エラーをプロットします。

モデルの分散(オーバーフィット)高い場合は、通常、データを追加すると、新しいトレーニングデータを追加しても効果がないハイバイアス(アンダーフィット)モデルとは対照的です。

また、クラスごとに、あなたはそれ以外のデータセットになることができ、画像の同じ数を取得しようとしなければならないスキュー(一種の以上)。

また、TensorFlowを使用している場合は、GOOGLEのINCEPTION画像分類子の詳細をご覧ください。これは、Googleの画像データベースですでに訓練された分類子であり、画像に使用できるため、画像数の要件が大幅に下がります。


TensorFlowのInception-v3を使用して簡単なテストをすでに実行しました。それができる最善のことは、「ランニングシューズ」などの非常にコースの分類を与えることですが、「エアジョーダンウルトラフィット」など、もう少し細かいものが必要です。これが、Inceptionで使用する新しいトレーニングセットを構築する理由です。
Feynman27

それは「もう少し細かい」の奇妙な定義です。
ジバン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.