使用RetinaNet TPU进行预测

时间:2019-04-24 00:06:21

标签: python tensorflow machine-learning google-cloud-platform retinanet

我们可能会完全忽略某些内容,但是我的团队目前正在尝试使用RetinaNet TPU implementation on GCP进行训练和做出预测。但是,由于我们不知道如何解释输出形状,因此我们一直试图仅对未标记的图像进行预测。

我们已经在云上对模型进行了训练,以获取导出的saved_model.pb和变量,并确保根据数据大小和类数进行调整。然后,仔细观察saved_model.pb,我们可以看到如下所示的输出形状:

model_dir = <PATH_TO_SAVED_MODEL>

with tf.Session() as sess:
     graph = tf.Graph()
     with graph.as_default():
         metagraph = tf.saved_model.loader.load(sess, [tag_constants.SERVING],model_dir)
     outputs_mapping = dict(metagraph.signature_def['serving_default'].outputs)
     print (outputs_mapping)

使用我们的数据的9个类,我们可以获得以下输出和形状:

{'cls_outputs_3': name: "retinanet/class_net/class-predict/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 80
  }
  dim {
    size: 80
  }
  dim {
    size: 81
  }
}
, 'cls_outputs_4': name: "retinanet/class_net/class-predict_1/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 40
  }
  dim {
    size: 40
  }
  dim {
    size: 81
  }
}
, 'cls_outputs_5': name: "retinanet/class_net/class-predict_2/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 20
  }
  dim {
    size: 20
  }
  dim {
    size: 81
  }
}
, 'box_outputs_3': name: "retinanet/box_net/box-predict/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 80
  }
  dim {
    size: 80
  }
  dim {
    size: 36
  }
}
, 'cls_outputs_6': name: "retinanet/class_net/class-predict_3/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 10
  }
  dim {
    size: 10
  }
  dim {
    size: 81
  }
}
, 'box_outputs_4': name: "retinanet/box_net/box-predict_1/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 40
  }
  dim {
    size: 40
  }
  dim {
    size: 36
  }
}
, 'cls_outputs_7': name: "retinanet/class_net/class-predict_4/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5
  }
  dim {
    size: 5
  }
  dim {
    size: 81
  }
}
, 'box_outputs_5': name: "retinanet/box_net/box-predict_2/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 20
  }
  dim {
    size: 20
  }
  dim {
    size: 36
  }
}
, 'box_outputs_6': name: "retinanet/box_net/box-predict_3/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 10
  }
  dim {
    size: 10
  }
  dim {
    size: 36
  }
}
, 'box_outputs_7': name: "retinanet/box_net/box-predict_4/BiasAdd:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5
  }
  dim {
    size: 5
  }
  dim {
    size: 36
  }
}
, 'cls_outputs_all': name: "map_1/TensorArrayStack_2/TensorArrayGatherV3:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5000
  }
}
, 'indices_all': name: "map_1/TensorArrayStack/TensorArrayGatherV3:0"
dtype: DT_INT32
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5000
  }
}
, 'image': name: "Reshape:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 640
  }
  dim {
    size: 640
  }
  dim {
    size: 3
  }
}
, 'box_outputs_all': name: "map_1/TensorArrayStack_3/TensorArrayGatherV3:0"
dtype: DT_FLOAT
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5000
  }
  dim {
    size: 4
  }
}
, 'classes_all': name: "map_1/TensorArrayStack_1/TensorArrayGatherV3:0"
dtype: DT_INT32
tensor_shape {
  dim {
    size: -1
  }
  dim {
    size: 5000
  }
}
}

我们可以通过模型运行图像以成功获取输出,但是随后我们不知道如何处理输出。这些形状似乎都不完全符合我们的数据。使用GCP's deployment method进行预测对我们也不起作用。它并没有告诉我们什么地方出了问题,但是它只是坐着,什么也不做。

我们还阅读了focal loss paper,以期了解形状。虽然它给了我们一些见识,但实际上对权重的解释和使用仍然在逃避我们。我们都是在机器学习和神经网络方面有一定经验的学生,但是没有使用该特定模型或类似模型的经验。由于缺少在线帮助,似乎也很少有人有使用它的经验。

对于使用RetinaNet进行运行预测的任何见解或帮助,将不胜感激。

0 个答案:

没有答案