我有一个使用TensorFlow设置的对象检测算法,有没有一种方法可以消除盒子尺寸方面的异常值?
例如,我检测到20个对象。假设其中17个尺寸约为50x50。但是,有一些边界框是1x1,一个边界框是1000x1000。显然1x1和1000x1000盒子太大了,应该将其删除。
答案 0 :(得分:0)
您可以执行的一种方法是使用z_score。 z_score将检查此std_devs与平均值有多少不同。
示例:
# coding: utf-8
import cv2
import numpy as np
bboxes = [(100,200), (120,210), (114, 195), (2,190), (104, 300), (111, 3), (110, 208), (114,205)]
def z_score(ys):
mean_y = np.mean(ys)
stdev_y = np.std(ys)
z_scores = np.abs([(y - mean_y) / stdev_y for y in ys])
return z_scores
thresh = 1
outliers = [(t[0]>thresh or t[1]>thresh) for t in z_score(bboxes)]
这将打印: [False,False,False,True,True,True,False,False]