在自定义数据问题上训练 MaskRCNN

Training MaskRCNN on custom data issue

我正在尝试在平面图的自定义数据集上训练 Mask RCNN。我在 Medium 上关注这篇文章来做到这一点:https://medium.com/analytics-vidhya/a-simple-guide-to-maskrcnn-custom-dataset-implementation-27f7eab381f2 .

在遇到注释格式和包的一些问题后,我开始训练模型。但是,我偶然发现了以下错误代码:

Traceback (most recent call last):
  File "custom.py", line 391, in <module>
    train(model)
  File "custom.py", line 222, in train
    layers='heads')
  File "C:...\Custom_MaskRCNN-master\mrcnn\model.py", line 2356, in train
    self.compile(learning_rate, self.config.LEARNING_MOMENTUM)
  File "C:...\Custom_MaskRCNN-master\mrcnn\model.py", line 2201, in compile
    self.keras_model.add_metric(loss, name)
AttributeError: 'Model' object has no attribute 'add_metric'

我找不到关于此错误的任何信息,希望有人能提供帮助或指示我如何解决此问题。

正如我们所见,需求文件没有指定确切的 TF 和 Keras 版本,只是指定了一个下限。

#requirements.txt
numpy
scipy
Pillow
cython
matplotlib
scikit-image
tensorflow>=1.3.0
keras>=2.0.8
opencv-python
h5py
imgaug
IPython[all]

创建环境时,会安装最新版本的 TensorFlow 和 Keras。 'add_metric' 方法可能已弃用或移至已安装的最新版本中的另一个 class,因为这些框架已进行主要版本更新。请注意,与本文相关的 repo 的作者在过去两年内没有更新过它。即使是这个 repo 所基于的原始 repo 的作者,也还没有更新它(原始 repo:https://github.com/matterport/Mask_RCNN)。一旦解决当前错误,您很可能会遇到更多错误。

解决这个问题的一种方法是降级 TF 和 Keras 版本(tensorflow 到 1.3.0,keras 到 2.0.8 可能会解决)。

最好的做法是使用 TensorFlow 提供的官方转换工具移植代码,将 TF1.x 代码转换为 TF2.x 或使用代码已经在其中的 repo已转换。

具有更新的 TF 和 Keras 的 MaskRCNN 回购:https://github.com/ahmedfgad/Mask-RCNN-TF2

希望对您有所帮助!干杯:)

按如下方式更改该行,

发件人:

self.keras_model.add_metric(loss, name)

收件人:

self.keras_model.metrics_tensors.append(loss)