Python基本チュートリアル:画像のステッチのテンソルフローの例

@この記事は公開番号から来ています:csdn2299、公開番号プログラマの
学術機関のテンソルフローに従って、画像の複数のブロックの行と列をつなぎ合わせます

深層学習プロセスでは、畳み込みによって得られる画像ブロックサイズは8×8×1024の画像ブロックであり、得られた画像ブロックは[8×8]×[32×32]を取得するように再形成されます。ここで、[8×8]画像ブロックの数です。[32×32]は小さな画像のサイズです。tf.concatを使用して小さな画像をつなぎ合わせます。

・画像の畳み込みの過程で、こんな面倒な縫い方をしました。ブロック縫いなので、これ以上の縫い方は考えていませんでした。最初はリシェイプを使っていましたが、得られた結果が正しくないので、確認が必要ですデータの次元は、データの次元にとって非常に問題があります。

import tensorflow as tf
def tensor_concat(f, axis):
 x1 = f[0, :, :]
 for i in range(1, 8):
  x1 = tf.concat([x1, f[i, :, :]], axis=axis)
 return x1
 
def block_to_image(f): 
 x1 = tf.reshape(f, [64, 1024])
 x1 = tf.reshape(x1, [64, 32, 32])
 m2 = tensor_concat(x1[0:8, :, :], axis=1)
 for i in range(1, 8):
  m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
  m2 = tf.concat([m2, m1], axis=0)
 x2 = tf.reshape(m2, [256, 256, 1])
 return x2
 
x = tf.random_normal([ 8, 8, 1024])
with tf.Session() as sess:
 m = sess.run(x)
 m1 = sess.run(block_to_image(m))

最後に、行スティッチングと列スティッチングによって256×256×1のサイズの画像が得られます。

[batch_size、height、weight、channel]の画像に同じ画像ブロックステッチを実行します。

ディープニューラルネットワークでは、ブロックスプライシング用の画像サイズが[256×256×1]のbatch_size画像があります。追加の次元の画像の場合、スプライシングは[batch_size、8、8、1024]によって[batch_size 、256、256、1]。パートを実行するとき、batch_sizeパートは実際にそれを処理する方法を認識していないため、このメソッドは引き続き使用され、使用される関数はappendおよびtf.stack()です

def tensor_concat(f, axis):
 x1 = f[0, :, :]
 for i in range(1, 8):
  x1 = tf.concat([x1, f[i, :, :]], axis=axis)
 return x1
 
def block_to_image(f):
 x3 =[]
 for k in range(f.shape[0]):
  x = f[k, :, :, :]
  x1 = tf.reshape(x, [64, 1024])
  x1 = tf.reshape(x1, [64, 32, 32])
  m2 = tensor_concat(x1[0:8, :, :], axis=1)
  for i in range(1, 8):
   m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
   m2 = tf.concat([m2, m1], axis=0)
  x2 = tf.reshape(m2, [256, 256, 1])
  x3.append(x2)
  x4 = tf.stack(x3)
 return x4 
x = tf.random_normal([10, 8, 8, 1024])
with tf.Session() as sess:
 m = sess.run(x)
 m1 = sess.run(block_to_image1(m))
def tensor_concat(f, axis):
 x1 = f[0, :, :]
 for i in range(1, 8):
  x1 = tf.concat([x1, f[i, :, :]], axis=axis)
 return x1

def block_to_image(f):
 x3 =[]
 for k in range(f.shape[0]):
  x = f[k, :, :, :]
  x1 = tf.reshape(x, [64, 1024])
  x1 = tf.reshape(x1, [64, 32, 32])
  m2 = tensor_concat(x1[0:8, :, :], axis=1)
  for i in range(1, 8):
   m1 = tensor_concat(x1[i*8:(i+1)*8, :, :], axis=1)
   m2 = tf.concat([m2, m1], axis=0)
  x2 = tf.reshape(m2, [256, 256, 1])
  x3.append(x2)
  x4 = tf.stack(x3)
 return x4 
x = tf.random_normal([10, 8, 8, 1024])
with tf.Session() as sess:
 m = sess.run(x)
 m1 = sess.run(block_to_image1(m))

学習プロセス中、テンソルを直接割り当てることはできません。たとえば、次のように書くことはできません。

x2 = tf.reshape(m2, [256, 256, 1]) 
 
x3[k, :, :, 1] = x2 

このようなコードでは、エラーが発生します。「Tensor」オブジェクトはアイテムの割り当てをサポートしていません

同様のインデックスを持つ割り当ての場合、参照方法は次のとおりです。

x3 = [] 
 
x3.append(x2) 

このとき、リストのフォーマットが取得されるので、次のステップは、tf.stack(x3)を使用してリストを配列に変換することです。

読んでいただきありがとうございます
。大学でpythonを学ぶことを選んだとき、コンピュータの基礎がおかしいことに気付きました。学業資格はあり
ませんでした。これは何もする必要はありません。それを補うことしかできません。道は、Pythonのコア知識を学び続け、コンピューターの基礎の詳細な研究を整理し、平凡になりたくない場合は、コーディングに参加して成長を続けてください!
実は、ここには技術だけでなく、それ以外のものもあり、例えば「絹糸」というよりも、どうやってプログラマーとして絶妙な存在になるのか、プログラマー自体が高貴な存在ですね。[参加するにはクリックしてください]自分らしくなりたい、高貴な人になりたい、是非!

45件の元の記事を公開 16 件を賞賛・2 万回以上の閲覧

おすすめ

転載: blog.csdn.net/chengxun03/article/details/105522080