2017-01-28 6 views
15

私はイメージを分類する私のモデルを鍛えようとしています。 問題は、サイズが違うことです。それらの画像をサイズ変更せずに訓練する可能性はありますか?サイズが異なる場合、イメージをトレーニングするにはどうすればよいですか?

+1

これまでに試したことと、あなたにはうまくいかないようなことを示してください。 –

+0

そして、バムにはInception v4のコードがあります。私はその既成のコメントに同意しない。私たちが話しているどのような種類のネットのように、もう少し多くの入力がうまくいくでしょうが、ダウンボントは全く正当化されません。そこには本当に問題があります。 – sunside

+0

ImageNetが画像データのフォーマットをトレーニングに役立てるにはどうしたらいいですか? – mskw

答えて

36

あなたは、どのアーキテクチャについて話しているのかは言いませんでした。あなたがイメージを分類したいと言ったので、私はそれが部分的に畳み込みで、AlexNet、GoogLeNetなどの部分的に完全に接続されたネットワークであると仮定しています。一般的に、あなたの質問に対する答えはあなたが作業しているネットワークタイプによって異なります。

たとえば、ネットワークに畳み込み単位しかない場合、つまり完全に接続されたレイヤーが含まれていない場合は、は入力イメージのサイズと同じでなければなりません。そのようなネットワークは、入力画像を処理し、次に別の画像を返すことができます( "畳み込み")。もちろん、何らかの方法で損失を特定する必要があるため、出力が期待どおりに一致することを確認する必要があります。

完全に接続されたユニットを使用している場合は、問題が発生しています。ここでは、学習したネットワークの学習済みの重みが固定されているため、さまざまな入力にはさまざまな重みが必要です。可能。

それがあなたの問題である場合は、ここであなたができることがいくつかあります:

  • 画像を退治気にしないでください。ネットワークはとにかくコンテンツを理解することを学ぶかもしれません。とにかく、スケールとパースペクティブはコンテンツに何かを意味するのでしょうか?
  • 画像を特定のサイズに中央揃えします。データが失われてしまう恐れがある場合は、複数のクロップを行い、入力データを補強するために元のイメージを適切なサイズの異なるイメージNに分割します。
  • 単色の画像を四角いサイズにパディングし、サイズを変更します。
  • これを組み合わせてください。

ネットワークは(読み:そうでしょう)可能性があるため、ネットワークの予測に追加のエラー源を導入可能性があるパディングオプション、このようなパッド入りのボーダーが含まれている画像にバイアスすること。 TensorFlowのドキュメントのImagesのセクションをご覧になりたい方は、resize_image_with_crop_or_padのようなものがあります。ただhere's、有名なインセプションネットワークの前処理パイプラインの一部を潰し気にしないでくださいについては

# This resizing operation may distort the images because the aspect 
# ratio is not respected. We select a resize method in a round robin 
# fashion based on the thread number. 
# Note that ResizeMethod contains 4 enumerated resizing methods. 

# We select only 1 case for fast_mode bilinear. 
num_resize_cases = 1 if fast_mode else 4 
distorted_image = apply_with_random_selector(
    distorted_image, 
    lambda x, method: tf.image.resize_images(x, [height, width], method=method), 
    num_cases=num_resize_cases) 

彼らはそれを完全に認識していると、とにかくそれを行います。

したいか、行く必要がどこまでによっては、実際には非常に特殊な方法でそれらを処理することによって、任意のサイズの入力を処理する視覚認識ためのディープ畳み込みネットワークにおける空間ピラミッドプーリングと呼ばれるhere紙があります。

0

空間ピラミッドプール層を作成してください。次に、FC層が常に一定の次元ベクトルを入力として得るように、最後の畳み込み層の後に置きます。トレーニング中は、1エポックの特定の画像サイズを使用して、データセット全体から画像をトレーニングします。次に次のエポックでは、別の画像サイズに切り替えてトレーニングを続けます。

関連する問題