Open lcskrishna opened 7 years ago
I met the same problem when converting FCN to caffe2:
refer https://github.com/shelhamer/fcn.berkeleyvision.org/tree/master/voc-fcn8s
INFO:caffe_translator:Translate layer input
INFO:caffe_translator:Translate layer conv1
INFO:caffe_translator:Translate layer relu1
INFO:caffe_translator:Translate layer pool1
INFO:caffe_translator:Translate layer norm1
INFO:caffe_translator:Translate layer conv2
INFO:caffe_translator:Translate layer relu2
INFO:caffe_translator:Translate layer pool2
INFO:caffe_translator:Translate layer norm2
INFO:caffe_translator:Translate layer conv3
INFO:caffe_translator:Translate layer relu3
INFO:caffe_translator:Translate layer conv4
INFO:caffe_translator:Translate layer relu4
INFO:caffe_translator:Translate layer conv5
INFO:caffe_translator:Translate layer relu5
INFO:caffe_translator:Translate layer pool5
INFO:caffe_translator:Translate layer fc6
INFO:caffe_translator:Translate layer relu6
INFO:caffe_translator:Translate layer drop6
INFO:caffe_translator:Translate layer fc7
INFO:caffe_translator:Translate layer relu7
INFO:caffe_translator:Translate layer drop7
INFO:caffe_translator:Translate layer score_fr
INFO:caffe_translator:Translate layer upscore
Traceback (most recent call last):
File "caffe_translator.py", line 706, in
@lcskrishna I solved the error at the loss layer level by adding "top: your top layer" to the loss layer in my deploy.prototxt file and then running the translator. Hope this helps you as well!
@lcskrishna, your problem should fixed now if you install the most recent version from source. @ChenZhaobin your model can't be fully converted yet, since we'll need to convert Crop layer in caffe1 to caffe2 op, I can give you an update next week.
@jerryzh168 If you can update here that would be highly appreciated
@ChenZhaobin @Mhugi I can fix the translator, by translating Crop to Slice, but Slice right now only supports slicing one of the dimensions, contributions are welcome. I'll update the translator soon.
The diff is landed. Please try again..
good morning @jerryzh168 i got the latest code for caffe2 this morning so with the latest version of the caffe_translator.py
I also use a cifar10.prototxt and a .caffemodel that I previously build with weiliu89/caffe/ My issue when running command was similar to @lcskrishna but it occurs on the NORM1 and NORM2 layers because the norm_region was set to WITHIN_CHANNEL inside the prototxt I change it to ACROSS_CHANNELS and conversion is passing but my question is about the reason why WITHIN_CHANNEL is not supported, do you have any comment?
here is the end of the log for info
INFO:caffe_translator:Translate layer norm1
Traceback (most recent call last):
File "/home/b2bot/anaconda2/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/home/b2bot/anaconda2/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/b2bot/Project/caffe2/caffe2/build/caffe2/python/caffe_translator.py", line 928, in
@fbadaud as displayed in the error message: "ValueError: Does not support norm region other than across channels.", we haven't implemented the caffe converter that supports other norm_region values, I don't have bandwidth to work on it right now, please feel free to contribute. The code is in https://github.com/caffe2/caffe2/blob/master/caffe2/python/caffe_translator.py#L585
hello, @jerryzh168 . I got the caffe2 latest code and installed the caffe2 this morning. I wonder how can I fix the fcn converting to caffe2 issue(from https://github.com/shelhamer/fcn.berkeleyvision.org/tree/master/voc-fcn32s), here is my error message, do you have any comment? Or maybe the crop layer cannot be converted yet? Thank you!
jerry@jerry-Alienware-17-R2:~/caffe2fcn$ python -m caffe2.python.caffe_translator deploy.prototxt fcn32s-heavy-pascal.caffemodel
INFO:caffe_translator:Translate layer input
INFO:caffe_translator:Translate layer conv1_1
INFO:caffe_translator:Translate layer relu1_1
INFO:caffe_translator:Translate layer conv1_2
INFO:caffe_translator:Translate layer relu1_2
INFO:caffe_translator:Translate layer pool1
INFO:caffe_translator:Translate layer conv2_1
INFO:caffe_translator:Translate layer relu2_1
INFO:caffe_translator:Translate layer conv2_2
INFO:caffe_translator:Translate layer relu2_2
INFO:caffe_translator:Translate layer pool2
INFO:caffe_translator:Translate layer conv3_1
INFO:caffe_translator:Translate layer relu3_1
INFO:caffe_translator:Translate layer conv3_2
INFO:caffe_translator:Translate layer relu3_2
INFO:caffe_translator:Translate layer conv3_3
INFO:caffe_translator:Translate layer relu3_3
INFO:caffe_translator:Translate layer pool3
INFO:caffe_translator:Translate layer conv4_1
INFO:caffe_translator:Translate layer relu4_1
INFO:caffe_translator:Translate layer conv4_2
INFO:caffe_translator:Translate layer relu4_2
INFO:caffe_translator:Translate layer conv4_3
INFO:caffe_translator:Translate layer relu4_3
INFO:caffe_translator:Translate layer pool4
INFO:caffe_translator:Translate layer conv5_1
INFO:caffe_translator:Translate layer relu5_1
INFO:caffe_translator:Translate layer conv5_2
INFO:caffe_translator:Translate layer relu5_2
INFO:caffe_translator:Translate layer conv5_3
INFO:caffe_translator:Translate layer relu5_3
INFO:caffe_translator:Translate layer pool5
INFO:caffe_translator:Translate layer fc6
INFO:caffe_translator:Translate layer relu6
INFO:caffe_translator:Translate layer drop6
INFO:caffe_translator:Translate layer fc7
INFO:caffe_translator:Translate layer relu7
INFO:caffe_translator:Translate layer drop7
INFO:caffe_translator:Translate layer score_fr
INFO:caffe_translator:Translate layer upscore
INFO:caffe_translator:Translate layer score
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/jerry/caffe2/build/caffe2/python/caffe_translator.py", line 928, in
I'm in the same boat as well trying to convert fcn-8 to caffe2 @byjiang1996 @jerryzh168 . Here is the log -
python -m caffe2.python.caffe_translator deploy.prototxt fcn8s-heavy-pascal.caffemodel WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode. WARNING:root:Debug message: No module named caffe2_pybind11_state_gpu If you are using homebrew leveldb on a Mac OS, you might see an error warning you that malloc_zone_unregister() failed. This is not a caffe2 issue but is due to the homebrew leveldb having an incompatible memory allocator. It does not affect usage. INFO:caffe_translator:Translate layer input INFO:caffe_translator:Translate layer conv1_1 INFO:caffe_translator:Translate layer relu1_1 INFO:caffe_translator:Translate layer conv1_2 INFO:caffe_translator:Translate layer relu1_2 INFO:caffe_translator:Translate layer pool1 INFO:caffe_translator:Translate layer conv2_1 INFO:caffe_translator:Translate layer relu2_1 INFO:caffe_translator:Translate layer conv2_2 INFO:caffe_translator:Translate layer relu2_2 INFO:caffe_translator:Translate layer pool2 INFO:caffe_translator:Translate layer conv3_1 INFO:caffe_translator:Translate layer relu3_1 INFO:caffe_translator:Translate layer conv3_2 INFO:caffe_translator:Translate layer relu3_2 INFO:caffe_translator:Translate layer conv3_3 INFO:caffe_translator:Translate layer relu3_3 INFO:caffe_translator:Translate layer pool3 INFO:caffe_translator:Translate layer conv4_1 INFO:caffe_translator:Translate layer relu4_1 INFO:caffe_translator:Translate layer conv4_2 INFO:caffe_translator:Translate layer relu4_2 INFO:caffe_translator:Translate layer conv4_3 INFO:caffe_translator:Translate layer relu4_3 INFO:caffe_translator:Translate layer pool4 INFO:caffe_translator:Translate layer conv5_1 INFO:caffe_translator:Translate layer relu5_1 INFO:caffe_translator:Translate layer conv5_2 INFO:caffe_translator:Translate layer relu5_2 INFO:caffe_translator:Translate layer conv5_3 INFO:caffe_translator:Translate layer relu5_3 INFO:caffe_translator:Translate layer pool5 INFO:caffe_translator:Translate layer fc6 INFO:caffe_translator:Translate layer relu6 INFO:caffe_translator:Translate layer fc7 INFO:caffe_translator:Translate layer relu7 INFO:caffe_translator:Translate layer score_fr INFO:caffe_translator:Translate layer upscore2 INFO:caffe_translator:Translate layer score_pool4 INFO:caffe_translator:Translate layer score_pool4c Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/Users/sasikiran/Documents/Projects/caffe2-latest/caffe2/build/caffe2/python/caffe_translator.py", line 928, in <module> input_dims=args.input_dims File "/Users/sasikiran/Documents/Projects/caffe2-latest/caffe2/build/caffe2/python/caffe_translator.py", line 299, in TranslateModel return TranslatorRegistry.TranslateModel(*args, **kwargs) File "/Users/sasikiran/Documents/Projects/caffe2-latest/caffe2/build/caffe2/python/caffe_translator.py", line 288, in TranslateModel net_params=net_params, input_dims=input_dims) File "/Users/sasikiran/Documents/Projects/caffe2-latest/caffe2/build/caffe2/python/caffe_translator.py", line 228, in TranslateLayer layer, pretrained_blobs, is_test, **kwargs) File "/Users/sasikiran/Documents/Projects/caffe2-latest/caffe2/build/caffe2/python/caffe_translator.py", line 493, in TranslateCrop net, net_params, input_dims = kwargs['net'], kwargs['net_params'], ValueError: need more than 2 values to unpack
I finally be able to convert SSDVGG from Caffe to caffe2 and solve my issues in caffe2/python/caffe_translator.py by adding ,*kwargs in the call of new layers added like this:
`@TranslatorRegistry.Register("Normalize") def TranslateNormalize(layer, pretrained_blobs, is_test, **kwargs): caffe_op = BaseTranslate(layer, "Norm") output = caffe_op.output[0] param = layer.norm_param AddArgument(caffe_op, "across_spatial", param.across_spatial) AddArgument(caffe_op, "eps", param.eps) AddArgument(caffe_op, "channel_shared", param.channel_shared) AddArgument(caffe_op, "order", "NCHW")
caffe_op.input.extend([output + "_scale"])
scale = utils.NumpyArrayToCaffe2Tensor(pretrained_blobs[0], output + '_scale')
return caffe_op, [scale]
@TranslatorRegistry.Register("PriorBox") def TranslatePriorBox(layer, pretrained_blobs, is_test, **kwargs): caffe_op = BaseTranslate(layer, "PriorBox") output = caffe_op.output[0] param = layer.prior_box_param AddArgument(caffe_op, "min_sizes", [param.min_size[i] for i in range(len(param.min_size))]) AddArgument(caffe_op, "max_sizes", [param.max_size[i] for i in range(len(param.max_size))]) AddArgument(caffe_op, "aspect_ratios", [param.aspect_ratio[i] for i in range(len(param.aspect_ratio))]) AddArgument(caffe_op, "flip", param.flip) AddArgument(caffe_op, "clip", param.clip) AddArgument(caffe_op, "variance", [param.variance[i] for i in range(len(param.variance))]) AddArgument(caffe_op, "img_size", param.img_size) AddArgument(caffe_op, "img_w", param.img_w) AddArgument(caffe_op, "img_h", param.img_h) AddArgument(caffe_op, "step", param.step) AddArgument(caffe_op, "step_h", param.step_h) AddArgument(caffe_op, "step_w", param.step_w) AddArgument(caffe_op, "offset", param.offset) AddArgument(caffe_op, "order", "NCHW")
return caffe_op, []
@TranslatorRegistry.Register("Permute") def TranslatePermute(layer, pretrained_blobs, is_test, **kwargs): caffe_op = BaseTranslate(layer, "Transpose") param = layer.permute_param num_orders = len(param.order) assert num_orders == 4 AddArgument(caffe_op, "axes", [param.order[i] for i in range(num_orders)])
return caffe_op, []
@TranslatorRegistry.Register("DetectionOutput") def TranslateDetectionOutput(layer, pretrained_blobs, is_test, **kwargs): caffe_op = BaseTranslate(layer, "DetectionOutput") param = layer.detection_output_param AddArgument(caffe_op, "num_classes", param.num_classes) AddArgument(caffe_op, "share_location", param.share_location) AddArgument(caffe_op, "background_label_id", param.background_label_id) AddArgument(caffe_op, "nms_threshold", param.nms_param.nms_threshold) AddArgument(caffe_op, "top_k", param.nms_param.top_k) AddArgument(caffe_op, "eta", param.nms_param.eta) AddArgument(caffe_op, "code_type", param.code_type) AddArgument(caffe_op, "variance_encoded_in_target", param.variance_encoded_in_target) AddArgument(caffe_op, "keep_top_k", param.keep_top_k) AddArgument(caffe_op, "confidence_threshold", param.confidence_threshold)
return caffe_op, []
`
Issue #509 also describe what to do be able to translate SSD from Caffe to caffe2 with help of @KeyKy
@fbadaud could you open a pr for the caffe_translator so that other people can use your implementation?
Hi I got problem when I convert caffe pre-trained model to caffe2, here is the error message:
python -m caffe2.python.caffe_translator /home/pi/caffe2/pretrainedmodel/cnn_age_gender_models_an d_data.0.0.2/deploy_gender.prototxt /home/pi/caffe2/pretrainedmodel/cnn_age_gender_models_and_data.0.0.2/gender_net.cafemodel
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/pi/caffe2/build/caffe2/python/caffe_translator.py", line 928, in
Any idea for solve this? Thanks in advance!
@jerryzh168 hi I am not familiar with PR. I create a branch locally and add, commit my modification. then I ve tried to push this branch to origin but got permission denied with error: 403. I don't want to break anything , so can you guide a bit how to complete the pull request?
Fork the official repo to your GH profile. Then, you clone your repo. Create a branch. Make changes. Push the branch to your forked repo. Then, create a pull request to merge your branch from the forked repo to the official.
From: fbadaud notifications@github.com Sent: Thursday, November 23, 2017 7:38:31 PM To: caffe2/caffe2 Cc: Sasi kiran Malladi; Comment Subject: Re: [caffe2/caffe2] Unable to convert caffe to caffe2 models (#1215)
@jerryzh168https://github.com/jerryzh168 hi I am not familiar with PR. I create a branch locally and add, commit my modification. then I ve tried to push this branch to origin but got permission denied with error: 403. I don't want to break anything , so can you guide a bit how to complete the pull request?
— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/caffe2/caffe2/issues/1215#issuecomment-346627648, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABRWXBy2oFq6prVSfInzZ5TU9-8O0L70ks5s5XxfgaJpZM4PZOP3.
I got problem when I convert caffe model from caffe to caffe2:
python -m caffe2.python.caffe_translator deploy.prototxt fcn8s-heavy-pascal.caffemodel
INFO:caffe_translator:Translate layer input
INFO:caffe_translator:Translate layer conv1_1
INFO:caffe_translator:Translate layer relu1_1
INFO:caffe_translator:Translate layer conv1_2
INFO:caffe_translator:Translate layer relu1_2
INFO:caffe_translator:Translate layer pool1
INFO:caffe_translator:Translate layer conv2_1
INFO:caffe_translator:Translate layer relu2_1
INFO:caffe_translator:Translate layer conv2_2
INFO:caffe_translator:Translate layer relu2_2
INFO:caffe_translator:Translate layer pool2
INFO:caffe_translator:Translate layer conv3_1
INFO:caffe_translator:Translate layer relu3_1
INFO:caffe_translator:Translate layer conv3_2
INFO:caffe_translator:Translate layer relu3_2
INFO:caffe_translator:Translate layer conv3_3
INFO:caffe_translator:Translate layer relu3_3
INFO:caffe_translator:Translate layer pool3
INFO:caffe_translator:Translate layer conv4_1
INFO:caffe_translator:Translate layer relu4_1
INFO:caffe_translator:Translate layer conv4_2
INFO:caffe_translator:Translate layer relu4_2
INFO:caffe_translator:Translate layer conv4_3
INFO:caffe_translator:Translate layer relu4_3
INFO:caffe_translator:Translate layer pool4
INFO:caffe_translator:Translate layer conv5_1
INFO:caffe_translator:Translate layer relu5_1
INFO:caffe_translator:Translate layer conv5_2
INFO:caffe_translator:Translate layer relu5_2
INFO:caffe_translator:Translate layer conv5_3
INFO:caffe_translator:Translate layer relu5_3
INFO:caffe_translator:Translate layer pool5
INFO:caffe_translator:Translate layer fc6
INFO:caffe_translator:Translate layer relu6
INFO:caffe_translator:Translate layer fc7
INFO:caffe_translator:Translate layer relu7
INFO:caffe_translator:Translate layer score_fr
INFO:caffe_translator:Translate layer upscore2
INFO:caffe_translator:Translate layer score_pool4
INFO:caffe_translator:Translate layer score_pool4c
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1204 20:52:51.432133 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:52:51.432287 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:52:58.527719 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:52:58.527776 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
INFO:caffe_translator:Translate layer fuse_pool4
INFO:caffe_translator:Translate layer upscore_pool4
INFO:caffe_translator:Translate layer score_pool3
INFO:caffe_translator:Translate layer score_pool3c
W1204 20:54:05.624105 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:54:05.624173 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:54:11.434262 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
W1204 20:54:11.434294 21628 conv_pool_op_base.h:608] You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it.
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/xzluo/caffe2/build/caffe2/python/caffe_translator.py", line 927, in
What do we do when we are hit by this warning? - "You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it."
How do we move away from this?
This warning message not only appears during model translation, but also when making inferences.
@sasikiran Except warnings, it has messages about RuntimeError .
hi @sasikiran , have you found an answer for the message "You are hitting a case where Caffe's legacy padding calculation is hit. This leads to inefficient and sometimes incorrect results. We are keeping this behavior for backward compatibility, but you are strongly recommended to move away from it."
I'm facing the same situation.
Regards
hi @yangqiongyongyu , have you ever fix the problem? I have met the same one as yours.
@jerryzh168 Is there any plan to add Crop op original in caffe2? I want to train my own FCN with caffe2. thanks
@beichen2012 we have new plans, please wait a little bit for Pytorch 1.0.
@jerryzh168 ,谢谢。可以透露一下大致什么时候出1.0版本吗?
@beichen2012 we are actively working on that, please keep an eye on announcements from https://pytorch.org/, I think we already have a unified build right now and other things are also on the way.
I have followed the example to convert caffemodel to caffe2 model given in the tutorial.
I have used the following command: % python -m caffe2.python.caffe_translator cifar10_quick_train_test.prototxt cifar10_quick_iter_4000.caffemodel
Here is the log that I got:
... WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: No module named caffe2_pybind11_state_gpu
INFO:caffe_translator:Current net state does not need layer cifar
INFO:caffe_translator:Translate layer cifar
INFO:caffe_translator:Translate layer conv1
INFO:caffe_translator:Translate layer pool1
INFO:caffe_translator:Translate layer relu1
INFO:caffe_translator:Translate layer conv2
INFO:caffe_translator:Translate layer relu2
INFO:caffe_translator:Translate layer pool2
INFO:caffe_translator:Translate layer conv3
INFO:caffe_translator:Translate layer relu3
INFO:caffe_translator:Translate layer pool3
INFO:caffe_translator:Translate layer ip1
INFO:caffe_translator:Translate layer ip2
INFO:caffe_translator:Translate layer accuracy
INFO:caffe_translator:Translate layer loss
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/local/caffe2/python/caffe_translator.py", line 848, in
remove_legacy_pad=not args.keep_legacy_pad
File "/usr/local/caffe2/python/caffe_translator.py", line 259, in TranslateModel
return TranslatorRegistry.TranslateModel(*args, **kwargs)
File "/usr/local/caffe2/python/caffe_translator.py", line 252, in TranslateModel
input_dims = caffe_net.layer[0].input_param.shape[0].dim
IndexError: list index out of range
...
I have used the cifar 10 prototxt and here is the link for my trained caffemodel
Kindly, help with the above issue.