2017-04-10 9 views
1

現在、GIF/MPEGの代わりに小さなビデオシーケンス(約30フレーム)で構成されたテンソルフローのデータセットをロードしており、JPEGフォーマットで提供しています。 1枚の画像は水平に積み重ねられた20〜30枚のフレームで構成されます。TF:水平方向に積み重ねられた画像の画像(3Dから4D)

今、tf.image.decode_jpegを使用してTFでイメージをロードしています。 イメージの幅は64ピクセル(固定)で、高さは64 * number_of_framesなので、全体の形状は(64*number_of_frames,64,3)です。

これを(number_of_frames,64,64,3)テンソルに変換する良い方法はありますか?

フォローアップ:ビデオが短すぎてすべてのサンプルのフレーム数が同じで、(some_const,64,64,3)テンソルになる場合は、最後のフレームを繰り返します。

ありがとうございます!

+0

注tf.transposeとtf.reshapeを使用することができ、W、C) 'または高さ、幅、チャンネルをそれぞれ – kmario23

+0

" hight is 64 * number_of_frames "というあなたの解釈は間違っています。 – kmario23

答えて

0

たぶん

tf.transpose(tf.reshape(input, [64, 64, number_of_frames, 3]), perm=[2, 0, 1, 3])) 

のようなものが働くだろう。私は2つの要素を入れ子にしています。まず、2番目の次元を64とnumber_of_framesの2つの次元に分割し、次に(64,64*number_of_frames,3)の順序に合わせて次元を並べ替えます。

警告:あなたのデータが編成されている方法によっては、[1, 0, 2, 3][64, number_of_frames, 64, 3][2, 0, 1, 3][64, 64, number_of_frames, 3]を変更することがあります。

0

あなたは、この方法のようtensorflowが '(Hであるテンソルとしての画像を読み取るためテンソルの形で最初の64の高さであることを

tf.reshape(tf.transpose(x, perm=[1, 0, 2]), [-1, 64, 64, 3]) 
+1

詳細を追加してください。このコードは何を行い、どのように機能しますか? –

関連する問題