我有一个使用TensorFlow设置的对象检测算法,有没有办法根据盒子的大小去除异常值?
例如,我检测到20个对象。假设它们中有17个大约是50x50。但是,有几个边界框是1x1,一个框是1000x1000。显然,1x1和1000x1000的盒子太大了,应该去掉。
发布于 2018-08-19 05:02:52
可以这样做的一种方法是使用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,True,False,False
https://stackoverflow.com/questions/51912354
复制相似问题