- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello
I have been trying to train my own object detection (single class) model and then create the bin,xml files so that I can perform inference on a RaspberryPi equipped with OpenVino.
I trained a SSD_Inception_v2 model successfully using Tensorflow Object Detection API (tensorflow version is 1.14.0 and the TensorFlow Models v.1.13.0 release is used) and then transformed the trained model to frozen inference graph (pb) file which I could successfully use to make inference and detect my objects of interest with F1-score of 93.
Link to download the pb and config files after training and exporting: https://we.tl/t-rw0GuFrsqc
Then, I used openvino_2020.2.117 on my PC with Windows 10 OS, to transform the pb model to intermediate representation. It was done with no error and produced the .xml and .bin (as well as a .mapping) files. Here is the command line for the conversion (<path> is the absolute path to the directory where the frozen model is located on my computer, and <installation path> is the directory where openvino is installed on my computer). I suspect whether I needed to make any changes to the original json file???:
python mo_tf.py --input_model=<path>/frozen_inference_graph.pb --transformations_config "<installation path>/openvino_2020.2.117/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json" --tensorflow_object_detection_api_pipeline_config <path>/pipeline.config --reverse_input_channels
(I also tried the command with/wo the argument --input_shape [1,300,300,3])
I then copied the xml and bin files to my Raspberry Pi. On my RaspberryPi4B I have openvino toolkit 2020.2.120 (which was the closest version I could find to my Windows toolkit). I am sure that the openvino is installed properly and my Intel Neural Stick1 usb is loaded correctly because I can use the sample SSD object detection for face detection and make inference with no problem.
Link to download the created xml,bin,mapping files after conversion: https://we.tl/t-XbpJJISe3n
Now, when I try the following code (from inside the folder where my xml and bin files are copied to) to perform inference using my own trained model on a test image "im1.jpg" (you can download the test image from here: https://we.tl/t-ty3QCgkVK0 )
import cv2 as cv net=cv.dnn_DetectionModel('frozen_inference_graph.xml','frozen_inference_graph.bin') net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD) frame = cv.imread('/home/pi/Downloads/im1.jpg') if frame is None: raise Exception('Image not found!') _, confidences, boxes = net.detect(frame, confThreshold=0.5) for confidence, box in zip(list(confidences), boxes): cv.rectangle(frame, box, color=(0, 255, 0)) cv.imwrite('/home/pi/Downloads/im1_out.png', frame)
I get the error:
"terminate called after throwing an instance of 'InferenceEngine::details::InferenceEngineException' what(): PriorBoxClustered_0/naked_not_unsqueezed has zero dimension that is not allowable"
My guess is the IR conversion is not done correctly. Can you please help me identify what I did wrong during the conversion to cause this error?
Many regards,
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sch,
Thanks for reaching out. There is an issue when using newer IR format with Raspbian OS. Please try converting the frozen model to IR format by adding the following flag:
--generate_deprecated_IR_V7
We managed to run your code with the IR files converted successfully. Test it and tell us if the issue persists.
Best regards,
David
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi David,
Your solution worked very well. Just so that I don't create the same issue next times, what is the best version of Tensorflow and the version of Tensorflow Object Detection API that you would suggest to use?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Sch,
It is great it worked for you! Regarding the other question, there is no "best version", any version that suit your needs would be useful. Also, the latest versions of OpenVINO™ toolkit have added support for TF 1.15.X.
Best regards,
David
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page