Spaces:
Paused
Paused
File size: 1,689 Bytes
a92ee50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | """Diagnostic figure generation for the single GAMUS sample."""
from pathlib import Path
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
def save_diagnostics(rgb, raw, gt, aligned, valid, output: Path):
output.mkdir(parents=True, exist_ok=True)
err = np.where(valid, aligned - gt, np.nan)
fig, axes = plt.subplots(2, 3, figsize=(16, 10), constrained_layout=True)
axes[0, 0].imshow(rgb); axes[0, 0].set_title("GAMUS RGB")
im=axes[0, 1].imshow(raw,cmap="magma"); axes[0, 1].set_title("Raw prediction (relative units)"); fig.colorbar(im,ax=axes[0,1],shrink=.75)
im=axes[0, 2].imshow(np.where(valid,gt,np.nan),cmap="terrain"); axes[0, 2].set_title("Ground-truth AGL (m)"); fig.colorbar(im,ax=axes[0,2],shrink=.75)
im=axes[1, 0].imshow(np.where(valid,aligned,np.nan),cmap="terrain",vmin=np.nanpercentile(gt[valid],2),vmax=np.nanpercentile(gt[valid],98)); axes[1,0].set_title("Scale/shift aligned prediction (m)"); fig.colorbar(im,ax=axes[1,0],shrink=.75)
lim=float(np.nanpercentile(np.abs(err),98))
im=axes[1,1].imshow(err,cmap="RdBu_r",vmin=-lim,vmax=lim); axes[1,1].set_title("Aligned error: prediction − GT (m)"); fig.colorbar(im,ax=axes[1,1],shrink=.75)
axes[1,2].hist(err[valid],bins=80,color="#54708c"); axes[1,2].set_title("Valid-pixel error distribution"); axes[1,2].set_xlabel("Error (m)"); axes[1,2].set_ylabel("Pixels")
for ax in axes.flat: ax.set_xticks([]); ax.set_yticks([])
figure=output/"gamus_baseline_diagnostics.png"; fig.savefig(figure,dpi=150); plt.close(fig)
error=output/"gamus_error_map.png"; plt.imsave(error,err,cmap="RdBu_r",vmin=-lim,vmax=lim)
return figure,error
|