我正在探索以下Mask R-CNN的示例代码: https://github.com/matterport/Mask_RCNN/tree/master/samples
但是,当我运行
demo.ipynb
文件时,下面的代码返回了一个错误,我不知道如何修复。
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)
错误内容如下。
NotImplementedError: Exception encountered when calling Lambda.call().
We could not automatically infer the shape of the Lambda's output. Please specify the `output_shape` argument for this Lambda layer.
Arguments received by Lambda.call():
• args=('\<KerasTensor shape=(None, 1000, 1, 1, 1024), dtype=float32, sparse=False, name=keras_tensor_3553\>',)
• kwargs={'mask': 'None'}
看来
fpn_classifier_graph
函数导致了错误,因为它无法识别Lambda的输出,需要指定正确的output_shape。
但是,我不知道如何修改代码...
ChatGPT 建议修改 Lambda 以显式指定 output_shape,如下所示,但这不起作用......
shared = KL.Lambda(lambda x: K.squeeze(K.squeeze(x, 3), 2),
name="pool_squeeze",
output_shape=lambda s: (s[0], s[1], s[3]))(x)
有同样的问题。将 keras 回滚到 2.9.0,将 Tensorflow 回滚到 2.9.1 为我解决了这个问题。