
在使用MatterPort Mask RCNN时遇到module 'keras.engine' has no attribute 'Layer'错误?这是因为代码使用了过时的Keras版本。 keras.engine.Layer在旧版Keras中可用,但在新版中已移至tensorflow.keras.layers。
解决方法:
方法一:创建虚拟环境并安装兼容的Keras版本
-
创建虚拟环境: 使用
venv或conda创建独立的虚拟环境,避免与系统其他项目冲突。 -
安装兼容Keras版本: 查阅MatterPort Mask RCNN的文档或GitHub仓库,找到其兼容的Keras版本(例如
keras==2.4.3,请根据实际情况替换版本号),并使用pip install keras==安装。 同时,确保TensorFlow版本与Keras兼容。
方法二:修改mrcnn.model.py文件
如果方法一无效,则需要修改代码:
-
导入TensorFlow.keras: 在
mrcnn.model.py文件开头添加import tensorflow.keras as tf。 -
修改
ProposalLayer类: 找到class ProposalLayer(KE.Layer):这一行,将KE.Layer替换为tf.keras.layers.Layer。
重要提示:
- 在修改源代码前务必备份原文件。
- 确保TensorFlow和Keras安装正确且版本兼容。 不兼容的版本可能会导致其他问题。
- 如果问题仍然存在,请仔细检查TensorFlow和Keras的安装,并确认已正确导入
tensorflow.keras。
通过以上步骤,应该可以解决mrcnn.model模块报错的问题,顺利运行MatterPort Mask RCNN代码。










