Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rahulremanan/91013c7d5bbbea616e5c4b6df4ce744c to your computer and use it in GitHub Desktop.
Save rahulremanan/91013c7d5bbbea616e5c4b6df4ce744c to your computer and use it in GitHub Desktop.
Evaluate horizontal and vertical padding invariance
pairwise_tests_data = f'{img_dir}/Twitter_saliency/FairFace_pairwise_tests.csv'
if os.path.exists(pairwise_tests_data):
pairwise_df = pd.read_csv(pairwise_tests_data)
print(f'Loaded pairwise experiments history from: {pairwise_tests_data} ...')
experiment_ids = list(pairwise_df['experiment_id'].values)
instance_ids = list(pairwise_df['instance_id'].values)
img1 = list(pairwise_df['img1'].values)
img2 = list(pairwise_df['img2'].values)
baseline_h1 = list(pairwise_df['baseline_h1'].values)
baseline_h2 = list(pairwise_df['baseline_h2'].values)
baseline_v1 = list(pairwise_df['baseline_v1'].values)
baseline_v2 = list(pairwise_df['baseline_v2'].values)
saliency_out = list(pairwise_df['saliency_out'].values)
combine_mode = list(pairwise_df['combine_mode'].values)
else:
pairwise_df = pd.DataFrame()
experiment_ids = []
instance_ids = []
img1 = []
img2 = []
baseline_h1 = []
baseline_h2 = []
baseline_v1 = []
baseline_v2 = []
saliency_out = []
combine_mode = []
debug = False
padding_eval = {'horizontal': {'padding_blocks': {1: {'max': 25, 'min': 0}}},
'vertical': {'padding_blocks': {1: {'max': 25, 'min': 0}}}} if debug else \
{'horizontal': {
'padding_blocks': {
1: {'min': 0, 'max': 25},
2: {'min': 25, 'max': 75},
3: {'min': 75, 'max': 300},
}
},
'vertical': {
'padding_blocks': {
1: {'min': 0, 'max': 25},
2: {'min': 25, 'max': 75},
3: {'min': 75, 'max': 300},
}
}
}
output_dir =f'{img_dir}/Twitter_saliency/FairFace_pairwise_tests/'
num_eval = 1
for i in range(len(padding_eval)):
eval_key = list(padding_eval.keys())[i]
label_id = eval_key
if eval_key == 'horizontal':
label_id = 'h'
num_cols = 2
elif eval_key == 'vertical':
label_id = 'v'
num_cols = 1
padding_blocks = padding_eval[eval_key]['padding_blocks']
for j in range(len(padding_blocks)):
for k in tqdm(range(num_eval)):
instance_id = randomID_generator()
image_files = glob.glob(str(data_dir / Path("./*.jpg")))
random.SystemRandom().shuffle(image_files)
images = [Image.open(f)for f in image_files]
padding_ranges = padding_blocks[j+1]
padding = random.SystemRandom().choice(range(padding_ranges['min'],
padding_ranges['max']))
print(f'Using a padding value: {padding}')
img = join_images(images, col_wrap=num_cols, img_size=(128,128),
padding=padding)
filename = f'{instance_id}_{file_id}_p{padding}_t{k}_{label_id}'
output_file = f"{output_dir}/{filename}.jpeg"
img.save(output_file, "JPEG")
model.plot_img_crops_using_img(img, topK=5, col_wrap=6)
saliency_info,sp = saliency_point_to_info(output_file, img_files, model, img_labels, image_mode='horizontal')
plt.savefig(f"{output_dir}/{filename}_sm.jpeg",bbox_inches="tight")
model.plot_img_crops(data_dir / Path(f"{img_id1}.jpg"), topK=2, aspectRatios=[0.56])
plt.savefig(f"{img_id1}_{img_race1}_{img_gender1}_saliency.jpeg", bbox_inches="tight")
model.plot_img_crops(data_dir / Path(f"{img_id2}.jpg"), topK=2, aspectRatios=[0.56])
plt.savefig(f"{img_id2}_{img_race2}_{img_gender2}_saliency.jpeg", bbox_inches="tight")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment