问题描述
我正在使用TensorFlow执行对象检测任务,但有时会显示误报,因此我想过滤一些边界框。
例如,如果对象的边界框的宽度小于整个屏幕的50%,则显示该框:
(Boxes,scores,classes,num_detections) = sess.run(
[Boxes,num_detections],Feed_dict={image_tensor: frame_expanded})
# W = width of frame,H = height of frame
ymin = int((Boxes[0][0][0] * H))
xmin = int((Boxes[0][0][1] * W))
ymax = int((Boxes[0][0][2] * H))
xmax = int((Boxes[0][0][3] * W))
if (xmax -xmin) < W*0.5:
vis_util.visualize_Boxes_and_labels_on_image_array(
frame,np.squeeze(Boxes),np.squeeze(classes).astype(np.int32),np.squeeze(scores),category_index,use_normalized_coordinates=True,line_thickness=1,)
但是,它不起作用。它仍然显示所有边界框。我试图比较整个屏幕区域的面积,但也不起作用。
Image from false cow detection.
简而言之,如何通过后期处理或预处理来移除外部较大的盒子?
如果有人可以提供帮助,我将感到非常高兴。
编辑: 我的模型是SSD Mobilenet v2。我使用自己的数据集进行了训练,该数据集仅包含一个类(牛),并且作为输入数据,我正在通过OpenCV流式传输视频。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)