我对keras评估生成器的准确性有疑问
我将提供我的代码,问题将会跟进:
从模型部分开始,在模型末尾:
o = (Reshape(( outputHeight*outputWidth, n_classes)))(o)
o = (Activation('softmax'))(o)
#create model
model = Model( img_input , o )
评估部分:
K.set_learning_phase(0)
m = load_model(join(save_weights_path,"model.h5"))
batch_size = 1
test_path = "data/validation"
G =Generator(test_path,test_path,batch_size)
images = glob(join(test_path,"*.jpg"))
steps =len(images)
evaluator= m.evaluate_generator(G,steps = steps ,verbose = 1)
print("Accuracy :",evaluator[1])
我得到结果:
256/256 [==============================] - 10s 41ms/step
Accuracy : 0.7758417576551437
然后,我预测:
#feed数据256张图像
X =发电机()
#预测
pr = m.predict(np.array([X]))[0]
#reshape
pr = pr.reshape((output_height,output_width,n_classes)).argmax(axis = -1)
结果对我来说还不错,但是其中一些效果不好...
图片大小为512 * 512
我想知道来自Evaluate_generator的准确性返回真的意味着
我的模型正确预测512 * 512 * 0.77像素?
谢谢!
编辑:
我只是做一个实验:
我在文件夹中只保留一张图像,然后
运行valuate_generator,返回的精度为:
1/1 [==============================] - 1s 1s/step
Accuracy : 0.5572433471679688
当我自己测试时:
img_name = glob("*.jpg")
gt_name = glob("*.png")
img = cv.imread(img_name[0])
gt = cv.imread(gt_name[0])
c = (img==gt).all(axis=-1)
total = img.shape[0]*img.shape[1]
print(np.sum(c)/total)
猜猜是什么:
0.41905975341796875
答案 0 :(得分:0)
事实证明我错了
我将细分输出保存为jpg文件,该文件会更改一些像素值
找到并保存为png文件后,acc与Keras提供的相同。