Mask RCNN 的预测无法正常工作

-3 machine-learning image-processing computer-vision image-segmentation deep-learning

我尝试在我的自定义数据集上实现基本的 Mask_RCNN 模型。我对图像做了一些增强。遵循 mask rcnn 的基本模式。我先训练系统​​,然后尝试测试。mAP 的结果始终为 0.0,预测结果如下所示。在此处输入图像描述我正在尝试识别汽车的分数,但这是最终结果。如果有人有任何建议,请帮助我。

小智 6

虽然在没有更多信息的情况下我不确定您的问题到底是什么,但我认为它与我在 tf-gpu 2.7 上使用 Matterport 存储库时遇到的问题类似。除了需要进行一系列其他更新来配置此存储库以在 tf2 上工作之外,您还必须修改权重的加载。

在 demo.ipynb 笔记本中,您将看到加载权重的代码,如下所示:

# Create model object in inference mode.
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)

# Load weights trained on MS-COCO
# model.load_weights(COCO_MODEL_PATH, by_name=True)
Run Code Online (Sandbox Code Playgroud)

要启用修复,请将上面的代码替换为以下内容:

from keras.backend import manual_variable_initialization 
manual_variable_initialization(True)

# Create model object in inference mode.
model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=config)

# Load weights trained on MS-COCO
# model.load_weights(COCO_MODEL_PATH, by_name=True)

import tensorflow.compat.v1 as tf

tf.keras.Model.load_weights(model.keras_model, COCO_MODEL_PATH, by_name=True)
Run Code Online (Sandbox Code Playgroud)

这应该使演示能够正常工作。根本问题是由于 Keras 中的权重初始化不准确,这是通过启用手动初始化来解决的。仅通过这样做,权重将无法使用 mrcnn.model.py 中的当前 load_weights 函数正确加载。因此,我们可以通过上述代码实现纯 Keras 权重加载来绕过它。

我希望这可以帮助别人!我花了几天时间才弄清楚这一点!