SSD-tensorflow:ValueError: number of input channels does not match corresponding dimension of filter

在利用caffe_to_tensorflow.py来转换模型之前,我们需要设置安装一下py caffe版本,如果不会的可以参考我的博客:

Ubuntu16.04安装教程

pycaffe的配置

当运行原作者给出命令,然后修改caffe的路径:

CAFFE_MODEL=./models/VGGNet/VOC0712Plus/SSD_512x512/VGG_VOC0712Plus_SSD_512x512_iter_240000.caffemodel
python caffe_to_tensorflow.py \
    --model_name=ssd_300_vgg \
    --num_classes=21 \
    --caffemodel_path=${CAFFE_MODEL}
会报错,信息为:

Traceback (most recent call last):
  File "caffe_to_tensorflow.py", line 65, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "caffe_to_tensorflow.py", line 51, in main
    ssd_net.net(img_input, is_training=False)
  File "/home/whsyxt/Downloads/SSD-Tensorflow/nets/ssd_vgg_300.py", line 155, in net
    scope=scope)
  File "/home/whsyxt/Downloads/SSD-Tensorflow/nets/ssd_vgg_300.py", line 516, in ssd_net
    normalizations[i])
  File "/home/whsyxt/Downloads/SSD-Tensorflow/nets/ssd_vgg_300.py", line 418, in ssd_multibox_layer
    scope='conv_loc')
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1027, in convolution
    outputs = layer.apply(inputs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 503, in apply
    return self.__call__(inputs, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 450, in __call__
    outputs = self.call(inputs, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/convolutional.py", line 158, in call
    data_format=utils.convert_data_format(self.data_format, self.rank + 2))
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.py", line 652, in convolution
    num_spatial_dims]))
ValueError: number of input channels does not match corresponding dimension of filter, 512 != 256

正确的命令为:

CAFFE_MODEL=./models/VGGNet/VOC0712Plus/SSD_512x512/VGG_VOC0712Plus_SSD_512x512_iter_240000.caffemodel
python caffe_to_tensorflow.py \
    --model_name=ssd_512_vgg \
    --num_classes=21 \
    --caffemodel_path=${CAFFE_MODEL}

注意model_name要与你的模型的input大小一致,我这里是512×512的,所以相应的要作出改变。

参考文献

[1].caffemodel conversion error:number of input channels does not match corresponding dimension of filter. https://github.com/balancap/SSD-Tensorflow/issues/106


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值