缩小轴1的形状为空[x,0]

时间:2017-07-09 11:03:09

标签: tensorflow object-detection

我正在尝试训练SVHN(街景房号)数据集,以便在tensorflow中进行对象检测(对数字进行一些基本的OCR)。 到目前为止,我已经成功地遵循了物体检测 - 张量流指南中的宠物训练示例。 当我根据示例faster_rcnn_resnet101.config训练网络时,经过几十步后我得到了:

    INFO:tensorflow:Error reported to Coordinator: 
<class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, 
Reduction axis 1 is empty in shape [3,0]
[[Node: Loss/RPNLoss/Match/cond/ArgMax_1 = ArgMax[T=DT_FLOAT, Tidx=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"]
(Loss/RPNLoss/Match/cond/ArgMax/Switch:1, 
Loss/RPNLoss/Match/cond/ArgMax_1/dimension)]]

我不知道要改变或改进什么。 以前有人见过这个吗? 这里出了什么问题? 它只是一个错误的配置设置? 我改变的唯一参数(除了path-info)是num_classes:10(10位)

感谢任何提示。

我的标签图如下所示:

item {
  id: 0
  name: 'none_of_the_above'
}

item {
  id: 1
  name: '1'
}

item {
  id: 2
  name: '2'
}
... with id: 10 being '0'

在这里假设https://github.com/tensorflow/models/blob/master/object_detection/g3doc/running_pets.md 我使用了预训练的COCO模型faster_rcnn_resnet101以及来自的配置文件: https://github.com/tensorflow/models/blob/master/object_detection/samples/configs/faster_rcnn_resnet101_pets.config 我改编的唯一内容是路径和:

faster_rcnn {
    num_classes: 11
    image_resizer {
      keep_aspect_ratio_resizer {
        min_dimension: 64
        max_dimension: 900
      }
    }

由于来自SVHN的图像相当小,我在这里调整了尺寸并删除了高度或宽度小于64像素的所有图像。 到目前为止,我没有注意清除培训目录。但我现在尝试了,同样的错误发生了。 我正在尝试使用预训练的初始模型,也许这可以解决。

5 个答案:

答案 0 :(得分:0)

当提案数为0时使用ArgMaxMatcher类时会发生这种情况。

如果在这里修改了问题的PR:https://github.com/tensorflow/models/pull/1986

答案 1 :(得分:0)

随着问题消失,当我正确地进行训练时,我会发布这个解决方案......可能是,其他人和我一样“愚蠢”。 正如宠物教程中提出的,我下载了一个预训练模型。 但是我将training-directory的路径设置为下载的预训练模型所在的目录。 我认为这导致了错误。

答案 2 :(得分:0)

我不确定是什么引起了您的错误,但您不应在标签图中使用索引0,因为它是占位符索引。所有索引应从1开始。

请参阅:https://github.com/tensorflow/models/issues/1696

答案 3 :(得分:0)

您需要在“ keep_aspect_ratio_resizer”部分中设置参数“ pad_to_max_dimension” = true。它对我有用

答案 4 :(得分:0)

您来自数据集的图像大小与您用于训练的模型大小不匹配。 例如:如果您使用模式 mask_rcnn_inception_v2_coco_2018_01_28 那么您的数据集的图像大小必须在范围内[800: 1365]