【问题标题】:Fully Convolutional Network Training Image Size全卷积网络训练图像大小
【发布时间】:2016-12-27 07:04:09
【问题描述】:

我正在尝试使用 TensorFlow 复制用于语义分割的全卷积网络 (FCN) 的结果。

我一直坚持将训练图像输入计算图中。全卷积网络使用 VOC PASCAL 数据集进行训练。然而,数据集中的训练图像大小不一。

我只想问他们是否对训练图像进行了预处理以使它们具有相同的大小,以及他们是如何预处理图像的。如果不是,他们是否只是将不同大小的批量图像输入 FCN?是否可以将一批不同大小的图像输入 TensorFlow 中的计算图?是否可以使用队列输入而不是占位符来做到这一点?

【问题讨论】:

  • 喂不同尺寸的图片有什么问题?
  • 如何在tensorflow中将不同尺寸的图片放在一批中?你的意思是 FCN 使用不同尺寸的图像进行训练吗?他们是否使用了批量训练?

标签: machine-learning computer-vision tensorflow deep-learning caffe


【解决方案1】:

无法将不同大小的图像输入单个输入批次。每个批次可以有不确定数量的样本(通常是批次大小,下面用None 注明),但每个样本必须具有相同的尺寸。

当您训练一个全卷积网络时,您必须像在末端具有全连接层的网络一样对其进行训练。 因此,输入批次中的每个输入图像必须具有相同的宽度、高度和深度。调整它们的大小。

唯一的区别是,虽然全连接层为输入批次中的每个样本(形状 [None, num_classes])输出单个输出向量,但全卷积层输出类的概率图。

在训练过程中,当输入图像尺寸等于网络输入尺寸时,输出将是形状为[None, 1, 1, num_classes]的概率图。

您可以使用 tf.squeeze 从输出张量中移除大小为 1 的维度,然后像使用全连接网络一样计算损失和准确率。

在测试时,当您输入尺寸大于输入的网络图像时,输出将是大小为[None, n, n, num_classes] 的概率图。

【讨论】:

  • 您想详细说明使用 tf.squeeze 可以消除对固定图像大小的限制吗?
  • FCNN 输出一个形状为 [n, n, num_classes] 的地图(忽略批量大小并考虑输入为正方形)。如果输入图像的空间范围(宽度和高度)与网络预期的(其感受野宽度和高度)相同,则输出是一个概率向量,形状为 [1,1,num_classes]。 tf.squeeze 从张量中删除1 维度,因此您可以从形状为[1,1,num_classes] 的张量转到形状为[num_classes] 的张量。仅当输出具有 1 个维度时才有可能,否则您无法删除它们
【解决方案2】:
  1. 您可以使用批量大小 = 1
  2. 您可以将图像大小调整为固定大小,例如 256,256
  3. 您可以将每个批次的大小调整为其内容的中间图像大小。

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2018-05-01
    • 2018-10-07
    • 2020-10-03
    相关资源
    最近更新 更多