from torchvision.transforms import ToPILImage from torchvision.utils import make_grid from lpips import LPIPS ImDist = LPIPS(net="squeeze") rootdir = r"E:\OneDrive - Washington University in St. Louis\Hessian_summary\App\Inversion" os.makedirs(rootdir, exist_ok=True) #%% data = np.load( r"E:\OneDrive - Washington University in St. Louis\Hessian_summary\BigBiGAN\H_avg_BigBiGAN.npz" ) evc, eva = data["evc_avg"], data["eva_avg"], evc_tsr = torch.from_numpy(evc).cuda().float() eva_tsr = torch.from_numpy(eva).cuda().float() #%% from torch.optim import Adam BBGAN = loadBigBiGAN() G = BigBiGAN_wrapper(BBGAN) #%% refvec = torch.randn(1, 120).cuda() refimg = G.visualize(refvec) #%% def L1loss(im1, im2): return (im1 - im2).abs().mean(axis=[1, 2, 3]) fitvec = torch.randn(1, 120).cuda() fitvec.requires_grad_(True) optimizer = Adam( [fitvec],
from time import time from os.path import join import os import sys import lpips from GAN_hessian_compute import hessian_compute, get_full_hessian from torchvision.transforms import ToPILImage from torchvision.utils import make_grid from GAN_utils import loadBigGAN, loadStyleGAN2, BigGAN_wrapper, StyleGAN2_wrapper, loadPGGAN, PGGAN_wrapper, loadBigBiGAN, BigBiGAN_wrapper from hessian_analysis_tools import plot_spectra, compute_hess_corr from lpips import LPIPS ImDist = LPIPS(net="squeeze") datadir = r"E:\OneDrive - Washington University in St. Louis\HessNetArchit\BigBiGAN" os.makedirs(datadir, exist_ok=True) #%% BBGAN = loadBigBiGAN() SD = BBGAN.state_dict() #%% shuffled_SD = {} for name, Weight in SD.items(): idx = torch.randperm(Weight.numel()) W_shuf = Weight.view(-1)[idx].view(Weight.shape) shuffled_SD[name] = W_shuf #%% torch.save(shuffled_SD, join(datadir, "BigBiGAN_shuffle.pt")) # print(name, Weight.shape, Weight.mean().item(), Weight.std().item()) #%% BBGAN_sf = loadBigBiGAN() BBGAN_sf.load_state_dict(torch.load(join(datadir, "BigBiGAN_shuffle.pt"))) G_sf = BigBiGAN_wrapper(BBGAN_sf) #%%
refvecs = np.vstack((EmbedMat[:, np.random.randint(0, 1000, 10)], 0.5 * np.random.randn(128, 10))).T vis_eigen_action(tanvec, refvecs, figdir=figdir, page_B=50, G=BG, maxdist=2, rown=5, transpose=False, namestr="eig_clas%d" % eigi) #%% BigBiGAN on ImageNet from GAN_utils import BigBiGAN_wrapper, loadBigBiGAN from torchvision.transforms import ToPILImage BBGAN = loadBigBiGAN().cuda() BBG = BigBiGAN_wrapper(BBGAN) # EmbedMat = BG.BigGAN.embeddings.weight.cpu().numpy() #%% from GAN_hessian_compute import hessian_compute, get_full_hessian from hessian_analysis_tools import scan_hess_npz, compute_hess_corr, plot_spectra npzdir = r"E:\OneDrive - Washington University in St. Louis\HessGANCmp\BigBiGAN" eigval_col, eigvec_col, feat_col, meta = scan_hess_npz( npzdir, npzpat="Hess_norm9_(\d*).npz", evakey='eigvals', evckey='eigvects', featkey="vect") feat_arr = np.array(feat_col).squeeze() #%% eigid = 20