from matplotlib import pyplot as plt
import pickle
from pathlib import Path
import numpy as np
import random
import seaborn as sns
metadata_path = Path(r'E:\Data\Processed\DOTACOCO\metadata')
train_gsd = metadata_path / 'train\gsd.pkl'
val_gsd = metadata_path / 'val\gsd.pkl'
with open(train_gsd, 'rb') as f:
dota_gsds_train = pickle.load(f)
with open(val_gsd, 'rb') as f:
dota_gsds_val = pickle.load(f)
def plot_histo(values, split, max_padding=0.1, fontsize=15):
fig, ax = plt.subplots()
fig.set_size_inches(12, 12)
bins = np.arange(0, max(values) + max_padding, 0.1)
plt.hist(values, bins=bins, rwidth=0.85)
plt.grid(axis='y', alpha=0.75)
plt.xlabel('GSD (in meters)', fontsize=fontsize)
plt.ylabel('Count', fontsize=fontsize)
#plt.xlim(xmin=0, xmax=2.5)
plt.xticks(fontsize=fontsize)
plt.yticks(fontsize=fontsize)
plt.title(f"Ground Sample Distance of DOTA Dataset ({split} Set)", fontsize=fontsize)
plt.savefig(metadata_path / f'{split}_histo.png')
plot_histo(dota_gsds_train, 'Training')
plot_histo(dota_gsds_val, 'Validation')
median_train = round(np.median(dota_gsds_train), 2)
fig, ax = plt.subplots()
ax = sns.boxplot(dota_gsds_train, showfliers=False)#.set_title('lalala')
ax.set_title("Ground Sample Distance of DOTA Dataset (Train Set)", fontsize=15)
ax.text(median_train + 0.01, 0, str(median_train), color='w', weight='bold')
plt.xlabel('GSD (in meters)', fontsize=15)
plt.savefig(metadata_path / 'train_box_plot.png')
median_val = round(np.median(dota_gsds_train), 2)
fig, ax = plt.subplots()
ax = sns.boxplot(dota_gsds_val, showfliers=False)#.set_title('lalala')
ax.set_title("Ground Sample Distance of DOTA Dataset (Val Set)", fontsize=15)
ax.text(median_val + 0.01, 0, str(median_val), color='w', weight='bold')
plt.xlabel('GSD (in meters)', fontsize=15)
plt.savefig(metadata_path / 'val_box_plot.png')