Win10下Mask RCNN环境配置+踩坑说明,成功运行demo.py

Win10环境下配置Mask RCNN,通过修改model.py文件调通源码,成功运行demo.ipynb

Win10下Mask RCNN环境配置,笔者配置了整整一周,期间从tensorflow1.3版本换到2.5版本都没有成功,最后通过一定的代码修改终于跑通demo.py,于是泪水中带着喜悦写下这篇博客,希望大家少走点弯路,该配置流程在tensorflow1.3-2.5版本下均可,具体过程如下

1、版本信息

自己调试了tensorflow1.0和2.0版本,均已实现,版本影响不大,一些博客说,tensorflow版本必须小于2.0,不存在,以下跟着我的流程,让你驾驭任何版本。

Tensorflow==1.12.0
Keras==2.2.4
或者
Tensorflow==2.3.0
Keras==2.4.3

2、下载代码

项目源代码地址:https://github.com/matterport/Mask_RCNN

3、下载COCO数据集预训练模型

在COCO数据集上预训练权重(mask_rcnn_coco.h5),下载地址:https://github.com/matterport/Mask_RCNN/releases

4、安装pycocotools

在COCO数据集上训练或者是测试,需要安装pycocotools,clone下COCO放在anaconda文件夹,地址:https://github.com/philferriere/cocoapi;
1)接下来进入coco文件夹下的PythonAPI目录:cd coco/PythonAPI;
2)输入:python setup.py build_ext --inplace 进行编译;
3)产生错误,直接删掉setup.py中Wno-cpp和Wno-unused-function参数;
4)再输一次python setup.py build_ext --inplace重新编译;
5)接着输入python setup.py build_ext install 进行编译。

以下是在运行demo.ipynb中出现的错误,以及解决方法

5、AttributeError: module ‘tensorflow’ has no attribute ‘log’;

解决方案参考:https://github.com/keras-team/keras/issues/13960
修改model.py源码,修改内容如下

From:
return tf.log(x) / tf.log(2.0)
To:
return tf.math.log(x) / tf.math.log(2.0)

6、ValueError: Tried to convert ‘shape’ to a tensor and failed. Error: None values not supported.

解决方案参考:https://github.com/matterport/Mask_RCNN/issues/1820
修改model.py原代码,这里要修改两句,分别如下

mrcnn_bbox = KL.Reshape((s[1], num_classes, 4), name="mrcnn_bbox")(x)
to:
mrcnn_bbox = KL.Reshape((-1, num_classes, 4), name="mrcnn_bbox")(x)

indices = tf.stack([tf.range(probs.shape[0]), class_ids], axis=1)
to:
indices = tf.stack([tf.range(tf.shape(probs)[0]), class_ids], axis = 1)

7、AttributeError: module ‘tensorflow._api.v2.sets’ has no attribute ‘set_intersection’

解决方案参考:https://github.com/tensorflow/tensorflow/issues/43982
修改model.py如下

import tensorflow as tf
to:
import tensorflow.compat.v1 as tf

8、AttributeError: module ‘keras.engine.saving’ has no attribute ‘load_weights_from_hdf5_group_by_name’

解决方案参考https://github.com/matterport/Mask_RCNN/issues/2252
修改源码如下

2129: if by_name:
2130: saving.load_weights_from_hdf5_group_by_name(f, layers)
2131: else:
2132: saving.load_weights_from_hdf5_group(f, layers)
modified to
keras_model.load_weights(filepath, by_name=by_name)

9、Unable to open file (truncated file: eof = 7340032, sblock->base_addr = 0, stored_eof = 126651688)

解决方案参考:
https://*.com/questions/58606029/unable-to-open-file-truncated-file-eof-7340032-sblock-base-addr-0-store
模型下载不完整,重新下载预训练模型。

10、运行成功,赶紧随手拍张照片测试一下

Win10下Mask RCNN环境配置+踩坑说明,成功运行demo.py

上一篇:Netty的ChannelPipline传播源码解析


下一篇:NLP预训练发展小结二(Bert之后)