3

TensorFlowを使用したセマンティックセグメンテーションのための完全畳み込みネットワーク(FCN)の結果を再現しようとしています。完全畳み込みネットワークトレーニング画像サイズ

私はトレーニング画像を計算グラフに追加しています。完全畳み込みネットワークは、トレーニングのためにVOC PASCALデータセットを使用しました。しかし、データセット内のトレーニング画像は様々なサイズである。

トレーニング画像を前処理して同じサイズにして画像をどのように前処理したかを尋ねるだけです。もしそうでなければ、彼らはちょうどFCNに異なるサイズの画像のバッチを供給しましたか? TensorFlowでさまざまなサイズの画像を1回のバッチで計算グラフに入力できますか?それは、プレースホルダではなくキュー入力を使用して行うことは可能ですか?

+0

サイズの違う画像を送るときに問題が生じるのはなぜですか? – codetiger

+0

異なるサイズの画像をテンソルフロー内の1つのバッチに配置するにはどうすればよいですか?あなたは、FCNがトレーニング用に異なるサイズの画像を使用したことを意味しますか?彼らはバッチ賢明なトレーニングをしましたか? –

答えて

1

異なるサイズの画像を1つの入力バッチに送ることはできません。すべてのバッチには、定義されていないサンプル数(通常バッチサイズはNoneと記されています)がありますが、すべてのサンプルが同じサイズでなければなりません。

完全畳み込みネットワークを訓練するときは、最後にレイヤーが完全に接続されたネットワークのように訓練する必要があります。 したがって、入力バッチ内のすべての入力イメージは、同じwidht、heightおよびdepthを持たなければなりません。サイズを変更します。

唯一の違いは、完全に接続されたレイヤが入力バッチ(形状[None, num_classes])のすべてのサンプルに対して単一の出力ベクトルを出力するが、完全な畳み込みはクラスの確率マップを出力することである。

列車中、入力画像の寸法がネットワーク入力の寸法と等しい場合、出力は形状[None, 1, 1, num_classes]の確率マップになります。

tf.squeezeを使用して出力テンソルからサイズ1の寸法を削除し、完全に接続されたネットワークの場合と同様に損失と精度を計算できます。

テスト時に、入力よりも大きな寸法のネットワークイメージをフィードすると、出力はサイズ[None, n, n, num_classes]の確率マップになります。

+0

固定イメージサイズの制約を取り除くことができるtf.squeezeの使い方についてもっと詳しく説明しますか? – user288609

+0

FCNNは、形状のマップを出力します(バッチサイズを無視し、入力を正方形と考える)[n、n、num_classes]。入力画像がネットワークで期待されるものと同じ空間範囲(幅と高さ)を持つ場合(その受容野の幅と高さ)、出力は確率[1、num_classes]のベクトルです。 'tf.squeeze'はテンソルから' 1'次元を削除するので、 '[1,1、num_classes]という形のテンソルから' [num_classes] 'のテンソルに行くことができます。これは、出力に1次元がある場合にのみ可能です。そうでなければ、それらを削除できません – nessuno

関連する問題