Closed yzbx closed 6 years ago
import os
import cv2
import sys
import numpy as np
def evaluate(input_path, output_path, target_path, threshold=10):
input_image = cv2.imread(input_path)
output_image = cv2.imread(output_path)
target_image = cv2.imread(target_path)
# print (target_path)
mask_3d = (target_image != input_image)
mask = np.sum(mask_3d, axis=-1) > 0
raw_dif = cv2.absdiff(target_image, output_image)
# dif=np.sum(raw_dif,axis=-1)
dif = np.mean(raw_dif, axis=-1)
# dif = np.max(raw_dif,axis=-1)
# print (dif)
F = np.sum(np.logical_and(dif > threshold,mask))
T = np.sum(np.logical_and(dif <= threshold,mask))
return T, F
# n11669921_26423-3-2-inputs.png n11939491_55149-4-2-inputs.png
# n11669921_26423-3-2-outputs.png n11939491_55149-4-2-outputs.png
# n11669921_26423-3-2-targets.png
# liufang@dp:~/pix2pix-tensorflow/completion_data/flower_test_output2
# liufang@dp:~/pix2pix-tensorflow/completion_data/flower_test_output2/image
if __name__ == '__main__':
input_dir = '/home/liufang/pix2pix-tensorflow/completion_data/flower_test_result2/images/'
output_dir = '/home/liufang/pix2pix-tensorflow/completion_data/flower_test_result2/images/'
target_dir = '/home/liufang/pix2pix-tensorflow/completion_data/flower_test_result2/images/'
list_input = os.listdir(input_dir)
list_output = os.listdir(output_dir)
list_target = os.listdir(target_dir)
precision = 0.0
count = 0
for input in list_input:
if "input" in input:
for output in list_output:
if "outputs" in output:
for target in list_target:
if "targets" in target:
n = 19
if input[0:n]==output[0:n] and input[0:n]== target[0:n]:
T, F = evaluate(os.path.join(input_dir, input), os.path.join(output_dir, output),
os.path.join(input_dir, target))
precision += T / (F+T)
count = count + 1
precision = precision / count
print(precision)
mask for dif target image and input image
liufang@dp:~/pix2pix-tensorflow/completion_data/flower_test_result2 liufang@dp:~/pix2pix-tensorflow/completion_data/flower_test_result2/image