Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

训练输入长宽比不为1:1时报错。 #31

Closed
accountcwd opened this issue Sep 3, 2018 · 6 comments
Closed

训练输入长宽比不为1:1时报错。 #31

accountcwd opened this issue Sep 3, 2018 · 6 comments

Comments

@accountcwd
Copy link

@edvardHua 你好,我在mv2_hourglass.cfg将宽高比设置成192x256后训练,报了下面的错误。
InvalidArgumentError (see above for traceback): Incompatible shapes: [16,14,6,8] vs. [16,14,8,6]
这里为什么长跟高位置调转了呢?是不是前面有什么操作处理导致的?输入为192x192的时候是能正常训练的。我对tensorflow掌握得不深没有找出问题在哪里,希望作者能给点提示,谢谢~

`Caused by op 'GPU_0/hourglass_out_0', defined at:
File "src/train.py", line 225, in
tf.app.run()
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/platform/app.py", line 125, in run
_sys.exit(main(argv))
File "src/train.py", line 124, in main
loss, last_heat_loss, pred_heat = get_loss_and_output(params['model'], params['batchsize'], input_image, input_heat, reuse_variable)
File "src/train.py", line 42, in get_loss_and_output
, pred_heatmaps_all = get_network(model, input_image, True)
File "/home/cwd/project/PoseEstimationForMobile/training/src/networks.py", line 15, in get_network
net, loss = network_mv2_hourglass.build_network(input, trainable)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 88, in build_network
hg_out = hourglass_module(net, STAGE_NUM)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 34, in hourglass_module
block_mid = hourglass_module(block_front, stage_nums)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 34, in hourglass_module
block_mid = hourglass_module(block_front, stage_nums)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 34, in hourglass_module
block_mid = hourglass_module(block_front, stage_nums)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 51, in hourglass_module
curr_hg_out = tf.add(up_sample, branch_jump, name="hourglass_out
%d" % stage_nums)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_math_ops.py", line 297, in add
"Add", x=x, y=y, name=name)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 3414, in create_op
op_def=op_def)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1740, in init
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): Incompatible shapes: [16,14,6,8] vs. [16,14,8,6]
[[Node: GPU_0/hourglass_out_0 = Add[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](GPU_0/hourglass_out_0-0-TransposeNHWCToNCHW-LayoutOptimizer, GPU_0/hourglass_branch_jump_0/inverted_bottleneck_hourglass_branch_jump_0_5/hourglass_branch_jump_0_5_pointwise/BatchNorm/Relu6)]]

`

@edvardHua
Copy link
Owner

是代码的问题,但是是针对输入宽高一致来写的,如果要宽高不一致,需要修改 network_mv2_hourglass.py 文件的代码,你可以在

File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 34, in hourglass_module
block_mid = hourglass_module(block_front, stage_nums)
File "/home/cwd/project/PoseEstimationForMobile/training/src/network_mv2_hourglass.py", line 51, in hourglass_module

这两行错误的地方打印出宽高,然后自己尝试着修改一下。

@accountcwd
Copy link
Author

感谢你的回答,我今天通过打印信息跟踪发现:定义的imput_image是[?,W,H,C],而送进网络输出的时候却是[?,H,W,C],宽和高的位置搞反了,仔细查找代码发现问题出在函数 _set_shapes 这里。修改成下面那样就可以通过训练了,即把input_height和input_width调换一下。希望能帮到你。

def _set_shapes(img, heatmap):
    img.set_shape([CONFIG['input_height'], CONFIG['input_width'], 3])
    heatmap.set_shape(        [CONFIG['input_height'] / CONFIG['scale'], CONFIG['input_width'] / CONFIG['scale'], CONFIG['n_kpoints']])
    return img, heatmap

@edvardHua
Copy link
Owner

edvardHua commented Sep 4, 2018

@accountcwd 我还以为是代码没 padding 导致的,这个是个 bug,之前就已经发现了,忘记更新到仓库了,问题解决了就好。 😁

@accountcwd
Copy link
Author

@edvardHua 不知该工程目前有什么新进展吗?
我现在将AIchallenger数据集根据所给的BBOX裁出来作为单人数据集训练,这样样本数更多(训练集27W)而且图片内会出现其他人的肢体作干扰,训练出来的模型鲁棒性应该会更好,另外我打算将输入设置成160x256或者其他更符合人体框的比例。顺利地话后续我打算加上目标检测网络将姿态估计输入限定在框内避免背景干扰,更有梦想的话做个多人的实时哈哈哈,希望能多多交流 ~

@edvardHua
Copy link
Owner

edvardHua commented Sep 6, 2018

@accountcwd 最近打算加上目标检测网络,晚些会更新上去。多人的话在移动端还没想到有啥应用场景。

@accountcwd
Copy link
Author

@edvardHua 多人舞蹈不知道能不能用?期待你的目标检测工程,我也很乐意与你分享我之后的训练结果~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants