# 计算模型的适应度
def fitness(x):
w=[0.0,0.0,0.1,0.9]
return (x[:,:4*w]).sum(1)
def smooth(y,f=0.05):
# 滤波器的大小
nf=round(len(y)*f*2)//2+1
# 边界处理
p=np.ones(nf//2)
# 在原数组的前后分别添加若干个重复的首尾元素,以避免在卷积计算时因边界效应导致的失真。
yp=np.concatenate((p*y[0],y,p*y[-1]),0)
# 卷积计算,使用卷积函数,对填充后的数组 yp 进行滤波。np.ones(nf) / nf 创建一个均值滤波器,其元素均为 1/nf。
return np.convolve(yp,np.ones(nf)/nf,mode='valid')
def ap_per_class(tp,conf,pred_cls,target_cls,plot=False,save_dir='.',names=(),eps=1e-6,prefix=""):
# 对conf置信度进行降序排序
i=np.argsort(-conf)
tp,conf,pred_cls&