Mask RCNN 的预测无法正常工作
Posted
技术标签:
【中文标题】Mask RCNN 的预测无法正常工作【英文标题】:Predictions for Mask RCNN are not working correctly 【发布时间】:2021-12-28 05:04:56 【问题描述】:我尝试在我的自定义数据集上实现基本的 Mask_RCNN 模型。我对图像做了一些增强。遵循 mask rcnn 的基本模式。我先训练了系统,然后尝试测试。 mAp 的结果始终为 0.0,预测显示如下。enter image description here我正在尝试确定汽车的分数,但这是最终结果。 如果有人有任何建议,请帮助我。
【问题讨论】:
向我们展示代码。 @AdarshWase 我在我的数据集上使用了掩码 rcnn 的基本训练推理代码。 inference_config = InferenceConfig() model = modellib.MaskRCNN(mode="inference", model_dir = DEFAULT_LOGS_DIR, config=inference_config) # 加载训练权重 print("Loading weights from ", model_path) model.load_weights (model_path, by_name=True) image_id = random.choice(dataset_train.image_ids) original_image, image_meta, gt_class_id, gt_bbox, gt_mask =\ modellib.load_image_gt(dataset_train, inference_config, image_id, use_mini_mask=False) log("original_image", original_image) log("image_meta", image_meta) log("gt_class_id", gt_class_id) log("gt_bbox", gt_bbox) log("gt_mask", gt_mask) 可视化。 display_instances(original_image, gt_bbox, gt_mask, gt_class_id, dataset_train.class_names, figsize=(8, 8)) results = model.detect([original_image], verbose=1) r = results[0] visible.display_instances(original_image, r[ 'rois'], r['masks'], r['class_ids'], dataset_train.class_names, r['scores'], ax=get_ax()) 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:尽管没有更多信息我不确定您的问题到底是什么,但我认为这与我在 tf-gpu 2.7 上使用 matterport repo 时遇到的问题相似。除了您需要进行大量其他更新以配置此 repo 以在 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)
要启用修复,请将上面的代码替换为以下代码:
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)
这应该使演示能够正常工作。根本问题是由于 Keras 中的权重初始化不准确,这是通过启用手动初始化来处理的。仅仅这样做,权重将无法正确加载当前的 load_weights 函数,带有 mrcnn.model.py 因此,我们可以通过上面的代码实现一个纯 Keras 加载权重来绕过它。
我希望这对某人有帮助!我花了好几天才弄明白!
【讨论】:
没有针对您的回答的批评,看起来经过深思熟虑,但请避免回答此类低质量问题。 A good question 至少应包括 minimal reproducible example 和明确表达的错误条件。【参考方案2】:在使用 Mask RCNN 进行车辆检测时,我也遇到了类似的问题。这样做的结果非常糟糕。如果你已经解决了这个问题,请评论你是如何得到它的。 谢谢
【讨论】:
以上是关于Mask RCNN 的预测无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章