我试图使用TensorFlow复制完全卷积网络(FCN)的语义分段结果。
我坚持将训练图像输入到计算图中。完全卷积网络使用VOC PASCAL数据集进行培训。但是,数据集中的训练图像具有不同的大小。
我只想询问他们是否预处理了训练图像,使它们具有相同的大小以及它们如何预处理图像。如果没有,他们只是将不同大小的批量图像送入FCN吗?是否可以将一批中不同尺寸的图像输入TensorFlow中的计算图?是否可以使用队列输入而不是占位符来实现?
答案 0 :(得分:2)
无法将不同大小的图像输入到单个输入批次中。每个批次都可能有不确定数量的样本(通常是批量大小,下面标有None
),但每个样本必须具有相同的尺寸。
当你训练一个完全卷积网络时,你必须训练它,就像一个网络,最后有完全连接的层。 因此,输入批次中的每个输入图像必须具有相同的宽度,高度和深度。调整它们的大小。
唯一的区别是,当完全连接的层为输入批处理中的每个样本输出单个输出向量(形状[None, num_classes]
)时,完全卷积输出类的概率图。
在训练期间,当输入图像尺寸等于网络输入尺寸时,输出将是形状为[None, 1, 1, num_classes]
的概率图。
您可以使用tf.squeeze
从输出张量中删除尺寸1的尺寸,然后计算损耗和精度,就像使用完全连接的网络一样。
在测试时,当您输入尺寸大于输入的网络图像时,输出将是大小为[None, n, n, num_classes]
的概率图。
答案 1 :(得分:0)