画像からスニーカーのタイプを特定するというタスクのプロジェクトを始めています。私は現在TensorFlowとTorchの実装を読んでいます。私の質問は、妥当な分類パフォーマンスに到達するためにクラスごとにいくつの画像が必要ですか?
画像からスニーカーのタイプを特定するというタスクのプロジェクトを始めています。私は現在TensorFlowとTorchの実装を読んでいます。私の質問は、妥当な分類パフォーマンスに到達するためにクラスごとにいくつの画像が必要ですか?
回答:
ニューラルネットワークを訓練するときどのようにいくつかの訓練例の数が少なすぎるのですか?CV:
それは実際にはデータセットとネットワークアーキテクチャに依存します。私が読んだ経験則の1つ(2)は、ニューラルネットワークが非常にうまく機能し始めるために、クラスごとに数千のサンプルでした。実際には、人々は見てみます。
より多くのトレーニングサンプルを用意することがどの程度有益であるかを大まかに評価する良い方法は、ニューラルネットワークのパフォーマンスをトレーニングセットのサイズに基づいてプロットすることです(例:(1)から):
(2)Cireşan、Dan C.、Ueli Meier、およびJürgenSchmidhuber。「ディープニューラルネットワークを使用したラテン語と中国語の文字の転送学習。」2012年のニューラルネットワークに関する国際共同会議(IJCNN)、1-6ページ。IEEE、2012。https ://scholar.google.com/scholar?cluster=7452424507909578812&hl=ja&as_sdt=0,22 ; http://people.idsia.ch/~ciresan/data/ijcnn2012_v9.pdf:
クラスあたり数千サンプルの分類タスクの場合、(教師なしまたは教師あり)事前トレーニングの利点を実証するのは簡単ではありません。
最善の方法は、できる限り多くのデータを収集することです。次に、プロジェクトを開始して、データモデルを作成します。
これで、モデルを評価して、モデルに高バイアスまたは高分散があるかどうかを確認できます。
高い分散:この状況では、クロス検証エラーは収束後のトレーニングエラーよりも高いことがわかります。トレーニングデータサイズに対してそれをプロットすると、大きなギャップが生じます。
高バイアス:この状況では、クロス検証エラーは、トレーニングデータサイズに対してプロットした場合にそれ自体が高いトレーニングエラーよりもわずかに高くなります。つまり、トレーニングデータサイズに対してプロットすることで、保持しているトレーニングデータのサブセットを入力し、サブセットサイズを増やし続けることができます。エラーをプロットします。
モデルの分散(オーバーフィット)が高い場合は、通常、データを追加すると、新しいトレーニングデータを追加しても効果がないハイバイアス(アンダーフィット)モデルとは対照的です。
また、クラスごとに、あなたはそれ以外のデータセットになることができ、画像の同じ数を取得しようとしなければならないスキュー(一種の以上)。
また、TensorFlowを使用している場合は、GOOGLEのINCEPTION画像分類子の詳細をご覧ください。これは、Googleの画像データベースですでに訓練された分類子であり、画像に使用できるため、画像数の要件が大幅に下がります。