【问题标题】:Matterport's mask rcnn doesn't train after setting up parameters设置参数后,Matterport 的 mask rcnn 不训练
【发布时间】:2022-04-25 03:10:11
【问题描述】:

任务:Mask RCNN train_shapes.ipynb 教程。训练在人工生成的形状数据集中分割不同的形状。

问题:Matterport 的 Mask RCNN 实现不适用于此笔记本。

我尝试过的方法:

  1. 解决了由于导入文件(即配置、模型、实用程序)导致的所有类和包错误。
  2. 解决了由于代码弃用导致的 TF2.x 错误。

我设置的参数:

Configurations:
BACKBONE                       resnet101
BACKBONE_STRIDES               [4, 8, 16, 32, 64]
BATCH_SIZE                     1
BBOX_STD_DEV                   [0.1 0.1 0.2 0.2]
COMPUTE_BACKBONE_SHAPE         None
DETECTION_MAX_INSTANCES        100
DETECTION_MIN_CONFIDENCE       0.7
DETECTION_NMS_THRESHOLD        0.3
FPN_CLASSIF_FC_LAYERS_SIZE     1024
GPU_COUNT                      1
GRADIENT_CLIP_NORM             5.0
IMAGES_PER_GPU                 1
IMAGE_CHANNEL_COUNT            3
IMAGE_MAX_DIM                  128
IMAGE_META_SIZE                16
IMAGE_MIN_DIM                  128
IMAGE_MIN_SCALE                0
IMAGE_RESIZE_MODE              square
IMAGE_SHAPE                    [128 128   3]
LEARNING_MOMENTUM              0.9
LEARNING_RATE                  0.001
LOSS_WEIGHTS                   {'rpn_class_loss': 1.0, 'rpn_bbox_loss': 1.0, 'mrcnn_class_loss': 1.0, 'mrcnn_bbox_loss': 1.0, 'mrcnn_mask_loss': 1.0}
MASK_POOL_SIZE                 14
MASK_SHAPE                     [28, 28]
MAX_GT_INSTANCES               100
MEAN_PIXEL                     [123.7 116.8 103.9]
MINI_MASK_SHAPE                (56, 56)
NAME                           shapes
NUM_CLASSES                    4
POOL_SIZE                      7
POST_NMS_ROIS_INFERENCE        1000
POST_NMS_ROIS_TRAINING         2000
PRE_NMS_LIMIT                  6000
ROI_POSITIVE_RATIO             0.33
RPN_ANCHOR_RATIOS              [0.5, 1, 2]
RPN_ANCHOR_SCALES              (8, 16, 32, 64, 128)
RPN_ANCHOR_STRIDE              1
RPN_BBOX_STD_DEV               [0.1 0.1 0.2 0.2]
RPN_NMS_THRESHOLD              0.7
RPN_TRAIN_ANCHORS_PER_IMAGE    256
STEPS_PER_EPOCH                5
TOP_DOWN_PYRAMID_SIZE          256
TRAIN_BN                       False
TRAIN_ROIS_PER_IMAGE           5
USE_MINI_MASK                  False
USE_RPN_ROIS                   True
VALIDATION_STEPS               5
WEIGHT_DECAY                   0.0001

实现细节:

  1. 我正在使用 coco 权重来初始化我的模型。
  2. 模型处于训练模式。
  3. 首先培训负责人。
  4. 纪元 = 1
  5. 学习率 = 0.001

输出:


Starting at epoch 0. LR=0.001

Checkpoint Path: /logs/shapes20211123T0437/mask_rcnn_shapes_{epoch:04d}.h5
Selecting layers to train
fpn_c5p5               (Conv2D)
fpn_c4p4               (Conv2D)
fpn_c3p3               (Conv2D)
fpn_c2p2               (Conv2D)
fpn_p5                 (Conv2D)
fpn_p2                 (Conv2D)
fpn_p3                 (Conv2D)
fpn_p4                 (Conv2D)
rpn_model              (Functional)
mrcnn_mask_conv1       (TimeDistributed)
mrcnn_mask_bn1         (TimeDistributed)
mrcnn_mask_conv2       (TimeDistributed)
mrcnn_mask_bn2         (TimeDistributed)
mrcnn_class_conv1      (TimeDistributed)
mrcnn_class_bn1        (TimeDistributed)
mrcnn_mask_conv3       (TimeDistributed)
mrcnn_mask_bn3         (TimeDistributed)
mrcnn_class_conv2      (TimeDistributed)
mrcnn_class_bn2        (TimeDistributed)
mrcnn_mask_conv4       (TimeDistributed)
mrcnn_mask_bn4         (TimeDistributed)
mrcnn_bbox_fc          (TimeDistributed)
mrcnn_mask_deconv      (TimeDistributed)
mrcnn_class_logits     (TimeDistributed)
mrcnn_mask             (TimeDistributed)

/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/gradient_descent.py:102: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  super(SGD, self).__init__(name, **kwargs)
  • 这是我唯一能看到的。并且没有epoch run的进度条。这在 2-3 小时内保持不变。
  • 后来我发现this 个人也完成了代码清理工作。所以我也尝试了他的“.py”文件,结果还是一样。

系统硬件规格:

  1. 英特尔至强 12 CPU
  2. 25GB 内存
  3. 64GB 存储空间。
  4. Ubuntu 20.04 桌面。在公司内部服务器上运行的虚拟机。

软件规格:

  1. Anaconda 最新版本
  2. TF 2.7.0
  3. Keras 2.4

问题:

  1. 为什么培训 3 小时后仍未开始?
  2. 我的配置是否有错误?
  3. 我的系统够用吗?
  4. 实施是否正确?
  5. 应该进行哪些更改才能完成这项工作?

笔记本:Colab notebook

【问题讨论】:

    标签: python tensorflow keras faster-rcnn matterport


    【解决方案1】:

    培训挂起,这实际上是一个已知问题。修复很简单: 在 model.py 文件中找到 fit 函数(应该在 TF2 项目的第 2360-2370 行附近),并将“workers”参数设置为 1,将“use_multiprocessing”参数设置为 False。

    【讨论】:

      【解决方案2】:

      试试这个:

      1- 在 (mrcnn) 文件夹中打开文件 (model.py)。

      2- 更改第 2362 行 来自:

      workers = multiprocessing.cpu_count()
      

      到:

      workers = 1
      

      3- 更改第 2374 行 来自:

      use_multiprocessing=True,
      

      到:

      use_multiprocessing=False,
      

      或者您可以尝试在我已经进行了这些更改的地方使用这个 fork。 https://github.com/manasrda/Mask_RCNN 这为我解决了一个类似的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        • 2019-11-17
        • 2020-07-25
        • 1970-01-01
        • 2020-03-31
        • 2022-06-23
        • 2020-12-05
        相关资源
        最近更新 更多