使用deeplabV3+做语义分割自训练模型关于cropsize需要注意的地方;
python deeplab/train.py \
--logtostderr \
--train_split="train" \
--model_variant="xception_65" \
--atrous_rates=6 \
--atrous_rates=12 \
--atrous_rates=18 \
--output_stride=16 \
--decoder_output_stride=4 \
--train_crop_size=513 \
--train_crop_size=513 \
--train_batch_size=4 \
--dataset="railway" \
--training_number_of_steps=30000 \
--fine_tune_batch_norm=false \
--tf_initial_checkpoint="deeplab/datasets/railway/init_models/deeplabv3_pascal_train_aug/model.ckpt" \
--train_logdir="deeplab/datasets/railway/train" \
--dataset_dir="deeplab/datasets/railway/tfrecord"
其中有两项参数为
--train_crop_size=513 \
--train_crop_size=513 \
此时为输入源图像的随机裁剪,当前如果你的GPU够强大,也可以不裁剪,原图大小输入,如果你的GPU显存不够,可以减小
--train_batch_size=4
最后需要注意的是,这里的cropsize决定了eval.py中的eval_crop_size的大小,若此处为(513,513),eval.py中就不能大于513,否则会报错。
InvalidArgumentError Traceback (most recent call last)
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1321 try:
-> 1322 return fn(*args)
1323 except errors.OpError as e:
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
1306 return self._call_tf_sessionrun(
-> 1307 options, feed_dict, fetch_list, target_list, run_metadata)
1308
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _call_tf_sessionrun(self, options, feed_dict, fetch_list, target_list, run_metadata)
1408 self._session, options, feed_dict, fetch_list, target_list,
-> 1409 run_metadata)
1410 else:
InvalidArgumentError: padded_shape[1]=87 is not divisible by block_shape[1]=2
[[Node: xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND = SpaceToBatchND[T=DT_FLOAT, Tblock_shape=DT_INT32, Tpaddings=DT_INT32, _device="/job:localhost/replica:0/task:0/device:GPU:0"](xception_65/exit_flow/block1/unit_1/xception_module/ArithmeticOptimizer/AddOpsRewrite_add-0-0-TransposeNCHWToNHWC-LayoutOptimizer, xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND/block_shape, xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND/paddings)]]
During handling of the above exception, another exception occurred:
InvalidArgumentError Traceback (most recent call last)
<ipython-input-30-3de39f77875f> in <module>
28 image_path = '/home/user07/tensorflow/models/research/deeplab/datasets/railway/image/666.jpg'
29 original_im = Image.open(image_path)
---> 30 resized_im, seg_map = MODEL.run(original_im)
31
32 cv2.imwrite("test.jpg",seg_map)
<ipython-input-28-ca0f7480dd16> in run(self, image)
50 batch_seg_map = self.sess.run(
51 self.OUTPUT_TENSOR_NAME,
---> 52 feed_dict={self.INPUT_TENSOR_NAME: [np.asarray(resized_image)]})
53 seg_map = batch_seg_map[0]
54 return resized_image, seg_map
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
898 try:
899 result = self._run(None, fetches, feed_dict, options_ptr,
--> 900 run_metadata_ptr)
901 if run_metadata:
902 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1133 if final_fetches or final_targets or (handle and feed_dict_tensor):
1134 results = self._do_run(handle, final_targets, final_fetches,
-> 1135 feed_dict_tensor, options, run_metadata)
1136 else:
1137 results = []
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1314 if handle is None:
1315 return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1316 run_metadata)
1317 else:
1318 return self._do_call(_prun_fn, handle, feeds, fetches)
~/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1333 except KeyError:
1334 pass
-> 1335 raise type(e)(node_def, op, message)
1336
1337 def _extend_graph(self):
InvalidArgumentError: padded_shape[1]=87 is not divisible by block_shape[1]=2
[[Node: xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND = SpaceToBatchND[T=DT_FLOAT, Tblock_shape=DT_INT32, Tpaddings=DT_INT32, _device="/job:localhost/replica:0/task:0/device:GPU:0"](xception_65/exit_flow/block1/unit_1/xception_module/ArithmeticOptimizer/AddOpsRewrite_add-0-0-TransposeNCHWToNHWC-LayoutOptimizer, xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND/block_shape, xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND/paddings)]]
Caused by op 'xception_65/exit_flow/block2/unit_1/xception_module/separable_conv1_depthwise/depthwise/SpaceToBatchND', defined at:
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel_launcher.py", line 16, in <module>
app.launch_new_instance()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/traitlets/config/application.py", line 658, in launch_instance
app.start()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/kernelapp.py", line 505, in start
self.io_loop.start()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/platform/asyncio.py", line 148, in start
self.asyncio_loop.run_forever()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/asyncio/base_events.py", line 427, in run_forever
self._run_once()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/asyncio/base_events.py", line 1440, in _run_once
handle._run()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/asyncio/events.py", line 145, in _run
self._callback(*self._args)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/ioloop.py", line 690, in <lambda>
lambda f: self._run_callback(functools.partial(callback, future))
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/ioloop.py", line 743, in _run_callback
ret = callback()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 781, in inner
self.run()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 742, in run
yielded = self.gen.send(value)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 370, in dispatch_queue
yield self.process_one()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 225, in wrapper
runner = Runner(result, future, yielded)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 708, in __init__
self.run()
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 742, in run
yielded = self.gen.send(value)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 357, in process_one
yield gen.maybe_future(dispatch(*args))
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
yielded = next(result)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 267, in dispatch_shell
yield gen.maybe_future(handler(stream, idents, msg))
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
yielded = next(result)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 534, in execute_request
user_expressions, allow_stdin,
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
yielded = next(result)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/ipkernel.py", line 294, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/ipykernel/zmqshell.py", line 536, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2848, in run_cell
raw_cell, store_history, silent, shell_futures)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2874, in _run_cell
return runner(coro)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/async_helpers.py", line 67, in _pseudo_sync_runner
coro.send(None)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3049, in run_cell_async
interactivity=interactivity, compiler=compiler, result=result)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3214, in run_ast_nodes
if (yield from self.run_code(code, result)):
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3296, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-29-d8532a2f4137>", line 27, in <module>
MODEL = DeepLabModel(model_path)
File "<ipython-input-28-ca0f7480dd16>", line 31, in __init__
tf.import_graph_def(graph_def, name='')
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 432, in new_func
return func(*args, **kwargs)
File "/home/user07/anaconda3/envs/hss_tf/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 442, in import_graph_def
_ProcessNewOps(gr