应用一些工具将Keras / Retinanet模型(.h5)转换为Tensorflow模型(.pb)之后,我遇到了一些问题。当我对图像运行Keras / Retinanet模型时: 盒子,分数,标签= model.predict_on_batch(np.expand_dims(image,axis = 0)) 框,分数和标签将填充预期的结果。仅作为参考,该模型还给了我9个检测到的对象。
对于Tensorflow / Retinanet模型,情况完全不同。
回归,分类= sess.run([tf_classification,tf_regression],feed_dict = {tf_input:image})
filter_detections_layer = keras_retinanet.layers.FilterDetections(nms=True)
boxes, scores, labels = filter_detections_layer.call([regression, classification])
“回归”和“分类”的格式均正确:
Tensor("classification/concat:0", shape=(?, ?, 3), dtype=float32)
Tensor("regression/concat:0", shape=(?, ?, 4), dtype=float32)
但是,在应用“ FilterDetections”之后,框,分数和标签将填充约240个对象,并且边框具有奇怪的格式
[[ 0.00330357 -0.50109524 -0.46569705 0.5642642 ]
[ 0.00824136 -1.2870306 -0.4677258 -0.2555487 ]
[ 0.5877216 -1.5296552 0.06298425 -0.5602327 ]
...
对于与Keras / Retinanet模型相同的图像,边界框为:
[[827.52124 229.86569 880.2724 363.2836 ]
[ 19.23209 294.3282 102.16435 346.58243]
[550.0928 279.2105 586.58453 318.4497 ]
...
好像我已经错过了一些东西。我已经研究了keras-retinanet代码几天了,但是到目前为止,我仍然受困。知道我的逻辑或代码有什么问题吗?