- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When I execute a loaded network in my Python program, it crashes with the error "Exception has occurred: KeyError 'boxes'" (I get the same error in my WSL Ubuntu and Raspberry Pi 4). I am implementing the code in this page "https://docs.openvino.ai/latest/notebooks/004-hello-detection-with-output.html#" and, my program reads as follows:
import matplotlib.pyplot as plt
import numpy as np
from openvino.inference_engine import IECore
...
openvino_xml = openvino_model_path + 'person-vehicle-bike-detection-crossroad-1016.xml'
openvino_weights = openvino_model_path + 'person-vehicle-bike-detection-crossroad-1016.bin'
device_name = 'MYRIAD' # try this on the Rpi4
# device_name = 'CPU' # try this on WSL Ubuntu runnin in my laptop
picture = picture_captured_path + 'cars-expressway1.jpg'
ie = IECore()
net = ie.read_network(
model=openvino_xml,
weights=openvino_weights,
)
exec_net = ie.load_network(net, device_name)
input_layer_ir = next(iter(exec_net.input_info))
output_layer_ir = next(iter(exec_net.outputs))
# get input and output names of nodes
input_key = list(exec_net.input_info)[0]
output_key = list(exec_net.outputs.keys())[0]
def printOpenVino_InputOutputItems():
print("Inputs:")
for name, info in exec_net.input_info.items():
print("\tname: {}".format(name))
print("\tshape: {}".format(info.tensor_desc.dims))
# print("\tlayout: {}".format(info.layout))
print("\tprecision: {}\n".format(info.precision))
print("Outputs:")
for name, info in exec_net.outputs.items():
print("\tname: {}".format(name))
print("\tshape: {}".format(info.shape))
print("\tlayout: {}".format(info.layout))
print("\tprecision: {}\n".format(info.precision))
print("input_key: " + input_key)
print("output_key: " + output_key)
# Check values in Inputs and Outputs
printOpenVino_InputOutputItems()
imageFrame = cv.imread(picture)
if (type(imageFrame) == type(None)):
break
# Resize with OpenCV your image if needed to match with net input shape
N, C, H, W = exec_net.input_info[input_layer_ir].tensor_desc.dims
resized_image = cv.resize(src=imageFrame, dsize=(W, H))
# Converting image to NCHW format with FP32 type
input_data = np.expand_dims(resized_image.transpose(2, 0, 1), 0)
# DO INFERENCE
result = exec_net.infer(inputs={input_layer_ir: input_data})
# Extract list of boxes from results
boxes = result["boxes"]
When I run this program, it first executes the printOpenVino_InputOutputItems() method printing these results:
Inputs:
name: input.1
shape: [1, 3, 512, 512]
precision: FP32
Outputs:
name: 653
shape: [1, 1, 200, 7]
layout: NCHW
precision: FP32
input_key: input.1
output_key: 653
Backend QtAgg is interactive backend. Turning interactive mode on.
But then in line 62 of my program (where I try to extract the boxes from the results variable), I get the following error:
Exception has occurred: KeyError
'boxes'
File "/home/winlinuxuser/projects/classify-vehicle/openvino-pi4-vehicle-person.py", line 62
boxes = result["boxes"]
Putting a breakpoint in line 59 (using VSCode), I could read the content in the "result" variable and, it was the following one:
Questions:
- Why am I getting this error?
- How can I extract the boxes from the result variable?
Thank you in advance for all your support and will be waiting for your reply,
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi RGVGreatCoder,
Thanks for reaching out to us and thanks for sharing your information with us.
We are now investigating this issue and we will update you at the earliest.
Regards,
Wan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi RGVGreatCoder,
I noticed that the horizontal-text-detection-0001 contains boxes as one of the Results.
while person-vehicle-bike-detection-crossroad-1016 only contains detection_out as a Result.
You may check it by using Netron.
As a workaround, I suggest you use the Object Detection SSD Python Sample. The demo is located under the following directory:
<INSTALL_DIR>\inference_engine\samples\python\object_detection_sample_ssd
On another note, I have validated the demo application with person-vehicle-bike-detection-crossroad-1016 as shown as follows.
Regards,
Wan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You suggest me to look for the sample in this directory:
<INSTALL_DIR>\inference_engine\samples\python\object_detection_sample_ssd
I cannot find this directory. I installed OpenVINO toolkit using PIP. Where should I find the sample if I used PIP?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi RGVGreatCoder,
Yes, you are correct. OpenVINO Toolkit PIP Package does not come with the Inference Engine Samples directory.
You could instead, find the particular Object Detection SSD Python Sample from GitHub. Download or copy the Python Sample script and place it in your directory.
Since you're using the OpenVINO PIP Package, use the following command to get the necessary models for the Python sample:
omz_downloader --name mobilenet-ssd
omz_converter --name mobilenet-ssd
Once downloaded, run the Object Detection SSD Python Sample with the following command:
python <path_to_sample>/object_detection_sample_ssd.py -m <path_to_model>/mobilenet-ssd.xml -i <path_to_image> -d CPU
Regards,
Hairul
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi RGVGreatCoder,
This thread will no longer be monitored since we have provided a suggestion.
If you need any additional information from Intel, please submit a new question.
Regards,
Wan
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page