如何解决对象标签的提取
我试图检测我的视频序列中的对象,但不是将这些“烧录”输出到视频文件中,我想将它们作为变量打印到命令行输出,我以后可以从中存储和检索(例如我可以在哪里做 print(labelname,confidence)
或类似的。一直在寻找方法来做到这一点(包括在这里),尽管使用的变量似乎与这个特定的实现不一致。以前在 OpenCV 中已经能够做到这一点,但是因为 tf 对我来说很陌生,所以有点困难!(由于 GPU + OpenCV 问题而切换)。
以下是我们处理每一帧的代码的摘录:
while True:
return_value,frame = vid.read()
if return_value:
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
image = Image.fromarray(frame)
else:
print('Video has ended or failed,try a different video format!')
break
frame_size = frame.shape[:2]
image_data = cv2.resize(frame,(input_size,input_size))
image_data = image_data / 255.
image_data = image_data[np.newaxis,...].astype(np.float32)
start_time = time.time()
if FLAGS.framework == 'tflite':
interpreter.set_tensor(input_details[0]['index'],image_data)
interpreter.invoke()
pred = [interpreter.get_tensor(output_details[i]['index']) for i in range(len(output_details))]
if FLAGS.model == 'yolov3' and FLAGS.tiny == True:
boxes,pred_conf = filter_boxes(pred[1],pred[0],score_threshold=0.25,input_shape=tf.constant([input_size,input_size]))
else:
boxes,pred_conf = filter_boxes(pred[0],pred[1],input_size]))
else:
batch_data = tf.constant(image_data)
pred_bbox = infer(batch_data)
for key,value in pred_bbox.items():
boxes = value[:,:,0:4]
pred_conf = value[:,4:]
boxes,scores,classes,valid_detections = tf.image.combined_non_max_suppression(
boxes=tf.reshape(boxes,(tf.shape(boxes)[0],-1,1,4)),scores=tf.reshape(
pred_conf,(tf.shape(pred_conf)[0],tf.shape(pred_conf)[-1])),max_output_size_per_class=50,max_total_size=50,iou_threshold=FLAGS.iou,score_threshold=FLAGS.score
)
pred_bbox = [boxes.numpy(),scores.numpy(),classes.numpy(),valid_detections.numpy()]
image = utils.draw_bbox(frame,pred_bbox)
fps = 1.0 / (time.time() - start_time)
print("FPS: %.2f" % fps)
result = np.asarray(image)
cv2.namedWindow("result",cv2.WINDOW_AUTOSIZE)
result = cv2.cvtColor(image,cv2.COLOR_RGB2BGR)
完整代码可以在 Github here 上找到以供参考。
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。