Mask R-CNN兼容Tensorflow2.0

227 阅读1分钟

概述

本篇博客主要介绍如何让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)

完整例子

可以下载完整例子查看全部更改