时间:2021-05-22
tensorflow对图像进行多个块的行列拼接tf.concat(), tf.stack()
在深度学习过程中,通过卷积得到的图像块大小是8×8×1024的图像块,对得到的图像块进行reshape得到[8×8]×[32×32],其中[8×8]是图像块的个数,[32×32]是小图像的大小。通过tf.concat对小块的图像进行拼接。
-在做图像卷积的过程中,做了这样一个比较麻烦的拼接,现在还没想到更好的拼接方法,因为是块拼接,开始的时候使用了reshape,但是得到的结果不对,需要确定清楚数据的维度,对于数据的维度很是问题。
import tensorflow as tfdef tensor_concat(f, axis): x1 = f[0, :, :] for i in range(1, 8): x1 = tf.concat([x1, f[i, :, :]], axis=axis) return x1def 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 x2x = 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] 的图像进行1一样的图像块拼接:
在深度神经网络中,会有batch_size个图像大小[256×256×1]的图像进行块的拼接,对于多了一个维度的图像拼接起来,由[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 x1def 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))在学习过程中对tensor不能直接赋值,比如不能写:
x2 = tf.reshape(m2, [256, 256, 1]) x3[k, :, :, 1] = x2这样的代码,会出现错误:'Tensor' object does not support item assignment
对于带有类似索引的赋值,参考的办法是:
x3 = [] x3.append(x2)这时候得到的是list的格式,所以接下来将list转化为array,使用的是tf.stack(x3)
以上这篇tensorflow对图像进行拼接的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
TensorFlow提供两种类型的拼接:tf.concat(values,axis,name='concat'):按照指定的已经存在的轴进行拼接tf.stack
参考https://github.com/tensorflow/models/tree/master/slim使用TensorFlow-Slim进行图像分类准备
在学习tensorflow的过程中,有一个问题,tensorflow在训练的过程中读取的是二进制图像数据库文件,而不是图像文件,因此在进行训练、测试之前需要将图
本文实例为大家分享了OpenCV实现拼接图像的具体方法,供大家参考,具体内容如下用iphone拍摄的两幅图像:拼接后的图像:相关代码如下://读取图像Matle
tensorflow里面提供了实现图像进行裁剪和填充的函数,就是tf.image.resize_image_with_crop_or_pad(img,heigh