- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hello! I encountered difficulties when using the implementation of the model of RetinaNet https://github.com/fizyr/keras-retinanet in openVINO.
The implementation from fizyr separates the training model and the inference model. The model for training at the exit has layers for classification and regression. The model for inference adds additional user layers. These layers include applying the regression values to the anchors and performing NMS.
This can be seen here https://github.com/fizyr/keras-retinanet/blob/master/keras_retinanet/models/retinanet.py#L287
I tried to convert the trained model, without adding additional layers in keras. I did it. The model not has the same dimension as in the keras implementation.
openVino: (1, 57600, 1)
keras: (1, 24633, 4), (1, 24633, 1)
In this case, in xml, I see two layers that I need at the output:
<layer id="198" name="classification/concat" precision="FP32" type="Concat"> <data axis="1"/> <input> <port id="0"> <dim>1</dim> <dim>35721</dim> <dim>1</dim> </port> <port id="1"> <dim>1</dim> <dim>9216</dim> <dim>1</dim> </port> <port id="2"> <dim>1</dim> <dim>2304</dim> <dim>1</dim> </port> <port id="3"> <dim>1</dim> <dim>576</dim> <dim>1</dim> </port> <port id="4"> <dim>1</dim> <dim>144</dim> <dim>1</dim> </port> </input> <output> <port id="5"> <dim>1</dim> <dim>47961</dim> <dim>1</dim> </port> </output> </layer> .... <layer id="259" name="regression/concat" precision="FP32" type="Concat"> <data axis="1"/> <input> <port id="0"> <dim>1</dim> <dim>35721</dim> <dim>4</dim> </port> <port id="1"> <dim>1</dim> <dim>9216</dim> <dim>4</dim> </port> <port id="2"> <dim>1</dim> <dim>2304</dim> <dim>4</dim> </port> <port id="3"> <dim>1</dim> <dim>576</dim> <dim>4</dim> </port> <port id="4"> <dim>1</dim> <dim>144</dim> <dim>4</dim> </port> </input> <output> <port id="5"> <dim>1</dim> <dim>47961</dim> <dim>4</dim> </port> </output> </layer>
Ok, but if I try to convert a keras model to which user layers have been added - I will not get what I expected at the output of the network.
I load the keras model and convert the model to a frozen graph:
from keras import backend as K from keras_retinanet import models import tensorflow as tf def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True): graph = session.graph with graph.as_default(): freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or [])) output_names = output_names or [] output_names += [v.op.name for v in tf.global_variables()] input_graph_def = graph.as_graph_def() if clear_devices: for node in input_graph_def.node: node.device = "" frozen_graph = tf.graph_util.convert_variables_to_constants( session, input_graph_def, output_names, freeze_var_names) return frozen_graph model = models.load_model('resnet50_pascal_07.h5', backbone_name='resnet50') model = models.convert_model(model) frozen_graph = freeze_session(K.get_session(), output_names=[out.op.name for out in model.outputs]) tf.train.write_graph(frozen_graph, '/path/', "resnet50_pascal_07.pb", as_text=False)
After that I use model_optimizer:
python mo_tf.py --input_model 'resnet50_pascal_07.pb' --input_shape '[1,480,640,3]' --data_type FP32 --output_dir '/path/' --tensorflow_use_custom_operations_config ./extensions/front/tf/retinanet.json
After that, I load the model and perform the inference on one image. The result I get in openVINO is different from what I get in keras:
import glob import cv2 import numpy as np from openvino.inference_engine import IENetwork, IEPlugin # ONLY one images! fns = glob.glob('imgs/*jpg') model_xml = 'resnet50_pascal_07.xml' model_bin = 'resnet50_pascal_07.bin' plugin = IEPlugin(device="CPU", plugin_dirs='/intel/computer_vision_sdk_2018.5.455/deployment_tools/inference_engine/lib/ubuntu_18.04/intel64/') plugin.add_cpu_extension('/intel/computer_vision_sdk_2018.5.455/deployment_tools/inference_engine/lib/ubuntu_18.04/intel64/libcpu_extension_avx2.so') net = IENetwork(model=model_xml, weights=model_bin) supported_layers = plugin.get_supported_layers(net) not_supported_layers = [l for l in net.layers.keys() if l not in supported_layers] print('not supported layers:', not_supported_layers) input_blob = next(iter(net.inputs)) out_blob = next(iter(net.outputs)) print('out:', len(net.outputs)) net.batch_size = len(fns) n, c, h, w = net.inputs[input_blob].shape print(n, c, h, w) print("Loading model to the plugin") exec_net = plugin.load(network=net, num_requests=2) del net # load images for idx,fn in enumerate(fns): image = cv2.imread(fn) if image.shape[:-1] != (h, w): print("Image {} is resized from {} to {}".format(fn, image.shape[:-1], (h, w))) image = cv2.resize(image, (w, h)) image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW image = np.expand_dims(image, axis=0) image = image.astype(np.float64) res = exec_net.infer(inputs={input_blob: image}) res = res[out_blob] print(res.shape) print("*"*50) print(res) print("*"*50)
I get the following result:
not supported layers: [] out: 1 1 3 480 640 Loading model to the plugin Image imgs/599.jpg is resized from (1080, 1920) to (480, 640) (1, 1, 300, 7) ************************************************** [[[[-1. 0. 0. ... 0. 0. 0.] [ 0. 0. 0. ... 0. 0. 0.] [ 0. 0. 0. ... 0. 0. 0.] ... [ 0. 0. 0. ... 0. 0. 0.] [ 0. 0. 0. ... 0. 0. 0.] [ 0. 0. 0. ... 0. 0. 0.]]]] **************************************************
keras result:
boxes, scores, labels (1, 300, 4) (1, 300) (1, 300) [[[301.5591 60.040943 337.5506 132.44531 ] [351.31454 51.48535 373.8011 100.82195 ] [369.77106 44.90435 394.83795 96.91844 ] ... [ -1. -1. -1. -1. ] [ -1. -1. -1. -1. ] [ -1. -1. -1. -1. ]]] [[ 0.61092675 0.39506134 0.21634595 0.1704979 0.14281695 0.13980182 0.1340574 0.10564897 0.08412086 0.08110106 0.07932754 0.07105038 0.07094233 0.06902117 0.06568456 0.06281518 0.06170008 0.05614603 0.05522677 0.05040509 -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. ]] [[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]]
What catches your eye is a different measurement at the output of the neural network. (1, 300, 4) (1, 300) (1, 300) vs (1, 1, 300, 7).
As it is written officially that openVINO supports RetinaNet https://software.intel.com/en-us/articles/OpenVINO-RelNotes :
TensorFlow*
Added support of the following TensorFlow* operations: Gather, GatherV2, ResourceGather, Sqrt, Square, full support of ResizeBilinear, ReverseSequence near the LSTM loop, Pad/PadV2/MirrorPad which are not fuse-able to convolution.
Added support of the following TensorFlow* topologies: VDCNN, Unet, A3C, DeepSpeech, lm_1b, lpr-net, CRNN, NCF, RetinaNet, DenseNet, ResNext.
Added support for Reverse and Bi-directional forms of LSTM loops in the TensorFlow* models.
Added ability to load TensorFlow* model from sharded checkpoints.
Fixed bug with conversion of the TensorFlow* model with Split/Unstack operations where not all output tensors are used.
However, I did not find any mention for which implementation this support is being implemented.
I have a suspicion that the code that performs the conversion is not working properly. But I lack the competence to fix it: /intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py
I will be grateful for any help.
Ссылка скопирована
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
I have a suspicion that the code that performs the conversion is not working properly. But I lack the competence to fix it.
intel/computer_vision_sdk_2018.5.455/deployment_tools/model_optimizer/extensions/front/tf/RetinaNetFilteredDetectionsReplacement.py
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear Maksim, I sent you a message asking for your full Keras code, so that I can reproduce this issue.
Thank you for using OpenVino !
Shubha
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi, Shubha.
To reproduce the error follow the steps:
1) Clone the repository https://github.com/Maxfashko/keras-retinanet-inference
Follow the instructions to run my pipeline. So, as the weights contained in the official retinanet repository are already converted, you need to download the not converted weights: https://yadi.sk/d/9y7F2iOf5_yL-w
1.1) You need to change the script code slightly to see the measurement of the neural network on the output layers. https://github.com/Maxfashko/keras-retinanet-inference/blob/master/bin/inference_retinanet.py#L63
Just add this code:
reg, cl = self.model.predict_on_batch(np.array(img_batch)) print("cl", np.array(cl).shape) print("reg", np.array(reg).shape) print(cl) print(reg) sys.exit(-1)
Well, the command to run the script will look like this:
./bin/inference_retinanet.py \ --weights snapshot/resnet50_pascal_07.h5 \ --convert false \ --data data/image.jpg \ --labels data/coco_labels.json
You should see the following:
cl (1, 329706, 1)
reg (1, 329706, 4)
[[[0.00734594]
[0.00750174]
[0.00769961]
...
[0.00909076]
[0.01096065]
[0.01178531]]]
[[[ 0.20512821 0.07351568 0.01868737 0.06051755]
[ 0.19080408 0.06185164 -0.01386412 0.12379301]
[ 0.14048176 0.02960548 -0.00405663 0.07327364]
...
[-0.10057355 -0.24512951 -0.22110356 -0.18410827]
[-0.18897493 -0.17596444 -0.11185227 -0.05784295]
[-0.0770526 -0.06576442 -0.01173029 0.01229405]]]
2) Now convert weights from *h5 to a frozen graph *pb:
#!/usr/bin/env python import os import argparse import tensorflow as tf from keras import backend as K from keras_retinanet import models def parse_args(args): parser = argparse.ArgumentParser(description='convert model') parser.add_argument('--input', help='Path to *.h5', type=str, required=True) return parser.parse_args(args) def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True): graph = session.graph with graph.as_default(): freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or [])) output_names = output_names or [] output_names += [v.op.name for v in tf.global_variables()] input_graph_def = graph.as_graph_def() if clear_devices: for node in input_graph_def.node: node.device = "" frozen_graph = tf.graph_util.convert_variables_to_constants( session, input_graph_def, output_names, freeze_var_names) return frozen_graph def main(args=None): args = parse_args(args) weights_name = args.input dirname = os.path.dirname(weights_name) basename = os.path.basename(weights_name) fn, ext = os.path.splitext(basename) model = models.load_model(weights_name, backbone_name='resnet50') #model = models.convert_model(model) frozen_graph = freeze_session(K.get_session(), output_names=[out.op.name for out in model.outputs]) tf.train.write_graph(frozen_graph, dirname, f'{fn}.pb', as_text=False) print(f'weights saved: {dirname}') if __name__ == '__main__': main()
3) use model optimizer:
python mo_tf.py --input_model '/resnet50_pascal_07.pb' --input_shape '[1,1080,1920,3]' --output_dir '/path/'
4) run_openvino:
#!/usr/bin/env python import os import time import argparse import cv2 import numpy as np from openvino.inference_engine import IENetwork, IEPlugin def parse_args(args): parser = argparse.ArgumentParser(description='convert model') parser.add_argument( '--img', help='path to image', type=str, required=True ) parser.add_argument( '--xml', help='path to xml', type=str, required=True ) parser.add_argument( '--bin', help='path to bin', type=str, required=True ) parser.add_argument( '--plugin', help='path to plugin dir', type=str, required=False, default='/home/maksim/libs/intel/computer_vision_sdk_2018.5.455/deployment_tools/inference_engine/lib/ubuntu_18.04/intel64/' ) parser.add_argument( '--cpu-ext', help='path to plugin dir', type=str, required=False, default='/home/maksim/libs/intel/computer_vision_sdk_2018.5.455/deployment_tools/inference_engine/lib/ubuntu_18.04/intel64/libcpu_extension_sse4.so' ) return parser.parse_args(args) def main(args=None): args=parse_args(args) model_xml = args.xml model_bin = args.bin img_fn = args.img plugin = IEPlugin(device="CPU", plugin_dirs=args.plugin) plugin.add_cpu_extension(args.cpu_ext) net = IENetwork(model=model_xml, weights=model_bin) supported_layers = plugin.get_supported_layers(net) not_supported_layers = [l for l in net.layers.keys() if l not in supported_layers] print('not supported layers:', not_supported_layers) input_blob = 'input_1' cl_out_blob = 'classification/concat' rg_out_blob = 'regression/concat' print('out:', len(net.outputs)) print('outputs', net.outputs) net.batch_size = 1 n, c, h, w = net.inputs[input_blob].shape print(n, c, h, w) print("Loading model to the plugin") exec_net = plugin.load(network=net) del net # load images image = cv2.imread(img_fn) if image.shape[:-1] != (h, w): print("Image {} is resized from {} to {}".format(img_fn, image.shape[:-1], (h, w))) image = cv2.resize(image, (w, h)) image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW image = np.expand_dims(image, axis=0) res = exec_net.infer(inputs={input_blob: image}) classifications = res[cl_out_blob] regressions = res[rg_out_blob] print('cl', classifications.shape) print('rg', regressions.shape) print('cl', classifications) print('rg', regressions) if __name__ == '__main__': main()
You should see the following:
cl (1, 389205, 1)
rg (1, 389205, 4)
cl [[[0.00731658]
[0.00593163]
[0.00490844]
...
[0.013796 ]
[0.01271339]
[0.01176905]]]
rg [[[ 0.19778913 0.42981434 0.4873137 0.4337933 ]
[ 0.35420343 0.34238777 0.3551264 0.35943335]
[ 0.34856698 0.3398867 0.34825876 0.355788 ]
...
[-0.02663497 -0.05773252 0.0025167 0.12971793]
[ 0.10235062 0.02202121 -0.05354824 -0.08908419]
[-0.2890372 -0.37682706 -0.32895935 0.02852303]]]
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi, Shubha. When I use openvino to deploy the retinanet model, I don't understand.
I can get similar results to you. as follow:
cl (1, 67995, 1)
reg (1, 67995, 4)
[[[0.0056458]
[0.00638934]
[0.00500558]
...
[0.00484054]
[0.01096065]
[0.00460911]]]
[[[ 0.332659 -0.0957022 -0.341365 -0.289769]
[ 0.299811 -0.412403 -0.01386412 0.12379301]
[ 0.14048176 0.02960548 -0.00405663 0.07327364]
...
[-0.10057355 -0.24512951 -0.22110356 -0.18410827]
[-0.18897493 -0.17596444 -0.11185227 -0.05784295]
[-0.0770526 -0.06576442 -0.01173029 0.01229405]]]
But now I don‘t know how to convert the data to get the coordinates of the box. I need to get the coordinates of the target to perform the positioning.
Thank you very much!
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear Maksim, thank you for such detailed reproduction steps. I will look into it and post my findings here.
Shubha
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hallo, Maxim. Are you from russia?) I ve bump into the same broblem.
I am trying to use openVINO with retinanet to optimize the network.
My project is: https://github.com/gosha20777/rescuer-la
Con you sent me your contact.
My E-mail is: gosha20777@live.ru
My telegramm is: @gosha20777
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear Maxim, I don't want you to think I'm ignoring you. I am working on reproducing this right now. thanks for your detailed steps. I will report back here.
Thanks for your patience -
Shubha
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear Maxim, attempts to run inference_retinanet.py bombed. Honestly I don't have the bandwidth to fully debug what went wrong (since inference_retinanet.py is not Intel code) but suffice it to say that I use Windows and this line of code threw an exception :
handler = Handler(data_provider=data_provider, **params)
The exact error I get is this one:
https://github.com/sbraz/pymediainfo/issues/39
I also had to install a bunch of things which were missing too (pandas, pymediainfo, etc...)
However, all is not lost. For issues like this one, it's enough if I get the following items from you :
1) the frozen.pb ( I don't have this from you). Please zip it up and send it to me via private message.
2) the full IR xml and the mo command you used to produce that XML (the mo command was given but the full XML was not - please zip it up and PM it to me)
3) the openvino inference code (which you have posted above). Incidentally have you tried one of our classification samples directly rather than write your own code ? Your classification code seems pretty straightforward, so why not just use classification_sample.py under inference_engine\samples\python_samples ? I ask this because the fewer variables we have the more straightforward the debugging will be.
Looking forward to hearing from you.
Thanks for using OpenVino !
Shubha
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hey shubha,maksim
i am facing same issue from openvino model, the detections are not coming good
I use resnet50_coco_best_v2.1.0.h5 (from here) and converted to frozen model before using model optimizer
I used following script to convert model
python mo_tf.py --input_model "/home/prateek/Downloads/Notebooks/personal/openvino/model_files/Retinanet/tf_model/resnet50_coco_best_v2.1.0.pb" --input_shape '[1,480,640,3]' --data_type FP32 --tensorflow_use_custom_operations_config extensions/front/tf/retinanet.json --reverse_input_channels --output_dir ~/Downloads/Notebooks/personal/openvino/model_files/
I ran both raw retinanet model and the converted openvino model sharing two small clips here, please download and view
openvino gave far less detection at same threshold of .3, I believe its an issue related to model conversion.
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi Maksim - were you able to resolve the issue at your end? We are running into a similar issue and don't know how to proceed? Is it a retinaNet bug - nothing to do with OpenVINO?
Prateek - looks like you were able to get to the detection which is beyond what Marksim had reported. Can you please share the version of Tensorflow, OpenVINO and Intel platform you are using?
thanks
Dash
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Dear RetinaNet guys,
if you can come up with a simple self-contained program which demonstrates the problem, I'd be happy to investigate.
Also, please download OpenVino 2019R3 if you haven't already.
Thanks,
Shubha
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi,
Was the issue of output shape mismatch solved? I'm stuck with the same problem.
I'm using openvino_2019.3.334
Has anyone successfully optimized and run inference using retinanet?
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi guys,
For anyone facing the issue, I was able to get the inferencing working through openvino. I am using 2020.1.023. I have been using the fizyr/retinanet implementation found here - fizyr/retinanet
Certain takeaways:
1. Make sure that the preprocessing used for images during training is being followed in the exact same way during inference.
2. OpenVINO gives detections differently compared to the frozen graph. The frozen graph returns a list of bounding boxes (300,4), scores (300,1) and labels (300,1) but OpenVINO returns a concatenated version of the same (300,7) for every image passed.
OpenVINO format decode for the 7 columns:
- Labels are contained in the second column (index 1)
- Scores are contained in the third column (index 2)
- Boxes are in the next four columns as (xmin, ymin, xmax, ymax ) (index 3,4,5,6)
A simple function to decode the detections:
def decode_openvino_detections(detections, input_shape = (800, 1333)): """ Converts openvino detections to understandable format Parameters: detections: Detections obtained from net.infer() method. input_shape: This is required to scale the bounding boxes coordinates passed. Returns: boxes: The bounding box coordinates representing (xmin, ymin, xmax, ymax) scores: The confidence of the detections labels: The class of the object detected """ detections = detections[:,:,detections[:,:,:,2].argsort()[0][0][::-1],:] # sort detections on score labels = detections[:,:,:,1].astype(int) scores = detections[:,:,:,2] boxes = detections[:,:,:,(3,4,5,6)] # in decimal # rescale to pixel boxes[:,:,:,(0,2)] = boxes[:,:,:,(0,2)]*input_shape[1] boxes[:,:,:,(1,3)] = boxes[:,:,:,(1,3)]*input_shape[0] return boxes, scores, labels
- Отметить как новое
- Закладка
- Подписаться
- Отключить
- Подписка на RSS-канал
- Выделить
- Печать
- Сообщить о недопустимом содержимом
Hi A G,
I'm trying to convert and use the same retinanet implementation from fizyr/retinanet.
In particular this pretreined resnet50_coco_best_v2.1.0.h5.
I use this command to convert the model:
python mo_tf.py --input_model "path_model/model.pb" --input_shape '[1,480,640,3]' --data_type FP32 --tensorflow_use_custom_operations_config extensions/front/tf/retinanet.json --reverse_input_channels --output_dir "path_output_model"
I'm using opencvat to load the model,but also when I try to load the model with a python script, the error is :
"Error reading network: in Layer conv1_relu/Relu: trying to connect an edge to non existing output port: 7.5"
"Model was not properly created/updated. Test failed: Error reading network: in Layer conv1_relu/Relu: trying to connect an edge to non existing output port: 7.5"
Please can you guide me to do the process?
Thanks, it's very important

- Подписка на RSS-канал
- Отметить тему как новую
- Отметить тему как прочитанную
- Выполнить отслеживание данной Тема для текущего пользователя
- Закладка
- Подписаться
- Страница в формате печати