概述
本篇博客主要介绍如何让Mask R-CNN兼容Tensorflow 2.0
KE.Layer不存在
将model.py
中的KE.Layer
都换成KL.Layer
tf.log() 不存在
将model.py
中的tf.log()
都换成tf.math.log()
mrcnn_bbox的crash
model.py
文件中
mrcnn_bbox = layers.Reshape((s[1], num_classes, 4), name="mrcnn_bbox")(x)
更改为
if s[1] == None:
mrcnn_bbox = KL.Reshape((-1, num_classes, 4), name="mrcnn_bbox")(x)
else:
mrcnn_bbox = KL.Reshape((s[1], num_classes, 4), name="mrcnn_bbox")(x)
indices = tf.stack([tf.range(probs.shape[0]), class_ids], axis=1)
更改为
indices = tf.stack([tf.range(tf.shape(probs)[0]), class_ids], axis=1)
set_intersection 不存在
将model.py
中所有的tf.sets.set_intersection
更改为tf.sets.intersection
tf.sparse_tensor_to_dense 不存在
将model.py
中所有的tf.sparse_tensor_to_dense
更改为tf.sparse.to_dense
tf.to_float() 不存在
将model.py
中所有的tf.to_float()
更改为tf.cast([value], tf.float32)
load_weights_from_hdf5_group_by_name 不存在
saving.load_weights_from_hdf5_group_by_name(f, layers)
更改为
from tensorflow.python.keras.saving import hdf5_formats
hdf5_format.load_weights_from_hdf5_group_by_name(f, layers)
完整例子
可以下载完整例子查看全部更改