Python 掩码R-cnn/UnboundLocalError:局部变量';图像id';分配前参考

Python 掩码R-cnn/UnboundLocalError:局部变量';图像id';分配前参考,python,google-colaboratory,mask,faster-rcnn,Python,Google Colaboratory,Mask,Faster Rcnn,我一直在尝试在Google Colab上的一个小型定制数据集(图像+.json多边形数据,转换为二进制掩码)上运行Mask R-CNN(脚本是使用github上的Mask R-CNN/Matterport repo的不同教程的混合)。在训练头部之前,一切正常-模型运行到第一个历元,然后抛出“UnboundLocalError:赋值前引用的局部变量‘image_id’”(错误附加)/数据生成器-zeroDivisionError 在代码中出现的位置: 错误代码: Starting at epoc

我一直在尝试在Google Colab上的一个小型定制数据集(图像+.json多边形数据,转换为二进制掩码)上运行Mask R-CNN(脚本是使用github上的Mask R-CNN/Matterport repo的不同教程的混合)。在训练头部之前,一切正常-模型运行到第一个历元,然后抛出“UnboundLocalError:赋值前引用的局部变量‘image_id’”(错误附加)/数据生成器-zeroDivisionError

在代码中出现的位置:

错误代码:

Starting at epoch 0. LR=0.001

Checkpoint Path: logs/pipes20200225T2257/mask_rcnn_pipes_{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)
In model:  rpn_model
    rpn_conv_shared        (Conv2D)
    rpn_class_raw          (Conv2D)
    rpn_bbox_pred          (Conv2D)
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.6/dist-packages/tensorflow/python/ops/gradients_impl.py:110: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.
  "Converting sparse IndexedSlices to a dense Tensor of unknown shape. "
/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py:49: UserWarning: Using a generator with `use_multiprocessing=True` and multiple workers may duplicate your data. Please consider using the `keras.utils.Sequence class.
  UserWarning('Using a generator with `use_multiprocessing=True`'
Epoch 1/10
---------------------------------------------------------------------------
RemoteTraceback                           Traceback (most recent call last)
RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/mrcnn/model.py", line 1695, in data_generator
    image_index = (image_index + 1) % len(image_ids)
ZeroDivisionError: integer division or modulo by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/usr/local/lib/python3.6/dist-packages/keras/utils/data_utils.py", line 641, in next_sample
    return six.next(_SHARED_SEQUENCES[uid])
  File "/usr/local/lib/python3.6/dist-packages/mrcnn/model.py", line 1805, in data_generator
    dataset.image_info[image_id]))
UnboundLocalError: local variable 'image_id' referenced before assignment
"""

The above exception was the direct cause of the following exception:

UnboundLocalError                         Traceback (most recent call last)
<ipython-input-21-0da65da78eb9> in <module>()
----> 1 model.train(dataset_train, dataset_val, epochs=10,layers="heads", learning_rate=config.LEARNING_RATE)

10 frames
/usr/local/lib/python3.6/dist-packages/mrcnn/model.py in data_generator()
   1803             # Log it and skip the image
   1804             logging.exception("Error processing image {}".format(
-> 1805                 dataset.image_info[image_id]))
   1806             error_count += 1
   1807             if error_count > 5:

UnboundLocalError: local variable 'image_id' referenced before assignment
从历元0开始。LR=0.001
检查点路径:logs/pipes20200225T2257/mask_rcnn_pipes_u{epoch:04d}.h5
选择要训练的层
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_模型
rpn_conv_共享(Conv2D)
rpn_类_原始(Conv2D)
rpn_bbox_pred(Conv2D)
mrcnn\u mask\u conv1(时间分布)
mrcnn_mask_bn1(时间分布)
mrcnn\u mask\u conv2(时间分布)
mrcnn_掩码_bn2(时间分布)
mrcnn_类_conv1(时间分布)
mrcnn_类_bn1(时间分布)
mrcnn\u mask\u conv3(时间分布)
mrcnn_mask_bn3(时间分布)
mrcnn_类_conv2(时间分布)
mrcnn_类_bn2(时间分布)
mrcnn\u mask\u conv4(时间分布)
mrcnn_掩码_bn4(时间分布)
mrcnn_bbox_fc(时间分布)
mrcnn\u mask\u deconv(时间分布)
mrcnn\u类\u登录(时间分布)
mrcnn_掩码(时间分布)
/usr/local/lib/python3.6/dist packages/tensorflow/python/ops/gradients_impl.py:110:UserWarning:将稀疏索引转换为未知形状的密集张量。这可能会消耗大量内存。
“将稀疏索引转换为未知形状的稠密张量。”
/usr/local/lib/python3.6/dist-packages/keras/engine/training\u-generator.py:49:UserWarning:使用带有“use\u multiprocessing=True”的生成器和多个辅助进程可能会复制您的数据。请考虑使用“Kalas.UTILS.Stand类”。
UserWarning('使用带有'use\u multiprocessing=True'的生成器'
纪元1/10
---------------------------------------------------------------------------
远程回溯回溯(最近一次呼叫最后一次)
远程回溯:
"""
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist packages/mrcnn/model.py”,第1695行,在数据生成器中
图像索引=(图像索引+1)%len(图像ID)
ZeroDivisionError:整数除法或模零除法
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
worker中的文件“/usr/lib/python3.6/multiprocessing/pool.py”,第119行
结果=(True,func(*args,**kwds))
文件“/usr/local/lib/python3.6/dist packages/keras/utils/data\u utils.py”,第641行,在下一个示例中
返回六个。下一个(\u共享\u序列[uid])
文件“/usr/local/lib/python3.6/dist packages/mrcnn/model.py”,第1805行,在数据生成器中
dataset.image\u info[image\u id]))
UnboundLocalError:赋值前引用的局部变量“image\u id”
"""
上述异常是以下异常的直接原因:
取消绑定LocalError回溯(最近一次调用上次)
在()
---->1模型训练(数据集训练,数据集检验,历代=10,层=“头”,学习率=配置学习率)
10帧
/数据生成器()中的usr/local/lib/python3.6/dist-packages/mrcnn/model.py
1803#记录并跳过图像
1804 logging.exception(“错误处理图像{}”。格式(
->1805数据集。图像信息[图像id]))
1806错误计数+=1
1807如果错误计数>5:
UnboundLocalError:赋值前引用的局部变量“image\u id”

我已经检查了.json文件,它不是空的,数据似乎加载正确

我不确定这是否与代码中的设置有关,或者是否与mrcnn库有关。任何关于如何解决这个问题的建议都会非常有用

我在这里分享Colab笔记本以供参考: