mjdelta / deeplabv3plus-keras Goto Github PK
View Code? Open in Web Editor NEWdeeplabv3plus (Google's new algorithm for semantic segmentation) in keras:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
deeplabv3plus (Google's new algorithm for semantic segmentation) in keras:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Hello, thanks for your code,and I seem to have found a mistake in the part of "ASPP".
the function DepthwiseConv2D( ) ,the "dilation_rate" seems to be 6, 12, 18 , and there are 6, 12, 12 .
I hope you understand my description,my English is not good.
Hi,
Thanks for your work. I get some problems in training process. Could you please release your training code here or give some reference?
i have RGB pictures ,but can not train
model = deeplabv3_plus()
smooth = 1.
model.compile(optimizer=Adam(lr=1e-4), loss=IOU_calc_loss, metrics=[IOU_calc])
history = model.fit(X_train, y_train, batch_size=1, epochs=50, verbose=1, validation_split=0.1, shuffle=False)
what can i do for this?
InvalidArgumentError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1326 try:
-> 1327 return fn(*args)
1328 except errors.OpError as e:
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
1305 feed_dict, fetch_list, target_list,
-> 1306 status, run_metadata)
1307
~\Anaconda3\lib\contextlib.py in exit(self, type, value, traceback)
87 try:
---> 88 next(self.gen)
89 except StopIteration:
~\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py in raise_exception_on_not_ok_status()
465 compat.as_text(pywrap_tensorflow.TF_Message(status)),
--> 466 pywrap_tensorflow.TF_GetCode(status))
467 finally:
InvalidArgumentError: Incompatible shapes: [786432] vs. [5505024]
[[Node: loss_6/bilinear_upsampling_24_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](loss_6/bilinear_upsampling_24_loss/Reshape, loss_6/bilinear_upsampling_24_loss/Reshape_1)]]
[[Node: loss_6/mul/_43833 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_79013_loss_6/mul", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]]
During handling of the above exception, another exception occurred:
InvalidArgumentError Traceback (most recent call last)
in ()
----> 1 history = model.fit(X_train, y_train, batch_size=1, epochs=50, verbose=1, validation_split=0.1, shuffle=False)
~\Anaconda3\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
1655 initial_epoch=initial_epoch,
1656 steps_per_epoch=steps_per_epoch,
-> 1657 validation_steps=validation_steps)
1658
1659 def evaluate(self, x=None, y=None,
~\Anaconda3\lib\site-packages\keras\engine\training.py in _fit_loop(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)
1211 batch_logs['size'] = len(batch_ids)
1212 callbacks.on_batch_begin(batch_index, batch_logs)
-> 1213 outs = f(ins_batch)
1214 if not isinstance(outs, list):
1215 outs = [outs]
~\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py in call(self, inputs)
2355 session = get_session()
2356 updated = session.run(fetches=fetches, feed_dict=feed_dict,
-> 2357 **self.session_kwargs)
2358 return updated[:len(self.outputs)]
2359
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
893 try:
894 result = self._run(None, fetches, feed_dict, options_ptr,
--> 895 run_metadata_ptr)
896 if run_metadata:
897 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1122 if final_fetches or final_targets or (handle and feed_dict_tensor):
1123 results = self._do_run(handle, final_targets, final_fetches,
-> 1124 feed_dict_tensor, options, run_metadata)
1125 else:
1126 results = []
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1319 if handle is None:
1320 return self._do_call(_run_fn, self._session, feeds, fetches, targets,
-> 1321 options, run_metadata)
1322 else:
1323 return self._do_call(_prun_fn, self._session, handle, feeds, fetches)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1338 except KeyError:
1339 pass
-> 1340 raise type(e)(node_def, op, message)
1341
1342 def _extend_graph(self):
InvalidArgumentError: Incompatible shapes: [786432] vs. [5505024]
[[Node: loss_6/bilinear_upsampling_24_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](loss_6/bilinear_upsampling_24_loss/Reshape, loss_6/bilinear_upsampling_24_loss/Reshape_1)]]
[[Node: loss_6/mul/_43833 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_79013_loss_6/mul", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]]
Caused by op 'loss_6/bilinear_upsampling_24_loss/mul', defined at:
File "C:\Users\User\Anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "C:\Users\User\Anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "C:\Users\User\Anaconda3\lib\site-packages\traitlets\config\application.py", line 658, in launch_instance
app.start()
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 477, in start
ioloop.IOLoop.instance().start()
File "C:\Users\User\Anaconda3\lib\site-packages\zmq\eventloop\ioloop.py", line 177, in start
super(ZMQIOLoop, self).start()
File "C:\Users\User\Anaconda3\lib\site-packages\tornado\ioloop.py", line 888, in start
handler_func(fd_obj, events)
File "C:\Users\User\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\User\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 440, in _handle_events
self._handle_recv()
File "C:\Users\User\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 472, in _handle_recv
self._run_callback(callback, msg)
File "C:\Users\User\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 414, in _run_callback
callback(*args, **kwargs)
File "C:\Users\User\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 235, in dispatch_shell
handler(stream, idents, msg)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 196, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "C:\Users\User\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 533, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "C:\Users\User\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2698, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "C:\Users\User\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2808, in run_ast_nodes
if self.run_code(code, result):
File "C:\Users\User\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 2, in
model.compile(optimizer=Adam(lr=1e-4), loss=IOU_calc_loss, metrics=[IOU_calc])
File "C:\Users\User\Anaconda3\lib\site-packages\keras\engine\training.py", line 860, in compile
sample_weight, mask)
File "C:\Users\User\Anaconda3\lib\site-packages\keras\engine\training.py", line 459, in weighted
score_array = fn(y_true, y_pred)
File "", line 11, in IOU_calc_loss
return -IOU_calc(y_true, y_pred)
File "", line 5, in IOU_calc
intersection = K.sum(y_true_f * y_pred_f) # 求和
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py", line 865, in binary_op_wrapper
return func(x, y, name=name)
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py", line 1088, in _mul_dispatch
return gen_math_ops._mul(x, y, name=name)
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py", line 1449, in _mul
result = _op_def_lib.apply_op("Mul", x=x, y=y, name=name)
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_op
op_def=op_def)
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 2630, in create_op
original_op=self._default_original_op, op_def=op_def)
File "C:\Users\User\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1204, in init
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
InvalidArgumentError (see above for traceback): Incompatible shapes: [786432] vs. [5505024]
[[Node: loss_6/bilinear_upsampling_24_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](loss_6/bilinear_upsampling_24_loss/Reshape, loss_6/bilinear_upsampling_24_loss/Reshape_1)]]
[[Node: loss_6/mul/_43833 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_79013_loss_6/mul", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]]
I'm trying to load the saved model . The model saves ok but when I try to load it with the code:
custom_objects={"BilinearUpsampling":BilinearUpsampling}
keras.models.load_model(model_file, custom_objects=custom_objects)
It throws an error TypeError: ('Keyword argument not understood:', 'size')
TypeError Traceback (most recent call last)
<ipython-input-2-919f7be2ba45> in <module>()
----> 1 predict()
<ipython-input-1-657409a5c4ee> in predict(model_path, validation_file, labels, output_dir)
23 output_dir=config["prediction_dir"]):
24 tmp = BilinearUpsampling()
---> 25 model = load_old_model(model_path)
26 validation_file_opened = tables.open_file(validation_file)
27 n_samples = validation_file_opened.root.data.shape[0]
~/workspace/segmentation/2DSegNet/DeepLab/keras-deeplab-v3-plus/deeplabv3_plus_train.py in load_old_model(model_file)
240 pass
241 try:
--> 242 return load_model(model_file, custom_objects=custom_objects)
243 except ValueError as error:
244 if "InstanceNormalization" in str(error):
/usr/local/lib/python3.5/dist-packages/keras/models.py in load_model(filepath, custom_objects, compile)
268 raise ValueError('No model found in config file.')
269 model_config = json.loads(model_config.decode('utf-8'))
--> 270 model = model_from_config(model_config, custom_objects=custom_objects)
271
272 # set weights
/usr/local/lib/python3.5/dist-packages/keras/models.py in model_from_config(config, custom_objects)
345 'Maybe you meant to use '
346 '`Sequential.from_config(config)`?')
--> 347 return layer_module.deserialize(config, custom_objects=custom_objects)
348
349
/usr/local/lib/python3.5/dist-packages/keras/layers/__init__.py in deserialize(config, custom_objects)
53 module_objects=globs,
54 custom_objects=custom_objects,
---> 55 printable_module_name='layer')
/usr/local/lib/python3.5/dist-packages/keras/utils/generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
142 return cls.from_config(config['config'],
143 custom_objects=dict(list(_GLOBAL_CUSTOM_OBJECTS.items()) +
--> 144 list(custom_objects.items())))
145 with CustomObjectScope(custom_objects):
146 return cls.from_config(config['config'])
/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py in from_config(cls, config, custom_objects)
2523 # First, we create all layers and enqueue nodes to be processed
2524 for layer_data in config['layers']:
-> 2525 process_layer(layer_data)
2526 # Then we process nodes in order of layer depth.
2527 # Nodes that cannot yet be processed (if the inbound node
/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py in process_layer(layer_data)
2509
2510 layer = deserialize_layer(layer_data,
-> 2511 custom_objects=custom_objects)
2512 created_layers[layer_name] = layer
2513
/usr/local/lib/python3.5/dist-packages/keras/layers/__init__.py in deserialize(config, custom_objects)
53 module_objects=globs,
54 custom_objects=custom_objects,
---> 55 printable_module_name='layer')
/usr/local/lib/python3.5/dist-packages/keras/utils/generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
144 list(custom_objects.items())))
145 with CustomObjectScope(custom_objects):
--> 146 return cls.from_config(config['config'])
147 else:
148 # Then `cls` may be a function returning a class.
/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py in from_config(cls, config)
1269 A layer instance.
1270 """
-> 1271 return cls(**config)
1272
1273 def count_params(self):
~/workspace/segmentation/2DSegNet/DeepLab/keras-deeplab-v3-plus/deeplabv3_plus_model.py in __init__(self, upsampling, data_format, **kwargs)
12 self.upsampling = conv_utils.normalize_tuple(upsampling, 2, 'size')
13 self.input_spec = InputSpec(ndim=4)
---> 14 super(BilinearUpsampling, self).__init__(**kwargs)
15
16 def compute_output_shape(self, input_shape):
/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py in __init__(self, **kwargs)
291 for kwarg in kwargs:
292 if kwarg not in allowed_kwargs:
--> 293 raise TypeError('Keyword argument not understood:', kwarg)
294 name = kwargs.get('name')
295 if not name:
TypeError: ('Keyword argument not understood:', 'size')
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.