- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In case input is one image,it do correctly.But I have many images,it detected slowly one by one.So I want to detected the face on batch.
I use pre-trained model face-detection-retail-0004, I set the batch_size in IENetwork, batch_size = images num
net = IENetwork(model=model, weights=weights) net.batch_size = batch_size
And response is not i expected.
my code to get detected boxes.
import cv2
import numpy as np
def detection(detection_network, inputs, threshold=0.5):
input_blob = detection_network['input_blob']
output_blob = detection_network['output_blob']
input_num = detection_network['input_num']
input_channel = detection_network['input_channel']
input_height = detection_network['input_height']
input_width = detection_network['input_width']
exec_net = detection_network['exec_net']
assert len(inputs) == input_num, f'Input length should {input_num}, but receive {len(inputs)}'
resize_images = np.ndarray(shape=(input_num, input_channel, input_height, input_height))
original_images = list()
for i in range(input_num):
image = cv2.imread(inputs)
original_images.append(image)
if image.shape[:-1] != (input_height, input_width):
image = cv2.resize(image, (input_height, input_width))
image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW
resize_images = image
# Start sync inference
res = exec_net.infer(inputs={input_blob: resize_images})
res = res[output_blob]
# Parse detection results of the current request
boxes = list()
# for idx, input_item in enumerate(res): # how many input
# for obj in input_item[0]: # how many output for a input
# # for obj in output_item:
# if obj[2] > threshold:
# print(obj[0], obj[1], obj[2], obj[3], obj[4], obj[5], obj[6])
# initial_h, initial_w, _ = original_images[idx].shape
#
# try:
# xmin = int(obj[3] * initial_w)
# ymin = int(obj[4] * initial_h)
# xmax = int(obj[5] * initial_w)
# ymax = int(obj[6] * initial_h)
# except ValueError:
# continue
#
# box = original_images[idx][xmin:xmax, ymin:ymax, :]
# boxes.append(box)
for obj in res[0][0]: # how many input
# for obj in output_item:
idx = int(obj[0])
if obj[2] > threshold:
print(obj[0], obj[1], obj[2], obj[3], obj[4], obj[5], obj[6])
initial_h, initial_w, _ = original_images[idx].shape
try:
xmin = int(obj[3] * initial_w)
ymin = int(obj[4] * initial_h)
xmax = int(obj[5] * initial_w)
ymax = int(obj[6] * initial_h)
except ValueError:
continue
box = original_images[idx][xmin:xmax, ymin:ymax, :]
boxes.append(box)
return boxes
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page