-
-
Save bmabir17/754a6e0450ec4fd5e25e462af949cde6 to your computer and use it in GitHub Desktop.
import tensorflow as tf | |
import numpy as np | |
import mrcnn.model as modellib # https://github.com/matterport/Mask_RCNN/ | |
from mrcnn.config import Config | |
import keras.backend as keras | |
PATH_TO_SAVE_FROZEN_PB ="./" | |
FROZEN_NAME ="saved_model.pb" | |
def load_model(Weights): | |
global model, graph | |
class InferenceConfig(Config): | |
NAME = "coco" | |
NUM_CLASSES = 1 + 80 | |
IMAGE_META_SIZE = 1 + 3 + 3 + 4 + 1 + NUM_CLASSES | |
DETECTION_MAX_INSTANCES = 100 | |
DETECTION_MIN_CONFIDENCE = 0.7 | |
DETECTION_NMS_THRESHOLD = 0.3 | |
GPU_COUNT = 1 | |
IMAGES_PER_GPU = 1 | |
config = InferenceConfig() | |
Weights = Weights | |
Logs = "./logs" | |
model = modellib.MaskRCNN(mode="inference", config=config, | |
model_dir=Logs) | |
model.load_weights(Weights, by_name=True) | |
graph = tf.get_default_graph() | |
# Reference https://github.com/bendangnuksung/mrcnn_serving_ready/blob/master/main.py | |
def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True): | |
graph = session.graph | |
with graph.as_default(): | |
freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or [])) | |
output_names = output_names or [] | |
input_graph_def = graph.as_graph_def() | |
if clear_devices: | |
for node in input_graph_def.node: | |
node.device = "" | |
frozen_graph = tf.graph_util.convert_variables_to_constants( | |
session, input_graph_def, output_names, freeze_var_names) | |
return frozen_graph | |
def freeze_model(model, name): | |
frozen_graph = freeze_session( | |
sess, | |
output_names=[out.op.name for out in model.outputs][:4]) | |
directory = PATH_TO_SAVE_FROZEN_PB | |
tf.train.write_graph(frozen_graph, directory, name , as_text=False) | |
def keras_to_tflite(in_weight_file, out_weight_file): | |
sess = tf.Session() | |
keras.set_session(sess) | |
load_model(in_weight_file) | |
global model | |
freeze_model(model.keras_model, FROZEN_NAME) | |
# https://github.com/matterport/Mask_RCNN/issues/2020#issuecomment-596449757 | |
input_arrays = ["input_image"] | |
output_arrays = ["mrcnn_class/Softmax","mrcnn_bbox/Reshape"] | |
converter = tf.contrib.lite.TocoConverter.from_frozen_graph( | |
PATH_TO_SAVE_FROZEN_PB+"/"+FROZEN_NAME, | |
input_arrays, output_arrays, | |
input_shapes={"input_image":[1,256,256,3]} | |
) | |
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,tf.lite.OpsSet.SELECT_TF_OPS] | |
converter.post_training_quantize = True | |
tflite_model = converter.convert() | |
open(out_weight_file, "wb").write(tflite_model) | |
print("*"*80) | |
print("Finished converting keras model to Frozen tflite") | |
print('PATH: ', out_weight_file) | |
print("*" * 80) | |
keras_to_tflite("./mask_rcnn_coco.h5","./mask_rcnn_coco.tflite") |
Layer names does not matter as they will run using their respective platform specification and the converter actually does that job of conversion. And batch normalization is not a custom computation layer, just have different naming convention in kears and tflite.
Yes, there are some ops that are not supported in tflite, that is why i used tf.lite.OpsSet.TFLITE_BUILTINS,tf.lite.OpsSet.SELECT_TF_OPS
on line #72 as suggested in this doc
Oh, okay. well, thank you for your explanation. I hope you will do it soon.
Best,
Ikram
I am getting below error when using your convert.py. Seems like input_graph_def.nodes is empty. Your thoughts will be valuable here.
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-57-9b6c22a16bff> in <module>()
11 #tflite_model = converter.convert()
12
---> 13 keras_to_tflite(model_path,"./mask_rcnn_coco.tflite")
14
15 img = load_img("..//..//..//drive//My Drive//sample-images//__HP__2YConfDAHT__1024x768.png")
7 frames
<ipython-input-56-597bc145a9d9> in keras_to_tflite(in_weight_file, out_weight_file)
51 load_model(in_weight_file)
52 global model
---> 53 freeze_model(model.keras_model, FROZEN_NAME,sess)
54 # https://github.com/matterport/Mask_RCNN/issues/2020#issuecomment-596449757
55 input_arrays = ["input_image"]
<ipython-input-56-597bc145a9d9> in freeze_model(model, name, sess)
41 frozen_graph = freeze_session(
42 sess,
---> 43 output_names=[out.op.name for out in model.outputs][:4])
44 directory = PATH_TO_SAVE_FROZEN_PB
45 tf.train.write_graph(frozen_graph, directory, name , as_text=False)
<ipython-input-56-597bc145a9d9> in freeze_session(session, keep_var_names, output_names, clear_devices)
35
36 frozen_graph = tf.compat.v1.graph_util.convert_variables_to_constants(
---> 37 session, input_graph_def, output_names, freeze_var_names)
38 return frozen_graph
39
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
322 'in a future version' if date is None else ('after %s' % date),
323 instructions)
--> 324 return func(*args, **kwargs)
325 return tf_decorator.make_decorator(
326 func, new_func, 'deprecated',
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/graph_util_impl.py in convert_variables_to_constants(sess, input_graph_def, output_node_names, variable_names_whitelist, variable_names_blacklist)
357 # This graph only includes the nodes needed to evaluate the output nodes, and
358 # removes unneeded nodes like those involved in saving and assignment.
--> 359 inference_graph = extract_sub_graph(input_graph_def, output_node_names)
360
361 # Identify the ops in the graph.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs)
322 'in a future version' if date is None else ('after %s' % date),
323 instructions)
--> 324 return func(*args, **kwargs)
325 return tf_decorator.make_decorator(
326 func, new_func, 'deprecated',
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/graph_util_impl.py in extract_sub_graph(graph_def, dest_nodes)
203 name_to_input_name, name_to_node, name_to_seq_num = _extract_graph_summary(
204 graph_def)
--> 205 _assert_nodes_are_present(name_to_node, dest_nodes)
206
207 nodes_to_keep = _bfs_for_reachable_nodes(dest_nodes, name_to_input_name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/graph_util_impl.py in _assert_nodes_are_present(name_to_node, nodes)
158 """Assert that nodes are present in the graph."""
159 for d in nodes:
--> 160 assert d in name_to_node, "%s is not in graph" % d
161
162
AssertionError: mrcnn_detection_3/Reshape_1 is not in graph_
are you using the same model weight provided in the mask_rcnn repo?
If not, can you inspect your model weights with https://lutzroeder.github.io/netron/ and check if it contains mrcnn_detection_3/Reshape_1
@bmabir17
Hi,
Hope you are doing well. Any progress on using it on Android Application?
I am still waiting for the tensorflow lite team to get the tf_ops running on tflite. They told me it would work with nightly build, but the error is still the same.
ValueError: Invalid tensors 'input_image' were found.
Any help with the above error?
I'm getting this error :( please help me..........................................
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
0 successful operations.
0 derived errors ignored.
During handling of the above exception, another exception occurred:
FailedPreconditionError Traceback (most recent call last)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/client/session.py in _do_call(self, fn, *args)
1382 '\nsession_config.graph_options.rewrite_options.'
1383 'disable_meta_optimizer = True')
-> 1384 raise type(e)(node_def, op, message)
1385
1386 def _extend_graph(self):
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
0 successful operations.
0 derived errors ignored.
Original stack trace for 'bn4a_branch2a_8/gamma':
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "/usr/local/lib/python3.6/dist-packages/traitlets/config/application.py", line 664, in launch_instance
app.start()
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelapp.py", line 499, in start
self.io_loop.start()
File "/usr/local/lib/python3.6/dist-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 456, in _handle_events
self._handle_recv()
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 486, in _handle_recv
self._run_callback(callback, msg)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 438, in _run_callback
callback(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2828, in run_ast_nodes
if self.run_code(code, result):
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 81, in
keras_to_tflite("./mask_rcnn_coco.h5","./mask_rcnn_coco.tflite")
File "", line 61, in keras_to_tflite
load_model(in_weight_file)
File "", line 27, in load_model
model_dir=Logs)
File "/content/Mask_RCNN/mrcnn/model.py", line 1837, in init
self.keras_model = self.build(mode=mode, config=config)
File "/content/Mask_RCNN/mrcnn/model.py", line 1901, in build
stage5=True, train_bn=config.TRAIN_BN)
File "/content/Mask_RCNN/mrcnn/model.py", line 194, in resnet_graph
x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', train_bn=train_bn)
File "/content/Mask_RCNN/mrcnn/model.py", line 150, in conv_block
x = BatchNorm(name=bn_name_base + '2a')(x, training=train_bn)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 576, in call
self.build(input_shapes[0])
File "/usr/local/lib/python3.6/dist-packages/keras/layers/normalization.py", line 103, in build
constraint=self.gamma_constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 400, in add_weight
constraint=constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 380, in variable
v = tf.Variable(value, dtype=tf.as_dtype(dtype), name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 258, in call
return cls._variable_v1_call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 219, in _variable_v1_call
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 197, in
previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variable_scope.py", line 2519, in default_variable_creator
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 262, in call
return super(VariableMetaclass, cls).call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1688, in init
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1846, in _init_from_args
shape, self._initial_value.dtype.base_dtype, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/state_ops.py", line 79, in variable_op_v2
shared_name=shared_name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/gen_state_ops.py", line 1621, in variable_v2
shared_name=shared_name, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 1748, in init
self._traceback = tf_stack.extract_stack()
ValueError: Invalid tensors 'input_image' were found.
Any help with the above error?
Please check your model with netron if its input node is named input_image
or not, if not then change accordingly.
@Jainam0
it seems the weight file you are using was generated from a custom-modified(or old) model structure rather than the one currently present in the matterport repo. If you still want to use this weights file, you have to modifiy this line #L150 in your imported mask-rcnn library path. From 2a
-> 2a_8
. There might be more lines you have to modify you have to find those.
I would rather suggest using the weights given here it will be an easier way.
@bmabir17
previous issue was solved it was some session error i was facing , can you help me with this . i have converted the epoch 10 .h5 in to . pb no wile converting it into .tflte is not working and giving some error like this
UnicodeDecodeError Traceback (most recent call last)
in ()
4 export_dir1 = "/content/drive/My Drive/NumberPlateDetection/saved_model.pb"
5 with open(export_dir1, 'r', encoding="utf8") as f:
----> 6 save_file = f.read()
7 input_arrays = ["input_image"]
8 #input_arrays = ["input_image","input_anchors","input_image_meta"]
/usr/lib/python3.6/codecs.py in decode(self, input, final)
319 # decode input (taking the buffer into account)
320 data = self.buffer + input
--> 321 (result, consumed) = self._buffer_decode(data, self.errors, final)
322 # keep undecoded input until the next call
323 self.buffer = data[consumed:]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 46: invalid start byte
@bmabir17
previous issue was solved it was some session error i was facing , can you help me with this . i have converted the epoch 10 .h5 in to . pb no wile converting it into .tflte is not working and giving some error like this
UnicodeDecodeError Traceback (most recent call last)
in ()
4 export_dir1 = "/content/drive/My Drive/NumberPlateDetection/saved_model.pb"
5 with open(export_dir1, 'r', encoding="utf8") as f:
----> 6 save_file = f.read()
7 input_arrays = ["input_image"]
8 #input_arrays = ["input_image","input_anchors","input_image_meta"]/usr/lib/python3.6/codecs.py in decode(self, input, final)
319 # decode input (taking the buffer into account)
320 data = self.buffer + input
--> 321 (result, consumed) = self._buffer_decode(data, self.errors, final)
322 # keep undecoded input until the next call
323 self.buffer = data[consumed:]UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 46: invalid start byte
Your model was not saved properly or your model file has become corrupted
I'm getting this error :( please help me..........................................
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
0 successful operations.
0 derived errors ignored.During handling of the above exception, another exception occurred:
FailedPreconditionError Traceback (most recent call last)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/client/session.py in _do_call(self, fn, *args)
1382 '\nsession_config.graph_options.rewrite_options.'
1383 'disable_meta_optimizer = True')
-> 1384 raise type(e)(node_def, op, message)
1385
1386 def _extend_graph(self):FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
0 successful operations.
0 derived errors ignored.Original stack trace for 'bn4a_branch2a_8/gamma':
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "/usr/local/lib/python3.6/dist-packages/traitlets/config/application.py", line 664, in launch_instance
app.start()
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelapp.py", line 499, in start
self.io_loop.start()
File "/usr/local/lib/python3.6/dist-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 456, in _handle_events
self._handle_recv()
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 486, in _handle_recv
self._run_callback(callback, msg)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 438, in _run_callback
callback(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2828, in run_ast_nodes
if self.run_code(code, result):
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 81, in
keras_to_tflite("./mask_rcnn_coco.h5","./mask_rcnn_coco.tflite")
File "", line 61, in keras_to_tflite
load_model(in_weight_file)
File "", line 27, in load_model
model_dir=Logs)
File "/content/Mask_RCNN/mrcnn/model.py", line 1837, in init
self.keras_model = self.build(mode=mode, config=config)
File "/content/Mask_RCNN/mrcnn/model.py", line 1901, in build
stage5=True, train_bn=config.TRAIN_BN)
File "/content/Mask_RCNN/mrcnn/model.py", line 194, in resnet_graph
x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', train_bn=train_bn)
File "/content/Mask_RCNN/mrcnn/model.py", line 150, in conv_block
x = BatchNorm(name=bn_name_base + '2a')(x, training=train_bn)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 576, in call
self.build(input_shapes[0])
File "/usr/local/lib/python3.6/dist-packages/keras/layers/normalization.py", line 103, in build
constraint=self.gamma_constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 400, in add_weight
constraint=constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 380, in variable
v = tf.Variable(value, dtype=tf.as_dtype(dtype), name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 258, in call
return cls._variable_v1_call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 219, in _variable_v1_call
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 197, in
previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variable_scope.py", line 2519, in default_variable_creator
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 262, in call
return super(VariableMetaclass, cls).call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1688, in init
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1846, in _init_from_args
shape, self._initial_value.dtype.base_dtype, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/state_ops.py", line 79, in variable_op_v2
shared_name=shared_name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/gen_state_ops.py", line 1621, in variable_v2
shared_name=shared_name, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 1748, in init
self._traceback = tf_stack.extract_stack()
Hi @Jainam0! I'm getting this issue again and again, but in different lines, can you please help me in resolving this?
Thank you
I'm getting this error :( please help me..........................................
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[{{node bn4a_branch2a_8/gamma}}]]
0 successful operations.
0 derived errors ignored.
During handling of the above exception, another exception occurred:
FailedPreconditionError Traceback (most recent call last)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/client/session.py in _do_call(self, fn, *args)
1382 '\nsession_config.graph_options.rewrite_options.'
1383 'disable_meta_optimizer = True')
-> 1384 raise type(e)(node_def, op, message)
1385
1386 def _extend_graph(self):
FailedPreconditionError: 2 root error(s) found.
(0) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
[[res3d_branch2a_8/bias/_2417]]
(1) Failed precondition: Attempting to use uninitialized value bn4a_branch2a_8/gamma
[[node bn4a_branch2a_8/gamma (defined at /tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py:1748) ]]
0 successful operations.
0 derived errors ignored.
Original stack trace for 'bn4a_branch2a_8/gamma':
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "/usr/local/lib/python3.6/dist-packages/traitlets/config/application.py", line 664, in launch_instance
app.start()
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelapp.py", line 499, in start
self.io_loop.start()
File "/usr/local/lib/python3.6/dist-packages/tornado/ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 456, in _handle_events
self._handle_recv()
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 486, in _handle_recv
self._run_callback(callback, msg)
File "/usr/local/lib/python3.6/dist-packages/zmq/eventloop/zmqstream.py", line 438, in _run_callback
callback(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2828, in run_ast_nodes
if self.run_code(code, result):
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 81, in
keras_to_tflite("./mask_rcnn_coco.h5","./mask_rcnn_coco.tflite")
File "", line 61, in keras_to_tflite
load_model(in_weight_file)
File "", line 27, in load_model
model_dir=Logs)
File "/content/Mask_RCNN/mrcnn/model.py", line 1837, in init
self.keras_model = self.build(mode=mode, config=config)
File "/content/Mask_RCNN/mrcnn/model.py", line 1901, in build
stage5=True, train_bn=config.TRAIN_BN)
File "/content/Mask_RCNN/mrcnn/model.py", line 194, in resnet_graph
x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', train_bn=train_bn)
File "/content/Mask_RCNN/mrcnn/model.py", line 150, in conv_block
x = BatchNorm(name=bn_name_base + '2a')(x, training=train_bn)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 576, in call
self.build(input_shapes[0])
File "/usr/local/lib/python3.6/dist-packages/keras/layers/normalization.py", line 103, in build
constraint=self.gamma_constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/keras/engine/topology.py", line 400, in add_weight
constraint=constraint)
File "/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py", line 380, in variable
v = tf.Variable(value, dtype=tf.as_dtype(dtype), name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 258, in call
return cls._variable_v1_call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 219, in _variable_v1_call
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 197, in
previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variable_scope.py", line 2519, in default_variable_creator
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 262, in call
return super(VariableMetaclass, cls).call(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1688, in init
shape=shape)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/variables.py", line 1846, in _init_from_args
shape, self._initial_value.dtype.base_dtype, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/state_ops.py", line 79, in variable_op_v2
shared_name=shared_name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/ops/gen_state_ops.py", line 1621, in variable_v2
shared_name=shared_name, name=name)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
op_def=op_def)
File "/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py", line 1748, in init
self._traceback = tf_stack.extract_stack()Hi @Jainam0! I'm getting this issue again and again, but in different lines, can you please help me in resolving this?
Thank you
tensorflow/tensorflow#28287 (comment) , i solved that from here but couldn't able to convert it into .tflite , i had only converted ssd models into .tflite
Hi @bmabir17
Thanks your code that I can convert the tflite successfully. But when I ran the tflite on iOS, I got bellow error
TensorFlow Lite Error: Input tensor 314 lacks data
I look through the code and notice this code in keras_to_tflite
function:
input_arrays = ["input_image"] output_arrays = ["mrcnn_class/Softmax","mrcnn_bbox/Reshape"]
But the real keras model needs more inputs when predict function was executed. I don't know if that has anything to do with it. What do think?
hi @bmabir17
I cant seem to move ahead from this point
ValueError: Invalid tensors 'input_image' were found.
i checked the model using model.keras_model.summary() and it shows that the first layer has the name input_image. What do i do?
@kaamlaS i got past this , check this out matterport/Mask_RCNN#2020
let me know if you get it working
also i cant get the output names to work so i left it out but that is stopping the conversion , how did you pass the output names to the parameter
@bmabir17 Thank you so much for your response. I think in Mask RCNN, they used a custom layer named "Batch Norm". While layer available in Keras is named as "Batch Normalization". so tired but couldn't succeed storing the whole model in .h5 format. plus there may be some operators used that are not currently supported by TensorFlow lite.