From daabf7699a1489ee879c2205dc98fa9a2caa1137 Mon Sep 17 00:00:00 2001 From: Varun Kelkar Date: Tue, 2 Jan 2024 01:10:03 -0500 Subject: [PATCH] initial commit --- .gitignore | 2 + README.md | 57 + docs/AmbientFlow_generated_images_mri.png | Bin 0 -> 1143573 bytes docs/schematic.png | Bin 0 -> 70804 bytes masks_mri/cartesian_2fold_128.npy | Bin 0 -> 65664 bytes masks_mri/cartesian_2fold_128.png | Bin 0 -> 169 bytes masks_mri/cartesian_4fold_128.npy | Bin 0 -> 131200 bytes masks_mri/cartesian_4fold_128.png | Bin 0 -> 144 bytes masks_mri/cartesian_8fold_128.npy | Bin 0 -> 131200 bytes masks_mri/cartesian_8fold_128.png | Bin 0 -> 125 bytes recon/recon_bm3d.py | 86 + recon/recon_csgm.py | 108 ++ recon/recon_dip_tv.py | 97 ++ recon/recon_fista.py | 127 ++ recon/recon_inpaint_navier.py | 77 + recon/recon_langevin.py | 158 ++ recon/recon_postnet.py | 96 ++ recon/recon_wiener.py | 91 ++ requirements.txt | 15 + scripts/training/paper_configs.txt | 6 + scripts/training/train_ambient_celeba.sh | 55 + scripts/training/train_ambient_mnist.sh | 20 + scripts/training/train_ambient_mri.sh | 54 + scripts/training/train_vanilla_celeba.sh | 26 + scripts/training/train_vanilla_mnist.sh | 13 + scripts/training/train_vanilla_mri.sh | 24 + src/.gitignore | 1 + src/dataset_tool.py | 296 ++++ src/degradations.py | 251 +++ src/generate.py | 68 + src/generate.sh | 15 + src/metrics/__init__.py | 0 src/metrics/clean_fid.py | 18 + src/metrics/clean_fid.sh | 16 + src/metrics/log_odds.py | 101 ++ src/metrics/log_odds.sh | 28 + src/metrics/mean_and_cov.py | 112 ++ src/metrics/mean_and_cov.sh | 16 + src/metrics/radiomic_features.py | 235 +++ src/model_tools.py | 1347 ++++++++++++++++ src/models.py | 746 +++++++++ src/models2.py | 1776 +++++++++++++++++++++ src/sparsifiers.py | 258 +++ src/train_ambient.py | 560 +++++++ src/train_ambient_mnist.py | 245 +++ src/train_vanilla.py | 161 ++ src/utils.py | 87 + src/wavelet_utils.py | 60 + toy/ambient_model.py | 393 +++++ toy/data.py | 137 ++ toy/plotting.py | 121 ++ toy/vanilla_model.py | 161 ++ 52 files changed, 8321 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/AmbientFlow_generated_images_mri.png create mode 100644 docs/schematic.png create mode 100644 masks_mri/cartesian_2fold_128.npy create mode 100644 masks_mri/cartesian_2fold_128.png create mode 100644 masks_mri/cartesian_4fold_128.npy create mode 100644 masks_mri/cartesian_4fold_128.png create mode 100644 masks_mri/cartesian_8fold_128.npy create mode 100644 masks_mri/cartesian_8fold_128.png create mode 100644 recon/recon_bm3d.py create mode 100644 recon/recon_csgm.py create mode 100644 recon/recon_dip_tv.py create mode 100644 recon/recon_fista.py create mode 100644 recon/recon_inpaint_navier.py create mode 100644 recon/recon_langevin.py create mode 100644 recon/recon_postnet.py create mode 100644 recon/recon_wiener.py create mode 100644 requirements.txt create mode 100644 scripts/training/paper_configs.txt create mode 100755 scripts/training/train_ambient_celeba.sh create mode 100755 scripts/training/train_ambient_mnist.sh create mode 100755 scripts/training/train_ambient_mri.sh create mode 100755 scripts/training/train_vanilla_celeba.sh create mode 100644 scripts/training/train_vanilla_mnist.sh create mode 100755 scripts/training/train_vanilla_mri.sh create mode 100644 src/.gitignore create mode 100644 src/dataset_tool.py create mode 100644 src/degradations.py create mode 100644 src/generate.py create mode 100755 src/generate.sh create mode 100644 src/metrics/__init__.py create mode 100644 src/metrics/clean_fid.py create mode 100644 src/metrics/clean_fid.sh create mode 100644 src/metrics/log_odds.py create mode 100644 src/metrics/log_odds.sh create mode 100644 src/metrics/mean_and_cov.py create mode 100644 src/metrics/mean_and_cov.sh create mode 100644 src/metrics/radiomic_features.py create mode 100644 src/model_tools.py create mode 100644 src/models.py create mode 100644 src/models2.py create mode 100644 src/sparsifiers.py create mode 100644 src/train_ambient.py create mode 100644 src/train_ambient_mnist.py create mode 100644 src/train_vanilla.py create mode 100644 src/utils.py create mode 100644 src/wavelet_utils.py create mode 100644 toy/ambient_model.py create mode 100644 toy/data.py create mode 100644 toy/plotting.py create mode 100644 toy/vanilla_model.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..26fa5a7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +results +**/__pycache__ diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b8325c --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# AmbientFlow: Invertible generative models from incomplete, noisy measurements + +PyTorch implementation + +**Paper**: https://arxiv.org/abs/2309.04856 + +Varun A. Kelkar, Rucha Deshpande, Arindam Banerjee, Mark A. Anastasio
+University of Illinois at Urbana-Champaign, Urbana, IL - 61801, USA + +**Contact**: vak2@illinois.edu, maa@illinois.edu + +**Abstract**: Generative models have gained popularity for their potential applications in imaging science, such as image reconstruction, posterior sampling and data sharing. Flow-based generative models are particularly attractive due to their ability to tractably provide exact density estimates along with fast, inexpensive and diverse samples. Training such models, however, requires a large, high quality dataset of objects. In applications such as computed imaging, it is often difficult to acquire such data due to requirements such as long acquisition time or high radiation dose, while acquiring noisy or partially observed measurements of these objects is more feasible. In this work, we propose AmbientFlow, a framework for learning flow-based generative models directly from noisy and incomplete data. Using variational Bayesian methods, a novel framework for establishing flow-based generative models from noisy, incomplete data is proposed. Extensive numerical studies demonstrate the effectiveness of AmbientFlow in learning the object distribution. The utility of AmbientFlow in a downstream inference task of image reconstruction is demonstrated. + +

+AmbientFlow MRI images +AmbientFlow MRI images +

+ + +## System Requirements +- Linux/Unix-based systems recommended. The code hasn't been tested on Windows. +- 64 bit Python 3.8+. The code has been tested with Python 3.8.13 installed via Anaconda + +Other packages required are listed in the `requirements.txt` file. + +## Directory structure + +- The directory `toy` contains the codes corresponding to the toy 2D distribution. + +- The directory `scripts/training` contains the top level shell scripts for training the regular and ambient models. Within this directory, `paper_configs.txt` contains the hyperparameter configurations used for the results in the paper. The number of GPUs and batch sizes listed are according to training on a single NVIDIA Quadro RTX 8000 48 GB GPU. + +- The directory `src` stores all python code defining the flow networks, forward models (degradation models), data processing pipelines, and utilities. The subdirectory `src/metrics` contains codes for evaluating the trained generative models via FID score, log-odds, empirical mean and covariance estimates, and radiomic features (for the MRI study). + +- The directory `masks_mri` contains the undersampling masks relevant to the Fourier undersampling forward operators used for the stylized MRI study. + +- The directory `recon` contains the python codes for running image reconstruction/restoration algorithms including baseline classical algorithms, compressed sensing using generative models (CSGM), and posterior sampling via annealed Langevin dynamics. The details of these approaches can be found in our paper. + +## Data + +The data for the toy study is generated according to `toy/data.py`. The data for the MNIST, CelebA and MRI studies are obtained from the following resources: +- MNIST : Torchvision dataset: https://pytorch.org/vision/stable/generated/torchvision.datasets.MNIST.html +- CelebA-HQ : https://github.com/tkarras/progressive_growing_of_gans +- MRI: T2-weighted brain image volumes from the FastMRI Initiative Database: https://fastmri.med.nyu.edu/ + +## Model weights + +The weights of our trained models can be found at (coming soon). + +## Citations +``` +@article{kelkar2023ambientflow, + title={AmbientFlow: Invertible generative models from incomplete, noisy measurements}, + author={Kelkar, Varun A and Deshpande, Rucha and Banerjee, Arindam and Anastasio, Mark A}, + journal={arXiv preprint arXiv:2309.04856}, + year={2023} +} +``` diff --git a/docs/AmbientFlow_generated_images_mri.png b/docs/AmbientFlow_generated_images_mri.png new file mode 100644 index 0000000000000000000000000000000000000000..f625931f7c27a36d2ec01fada751f8492f461684 GIT binary patch literal 1143573 zcmeFYWmFv75(Ww(xF!U52_(VYEm#Pakl^kN4udsjS0xo7!K}3NSrFN+Lu23bj=^%Ma|%!=lU-{k0uuVh{ALc zsYgQ#|2~8b=j&l__BRVL$>)~4zk|Qw;RqO*em?Xp&&)0gLu@#sLv&bDZRT0waejb} zBt53`Id3lu!2KlK36|jd$q!f8?qO$HCgQ1OkCt}vY84K#UzCCn{Ku8r#KD2r$N1;H zyQ?!9<@i--)7OKH`^RdtlN(npxbJ4c6E3ccTEW){J~OtG>mG2yO3RiS%^yPb5j6}5 zDLcb*dBr0wa(U$=od+z}4b^dK5i)bz*Md3VJ~cgeb%WsF(aNC#XuZG6@_2>`$%Mv8o|2cU1KY6z>w5wtXcp|)m!aBgLgNT zq~(L9lQW(&PS3t%J@UtlsO%d44oEtc!TCbT&4NQK^}YzLTwKRVE3w_gQlE~&zE_Gd zB(B>A%Z^c(@Q`Ju2W`AdtQ-wCzSx*`Ye2$*c=!QvIVFRLf_emddU&gMJqX;!d>Sz5 zPetan{O2UA?&JpE_pHuvwF&T=-k?A8O+Q%B8Q1#j$eu+%8wMtz@8bFv~D!Hb#df+-qfuAjqW;rL;+ zB444Im`VI7l13@D%fz`ueL=B_8Fij;c_s$G*@9JhRw(o#;S#@B%E*r%XXhL1cZB2D z6`$MnZ9-PrjGjN94Ex5RZw&b=&p#gDQe6pj_{;tI7LDPWTZpOt5+MY>6UP8&3~8pv z)0Rb$ROepLv7P8o&!}MY0&Y4^JqkAJ49b$fW(=a_dPa6Q+|nnJ57A*&6kuP?_wuTX z6xV_KpNMAKE`5cLp53$B>F&S(?pMif!YNTuv#2>G zu-T*-aRfS1^(lovP`-@pr0)Ch?uReR3siP=b)Q(Otq*t=sK3OoD3POad--zF>jDHt z-J)lD>0gN}e`1=%sg{t=!H5kB%sSnb;6z9Z#n0~ARjPVfEa{vrzl(bD%ncJFrJIRB z*c!`5Hu$`xUtaNJdge|`{wyG^kx)1pD z*A1x$s!o7SPs)kY9ohrjaZk&OpU)A#k+sFN(uLC);pD&gh=S)|?2q98#g^p~XZb~l z1X(uT7}-&mkpaFPogJzjS$VWe>a3)P1Sw_o2RB-QA3SeEJE^u}K7O!}5s>NmkRT(J zi~X_xWA{gek76I+ete%torji3_E9>HnL$VyDyKrP`CX{*vk|!~k}HubdR?4H^rHBK z+*qdC=f=0Ev5fs5A7AJB+K1XFoJpyx&wZT}=aW*;6jZEJa;-g6-$L%EQ07#&R91V3 z`<3>cta8mSQq{V=v%rse8cO#+-%fh$E18pB(q0N*`n{8%5{oPD|B_ayQ9PgPrhb`6 ztUmNU;up6}@u%YVRvGh>)xwSy^?CfVX*t5uO&a%^P|Qns%;avuh&K^h5wD2_IEO)k z6SN==b0qUK&M+<>i}Xnki4HRpPW%X2P0@w-0+I(~)aL4-^6HAJ{wgPsqxq$Ug?WP+ zy}9B{$+U3xQnBBj+J2d%y+i!o;Z$A8ImmwvWgF!oxQm8ZN{jqd$2qqogITxsYwhRj zUBWE1w8Ph#sy=M8V;uFq6-*$9M73O`vI| zvz4|}!l0rrcVe^hR~+aYC>oTrC&Up-)WNu98K<72-cncY>VM04?smR_Z-gEwncqbm z#({s#RLmH|NT9*3DO@>TZJ>##F{Qawov#7YP^>PgZZ;RM(w{Y2D5|V83Y)K=HnPuJ$LRjh|Nbxbkt%&+;q-yBnXy{;wTuyY0i0fOcMw}g}u&KZ=M zfD)?`-KE8)PHRl-rlaknUq@U=JcJtIX5BBl)v>RMq^8Hub1-v*xtpXQtFi|VWFd+jIZ$Np{K59+7wXNp9DP37+&P=r#~ z#%%O)UkKJL_(Y03m!c4-fvp={Y8b7+dcl!-aSEL4!Bg_0d zH}i`uLIXJmImf}6S+?>@gOSd$b-Er%usgvqMGNDD!Z*inv{_7_ne5&hXs^R^eR9uo zkL+@KhRB_%)J4?4FaCJ{QATbqnVnVG_HO@F2v>_fR_>4RnECoe$PV3}Vt54N3)=So!S8q>MPTg*o@9ZBY9F8x}E=-A*i5NKC zI6OHR*kR8Z#o|_#RX$7y7G2MMo?ECu2LG@p2FKZd0b`?a1P?F_id(FZ>P><^zh@cW_P=3IyexpEl(1>@HW>y&!n-)q z@saQzxN$T3(&o4ajHd6@u}wHkZIb;4Wl|=%XDqEx7t>wa&TB>r21n8#-J=aZyN)d& z%Ajk6VTSGCi9lc9BtTzIy|n9#2+%?2VQeQr#dl8HUj8^!}9F>i3Q;s~~wSRf;j;io-WsW~XCqh5wP)BVgnaj$s~M+lJA}wRyW$=b063hk8eDZHJaw z`@Rh&i<#MyoCHsnj6W}Jw=R^grqE}oOC7Zp|9G8u`;#p3xbkEy_19hQJGDVZoVS-= zFETY1c$Kac&Cby$#a!I|ukySj!-H!<^=vF*P=MxfG zB$;&IyS>>FVv%4GzK*;5b!s{!dyoKoJcAYHcx!o&Fq{^)&B!kAHqBj4Z&@vfUbNmj z*BuMDu-s=}>%*kGdpI(F2n*c{LeTeQw^UO~i&xs4m&gXmNMG4?lFpUFAu%MUW3?Vw z!F`H>&ulvp|*8{U{W;&PLvbR z#|7JmUjTb1t1|ge>n)Rn3)U>*4Hpv+=3NT42>1c#dW7lw?|Pq%1#kEZZ4VioKMp8B zND*qRCSxKm5BCl@MuB?{PYj0$9Ki#dFg(eBj-}w=z#;r~{uvxx5D4!1-}fj0`={S` zV0&uwuRX$#KsaRJ-%DU~$$a+jyOBCG5&nIQ5DZ*{6Z;}ABLnQe7}^^fTZ7GP9Qc+~ z9Doz3wjb2NaB%pqpEh_ICE639{~6F%H3v0$IetSMD`tHo8v|oz7c1MRe&7UM_<=(! zV+Vao7b{C^Fu#is^Gb=MIwJ;hbC8eOf zkqN(&gw)^7fqz2OW)2Rv{46Za&d$uv9LzTMrYvlHe0(gd>@4i;Ou!vXU{`AgeHSKc zFwMU@`FB4O#$ZExkgWsA#+ve}Uws1`M+YHl>ZgJJ^ZVCx8oPl08Oa*__iF(!$ntcB zg^ih&aBv2qIjb^rh6%0DCiS4*{jTC(wQu>W_{ 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

T!jQih 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

0_=#^HIBi@ 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

I6TZZV71hZ+0zK!HeP(HcyEyn`e#6UOFRwx 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

H-L$+Xx1{pyE{SrLMw>-HVZZ8><@cP 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 KkXj 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

TL@# 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�WY@?#K4g2~T1Y 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�VU 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


G~ikgO7TD*IUw9lyD` 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 IT)6%}0e@C2tN;K2 literal 0 HcmV?d00001 diff --git a/docs/schematic.png b/docs/schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..2c59dcf171c5aad8bfdcb7451bd6deb254c560fd GIT binary patch literal 70804 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 literal 0 HcmV?d00001 diff --git a/masks_mri/cartesian_8fold_128.npy b/masks_mri/cartesian_8fold_128.npy new file mode 100644 index 0000000000000000000000000000000000000000..56416690dc46cebc3d48f2d94ca80676f67cef2b GIT binary patch literal 131200 zcmeI)u}Z^G6oBEl`V@D&3R&t@L~wIcTpXMvv=Ilfl88$w_zu3Xy`Cq~fHuk3;g%Lk zlkcAXLreO3b9a4ve^k9!+q`c3RhQ3GzE~}Do$}+Rd+VB)hfTL`%kx*wbKmZt@1L62 zcK`TfQK!Y(@_RY0(=Pq|c3im;AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009DjAnd#Ce_spY_73jJ~p1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C7rX=7x@Yqcb9EyNBFbC$q=RgN^KnHX{2XsIObU+7mKnHX{2XsIObU+7mKnHX{ z2XsIObU+7mKnHYSY#oSCt(5=)0t5&UAV7cs0RjXF5SX&S*uJlDyfKX&I23`Qa}bJF z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkL{ zkOhWbKj8JTyBs(afw9d&?3$GT0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U_)mec{a=COjcMV)p$H6} zgHW^*AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly MK!5-N0>2md0z+K1rT_o{ literal 0 HcmV?d00001 diff --git a/masks_mri/cartesian_8fold_128.png b/masks_mri/cartesian_8fold_128.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdc0f360df79ed9266baa82b7536e567ca6bd9d GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^4Is<`Bp9BB+KB@x7f%<*kcwMxuOAd-FyLS^DEU9P zlt*4oxWGoomx1BOIyZKP1pXHccNk?E8f*(>7AQ9`FxBug*ez$M=wV>s5n^C?aED28 W9=o8xJC>s$b3I-CT-G@yGywogZXfOd literal 0 HcmV?d00001 diff --git a/recon/recon_bm3d.py b/recon/recon_bm3d.py new file mode 100644 index 0000000..28c04db --- /dev/null +++ b/recon/recon_bm3d.py @@ -0,0 +1,86 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. + +""" + +import numpy as np +import bm3d +import torch +import dataset_tool +import degradations +import ast +import os +import argparse +import imageio as io +import glob +import numpy.linalg as la +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--num_images", type=int, default=50, help="Index of the image to be reconstructed") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--dataset", action='store_true') + +# data args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) +parser.add_argument("--tune", action='store_true', help="Tune the regularization parameter") + +args = parser.parse_args() + +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +# data +fnames = glob.glob(f"/shared/aristotle/SOMS/varun/ambientflow/data/CelebAHQDataset-GaussianNoise-0.2-image-data/*.png") +fnames_gt = glob.glob(f"/shared/aristotle/SOMS/varun/ambientflow/data/CelebAHQDataset-real-image-data/*.png") + +for idx in range(args.num_images): + print(idx) + ymeas = io.imread(fnames[5000+idx]) / 255 + xgt = io.imread(fnames_gt[5000+idx]) / 255 + # ymeas = np.swapaxes(ymeas,0,1).T + # ymeas = ymeas.reshape(1,3,64,64) + # ymeas,_ = noisy_dataset[idx]; ymeas = ymeas.reshape(1, *ymeas.shape) + # ymeas = degradation.rev(ymeas, mode='real', use_device=False) + # print(xgt.min(), xgt.max(), ymeas.min(), ymeas.max()) + + # ymeas = np.squeeze(ymeas.numpy()) + # ymeas = np.swapaxes(ymeas.T, 0,1) + # xgt = np.squeeze(xgt.numpy()) + # xgt = np.swapaxes(xgt.T, 0,1) + + # if args.tune: + # xests = [] + # for i in range(5): + # reg_parameter = args.reg_parameter * ( args.reg_parameter2 / args.reg_parameter )**(i/4) + xest = bm3d.bm3d(ymeas, sigma_psd=args.reg_parameter, stage_arg=bm3d.BM3DStages.HARD_THRESHOLDING) + print("RMSE error : ", la.norm(xest - xgt)/np.sqrt(np.prod(xgt.shape))) + + # ymeas = np.clip(ymeas,-0.5,0.5) + if args.dataset: + os.makedirs(os.path.join(args.results_dir, 'dataset'), exist_ok=True) + + if args.dataset: + io.imsave( os.path.join(args.results_dir, 'dataset', f'xest_{idx}_reg{args.reg_parameter}.png' ), xest) + else: + np.save( os.path.join(args.results_dir, f'ymeas_{idx}_reg{args.reg_parameter}.npy'), ymeas) + np.save( os.path.join(args.results_dir, f'xest_{idx}_reg{args.reg_parameter}.npy' ), xest) + np.save( os.path.join(args.results_dir, f'xgt_{idx}_reg{args.reg_parameter}.npy' ), xgt) + io.imsave( os.path.join(args.results_dir, f'ymeas_{idx}_reg{args.reg_parameter}.png' ), ymeas) + io.imsave( os.path.join(args.results_dir, f'xest_{idx}_reg{args.reg_parameter}.png' ), xest) + io.imsave( os.path.join(args.results_dir, f'xgt_{idx}_reg{args.reg_parameter}.png' ), xgt) + diff --git a/recon/recon_csgm.py b/recon/recon_csgm.py new file mode 100644 index 0000000..33d2547 --- /dev/null +++ b/recon/recon_csgm.py @@ -0,0 +1,108 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +from models2 import * +import degradations +import ast +import os +import argparse +import imageio as io +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--lamda", type=float, default=0, help="MAP regularization parameter") +parser.add_argument("--tv", type=float, default=0, help="TV regularization parameter") +parser.add_argument("--step", type=float, default=1e-03, help="Step size") +parser.add_argument("--num_iter", type=int, default=10000, help="Number of iterations for recon") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--project_on_mask", action='store_true', help="Only applicable for inpainting") + +# model args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--model_path", type=str, default='', help="Path to model pkl file") + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() +print(args, flush=True) + +def total_variation(img): + x = img[:,:,1:,:] - img[:,:,:-1,:] + y = img[:,:,:,1:] - img[:,:,:,:-1] + tvnorm = torch.sum(torch.abs(x)) + torch.sum(torch.abs(y)) + return tvnorm + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# data +# noisy_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, input_shape=args.input_shape, **args.data_args) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape) +# ymeas,_ = noisy_dataset[args.idx]; ymeas = ymeas.reshape(1, *ymeas.shape); ymeas = ymeas.to(device) +ymeas = degradation(xgt).to(device) +xgt = xgt.to(device) +print(xgt.min(), xgt.max(), abs(ymeas).min(), abs(ymeas).max()) + +# model +if '/ambient/' in args.model_path: + model = load_model(args.model_path, ambient=True).to(device) +else: model = load_model(args.model_path).to(device) +model.eval() + +# z = torch.zeros([1, np.prod(args.input_shape)], requires_grad=True).to(device) +z = torch.zeros( [1, np.prod(args.input_shape)], requires_grad=True, device=device) +# z = torch.nn.Parameter(z).to(device) +# model.initialize_actnorm(ymeas) +optimizer = torch.optim.Adam([z], lr=args.step) + +for i in range(args.num_iter): + + optimizer.zero_grad() + x,_ = model.reverse(z) + map_reg = args.lamda * torch.sum(z**2) + tv_reg = args.tv * total_variation(x) + loss = 0.5*torch.norm(ymeas - degradation.fwd_noiseless(x, use_device=True))**2 + tv_reg + map_reg + loss.backward() + optimizer.step() + + if (i < 10) or (i < 50 and i % 10 == 0) or (i % 50 == 0) or (i == args.num_iter-1): + if args.project_on_mask: + x[:, degradation.mask.astype(bool)] = xgt[:, degradation.mask.astype(bool)] + recon_error = torch.mean( (x - xgt)**2 ) + print(f"Idx : {i:05}, loss : {loss.cpu().detach().numpy()}, tv reg : {tv_reg}, recon. error : {recon_error}", flush=True) + +ymeas = np.squeeze(ymeas.cpu().detach().numpy()) +ymeas = np.swapaxes(ymeas.T, 0,1) +xest = np.squeeze(x.cpu().detach().numpy()) +xest = np.swapaxes(xest.T, 0,1) +xgt = np.squeeze(xgt.cpu().detach().numpy()) +xgt = np.swapaxes(xgt.T, 0,1) +np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.npy'), ymeas) +np.save( os.path.join(args.results_dir, f'xest_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.npy' ), xest) +np.save( os.path.join(args.results_dir, f'xgt_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.npy' ), xgt) +io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.png' ), ymeas) +io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.png' ), (np.clip((xest+0.5)*255, 0, 255))) +io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}_lam{args.lamda}_tv{args.tv}_niter{args.num_iter}_step{args.step}.png' ), xgt) diff --git a/recon/recon_dip_tv.py b/recon/recon_dip_tv.py new file mode 100644 index 0000000..4a9f92e --- /dev/null +++ b/recon/recon_dip_tv.py @@ -0,0 +1,97 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +import models +import degradations +import ast +import os +import argparse +import imageio as io +import sys +sys.path.append('../src') + + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--reg_parameter", type=float, default=0, help="TV regularization parameter") +parser.add_argument("--step", type=float, default=1e-03, help="Step size") +parser.add_argument("--num_iter", type=int, default=10000, help="Number of iterations for recon") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") + +# model args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--model_type", type=str, default='ConvINN') +parser.add_argument("--model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() + +def total_variation(img): + x = img[:,:,1:,:] - img[:,:,:-1,:] + y = img[:,:,:,1:] - img[:,:,:,:-1] + tvnorm = torch.sum(torch.abs(x)) + torch.sum(torch.abs(y)) + return tvnorm + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +# model +model = getattr(models, args.model_type)(args.input_shape, **args.model_args, device=device).to(device) + +# data +noisy_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, **args.data_args) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape); xgt = xgt.to(device) +ymeas,_ = noisy_dataset[args.idx]; ymeas = ymeas.reshape(1, *ymeas.shape); ymeas = ymeas.to(device) +print(xgt.min(), xgt.max(), ymeas.min(), ymeas.max()) + +z = torch.randn([1, *args.input_shape]).to(device) +# model.initialize_actnorm(ymeas) +optimizer = torch.optim.Adam(list(model.trainable_parameters), lr=args.step) + +for i in range(args.num_iter): + + optimizer.zero_grad() + x = model(z) + tv_reg = args.reg_parameter * total_variation(x) + loss = 0.5*torch.norm(ymeas - x)**2 + tv_reg + loss.backward() + optimizer.step() + + if (i < 10) or (i < 50 and i % 10 == 0) or (i % 50 == 0): + recon_error = torch.mean( (x - xgt)**2 ) + print(f"Idx : {i:05}, loss : {loss.cpu().detach().numpy()}, tv reg : {tv_reg}, recon. error : {recon_error}") + +ymeas = np.squeeze(ymeas.cpu().detach().numpy()) +ymeas = np.swapaxes(ymeas.T, 0,1) +xest = np.squeeze(x.cpu().detach().numpy()) +xest = np.swapaxes(xest.T, 0,1) +xgt = np.squeeze(xgt.cpu().detach().numpy()) +xgt = np.swapaxes(xgt.T, 0,1) +np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy'), ymeas) +np.save( os.path.join(args.results_dir, f'xest_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy' ), xest) +np.save( os.path.join(args.results_dir, f'xgt_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy' ), xgt) +io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), ymeas) +io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), (np.clip((xest+0.5)*255, 0, 255))) +io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), xgt) diff --git a/recon/recon_fista.py b/recon/recon_fista.py new file mode 100644 index 0000000..fd521bc --- /dev/null +++ b/recon/recon_fista.py @@ -0,0 +1,127 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +import models +import degradations +import ast +import os +import argparse +import imageio as io +import torch.distributions as dists +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--reg_parameter", type=float, default=0, help="TV regularization parameter") +parser.add_argument("--step", type=float, default=1e-03, help="Step size") +parser.add_argument("--num_iter", type=int, default=10000, help="Number of iterations for recon") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--dataset", action='store_true') +parser.add_argument("--tune", action='store_true') +parser.add_argument("--reg_parameter2", type=float, default=1e-01, help="In case tune is true, use this to try multiple reg parameters") + +# data args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() + +def total_variation(img): + x = img[:,:,1:,:] - img[:,:,:-1,:] + y = img[:,:,:,1:] - img[:,:,:,:-1] + tvnorm = torch.sum(torch.abs(x)) + torch.sum(torch.abs(y)) + return tvnorm + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +fwd = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits, device=device) + +# data +if args.dataset: + clean_dataset = getattr(dataset_tool, args.data_type)(train=True, ambient=False, **args.data_args) +else: + clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, **args.data_args) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape) +ymeas = fwd(xgt).to(device) +xgt = xgt.to(device) +# print(xgt.min(), xgt.max(), ymeas.numpy().min(), ymeas.cpu().numpy().max()) + +def run_iters(): + x = torch.zeros([1, *args.input_shape], requires_grad=True, device=device) + optimizer = torch.optim.Adamax([x], lr=args.step) + + for i in range(args.num_iter): + + optimizer.zero_grad() + tv_reg = args.reg_parameter * total_variation(x) + loss = 0.5*torch.norm(ymeas - fwd.fwd_noiseless(x, use_device=True))**2 + tv_reg + loss.backward() + optimizer.step() + + if (i < 10) or (i < 50 and i % 10 == 0) or (i % 50 == 0): + recon_error = torch.mean( (x - xgt)**2 ) + print(f"Idx : {i:05}, loss : {loss.cpu().detach().numpy()}, tv reg : {tv_reg}, recon. error : {recon_error}") + + ymeas_np = np.squeeze(ymeas.cpu().detach().numpy()) + ymeas_np = np.swapaxes(ymeas_np.T, 0,1) + xest = np.squeeze(x.cpu().detach().numpy()) + xest = np.swapaxes(xest.T, 0,1) + xgt_np = np.squeeze(xgt.cpu().detach().numpy()) + xgt_np = np.swapaxes(xgt_np.T, 0,1) + + if (not args.dataset) or (args.dataset and args.idx < 20): + np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy'), ymeas_np) + np.save( os.path.join(args.results_dir, f'xest_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy' ), xest) + np.save( os.path.join(args.results_dir, f'xgt_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.npy' ), xgt_np) + io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), ymeas_np) + io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), xest) + io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), xgt_np) + + return xgt_np, xest + +if not args.tune: + _, xest = run_iters() + if args.dataset: + os.makedirs(os.path.join(args.results_dir, 'dataset'), exist_ok=True) + io.imsave( os.path.join(args.results_dir, 'dataset', f'xest_{args.idx}_reg{args.reg_parameter}_niter{args.num_iter}_step{args.step}.png' ), xest) +else: + xests = [] + reg_parameter_init = args.reg_parameter + mses = [] + for i in range(5): + args.reg_parameter = reg_parameter_init * ( args.reg_parameter2 / reg_parameter_init )**(i/4) + xgt_np, xest = run_iters() + xests.append(xest) + mse = np.linalg.norm(xgt_np - xest) + mses.append(mse) + + min_idx = np.where(np.array(mses) == min(mses))[0][0] + xest = xests[min_idx] + if args.dataset: + os.makedirs(os.path.join(args.results_dir, 'dataset'), exist_ok=True) + io.imsave( os.path.join(args.results_dir, 'dataset', f'xest_{args.idx}_reg{reg_parameter_init * ( args.reg_parameter2 / reg_parameter_init )**(min_idx/4)}_niter{args.num_iter}_step{args.step}.png' ), xest) + + + + + + diff --git a/recon/recon_inpaint_navier.py b/recon/recon_inpaint_navier.py new file mode 100644 index 0000000..da28ef7 --- /dev/null +++ b/recon/recon_inpaint_navier.py @@ -0,0 +1,77 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import numpy as np +import dataset_tool +import degradations +import ast +import os +import argparse +import imageio as io +import cv2 +import sys +sys.path.append('../src') + + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--project_on_mask", action='store_true', help="Only applicable for inpainting") + +# data args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() +print(args, flush=True) + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# data +# noisy_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, input_shape=args.input_shape, **args.data_args) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape) +xgt = torch.flip(xgt, dims=[-1]) +# ymeas,_ = noisy_dataset[args.idx]; ymeas = ymeas.reshape(1, *ymeas.shape); ymeas = ymeas.to(device) +ymeas = degradation(xgt) +ymeas = np.squeeze(ymeas.cpu().detach().numpy()) +ymeas = np.swapaxes(ymeas.T, 0,1) +ymeas = (ymeas + 0.5) * 255 +xgt = np.squeeze(xgt.cpu().detach().numpy()) +xgt = np.swapaxes(xgt.T, 0,1) +xgt = (xgt + 0.5) * 255 + +print(xgt.min(), xgt.max(), abs(ymeas).min(), abs(ymeas).max()) + +mask = (1 - degradation.mask[0])*255 +mask = mask.astype(np.uint8) +ymeas = np.clip(ymeas,0,255).astype(np.uint8) + +xest = cv2.inpaint(ymeas, mask, 3, cv2.INPAINT_NS) +xest = xest / 255 - 0.5 +xgt = xgt / 255 - 0.5 +ymeas = ymeas / 255 - 0.5 + +np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}.npy'), ymeas) +np.save( os.path.join(args.results_dir, f'xest_{args.idx}.npy' ), xest) +np.save( os.path.join(args.results_dir, f'xgt_{args.idx}.npy' ), xgt) +io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}.png' ), ymeas) +io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}.png' ), (np.clip((xest+0.5)*255, 0, 255))) +io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}.png' ), xgt) diff --git a/recon/recon_langevin.py b/recon/recon_langevin.py new file mode 100644 index 0000000..4ef73c1 --- /dev/null +++ b/recon/recon_langevin.py @@ -0,0 +1,158 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +from models2 import * +import degradations +import ast +import os +import argparse +import imageio as io +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--T", type=int, default=200, help="Number of iterations T for each level of noise in Langevin annealing (except the last level, which may have a different number of iterations)") +parser.add_argument("--L", type=int, default=10, help='number of noise levels for annealing Langevin') +parser.add_argument("--num_iter", type=int, default=2000, help="Number of iterations") +parser.add_argument("--sigma_init", type=float, default=0.4, help="Initial noise level for annealing Langevin") +parser.add_argument("--sigma_final", type=float, default=0.1, help="Final noise level for annealing Langevin") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--anneal", action='store_true', help="Whether or not to anneal Langevin iterations") +parser.add_argument("--batch_size", type=int, default=50, help="Number of samples to draw from the posterior") +parser.add_argument("--step", type=float, default=0.001, help="Basic step size") +parser.add_argument("--momentum", type=float, default=0, help="Momentum between [0,1]") +parser.add_argument("--temperature", type=float, default=0.7, help="Temperature of the latent distribution") +parser.add_argument("--project_on_mask", action='store_true', help="Project on a mask, only applicable for inpainting.") + +# model args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--model_path", type=str, default='', help="Path to model pkl file") + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() +print(args, flush=True) + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +# data +# noisy_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, **args.data_args) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape) +# ymeas,_ = noisy_dataset[args.idx]; ymeas = ymeas.reshape(1, *ymeas.shape); ymeas = ymeas.to(device) +ymeas = degradation(xgt).to(device) +y_noiseless = degradation.fwd_noiseless(xgt).to(device) +ybatch = torch.cat([ymeas]*args.batch_size) +xgt = xgt.to(device) +print(xgt.min(), xgt.max(), abs(ymeas).min(), abs(ymeas).max()) + +# model +if '/ambient/' in args.model_path: + model = load_model(args.model_path, ambient=True).to(device) +else: model = load_model(args.model_path).to(device) +model.eval() + +# setup langevin params +T = args.T; L = args.L +sigma1 = args.sigma_init +sigmaT = args.sigma_final +factor = np.power(sigmaT / sigma1, 1/(L-1)) +if args.anneal: + sigma_func = lambda i: max( sigmaT, sigma1 * np.power(factor, i//T) ) + # sigma_func = lambda i: sigma1 * np.power(factor, i//T) + lr_func = lambda t : (sigma1 * np.power(factor, t//T))**2 / (sigmaT **2) +else: + lr_func = lambda i : 1 + # sigma_func = lambda i : args.degradation_args['std'] + sigma_func = lambda i : args.sigma_final + +zprior_weight = 0.5 / (args.temperature**2) +mloss_weight = 0.5 * np.prod(ymeas.shape) / (sigma1**2) +z = args.temperature * torch.randn( [args.batch_size, np.prod(args.input_shape)]) +z = torch.tensor(z, requires_grad=True, device=device) + +print("Training ...") +print("Measurement MSE : ", torch.mean(torch.abs(ymeas - y_noiseless)**2), flush=True) +optimizer = torch.optim.SGD([z], lr=args.step, momentum=args.momentum) +for i in range(args.num_iter): + + sigma = sigma_func(i) + step_size = lr_func(i) * args.step + mloss_weight = 0.5 * np.prod(ymeas.shape) / (sigma**2) + + optimizer.zero_grad() + x,_ = model.reverse(z) + z_loss_batch = torch.sum(z**2, dim=1) + y_loss_batch = torch.sum( torch.abs( ybatch - degradation.fwd_noiseless(x, use_device=True))**2, dim=[1,2,3]) + loss_batch = mloss_weight * y_loss_batch + zprior_weight * z_loss_batch + loss = torch.sum(loss_batch) #/ np.prod(ymeas.shape) + loss.backward() + + # gradient step + optimizer.param_groups[0]["lr"] = step_size + optimizer.step() + + # randomization step + grad_noise_weight = np.sqrt(2*step_size/(1-args.momentum)) + randomizing_noise = grad_noise_weight * torch.randn(z.shape).to(device) + with torch.no_grad(): + z += randomizing_noise + + if (i < 10) or (i < 50 and i % 10 == 0) or (i % 50 == 0) or (i == args.num_iter-1): + x,_ = model.reverse(z) + x_mse = torch.mean(x, dim=0, keepdim=True) + if args.project_on_mask: + x[:, degradation.mask.astype(bool)] = xgt[:, degradation.mask.astype(bool)] + x_mse[:, degradation.mask.astype(bool)] = xgt[:, degradation.mask.astype(bool)] + recon_error = torch.mean( (x_mse - xgt)**2 ) + meas_error = torch.mean( torch.mean(y_loss_batch) / np.prod(ymeas.shape) ) + print(f"Idx : {i:05}, loss : {loss.cpu().detach().numpy()}, recon. error : {recon_error}, meas. error : {meas_error}", flush=True) + +with open(os.path.join(args.results_dir, 'recon_error.txt'), 'w') as fid: + print(f"MMSE Recon. error : {recon_error}", file=fid) + +ymeas = np.squeeze(ymeas[0].cpu().detach().numpy()) +xests = x.cpu().detach().numpy() +xmse = np.squeeze(x_mse.cpu().detach().numpy()) +xgt = np.squeeze(xgt.cpu().detach().numpy()) +xvar = np.squeeze( np.std(xests, axis=0)**2 ) +np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.npy'), ymeas) +np.save( os.path.join(args.results_dir, f'xests_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.npy' ), xests) +np.save( os.path.join(args.results_dir, f'xmse_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.npy' ), xmse) +np.save( os.path.join(args.results_dir, f'xgt_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.npy' ), xgt) +np.save( os.path.join(args.results_dir, f'xvar_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.npy' ), xvar) + +ymeas = np.swapaxes(ymeas.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.png' ), ymeas) +for i,xest in enumerate(xests): + xest = np.swapaxes(xest.T, 0,1) + xest = np.squeeze(xest) + io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}_samp{i}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.png'), xest ) +xmse = np.swapaxes(xmse.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xmse_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.png' ), xmse) +xgt = np.swapaxes(xgt.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.png' ), xgt) +xvar = np.swapaxes(xvar.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xvar_{args.idx}_niter{args.num_iter}_step{args.step}_mom{args.momentum}_temp{args.temperature}.png' ), xvar) \ No newline at end of file diff --git a/recon/recon_postnet.py b/recon/recon_postnet.py new file mode 100644 index 0000000..634dced --- /dev/null +++ b/recon/recon_postnet.py @@ -0,0 +1,96 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +from models2 import * +import degradations +import ast +import os +import argparse +import imageio as io +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--idx", type=int, default=0, help="Index of the image to be reconstructed") +parser.add_argument("--temperature", type=float, default=1, help="Temperature of the images sampled from the posterior network") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--batch_size", type=int, default=50, help="Number of samples to draw from the posterior") + +# model args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--model_path", type=str, default='', help="Path to posterior model pkl file") + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() +print(args, flush=True) + +device = f'cuda:0' if torch.cuda.is_available() else 'cpu' +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +# data +# noisy_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, **args.data_args) + +xgt ,_ = clean_dataset[args.idx]; xgt = xgt.reshape(1,*xgt.shape) +# ymeas,_ = noisy_dataset[args.idx]; ymeas = ymeas.reshape(1, *ymeas.shape); ymeas = ymeas.to(device) +ymeas = degradation(xgt).to(device) +xrev = degradation.rev(ymeas) +xgt = xgt.to(device) +print(xgt.min(), xgt.max(), abs(ymeas).min(), abs(ymeas).max()) + +# model +post_model = load_post_model(args.model_path).to(device) +post_model.eval() + +xests = post_model.sample(args.batch_size, xrev, temp=args.temperature) +x_mse = np.mean(xests, axis=0) + + + +ymeas = np.squeeze(ymeas[0].cpu().detach().numpy()) +xmse = np.squeeze(x_mse) +xgt = np.squeeze(xgt.cpu().detach().numpy()) +xvar = np.squeeze( np.std(xests, axis=0)**2 ) + +recon_error = np.sqrt( np.mean( (xmse - xgt)**2 ) ) +print(f"MMSE Recon. error : {recon_error}", flush=True) +with open(os.path.join(args.results_dir, 'recon_error.txt'), 'w') as fid: + print(f"MMSE Recon. error : {recon_error}", file=fid) + +np.save( os.path.join(args.results_dir, f'ymeas_{args.idx}_temp{args.temperature}.npy'), ymeas) +np.save( os.path.join(args.results_dir, f'xests_{args.idx}_temp{args.temperature}.npy' ), xests) +np.save( os.path.join(args.results_dir, f'xmse_{args.idx}_temp{args.temperature}.npy' ), xmse) +np.save( os.path.join(args.results_dir, f'xgt_{args.idx}_temp{args.temperature}.npy' ), xgt) +np.save( os.path.join(args.results_dir, f'xvar_{args.idx}_temp{args.temperature}.npy' ), xvar) + +ymeas = np.swapaxes(ymeas.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'ymeas_{args.idx}_temp{args.temperature}.png' ), ymeas) +for i,xest in enumerate(xests): + xest = np.squeeze(xest) + io.imsave( os.path.join(args.results_dir, f'xest_{args.idx}_samp{i}_temp{args.temperature}.png'), xest ) +xmse = np.swapaxes(xmse.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xmse_{args.idx}_temp{args.temperature}.png' ), xmse) +xgt = np.swapaxes(xgt.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xgt_{args.idx}_temp{args.temperature}.png' ), xgt) +xvar = np.swapaxes(xvar.T, 0,1) +io.imsave( os.path.join(args.results_dir, f'xvar_{args.idx}_temp{args.temperature}.png' ), xvar) \ No newline at end of file diff --git a/recon/recon_wiener.py b/recon/recon_wiener.py new file mode 100644 index 0000000..a3385a2 --- /dev/null +++ b/recon/recon_wiener.py @@ -0,0 +1,91 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import numpy as np +from skimage.restoration import wiener +from scipy.ndimage import gaussian_filter +import torch +import dataset_tool +import degradations +import ast +import os +import argparse +import imageio as io +import sys +sys.path.append('../src') + +parser = argparse.ArgumentParser() +# recon args +parser.add_argument("--num_images", type=int, default=50, help="Index of the image to be reconstructed") +parser.add_argument("--reg_parameter", type=float, default=0.2, help="Wiener regularization parameter") +parser.add_argument("--num_bits", type=int, default=0) +parser.add_argument("--results_dir", type=str, default='', help="Results dir") +parser.add_argument("--dataset", action='store_true') + +# data args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +args = parser.parse_args() + +torch.manual_seed(0) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + +# data +noisy_dataset = getattr(dataset_tool, args.data_type)(train=True, ambient=True, degradation=degradation, **args.data_args) +clean_dataset = getattr(dataset_tool, args.data_type)(train=True, ambient=False, **args.data_args) +kernel = np.zeros(args.input_shape[1:]) +kernel[args.input_shape[1]//2, args.input_shape[2]//2] = 1 +kernel = gaussian_filter(kernel, args.degradation_args['kernel_sigma']) +kernel = kernel / kernel.max() +lw = int(4 * args.degradation_args['kernel_sigma'] + 0.5) +kernel = kernel[ + args.input_shape[1]//2 - lw : args.input_shape[1]//2 + lw + 1, + args.input_shape[1]//2 - lw : args.input_shape[1]//2 + lw + 1 ] + +for idx in range(args.num_images): + print(idx) + xgt ,_ = clean_dataset[idx]; xgt = xgt.reshape(1,*xgt.shape) + ymeas,_ = noisy_dataset[idx]; ymeas = ymeas.reshape(1, *ymeas.shape) + ymeas = degradation.rev(ymeas, mode='real') + # print(xgt.min(), xgt.max(), ymeas.min(), ymeas.max()) + + ymeas = np.squeeze(ymeas.numpy()) + ymeas = np.swapaxes(ymeas.T, 0,1) + xgt = np.squeeze(xgt.numpy()) + xgt = np.swapaxes(xgt.T, 0,1) + + xest = np.stack([ + wiener(ymeas[...,0], kernel, balance=args.reg_parameter), + wiener(ymeas[...,1], kernel, balance=args.reg_parameter), + wiener(ymeas[...,2], kernel, balance=args.reg_parameter), + ], axis=-1) + + mse_error = np.linalg.norm(xest - xgt)**2 + print(mse_error) + + # ymeas = np.clip(ymeas,-0.5,0.5) + if args.dataset: + os.makedirs(os.path.join(args.results_dir, 'dataset'), exist_ok=True) + + if args.dataset: + io.imsave( os.path.join(args.results_dir, 'dataset', f'xest_{idx}_reg{args.reg_parameter}.png' ), xest) + else: + np.save( os.path.join(args.results_dir, f'ymeas_{idx}_reg{args.reg_parameter}.npy'), ymeas) + np.save( os.path.join(args.results_dir, f'xest_{idx}_reg{args.reg_parameter}.npy' ), xest) + np.save( os.path.join(args.results_dir, f'xgt_{idx}_reg{args.reg_parameter}.npy' ), xgt) + io.imsave( os.path.join(args.results_dir, f'ymeas_{idx}_reg{args.reg_parameter}.png' ), ymeas) + io.imsave( os.path.join(args.results_dir, f'xest_{idx}_reg{args.reg_parameter}.png' ), xest) + io.imsave( os.path.join(args.results_dir, f'xgt_{idx}_reg{args.reg_parameter}.png' ), xgt) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..759f500 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,15 @@ +bm3d +FrEIA +imageio +matplotlib +numpy +Pillow +ptwt==0.1.2 +scikit-image +scipy +torch==1.11.0 +torchvision==0.12.0 +wandb +pyradiomics +SimpleITK +clean-fid \ No newline at end of file diff --git a/scripts/training/paper_configs.txt b/scripts/training/paper_configs.txt new file mode 100644 index 0000000..2013920 --- /dev/null +++ b/scripts/training/paper_configs.txt @@ -0,0 +1,6 @@ +Dataset Forward model reg_parameter threshold_weight sparsity_weight + +CelebA Gaussian noise (std. 0.2) 0.7 for 4000 kimgs, then 2.3 0 for 4000 kimgs, then 0.133 0 for 4000 kimgs, then 0.0097 +CelebA Blur (kernel width 1.5) + noise (std. 0.2) 0.7 for 4000 kimgs, then 2.3 0 for 4000 kimgs, then 0.2 0 for 4000 kimgs, then 0.005 +MRI Fully sampled + noise (std. 0.1) 1.5 for 10000 kimgs, then 5 0 for 18000 kimgs, then 0.05 0 for 18000 kimgs, then 0.03 +MRI 4x undersampled + noise (std. 0.1) 1.5 for 2000 kimgs, then 5 0 for 2000 kimgs, then 0.05 0 for 2000 kimgs, then 0.03 \ No newline at end of file diff --git a/scripts/training/train_ambient_celeba.sh b/scripts/training/train_ambient_celeba.sh new file mode 100755 index 0000000..7c96bb6 --- /dev/null +++ b/scripts/training/train_ambient_celeba.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# Following hyperparameter configurations are for example only. The optimal parameter configurations are provided in `paper_configs.txt`. + +cd .. +cd .. +cd src + +# export NCCL_IB_DISABLE=1 + +num_gpus=1 +num_bits=0 # 0 +lr=1e-04 +lr_post=2e-05 +batch_size=92 +num_z=2 +reg_parameter=2.3 +importance_weighting=1 +noise_std=0.2 +threshold_weight=0.133 +sparsity_weight=0.0097 +other=${1} # --port 12357 + +post_model_args="{'num_conv_layers':[2, 4, 4], 'num_fc_layers':[4], 'cond_layer_thicknesses':[32, 64, 64, 256]}" + +# Gaussian noise degradation +degradation_type=GaussianNoise +degradation_args="{'mean': 0.0, 'std': 0.2}" + +# Blur plus noise degradation +degradation_type=GaussianBlurNoise +degradation_args="{'kernel_sigma': 1.5, 'mean': 0.0, 'std': 0.2}" + +results_dir=../results/celeba/ambient/${degradation_type}/ +mkdir -p $results_dir + +echo "Training for 4000 kimgs without sparsity constraint ..." + +python -u train_ambient.py --num_gpus $num_gpus --data_type CelebAHQDataset --data_args "{'on_the_fly': False, 'augmentation': 'vf'}" --results_dir $results_dir --input_shape 3 64 64 --main_model_type Glow --main_model_args "{'num_flow':32, 'num_block':4, 'filter_size':512}" --post_model_type CondConvINN2 --post_model_args "$post_model_args" --sparsifier_type GradientTransform --sparsifier_args "{}" --reg_parameter $reg_parameter --sparsity_weight 0 --threshold_weight 0 --num_z $num_z --lr $lr --lr_post $lr_post --batch_size $batch_size --main_actnorm 1 --post_actnorm 1 --num_bits $num_bits --num_kimgs_post 0 --num_kimgs_main 0 --num_kimgs 4000 --degradation_type $degradation_type --degradation_args "$degradation_args" --schedule_sparsity_weight 0 --benchmark_cudnn 1 --importance_weighting $importance_weighting $other + +echo "Resuming training with sparsity constraint ..." + +resume_from=../results/celeba/ambient/noisy/000-*-spparam0.0-thw0.0-*/main-network_004000.pt + +python -u train_ambient.py --num_gpus $num_gpus --data_type CelebAHQDataset --data_args "{'on_the_fly': False, 'augmentation': 'vf'}" --results_dir $results_dir --input_shape 3 64 64 --main_model_type Glow --main_model_args "{'num_flow':32, 'num_block':4, 'filter_size':512}" --post_model_type CondConvINN2 --post_model_args "$post_model_args" --sparsifier_type GradientTransform --sparsifier_args "{}" --reg_parameter $reg_parameter --sparsity_weight $sparsity_weight --threshold_weight $threshold_weight --num_z $num_z --lr $lr --lr_post $lr_post --batch_size $batch_size --main_actnorm 1 --post_actnorm 1 --num_bits $num_bits --num_kimgs_post 0 --num_kimgs_main 0 --num_kimgs 20000 --degradation_type $degradation_type --degradation_args "$degradation_args" --schedule_sparsity_weight 0 --benchmark_cudnn 1 --importance_weighting $importance_weighting $other --resume_from $resume_from + +python -c "import time; print('\a'); time.sleep(0.5); print('\a'); time.sleep(0.5); print('\a')" + diff --git a/scripts/training/train_ambient_mnist.sh b/scripts/training/train_ambient_mnist.sh new file mode 100755 index 0000000..a7ad84f --- /dev/null +++ b/scripts/training/train_ambient_mnist.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# Following hyperparameter configurations are for example only. The optimal parameter configurations are provided in `paper_configs.txt`. + +cd .. +cd .. +cd src + +# python train_ambient.py --data_type MNISTDataset --results_dir ../results/MNIST/ambient --lr 1e-05 --reg_parameter 0.1 --num_iters_post 1000 --num_iters_main 10000 + +blur_sigma=1.5 +other=$2 +python train_ambient_mnist.py --data_type MNISTDataset --data_args "{'power_of_two': True}" --results_dir ../results/MNIST/ambient --input_shape 3 32 32 --main_model_type Glow --main_model_args "{'num_flow':3, 'num_block':3, 'filter_size':512}" --post_model_type CondConvINN --post_model_args "{'num_conv_layers':[4, 12], 'num_fc_layers':[4]}" --reg_parameter 0.1 --lr_post 1e-03 --lr_main 1e-03 --batch_size 32 --main_actnorm 1 --num_bits 0 --num_iters_post 1000 --num_iters_main 10000 --num_iters 50000 --degradation_type GaussianBlurNoise --degradation_args "{'kernel_sigma':$blur_sigma, 'mean':0., 'std':0.2}" $other \ No newline at end of file diff --git a/scripts/training/train_ambient_mri.sh b/scripts/training/train_ambient_mri.sh new file mode 100755 index 0000000..2f64627 --- /dev/null +++ b/scripts/training/train_ambient_mri.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# Following hyperparameter configurations are for example only. The optimal parameter configurations are provided in `paper_configs.txt`. + +cd .. +cd .. +cd src + +# export NCCL_IB_DISABLE=1 + +num_gpus=1 +num_bits=0 # 0 +lr=1e-04 +lr_post=1e-04 +batch_size=4 +num_z=2 +reg_parameter=5 # weight of likelihood term for second stage of training. +importance_weighting=1 +noise_std=0.1 +subsampling=4 +threshold_weight=0.05 # second stage of training +sparsity_weight=0.03 # second stage of training +cutoff_dim=0 # 0.75 +cutoff_mul=1 +other=${1} # other arguments, eg. --port 12357 + +post_model_args="{'num_flow': 4, 'num_block': 4, 'num_cond_chans': 32, 'filter_size': 32, 'final_cond_dim': 512, 'first_split_ratio': 0.25, 'squeezer': 'HaarSqueeze', 'sparsity_weight': ${sparsity_weight}, 'cutoff_dim': ${cutoff_dim}, 'cutoff_mul': ${cutoff_mul}}" + +# Fully sampled +# degradation_args="{'random': False, 'mask_file':None, 'mean':0., 'std':$noise_std}" + +# Downsampled +degradation_args="{'mask_file':'../masks_mri/cartesian_${subsampling}fold_128.npy', 'mean':0., 'std':$noise_std}" + +results_dir=../results/mri/ambient/${subsampling}/ +mkdir -p $results_dir + +echo "Training for 2000 kimgs without sparsity constraint ..." + +python -u train_ambient.py --num_gpus $num_gpus --data_type FastMRIT2Dataset --data_args "{'on_the_fly': False}" --results_dir $results_dir --input_shape 1 128 128 --main_model_type Glow --main_model_args "{'num_flow':16, 'num_block':4, 'filter_size':512}" --post_model_type CondGlow3 --post_model_args "$post_model_args" --sparsifier_type GradientTransform --sparsifier_args "{}" --reg_parameter 1.5 --sparsity_weight 0 --threshold_weight 0 --cutoff_dim $cutoff_dim --num_z $num_z --lr $lr --lr_post $lr_post --batch_size $batch_size --main_actnorm 1 --post_actnorm 1 --num_bits $num_bits --num_kimgs_post 0 --num_kimgs_main 0 --num_kimgs 2000 --degradation_type FourierSamplerGaussianNoise --degradation_args "$degradation_args" --schedule_sparsity_weight 0 --benchmark_cudnn 1 --importance_weighting $importance_weighting $other + +resume_from=../results/celeba/ambient/${subsampling}/000-*-spparam0.0-thw0.0-*/main-network_002000.pt + +python -u train_ambient.py --num_gpus $num_gpus --data_type FastMRIT2Dataset --data_args "{'on_the_fly': False}" --results_dir $results_dir --input_shape 1 128 128 --main_model_type Glow --main_model_args "{'num_flow':16, 'num_block':4, 'filter_size':512}" --post_model_type CondGlow3 --post_model_args "$post_model_args" --sparsifier_type GradientTransform --sparsifier_args "{}" --reg_parameter $reg_parameter --sparsity_weight $sparsity_weight --threshold_weight $threshold_weight --cutoff_dim $cutoff_dim --num_z $num_z --lr $lr --lr_post $lr_post --batch_size $batch_size --main_actnorm 1 --post_actnorm 1 --num_bits $num_bits --num_kimgs_post 0 --num_kimgs_main 0 --num_kimgs 20000 --degradation_type FourierSamplerGaussianNoise --degradation_args "$degradation_args" --schedule_sparsity_weight 0 --benchmark_cudnn 1 --importance_weighting $importance_weighting $other --resume_from $resume_from + +python -c "import time; print('\a'); time.sleep(0.5); print('\a'); time.sleep(0.5); print('\a')" + diff --git a/scripts/training/train_vanilla_celeba.sh b/scripts/training/train_vanilla_celeba.sh new file mode 100755 index 0000000..82e4ffa --- /dev/null +++ b/scripts/training/train_vanilla_celeba.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# Following hyperparameter configurations are for example only. The optimal parameter configurations are provided in `paper_configs.txt`. + +cd .. +cd .. +cd src + +lr=1e-04 +num_bits=8 +gpus=1 +batch_size=128 + +results_dir=../results/celeba/vanilla +echo $results_dir + +# python train_vanilla.py --data_type MNISTDataset --results_dir ../results/MNIST/vanilla --input_shape 1 28 28 --num_conv_layers 12 4 --lr 1e-05 +python train_vanilla.py --gpus $gpus --num_kimgs 20000 --data_type CelebAHQDataset --results_dir $results_dir --input_shape 3 64 64 --model_type Glow --model_args "{'num_flow':32, 'num_block':4, 'filter_size':512}" --lr $lr --batch_size $batch_size --actnorm 1 --num_bits $num_bits + diff --git a/scripts/training/train_vanilla_mnist.sh b/scripts/training/train_vanilla_mnist.sh new file mode 100644 index 0000000..4ce05e1 --- /dev/null +++ b/scripts/training/train_vanilla_mnist.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +lr=$1 # 1e-04 +num_bits=$2 # 8 +# python train_vanilla.py --data_type MNISTDataset --results_dir ../results/MNIST/vanilla --input_shape 1 28 28 --num_conv_layers 12 4 --lr 1e-05 +python train_vanilla.py --data_type MNISTDataset --data_args "{'power_of_two': True}" --results_dir ../results/MNIST/vanilla --input_shape 3 32 32 --model_type Glow --model_args "{'num_flow':3, 'num_block':3, 'filter_size':512}" --lr $lr --batch_size 256 --actnorm 1 --num_bits $num_bits \ No newline at end of file diff --git a/scripts/training/train_vanilla_mri.sh b/scripts/training/train_vanilla_mri.sh new file mode 100755 index 0000000..ae35b8d --- /dev/null +++ b/scripts/training/train_vanilla_mri.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# Following hyperparameter configurations are for example only. The optimal parameter configurations are provided in `paper_configs.txt`. + +cd .. +cd .. +cd src + +lr=1e-04 +num_bits=0 # 8 +gpus=1 +batch_size=18 + +results_dir=../results/mri/vanilla +echo $results_dir + +python train_vanilla.py --gpus $gpus --num_kimgs 20000 --data_type FastMRIT2Dataset --results_dir $results_dir --input_shape 1 256 256 --model_type Glow --model_args "{'num_flow':16, 'num_block':6, 'filter_size':512}" --lr $lr --batch_size $batch_size --actnorm 1 --num_bits $num_bits diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..fff9600 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +wandb diff --git a/src/dataset_tool.py b/src/dataset_tool.py new file mode 100644 index 0000000..b012cda --- /dev/null +++ b/src/dataset_tool.py @@ -0,0 +1,296 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torchvision +from torchvision import transforms +import numpy as np +import imageio as io +from skimage.transform import resize as skresize +import os +import glob + + +def discretize(t, num_bits): + t = t * (2**num_bits - 1) + t = torch.bucketize(t, boundaries=torch.arange(2**num_bits + 1)) + t = t / (2**num_bits - 1) + return t + + +class MNISTDataset(torchvision.datasets.MNIST): + + def __init__(self, ambient=False, degradation=None, train=True, power_of_two=False, num_bits=0, data_root_path='/home/vak2/Documents/ambientflow/data', **kwargs): + + transform = [ + transforms.ToTensor(), + transforms.Lambda( lambda x : torch.cat([x,x,x],0) ), + ] + if power_of_two: + transform.append(transforms.Pad((32-28)//2)) + if num_bits: + transform.append( + transforms.Lambda( lambda x : discretize(x, num_bits) ) + ) + if ambient: + transform.append(degradation) + transform.append(transforms.Lambda( lambda x : x - 0.5 )) + transform = transforms.Compose(transform) + + super(MNISTDataset, self).__init__(root=data_root_path, train=train, transform=transform) + +class CelebADataset(torchvision.datasets.CelebA): + + def __init__(self, ambient=False, degradation=None, train=True, input_shape=[3,128,128], num_bits=0, data_root_path='/shared/anastasio1/Other/ambientflow/data', **kwargs): + + if train == True: split = 'train' + else: split = 'test' + + def standardize(x): return x - 0.5 + transform = [ + transforms.ToTensor(), + transforms.ConvertImageDtype(torch.float), + transforms.Resize(input_shape[1:]), + transforms.RandomHorizontalFlip(), + ] + if num_bits: + transform.append( + transforms.Lambda( lambda x : discretize(x, num_bits) ) + ) + if ambient: + transform.append(degradation) + transform.append(transforms.Lambda(standardize)) + transform = transforms.Compose(transform) + + super(CelebADataset, self).__init__(root=data_root_path, split=split, transform=transform) + +class CelebAHQDataset(torchvision.datasets.VisionDataset): + + def __init__(self, ambient=False, degradation=None, train=True, input_shape=[3,128,128], num_bits=0, on_the_fly=True, data_root_path='/shared/anastasio1/Other/ambientflow/data', augmentation='', flip=True, **kwargs): + + if train == True: split = 'train' + else: split = 'test' + + self.augmentation = augmentation + + # def standardize(x): return x - 0.5 + transform = [ + transforms.ToTensor(), + transforms.ConvertImageDtype(torch.float), + transforms.Resize(input_shape[1:], antialias=True), + ] + if num_bits: + transform.append( + transforms.Lambda( lambda x : discretize(x, num_bits) ) + ) + if ambient: + transform.append(degradation) + if flip: + transform.append(transforms.RandomHorizontalFlip()) + transform.append(transforms.Lambda(lambda x: x - 0.5)) + transform = transforms.Compose(transform) + + super(CelebAHQDataset, self).__init__(root=data_root_path, transform=transform, target_transform=None) + + self.base_folder = 'CelebAMask-HQ' + if split == 'train': + self.image_filenames = sorted(glob.glob( + os.path.join(self.root, self.base_folder, 'CelebA-HQ-img', '*.jpg' ) + ))[:-500] + elif split == 'test': + self.image_filenames = sorted(glob.glob( + os.path.join(self.root, self.base_folder, 'CelebA-HQ-img', '*.jpg' ) + ))[-500:] + + if ambient and (not on_the_fly): + self.noise_seeds = np.fromfile('/home/vak2/system_seeds.dat', np.int32) + self.ambient = ambient + self.on_the_fly = on_the_fly + self.degradation = degradation + + def __getitem__(self, index: int): + + X = io.imread(self.image_filenames[index]) + # X = np.swapaxes(X.T, 1,2) + if self.ambient and (not self.on_the_fly): + self.degradation.rng.manual_seed(int(self.noise_seeds[index])) + + if self.transform is not None: + X = self.transform(X) + + X,label = self.augment(X) + + return X, label # label is used to inform about the kind of augmentation. It will be used to reverse the augmentation when needed. + + def augment(self, X): + if 'vf' in self.augmentation: + label = np.random.randint(2) + if label==1: X = torch.flip(X, dims=[1]) + else: label = 0 + + return X, label + + def deaugment(self, X_batch, labels): + X_batch_out = X_batch.clone() + if 'vf' in self.augmentation: + X_batch_out[...,labels==1,:,:,:] = torch.flip(X_batch[...,labels==1,:,:,:], dims=[len(X_batch.shape)-2,]) + return X_batch_out, labels + + def __len__(self): + return len(self.image_filenames) + + +class FastMRIT2Dataset(torchvision.datasets.VisionDataset): + + def __init__(self, ambient=False, degradation=None, train=True, input_shape=[1,128,128], num_bits=0, volume_norm=True, on_the_fly=True, data_root_path='/shared/radon/SOMS/MRI_data', **kwargs): + + if train == True: split = 'train' + else: split = 'test' + + # def standardize(x): return x - 0.5 + transform = [ + transforms.ToTensor(), + transforms.ConvertImageDtype(torch.float), + transforms.Resize(input_shape[1:], antialias=True), + ] + if num_bits: + transform.append( + transforms.Lambda( lambda x : discretize(x, num_bits) ) + ) + transform.append(transforms.Lambda(lambda x: x - 0.5)) + if ambient: + transform.append(degradation) + transform = transforms.Compose(transform) + + super(FastMRIT2Dataset, self).__init__(root=data_root_path, transform=transform, target_transform=None) + + self.base_folder = 'multicoil_AXT2_3T_volumes' + fnames = glob.glob( + os.path.join(self.root, self.base_folder, 'vol_*.npy' ) + ) + fnames = sorted(fnames, key=lambda x: int(os.path.basename(x).strip('vol_').strip('.npy'))) + if split == 'train': + self.fnames = fnames[:-20] + elif split == 'test': + self.fnames = fnames[-20:] + + self.volume_norm = volume_norm + self.volume_max = np.load(os.path.join(self.root, self.base_folder+'_max_values.npy')) + + if ambient and (not on_the_fly): + self.noise_seeds = np.fromfile('/home/vak2/system_seeds.dat', np.int32) + self.ambient = ambient + self.on_the_fly = on_the_fly + self.degradation = degradation + + def __getitem__(self, index: int): + + idx = index % self.__len__() + slice_idx = np.random.randint(10) + flip = np.random.randint(2) + fname = self.fnames[idx] + X = np.load(fname, mmap_mode='r')[slice_idx] + X = X / self.volume_max[idx] if self.volume_norm else X / X.max() + if flip: X = X[:,::-1] + X = X[::-1].copy() + + if self.ambient and (not self.on_the_fly): + self.degradation.rng.manual_seed(int(self.noise_seeds[20*idx + 2*slice_idx + flip])) + + if self.transform is not None: + X = self.transform(X) + + return X, 0 + + def get_all_noiseless(self): + data = [] + for i,f in enumerate(self.fnames): + print(i) + X = np.load(f, mmap_mode='r')[:10] + X = X / self.volume_max[i] if self.volume_norm else X / X.max() + + X = np.swapaxes(X, 0, 1) + X = np.swapaxes(X, 1, 2) + if self.transform is not None: + X = self.transform(X) + data.append(X) + + return data + + def augment(self, X): + return X, 0 + + def deaugment(self, X, labels): + return X, labels + + def __len__(self): + return len(self.fnames) + + +class EllipsesDataset(torchvision.datasets.VisionDataset): + + def __init__(self, ambient=False, degradation=None, train=True, input_shape=[1,32,32], num_bits=0, on_the_fly=True, data_root_path='/shared/radon/SOMS/ellipses', **kwargs): + + if train == True: split = 'train' + else: split = 'test' + + # def standardize(x): return x - 0.5 + transform = [ + transforms.ToTensor(), + transforms.ConvertImageDtype(torch.float), + transforms.Resize(input_shape[1:], antialias=True), + ] + if num_bits: + transform.append( + transforms.Lambda( lambda x : discretize(x, num_bits) ) + ) + transform.append(transforms.Lambda(lambda x: x - 0.5)) + if ambient: + transform.append(degradation) + transform = transforms.Compose(transform) + + super(EllipsesDataset, self).__init__(root=data_root_path, transform=transform, target_transform=None) + + self.data = np.load(os.path.join(data_root_path, 'ellipses.npy'), mmap_mode='r') + if split == 'train': + self.data = self.data[:-500] + if split == 'test': + self.data = self.data[-500:] + + if ambient and (not on_the_fly): + self.noise_seeds = np.fromfile('/home/vak2/system_seeds.dat', np.int32) + self.ambient = ambient + self.on_the_fly = on_the_fly + self.degradation = degradation + + def __getitem__(self, index: int): + + flip_x = np.random.randint(2) + flip_y = np.random.randint(2) + X = self.data[index] + if flip_x: X = X[::-1] + if flip_y: X = X[:,::-1] + X = X.copy() + + if self.ambient and (not self.on_the_fly): + self.degradation.rng.manual_seed(int(self.noise_seeds[4*index + 2*flip_x + flip_y])) + + if self.transform is not None: + X = self.transform(X) + + return X, 0 + + def __len__(self): + return len(self.data) + +if __name__ == '__main__': + + dset = MNISTDataset(train=True, power_of_two=True) + # dset = CelebAHQDataset(train=True, ambient=True, input_shape=[3,64,64], on_the_fly=False) + # dset = FastMRIT2Dataset(train=True, ambient=False, volume_norm=True, on_the_fly=False) + # dset = EllipsesDataset(ambient=False) \ No newline at end of file diff --git a/src/degradations.py b/src/degradations.py new file mode 100644 index 0000000..b4bbb67 --- /dev/null +++ b/src/degradations.py @@ -0,0 +1,251 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import numpy as np +import torch +import utils +import torchvision +import torchvision.transforms + +DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu' + +class GaussianNoise(object): + def __init__(self, input_shape=[3,32,32], mean=0., std=0.2, num_bits=0, device=None): + self.device = device if device != None else DEVICE + self.std = std + self.mean = mean + self.num_bits = num_bits + self.input_shape = input_shape + self.output_shape = input_shape + self.rng = torch.Generator() + + def __call__(self, tensor): + # if self.num_bits: + # t = tensor * (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1)) + # t = t / (2**self.num_bits - 1) + # else: t = tensor + t = tensor + # if seed != None: self.rng.manual_seed(seed) + return t + torch.randn(*tensor.shape, generator=self.rng) * self.std + self.mean + + def rev(self, tensor, **kwargs): + return tensor + + def __repr__(self): + return self.__class__.__name__ + f'(mean={self.mean}, std={self.std})' + + def log_prob(self, y, x): + # if self.num_bits: + # t = x + 0.5 + # t *= (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1).to(device)) + # t = t.float() + # t /= (2**self.num_bits - 1) + # t -= 0.5 + # else: t = x + # return utils.log_normal( y - t - self.mean, std=self.std) + return utils.log_normal( y - x - self.mean, std=self.std) + + +class GaussianBlurNoise(object): + def __init__(self, kernel_sigma=1.5, mean=0., std=0.2, input_shape=[3,28,28], num_bits=0, device=None): + self.device = device if device != None else DEVICE + self.kernel_sigma = kernel_sigma + self.std = std + self.mean = mean + self.num_bits = num_bits + self.input_shape = input_shape + self.output_shape = input_shape + self.rng = torch.Generator() + + W = 2*int(4*kernel_sigma + 0.5) + 1 + self.blur = torchvision.transforms.GaussianBlur(kernel_size=W, sigma=self.kernel_sigma) + + def __call__(self, tensor): + # if self.num_bits: + # t = tensor * (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1)) + # t = t / (2**self.num_bits - 1) + # else: t = tensor + t = tensor + + # Gaussian blur + t = self.blur(t) + return t + torch.randn(*tensor.shape, generator=self.rng) * self.std + self.mean + + def rev(self, tensor, **kwargs): + return tensor + + def __repr__(self): + return self.__class__.__name__ + f'(kernel_sigma={self.kernel_sigma}, mean={self.mean}, std={self.std}, input_shape={self.input_shape}, num_bits={self.num_bits})' + + def log_prob(self, y, x): + # if self.num_bits: + # t = x + 0.5 + # t *= (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1).to(device)) + # t = t.float() + # t /= (2**self.num_bits - 1) + # t -= 0.5 + # else: t = x + t = self.blur(x) + return utils.log_normal( y - t - self.mean, std=self.std) + + +class BlockMask(object): + def __init__(self, start_coord=[16,16], height=16, width=16, input_shape=[3,32,32], num_bits=0, device=None): + self.device = device if device != None else DEVICE + self.start_coord = start_coord + self.height = height + self.width = width + self.num_bits = num_bits + self.input_shape = input_shape + self.output_shape = input_shape + self.rng = torch.Generator() + self.mask = np.ones(input_shape) + self.mask[:, + self.start_coord[0]:self.start_coord[0]+self.height, + self.start_coord[1]:self.start_coord[1]+self.width] = 0 + + def __call__(self, tensor, **kwargs): + # if self.num_bits: + # t = tensor * (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1)) + # t = t / (2**self.num_bits - 1) + # else: t = tensor + t = tensor.clone() + t[:,:, + self.start_coord[0]:self.start_coord[0]+self.height, + self.start_coord[1]:self.start_coord[1]+self.width] = 0 + return t + + def fwd_noiseless(self, tensor, **kwargs): + return self(tensor) + + def rev(self, tensor, **kwargs): + t = tensor.clone() + t[:, + self.start_coord[0]:self.start_coord[0]+self.height, + self.start_coord[1]:self.start_coord[1]+self.width] = 0 + return t + + def __repr__(self): + return self.__class__.__name__ + f'(start_coord={self.start_coord}, height={self.height}, width={self.width}, input_shape={self.input_shape}, num_bits={self.num_bits})' + + def log_prob(self, y, x): + # if self.num_bits: + # t = x + 0.5 + # t *= (2**self.num_bits - 1) + # t = torch.bucketize(t, boundaries=torch.arange(2**self.num_bits + 1).to(device)) + # t = t.float() + # t /= (2**self.num_bits - 1) + # t -= 0.5 + # else: t = x + t = self(x) + return utils.log_normal(y - t, std=1/255) + + +class FourierSamplerGaussianNoise(object): + def __init__(self, random=False, mask_file=None, samp=1, center_fraction=0.1, mean=0, std=0.1, input_shape=[1,128,128], num_bits=0, device=None): + """ + random : Instead of loading from file, generate random masks. (A different mask for each measurement) + mask_file : File path to load the undersampling mask from. Located in `../masks_mri/` + samp : Undersampling ratio. samp and center_fraction are only relevant if random=True. Else load mask from the mask file or default to fully sampled FFT. + center_fraction : Fully sampled FFT fraction near the 0 frequency. Between 0-1. Must be smaller than 1/samp. + mean : Mean of the noise + std : Standard deviation of the noise + input_shape : + num_bits : + device : + """ + self.device = device if device != None else DEVICE + self.samp = samp + self.center_fraction = center_fraction + self.mask_file = mask_file + self.random = random + self.mean = mean + self.std = std + self.num_bits = num_bits + self.input_shape = input_shape + self.output_shape = [2*input_shape[0], input_shape[1], input_shape[2]] + self.rng = torch.Generator() + + if self.mask_file != None: + self.mask = torch.Tensor(np.load(self.mask_file)) + else: + self.mask = torch.Tensor(np.ones(input_shape)) + + self.mask_device = self.mask.to(self.device) + + def __call__(self, tensor, use_device=False): + + t = self.fwd_noiseless(tensor, use_device=use_device) + mask = self.mask_device if use_device else self.mask + noise = torch.randn(*tensor.shape, dtype=torch.cfloat, generator=self.rng) * self.std / np.sqrt(2) + self.mean + if use_device: noise = noise.to(self.device) + t = t + noise + return t * mask + + def fwd_noiseless(self, tensor, use_device=False): + + # masked fft + if self.random: + L = self.mask.shape[-1] + num_low_freqs = int(self.center_fraction*L) + num_high_freqs = L - num_low_freqs + prob = (L / self.samp - num_low_freqs) / (L - num_low_freqs) + probs = prob * torch.ones([num_high_freqs]) + samp_values = torch.bernoulli(probs, generator=self.rng) + self.mask[:,:,:num_high_freqs//2] = samp_values[:num_high_freqs//2] + self.mask[:,:,num_high_freqs//2+num_low_freqs:] = samp_values[num_high_freqs//2:] + self.mask[:,:,num_high_freqs//2:num_high_freqs//2+num_low_freqs] = 1 + # self.mask = self.mask[0].T.unsqueeze(0) + self.mask_device = self.mask.to(self.device) + + mask = self.mask_device if use_device else self.mask + t = torch.fft.fft2(tensor, norm="ortho") + t = torch.fft.fftshift(t, dim=[-2,-1]) * mask + return t + + def rev(self, meas, mode="twochannel", use_device=True): + + t = meas * self.mask_device if use_device else meas * self.mask + t = torch.fft.ifftshift(t, dim=[-2,-1]) + t = torch.fft.ifft2(t, norm="ortho") + if mode == "complex": + return t + if mode == "twochannel": + return torch.concat([ t.real, t.imag ], axis=-3) + elif mode == "real": + return t.real + return t + + def __repr__(self): + return self.__class__.__name__ + f'(samp={self.samp}, mask_file={self.mask_file}, mean={self.mean}, std={self.std}, input_shape={self.input_shape}, num_bits={self.num_bits})' + + def log_prob(self, y, x): + + t = torch.fft.fft2(x, norm="ortho") + t = torch.fft.fftshift(t, dim=[-2,-1]) * self.mask_device + return utils.log_normal( y - t - self.mean, std=self.std) + + +if __name__ == '__main__': + + import imageio as io + + fwd = GaussianNoise([3,64,64], std=0.2) + # fwd = FourierSamplerGaussianNoise(samp=4, mask_file='../masks_mri/cartesian_4fold_128.npy') + # fwd = FourierSamplerGaussianNoise(random=True, mask_file=None, samp=2, center_fraction=0.2) + # x = np.load("xgt.npy") + # x = x.reshape(1,1,128,128) + # x = torch.Tensor(x) + # y = fwd(x) + # mask = fwd.mask + diff --git a/src/generate.py b/src/generate.py new file mode 100644 index 0000000..551376c --- /dev/null +++ b/src/generate.py @@ -0,0 +1,68 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import numpy as np +import torch +import argparse +import models2 +import os +import imageio as io + +device = torch.device('cuda' if (torch.cuda.is_available()) else 'cpu') + +parser = argparse.ArgumentParser() +parser.add_argument("--gen_dir", type=str, default='') +parser.add_argument("--num_images", type=int, default=10000) +parser.add_argument("--iter", type=str, default=20000) +parser.add_argument("--temperature", type=float, default=0.7) +parser.add_argument("--ambient", type=int, default=0) +parser.add_argument("--save_as", type=str, default='png') +parser.add_argument("--range", type=int, nargs='+', default=[-0.5,0.5]) +parser.add_argument("--batch_size", type=int, default=10) +args = parser.parse_args() +print(args) + +if args.ambient: + args.iter = f'{int(args.iter):06}' + model_path = os.path.join(args.gen_dir, f'main-network_{args.iter}.pt') +else: + model_path = os.path.join(args.gen_dir, f'network_{args.iter}.pt') +model = models2.load_model(model_path, ambient=args.ambient, load_post_model=False).to(device) +fake_data = [] +bs = args.batch_size +for i in range(int(np.ceil(args.num_images / bs))): + fd = model.sample(bs, temp=args.temperature) + fake_data.append(fd) + print(i) +fake_data = np.concatenate(fake_data) +fake_data = fake_data[:args.num_images] +fake_data = (fake_data - args.range[0]) / (args.range[1] - args.range[0]) + +if args.save_as == 'npy': + np.save(os.path.join(args.gen_dir, f'fake-{args.iter:06}-{args.temperature}-{args.num_images}.npy'), fake_data) + +elif args.save_as == 'png': + # process data to save as images + fake_data = np.squeeze(fake_data) + if len(fake_data.shape) == 4: + fake_data = np.swapaxes(fake_data, 1, 2) + fake_data = np.swapaxes(fake_data, 2, 3) + fake_data = np.clip(fake_data, 0, 1) + fake_data *= 255 + fake_data = fake_data.astype(np.uint8) + fakes_folder = os.path.join(args.gen_dir, f'fake-{args.iter}-{args.temperature}-{args.num_images}') + os.makedirs(fakes_folder, exist_ok=True) + for i in range(args.num_images): + io.imsave( + os.path.join(fakes_folder, f'img_{i:05}.png'), + fake_data[i], + ) + # np.save(os.path.join(args.gen_dir, f'fake-{args.iter:06}-{args.temp}-{args.num_images}.npy'), fake_data) + + + \ No newline at end of file diff --git a/src/generate.sh b/src/generate.sh new file mode 100755 index 0000000..189b467 --- /dev/null +++ b/src/generate.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +iter=$1 +temperature=$2 +batch_size=$3 +gen_dir="" + +python generate.py --gen_dir $gen_dir --iter $iter --temperature $temperature --ambient 0 --num_images 5000 --batch_size $batch_size \ No newline at end of file diff --git a/src/metrics/__init__.py b/src/metrics/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/metrics/clean_fid.py b/src/metrics/clean_fid.py new file mode 100644 index 0000000..0251d97 --- /dev/null +++ b/src/metrics/clean_fid.py @@ -0,0 +1,18 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu +""" + +from cleanfid import fid +import argparse +import sys + +parser = argparse.ArgumentParser() +parser.add_argument("--path_to_reals", type=str) +parser.add_argument("--path_to_fakes", type=str) +parser.add_argument("--num_images", type=int, default=5000) +parser.add_argument("--batch_size", type=int, default=200) +args = parser.parse_args() + +score = fid.compute_fid(args.path_to_fakes, args.path_to_reals, batch_size=args.batch_size, num_images=args.num_images) +print(score) \ No newline at end of file diff --git a/src/metrics/clean_fid.sh b/src/metrics/clean_fid.sh new file mode 100644 index 0000000..49e40b0 --- /dev/null +++ b/src/metrics/clean_fid.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +path_to_reals="" +path_to_fakes="" + +num_images=5000 + +results_dir="" + +mkdir -p $results_dir + +python clean_fid.py --path_to_reals $path_to_reals --path_to_fakes $path_to_fakes --num_images $num_images diff --git a/src/metrics/log_odds.py b/src/metrics/log_odds.py new file mode 100644 index 0000000..c8f50c9 --- /dev/null +++ b/src/metrics/log_odds.py @@ -0,0 +1,101 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu +""" + +import sys +sys.path.append("../") +import argparse +import ast +import os +import numpy as np +import torch +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +font = {'size' : 17} + +matplotlib.rc('font', **font) + +import models2 +import dataset_tool +import degradations + +parser = argparse.ArgumentParser() +parser.add_argument("--results_dir", type=str, default='') + +# Model args +parser.add_argument("--network_path", type=str, default='') +parser.add_argument("--num_images", type=int, default=500) +parser.add_argument("--ambient", type=int, default=1) + +# degradation args +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) + +# Data args +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +args = parser.parse_args() + +# data +clean_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=False, input_shape=args.input_shape, **args.data_args) + +# forward model +args.data_args['input_shape'] = args.input_shape +degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=0) + +# models +main_model, post_model = models2.load_model(args.network_path, ambient=bool(args.ambient), load_post_model=True) +main_model = main_model.to('cuda') +post_model = post_model.to('cuda') + +colors = ['b', 'orange', 'g', 'r', 'purple'] +for j in range(3): + logpxgys = [] + logpxs = [] + logpygxs = [] + + for i in range(args.num_images): + print(i) + xgt ,_ = clean_dataset[3*j]; xgt = xgt.reshape(1,*xgt.shape) + ymeas = degradation(xgt).to('cuda') + xgt = xgt.to('cuda') + + post_loss, x_posts = post_model.get_loss(ymeas, degradation, num_z=1, reg_parameter=0, num_bits=0, tiled=True, importance_weighting=1) + logpxgys.append(post_loss.detach().cpu().numpy().squeeze()) + x_posts = x_posts[0] + + nll = main_model.get_loss(x_posts, importance_weighting=True) # importance_weighting=True only gives separate nlls instead of sum/average in this case + logpxs.append(nll.detach().cpu().numpy().squeeze()) + + l = - degradation.log_prob(ymeas, x_posts) / np.log(2) / np.prod(xgt.shape) + logpygxs.append(l.detach().cpu().numpy().squeeze()) + + logpxgys = np.array(logpxgys) + logpxs = np.array(logpxs) + logpygxs = np.array(logpygxs) + + pphi = logpxgys + ptheta = -logpxs - logpygxs + m, b = np.polyfit(pphi, ptheta, 1) + + plt.scatter(pphi, ptheta, c=colors[j], alpha=0.2) + plt.plot( [pphi.min(), pphi.max()], [m*pphi.min()+b, m*pphi.max()+b], color=colors[j], label=f"Slope : {m:.1f}") +plt.legend() +plt.xlabel(r"$\log p_\phi ~(\mathbf{f}~ |~ \mathbf{g})$ (bits/dim)", math_fontfamily='cm') +plt.ylabel(r"$\log p_\theta ~(\mathbf{f}) ~+~ \log~ q_{\mathbf{g} | \mathbf{f}}~ (\mathbf{g}~ | ~\mathbf{f})$ (bits/dim)", math_fontfamily='cm') +plt.savefig(os.path.join(args.results_dir, 'log-odds.png'), bbox_inches='tight');plt.close() +plt.savefig(os.path.join(args.results_dir, 'log-odds.svg'), bbox_inches='tight');plt.close() + + + +# print(f"Mean NLL : {mean_nll}, Median NLL : {medn_nll}, Std. NLL : {stdv_nll}") +# with open( os.path.join( args.results_dir, 'nll.txt' ), 'w') as fid: +# print(f"Mean NLL : {mean_nll}, Median NLL : {medn_nll}, Std. NLL : {stdv_nll}", file=fid) + + + + + diff --git a/src/metrics/log_odds.sh b/src/metrics/log_odds.sh new file mode 100644 index 0000000..b37fbf9 --- /dev/null +++ b/src/metrics/log_odds.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +path_to_reals=/shared/aristotle/SOMS/varun/ambientflow/data/FastMRIT2Dataset-real-image-data +# path_to_reals=/shared/aristotle/SOMS/varun/ambientflow/data/CelebAHQDataset-real-image-data + +num_images=50 +data_type=FastMRIT2Dataset +degradation_type=FourierSamplerGaussianNoise + +# degradation_args="{'mask_file':None, 'mean':0., 'std':0.1}" +degradation_args="{'mask_file':'../../masks_mri/cartesian_4fold_128.npy', 'mean':0., 'std':0.1}" + +# 0x 0.1 noise +# network_path=/shared/anastasio1/SOMS/varun/ambientflow/results/mri/ambient/condglow/001-anastasio6-1gpu-degFourierSamplerGaussianNoise-Glow-CondGlow3-reg5.0-spparam0.03-thw0.05-bit0-lr0.0001-nz2-impw1/main-network_019906.pt + +# 4x 0.1 noise +network_path=/shared/radon/SOMS/varun/ambientflow/results/mri/ambient/condglow/003-anastasio6-1gpu-degFourierSamplerGaussianNoise-Glow-CondGlow3-reg5.0-spparam0.03-thw0.05-bit0-lr0.0001-nz2-impw1/main-network_019301.pt + +# results_dir=../../results/mri/ambient/log-odds/FourierSamplerGaussianNoise-0x-0.1 +results_dir=../../results/mri/ambient/log-odds/FourierSamplerGaussianNoise-4x-0.1 + +mkdir -p $results_dir + +python log_odds.py --data_type $data_type --data_args "{'power_of_two': True}" --input_shape 1 128 128 --degradation_type $degradation_type --degradation_args "$degradation_args" --network_path $network_path --results_dir $results_dir --num_images $num_images diff --git a/src/metrics/mean_and_cov.py b/src/metrics/mean_and_cov.py new file mode 100644 index 0000000..8cce94e --- /dev/null +++ b/src/metrics/mean_and_cov.py @@ -0,0 +1,112 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu +""" + +import argparse +import sys +from sklearn.utils.extmath import randomized_svd +import glob +import imageio as io +import numpy as np +from numpy import pi, sin, cos +import numpy.linalg as la +import os +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +from scipy.signal import fftconvolve + +parser = argparse.ArgumentParser() +parser.add_argument("--path_to_reals", type=str) +parser.add_argument("--path_to_fakes", type=str) +parser.add_argument("--num_images", type=int, default=5000) +parser.add_argument("--svd_comps", type=int, default=1000) +parser.add_argument("--results_dir", type=str, default='') +args = parser.parse_args() + + +fnames_real = glob.glob(os.path.join(args.path_to_reals, '*.png'))[:args.num_images] +fnames_fake = glob.glob(os.path.join(args.path_to_fakes, '*.png'))[:args.num_images] + +img_real = [] +img_fake = [] +for i in range(args.num_images): + print(i) + img_real.append(io.imread(fnames_real[i])) + img_fake.append(io.imread(fnames_fake[i])) + +img_real = np.stack(img_real, axis=0)/255 +img_fake = np.stack(img_fake, axis=0)/255 + +# Mean +mean_real = np.mean(img_real, axis=0) +mean_fake = np.mean(img_fake, axis=0) +io.imsave( os.path.join(args.results_dir, "mean_real.png"), mean_real ) +io.imsave( os.path.join(args.results_dir, "mean_fake.png"), mean_fake ) +print(la.norm(mean_real - mean_fake)**2 / la.norm(mean_real)**2) + +# Autocorrelation +def radial_profile(data, center): + # https://stackoverflow.com/questions/21242011/most-efficient-way-to-calculate-radial-profile + y, x = np.indices((data.shape)) + r = np.sqrt((x - center[0])**2 + (y - center[1])**2) + r = r.astype(int) + + tbin = np.bincount(r.ravel(), data.ravel()) + nr = np.bincount(r.ravel()) + radialprofile = tbin / nr + return radialprofile + +def autocorrelation(imgs): + X = np.stack(np.meshgrid(np.arange(imgs.shape[1]), imgs.shape[1]), axis=-1) + rw = imgs.shape[1]//2 + papoulis_filter = lambda r: (r<=rw)*( 1/pi * abs( sin(pi*r/rw) ) + ( 1 - r/rw )*cos(pi*r/rw) ) + papoulis_filter = papoulis_filter( la.norm(X - rw, axis=-1) ) + # imgs_fil = imgs*papoulis_filter + imgs_fil = imgs + ac = fftconvolve(imgs_fil, imgs_fil[:,::-1,::-1], axes=[1,2], mode='full') + ac = np.mean(ac, axis=0) + rw = ac.shape[0]//2 + # radprof = radial_profile(ac, [rw,rw]) + radprof = ac[rw, rw:] + radprof = radprof / radprof.max() + ac = ac / ac.max() + return ac, radprof + +ac_real, ac_radprof_real = autocorrelation(img_real) +ac_fake, ac_radprof_fake = autocorrelation(img_fake) +plt.plot(ac_radprof_real[:len(ac_radprof_real)//2], lw=8) +plt.plot(ac_radprof_fake[:len(ac_radprof_real)//2], '--', lw=8) +plt.xlabel("Distance from the center") +plt.ylabel("Autocorrelation") +plt.legend(["Real images", "Synthetic images"]) +plt.savefig( os.path.join(args.results_dir, 'autocorrelation_radprof.png'), bbox_inches='tight' ) +plt.savefig( os.path.join(args.results_dir, 'autocorrelation_radprof.svg'), bbox_inches='tight' );plt.close() + +io.imsave( os.path.join(args.results_dir, 'autocorrelation_real.png'), ac_real) +io.imsave( os.path.join(args.results_dir, 'autocorrelation_fake.png'), ac_fake) + +img_real = (img_real - mean_real.reshape(1, *mean_real.shape)).reshape(args.num_images, -1).T +img_fake = (img_fake - mean_fake.reshape(1, *mean_fake.shape)).reshape(args.num_images, -1).T + +U_real,s_real,_ = randomized_svd(img_real, args.svd_comps) +U_fake,s_fake,_ = randomized_svd(img_fake, args.svd_comps) + +c_real = U_real @ (U_real * s_real).T +c_fake = U_fake @ (U_fake * s_fake).T +print( la.norm(c_real - c_fake)**2 / la.norm(c_real)**2 ) +print(la.norm(mean_real - mean_fake)**2 / la.norm(mean_real)**2) + +plt.loglog(np.arange(1,len(s_real)+1), s_real**2) +plt.loglog(np.arange(1,len(s_real)+1), s_fake**2, '--') +plt.xlim([1,len(s_real)]) +plt.ylabel(r"$i$-th Singular value of covariance matrix", math_fontfamily='stixsans') +plt.xlabel(r"$i$", math_fontfamily='stixsans') +plt.savefig( os.path.join(args.results_dir, 'svals.png'), bbox_inches='tight' ) +plt.savefig( os.path.join(args.results_dir, 'svals.svg'), bbox_inches='tight' );plt.close() + + + + + diff --git a/src/metrics/mean_and_cov.sh b/src/metrics/mean_and_cov.sh new file mode 100644 index 0000000..20c4710 --- /dev/null +++ b/src/metrics/mean_and_cov.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Copyright (c) 2022-2023 authors +# Author : Varun A. Kelkar +# Email : vak2@illinois.edu + +path_to_reals="" +path_to_fakes="" + +num_images=5000 + +results_dir="" + +mkdir -p $results_dir + +python mean_and_cov.py --path_to_reals $path_to_reals --path_to_fakes $path_to_fakes --results_dir $results_dir --num_images $num_images diff --git a/src/metrics/radiomic_features.py b/src/metrics/radiomic_features.py new file mode 100644 index 0000000..4fef03c --- /dev/null +++ b/src/metrics/radiomic_features.py @@ -0,0 +1,235 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar, Rucha Deshpande +Email : vak2@illinois.edu, r.deshpande@wustl.edu +""" + +# import cv2 +import numpy as np +import imageio as io +import SimpleITK as sitk +import radiomics +from radiomics import featureextractor, logging +import argparse +import os.path as p + +from scipy.ndimage import binary_fill_holes +from skimage.filters import gaussian +from skimage import measure +from skimage.transform import resize +import glob +import pandas as pd +import scipy.linalg as la + +from sklearn.preprocessing import StandardScaler +from sklearn.decomposition import PCA +import scipy.stats as st + +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt + +def clean_mask(input_mask): + labels_mask = measure.label(input_mask) + regions = measure.regionprops(labels_mask) + regions.sort(key=lambda x: x.area, reverse=True) + if len(regions) > 1: + for rg in regions[1:]: + labels_mask[rg.coords[:,0], rg.coords[:,1]] = 0 + labels_mask[labels_mask!=0] = 1 + cleaned_mask = labels_mask + return cleaned_mask + +def get_mask(arr): + width = 10 + + arr = np.where(arr > np.percentile(arr,99), np.percentile(arr,99), arr) + arr_in = (arr - np.min(arr)) / (np.max(arr) - np.min(arr))*255 + + blurred = gaussian(arr_in, sigma=1) + + thresh = np.max(blurred[:,:width]) + binary = blurred > thresh + + mask_ret = (binary_fill_holes(binary)*1).astype(np.uint8) + mask_ret = clean_mask(mask_ret) + + area_out = np.count_nonzero(mask_ret)/(mask_ret.shape[0]*mask_ret.shape[1]) + + if area_out < 0.1: + mask_ret = np.ones((arr.shape[0], arr.shape[1]), dtype = np.uint8) + area_out = 1 + + # mask_ret_im = sitk.GetImageFromArray(mask_ret) + + return mask_ret, area_out + +settings = {} +settings['binCount'] = 32 #binCount +settings['resampledPixelSpacing'] = None # [3,3,3] is an example for defining resampling (voxels with size 3x3x3mm) +settings['interpolator'] = sitk.sitkLinear +settings['sigma'] = [1, 2] +settings['distances'] = [1,2,3] +# settings['level'] = 3 # Wavelet level of decompsition, default 1, count staarts at 0 + +extractor = featureextractor.RadiomicsFeatureExtractor(**settings) +extractor.enableAllImageTypes() + +logger = radiomics.logger +logger.setLevel(logging.CRITICAL) + +def extract_features(fnames): + + for i,f in enumerate(fnames): + print(f"{i}/{len(fnames)}", end='\r') + + img = io.imread(f) + + try: + mask, _ = get_mask(img) + sitk_img = sitk.GetImageFromArray(img) + sitk_mask = sitk.GetImageFromArray(mask) + feature_dict = dict(extractor.execute(sitk_img, sitk_mask)) + df = pd.DataFrame(feature_dict.items()).T + df = pd.DataFrame(df.values[1:], columns=df.iloc[0]) + for c in df.columns: + if 'diagnostics' in c: + df.drop(c, axis=1, inplace=True) + if i == 0: + features = df.copy() + else: + features = pd.concat([features, df]) + + except Exception as e: + print(e) + df = features.iloc[-1].copy() + df *= np.nan + features = features.append(df) + + return features + +def compute_pca(data, num_components=2, pca=None): + """ + Data is in the shape n_features x n_points + """ + scalar = StandardScaler() + scalar.fit(data) + data_scaled = scalar.transform(data) + if pca == None: + pca = PCA(n_components=num_components, random_state=1234) + + data_pcs = pca.fit_transform(data_scaled) + return data_pcs, pca + +def compute_contour_value(hist, percent): + mode = hist.max() + levels = np.arange(mode+1) + masses = np.array([np.sum( hist*(hist < l) ) for l in levels]) + masses /= np.sum(hist) + percents = np.arange(101) + interp_levels = np.interp( percents/100, masses, levels ) + return interp_levels[int(percent)] + +def compute_contour_value2(hist, percent): + mode = hist.max() + levels = np.linspace(0, mode, 100) + masses = np.array([np.sum( hist*(hist < l) ) for l in levels]) + masses /= np.sum(hist) + percents = np.arange(101) + interp_levels = np.interp( percents/100, masses, levels ) + return interp_levels[int(percent)] + +def save_features(features_path, features): + print(f"Saving features to {features_path}") + features.to_csv(features_path, index=False) + +def compute_pca_all(features_list): + features_list = [ ff.dropna(axis=0) for ff in features_list ] + features_all = [ff.to_numpy().astype(float) for ff in features_list] + features_size = [ff.shape[0] for ff in features_all] + features_all = np.concatenate(features_all, axis=0) + features_pcs,_ = compute_pca(features_all, num_components=2) + split_locs = np.cumsum(features_size)[:-1] + features_pcs_list = np.split(features_pcs, split_locs) + return features_pcs_list + +def plot_histograms(features_pcs_list, num_bins=50): + F = np.concatenate(features_pcs_list, axis=0) + xbins = np.linspace(F[:,0].min(), F[:,0].max(), num_bins) + ybins = np.linspace(F[:,1].min(), F[:,1].max(), num_bins) + + hists = [] + for i, f in enumerate(features_pcs_list): + hist,_,_ = np.histogram2d(f[:,0], f[:,1], bins=[xbins, ybins]) + plt.imshow(hist, cmap='hot') + plt.savefig(f'temp_{i}.png', bbox_inches='tight') + plt.close() + +def compute_frd(real_pcs, fake_pcs): + real_mean = np.mean(real_pcs, axis=0) + fake_mean = np.mean(fake_pcs, axis=0) + real_cov = (real_pcs - real_mean.reshape(1,-1)).T @ (real_pcs - real_mean.reshape(1,-1)) + fake_cov = (fake_pcs - fake_mean.reshape(1,-1)).T @ (fake_pcs - fake_mean.reshape(1,-1)) + fd2 = la.norm( real_mean - fake_mean )**2 + \ + np.trace( real_cov + fake_cov - 2*la.sqrtm( real_cov @ fake_cov ) ) + return fd2 + +def plot_histograms2(features_pcs_list, num_bins=100): + F = np.concatenate(features_pcs_list, axis=0) + xbins = np.linspace(F[:,0].min(), F[:,0].max(), num_bins) + ybins = np.linspace(F[:,1].min(), F[:,1].max(), num_bins) + + xx, yy = np.meshgrid(xbins, ybins) + positions = np.vstack([xx.ravel(), yy.ravel()]) + + for i, f in enumerate(features_pcs_list): + # hist,_,_ = np.histogram2d(f[:,0], f[:,1], bins=[xbins, ybins]) + kernel = st.gaussian_kde(f.T, bw_method=0.1) + dens = kernel(positions).T.reshape(xx.shape) + if i == 0: + dens0 = dens.copy() + c0 = compute_contour_value2(dens0, 20) + c = compute_contour_value2(dens, 20) + + plt.imshow(dens, cmap='GnBu') + if i != 0: + plt.contour(dens0, levels=[c0], linestyles='dashed') + plt.contour(dens, levels=[c]) + plt.xticks([]) + plt.yticks([]) + plt.savefig(f'temp_{i}.png', bbox_inches='tight') + # plt.savefig(p.join(results_dir, f'pca_plot_{names[i]}.png'), bbox_inches='tight') + # plt.savefig(p.join(results_dir, f'pca_plot_{names[i]}.svg'), bbox_inches='tight') + plt.close() + +if __name__ == '__main__': + + num_images = 2000 + results_dir = '/home/vak2/Documents/ambientflow/results/mri/radiomic_features' + names = ['degraded-4x-0.1', 'plstv-4x-0.1', 'ambient-4x-0.1'] + + path_to_obj = '/shared/aristotle/SOMS/varun/ambientflow/data/FastMRIT2Dataset-real-image-data/*.png' + path_to_van = '/shared/aristotle/SOMS/varun/ambientflow/results/mri/vanilla/008-Glow-flow16-block5-lr0.0001-bits0/fake-010152-0.7-10000/*.png' + # path_to_deg = '/shared/aristotle/SOMS/varun/ambientflow/data/FastMRIT2Dataset-FourierSamplerGaussianNoise-0x-0.1-image-data/*.png' + path_to_deg = '/shared/aristotle/SOMS/varun/ambientflow/data/FastMRIT2Dataset-FourierSamplerGaussianNoise-4x-0.1-image-data/*.png' + # path_to_pls = '/shared/curie/SOMS/varun/ambientflow/results/mri/recon/fista-FastMRIT2Dataset-FourierSamplerGaussianNoise-0x-0.1/dataset/*.png' + path_to_pls = '/shared/curie/SOMS/varun/ambientflow/results/mri/recon/fista-FastMRIT2Dataset-FourierSamplerGaussianNoise-4x-0.1/dataset/*.png' + # path_to_amb = '/shared/anastasio1/SOMS/varun/ambientflow/results/mri/ambient/condglow/001-anastasio6-1gpu-degFourierSamplerGaussianNoise-Glow-CondGlow3-reg5.0-spparam0.03-thw0.05-bit0-lr0.0001-nz2-impw1/fake-019906-0.85-10000/*.png' + path_to_amb = '/shared/radon/SOMS/varun/ambientflow/results/mri/ambient/condglow/003-anastasio6-1gpu-degFourierSamplerGaussianNoise-Glow-CondGlow3-reg5.0-spparam0.03-thw0.05-bit0-lr0.0001-nz2-impw1/fake-019301-0.85-10000/*.png' + + fnames_obj = sorted(glob.glob(path_to_obj))[:num_images] + fnames_van = sorted(glob.glob(path_to_van))[:num_images] + fnames_deg = sorted(glob.glob(path_to_deg))[::-1][:num_images] + fnames_pls = sorted(glob.glob(path_to_pls))[::-1][:num_images] + fnames_amb = sorted(glob.glob(path_to_amb))[:num_images] + + features_list = [] + for i, fnames in enumerate([fnames_deg, fnames_pls, fnames_amb]): + + print(f"Computing features for {names[i]}") + features = extract_features(fnames) + features_list.append(features) + save_features(p.join(results_dir, f'features_{names[i]}.csv'), features) + + + + diff --git a/src/model_tools.py b/src/model_tools.py new file mode 100644 index 0000000..a8a3e82 --- /dev/null +++ b/src/model_tools.py @@ -0,0 +1,1347 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +from torch import nn +from torch.nn import functional as F +from math import log, pi, exp +import numpy as np +from scipy import linalg as la +from FrEIA.modules.coupling_layers import _BaseCouplingBlock +from FrEIA.modules import InvertibleModule +from typing import Callable, Union +import sparsifiers + +logabs = lambda x: torch.log(torch.abs(x)) + +def forward_squeeze(input): + # input dim: NxCxHxW + b_size, n_channel, height, width = input.shape + squeezed = input.view(b_size, n_channel, height // 2, 2, width // 2, 2) + squeezed = squeezed.permute(0, 1, 3, 5, 2, 4) + out = squeezed.contiguous().view(b_size, n_channel * 4, height // 2, width // 2) + return out + + +class Squeeze(nn.Module): + def __init__(self, *args, **kwargs): + super().__init__() + + def forward(self, input): + # input dim: NxCxHxW + b_size, n_channel, height, width = input.shape + squeezed = input.view(b_size, n_channel, height // 2, 2, width // 2, 2) + squeezed = squeezed.permute(0, 1, 3, 5, 2, 4) + out = squeezed.contiguous().view(b_size, n_channel * 4, height // 2, width // 2) + return out + + def reverse(self, input): + b_size, n_channel, height, width = input.shape + + unsqueezed = input.view(b_size, n_channel // 4, 2, 2, height, width) + unsqueezed = unsqueezed.permute(0, 1, 4, 2, 5, 3) + out = unsqueezed.contiguous().view( + b_size, n_channel // 4, height * 2, width * 2 + ) + return out + + +class IRevNetSqueeze(nn.Module): + def __init__(self, in_channel, block_size=2): + super().__init__() + + self.channels = in_channel + self.block_size = block_size + self.block_size_sq = self.block_size**2 + + self.downsample_kernel = torch.zeros(4, 1, 2, 2) + + self.downsample_kernel[0, 0, 0, 0] = 1 + self.downsample_kernel[1, 0, 0, 1] = 1 + self.downsample_kernel[2, 0, 1, 0] = 1 + self.downsample_kernel[3, 0, 1, 1] = 1 + + self.downsample_kernel = torch.cat([self.downsample_kernel] * self.channels, 0) + self.downsample_kernel = nn.Parameter(self.downsample_kernel) + self.downsample_kernel.requires_grad = False + + def forward(self, input): + return F.conv2d(input, self.downsample_kernel, stride=self.block_size, groups=self.channels) + + def reverse(self, output): + return F.conv_transpose2d(output, self.downsample_kernel, + stride=self.block_size, groups=self.channels) + + +class HaarSqueeze(nn.Module): + def __init__(self, in_channel, order_by_wavelet=True): + + super().__init__() + self.in_channel = in_channel + self.order_by_wavelet = order_by_wavelet + + self.haar_weights = torch.ones(4, 1, 2, 2) / 2 + + self.haar_weights[1, 0, 0, 1] = -1/2 + self.haar_weights[1, 0, 1, 1] = -1/2 + + self.haar_weights[2, 0, 1, 0] = -1/2 + self.haar_weights[2, 0, 1, 1] = -1/2 + + self.haar_weights[3, 0, 1, 0] = -1/2 + self.haar_weights[3, 0, 0, 1] = -1/2 + + self.haar_weights = torch.cat([self.haar_weights] * self.in_channel, 0) + + if order_by_wavelet: + permutation = [] + for i in range(4): + permutation += [i + 4 * j for j in range(self.in_channel)] + + self.perm = torch.LongTensor(permutation) + self.perm_inv = torch.LongTensor(permutation) + + # clever trick to invert a permutation + for i, p in enumerate(self.perm): + self.perm_inv[p] = i + + self.haar_weights = nn.Parameter(self.haar_weights) + self.haar_weights.requires_grad = False + + def forward(self, input): + out = F.conv2d(input, self.haar_weights, bias=None, stride=2, groups=self.in_channel) + if self.order_by_wavelet: + return out[:, self.perm] + else: return out + + def reverse(self, output): + if self.order_by_wavelet: + x_perm = output[:, self.perm_inv] + else: + x_perm = output + return F.conv_transpose2d(output, self.haar_weights, bias=None, stride=2, groups=self.in_channel) + + +class EVSCouplingBlock(_BaseCouplingBlock): + ''' Coupling block that supports evidence-softmax based coupling to promote sparsity. + ''' + + def __init__(self, dims_in, dims_c=[], + subnet_constructor: Callable = None, + epsilon: float = 1.e-06, + avg_scale: float = 1., + clamp: float = 2., + clamp_activation: Union[str, Callable] = "ATAN", + split_len: Union[float, int] = 0.5): + ''' + Additional args in docstring of base class. + + Args: + subnet_constructor: function or class, with signature + constructor(dims_in, dims_out). The result should be a torch + nn.Module, that takes dims_in input channels, and dims_out output + channels. See tutorial for examples. Two of these subnetworks will be + initialized in the block. + epsilon: + avg_scale: + clamp: Soft clamping for the multiplicative component. The + amplification or attenuation of each input dimension can be at most + exp(±clamp). + clamp_activation: Function to perform the clamping. String values + "ATAN", "TANH", and "SIGMOID" are recognized, or a function of + object can be passed. TANH behaves like the original realNVP paper. + A custom function should take tensors and map -inf to -1 and +inf to +1. + ''' + + super().__init__(dims_in, dims_c, clamp, clamp_activation, + split_len=split_len) + self.epsilon = epsilon + self.avg_scale = avg_scale + + self.subnet1 = subnet_constructor(self.split_len1 + self.condition_length, self.split_len2 * 2) + self.subnet2 = subnet_constructor(self.split_len2 + self.condition_length, self.split_len1 * 2) + + def _coupling1(self, x1, u2, rev=False): + + # notation (same for _coupling2): + # x: inputs (i.e. 'x-side' when rev is False, 'z-side' when rev is True) + # y: outputs (same scheme) + # *_c: variables with condition appended + # *1, *2: left half, right half + # a: all affine coefficients + # s, t: multiplicative and additive coefficients + # j: log det Jacobian + + a2 = self.subnet2(u2) + s2, t2 = a2[:, :self.split_len1], a2[:, self.split_len1:] + s2 = self.clamp * self.f_clamp(s2) + j1 = torch.sum(s2, dim=tuple(range(1, self.ndims + 1))) + + if rev: + y1 = (x1 - t2) * torch.exp(-s2) + return y1, -j1 + else: + y1 = torch.exp(s2) * x1 + t2 + return y1, j1 + + def _coupling2(self, x2, u1, rev=False): + a1 = self.subnet1(u1) + s1, t1 = a1[:, :self.split_len2], a1[:, self.split_len2:] + s1 = self.clamp * self.f_clamp(s1) + # s1_idn = torch.abs(s1.detach()) - self.clamp # no gradients + s1_idn = s1 - self.clamp + s1_avg = self.avg_scale * torch.mean(s1_idn, dim=tuple(range(1, self.ndims + 1)), keepdim=True) + nzcond = (s1_idn <= s1_avg) + self.epsilon + # nzcond = torch.sigmoid( -100*(s1_idn - s1_avg) ) + # ev_s1 = 1./( nzcond + self.epsilon ) * torch.exp(s1) + # ev_s1_inv = ( nzcond + self.epsilon ) * torch.exp(-s1) + ev_s1 = 1./( nzcond ) * torch.exp(s1) + ev_s1_inv = ( nzcond ) * torch.exp(-s1) + + t1 = nzcond * t1 + # j2 = torch.sum(s1 * nzcond, dim=tuple(range(1, self.ndims + 1))) + j2 = torch.sum(s1 - torch.log(nzcond), dim=tuple(range(1, self.ndims + 1))) + + if rev: + y2 = (x2 - t1) * ev_s1_inv + return y2, -j2 + else: + y2 = ev_s1 * x2 + t1 + return y2, j2 + + +class SparsifierHardThreshold(InvertibleModule): + '''Uses Haar wavelets to split each channel into 4 channels, with half the + width and height dimensions.''' + + def __init__(self, dims_in, dims_c = None, + sparsifier = sparsifiers.SparsifyingTransform([1,64,64]), + threshold: float = 1., + epsilon: float = 1.e-06): + '''See docstring of base class (FrEIA.modules.InvertibleModule) for more. + + Args: + sparsifier: sparsifying transform (such as orthogonal wavelet transform) + ASSUMES THAT THE SPARSIFYING TRANSFORM IS ISOMETRIC (LOGDET IS 0). + threshold: Threshold for hard thresholding + + ''' + super().__init__(dims_in, dims_c) + + self.in_channels = dims_in[0][0] + self.sparsifier = sparsifier + self.threshold = threshold + self.epsilon = epsilon + self.final_scale = nn.Parameter(torch.ones((1,)), requires_grad=False) + + self.jac_fwd = 0. + self.jac_rev = 0. + + def forward(self, x, c=None, jac=True, rev=False): + '''See docstring of base class (FrEIA.modules.InvertibleModule).''' + + clip_thresh = 0.51 + inp = x[0] #* self.final_scale # N x C x H x W + coeffs = self.sparsifier(inp + 0.5) # N x C*H*W + + #number total entries except for batch dimension: + self.ndims = len(coeffs.shape) - 1 + + coeff_abs = torch.abs(coeffs) + coeff_avg = self.threshold * torch.mean(coeff_abs, dim=tuple(range(1, self.ndims + 1)), keepdim=True) + nzcond = (coeff_abs >= coeff_avg) + self.epsilon + + # ASSUMES THAT THE SPARSIFIER IS ISOMETRIC + # jac = -torch.cat([torch.log(self.final_scale)]*inp.shape[0]) + jac = 0 + # jac += -torch.sum(np.log(1/28) + torch.log((abs(inp) <= clip_thresh) + 1e-06), dim=(1,2,3)) + jac += -torch.sum(torch.log(nzcond), dim=tuple(range(1, self.ndims + 1))) + + if not rev: + raise ValueError("This function is only good for reverse computation, it can be highly unstable in the reverse computation.") + # out = coeffs / nzcond + # out = self.sparsifier.inv(out) + # return (out,), jac + else: + out = coeffs * nzcond + out = self.sparsifier.inv(out) - 0.5 + return (out,), -jac + + def output_dims(self, input_dims): + '''See docstring of base class (FrEIA.modules.InvertibleModule).''' + + if len(input_dims) != 1: + raise ValueError("HaarDownsampling must have exactly 1 input") + if len(input_dims[0]) != 3: + raise ValueError("HaarDownsampling can only transform 2D images" + "of the shape CxWxH (channels, width, height)") + + c, w, h = input_dims[0] + + return ((c, w, h),) + +class Inv1x1Conv(InvertibleModule): + '''Given an invertible matrix M, a 1x1 convolution is performed using M as + the convolution kernel. Effectively, a matrix muplitplication along the + channel dimension is performed in each pixel.''' + + def __init__(self, dims_in, dims_c=None): + '''Additional args in docstring of base class FrEIA.modules.InvertibleModule. + ''' + super().__init__(dims_in, dims_c) + + # TODO: it should be possible to give conditioning instead of M, so that the condition + # provides M and b on each forward pass. + + in_channel = dims_in[0][0] + weight = np.random.randn(in_channel, in_channel) + q, _ = la.qr(weight) + w_p, w_l, w_u = la.lu(q.astype(np.float32)) + w_s = np.diag(w_u) + w_u = np.triu(w_u, 1) + u_mask = np.triu(np.ones_like(w_u), 1) + l_mask = u_mask.T + + w_p = torch.from_numpy(w_p) + w_l = torch.from_numpy(w_l) + w_s = torch.from_numpy(w_s) + w_u = torch.from_numpy(w_u) + + self.register_buffer("w_p", w_p) + self.register_buffer("u_mask", torch.from_numpy(u_mask)) + self.register_buffer("l_mask", torch.from_numpy(l_mask)) + self.register_buffer("s_sign", torch.sign(w_s)) + self.register_buffer("l_eye", torch.eye(l_mask.shape[0])) + self.w_l = nn.Parameter(w_l) + self.w_s = nn.Parameter(logabs(w_s)) + self.w_u = nn.Parameter(w_u) + + def calc_weight(self): + weight = ( + self.w_p + @ (self.w_l * self.l_mask + self.l_eye) + @ ((self.w_u * self.u_mask) + torch.diag(self.s_sign * torch.exp(self.w_s))) + ) + + return weight.unsqueeze(2).unsqueeze(3) + + def forward(self, x, rev=False, jac=True): + + n_pixels = x[0][0, 0].numel() + weight = self.calc_weight() + + j = n_pixels * torch.sum(self.w_s) + + if not rev: + out = F.conv2d(x[0], weight.squeeze().inverse().unsqueeze(2).unsqueeze(3)) + return (out,), -j + # return (F.conv2d(x[0], weight),), j + else: + return (F.conv2d(x[0], weight),), j + # out = F.conv2d(x[0], weight.squeeze().inverse().unsqueeze(2).unsqueeze(3)) + # return (out,), -j + + def output_dims(self, input_dims): + '''See base class for docstring''' + if len(input_dims) != 1: + raise ValueError(f"{self.__class__.__name__} can only use 1 input") + if len(input_dims[0]) != 3: + raise ValueError(f"{self.__class__.__name__} requires 3D input (channels, height, width)") + return input_dims + + + +class ActNormCoarse(InvertibleModule): + '''A technique to achieve a stable initlization. + + First introduced in Kingma et al 2018: https://arxiv.org/abs/1807.03039 + The module is similar to a traditional batch normalization layer, but the + data mean and standard deviation is only computed for the first batch of + data. To ensure invertibility, the mean and standard devation are kept + fixed from that point on. + Using ActNorm layers interspersed throughout an INN ensures that + intermediate outputs of the INN have standard deviation 1 and mean 0, so + that the training is stable at the start, avoiding exploding or zeroed + outputs. + Just as with standard batch normalization layers, ActNorm contains + additional channel-wise scaling and bias parameters. + ''' + + def __init__(self, dims_in, dims_c=None, init_data: Union[torch.Tensor, None] = None, inverse: bool = False, scaling: float = 1.): + ''' + Args: + init_data: If ``None``, use the first batch of data passed through this + module to initialize the mean and standard deviation. + If ``torch.Tensor``, use this as data to initialize instead of the + first real batch. + ''' + + super().__init__(dims_in, dims_c) + self.dims_in = dims_in[0] + self.inverse = inverse + self.scaling = scaling + self.scale = nn.Parameter(torch.zeros(1)) + self.bias = nn.Parameter(torch.zeros(1)) + + if init_data: + self._initialize_with_data(init_data) + else: + # self.init_on_next_batch = True + self.init_on_next_batch = False + + def on_load_state_dict(*args): + # when this module is loading state dict, we SHOULDN'T init with data, + # because that will reset the trained parameters. Registering a hook + # that disable this initialisation. + self.init_on_next_batch = False + self._register_load_state_dict_pre_hook(on_load_state_dict) + + def _initialize_with_data(self, data): + # Initialize to mean 0 and std 1 with sample batch + # 'data' expected to be of shape (batch, channels[, ...]) + # If actnorm is computed during a reverse computation, flip the direction of actnorm + sign = (-1)**int(self.inverse) + + assert all([data.shape[i+1] == self.dims_in[i] for i in range(len(self.dims_in))]),\ + "Can't initialize ActNorm layer, provided data don't match input dimensions." + self.scale.data.view(-1)[:] \ + = sign * torch.log(self.scaling / data.std()) + + data = data * self.scale.exp() + self.bias.data.view(-1)[:] \ + = sign * -data.mean() + self.init_on_next_batch = False + + def forward(self, x, rev=False, jac=True): + if self.init_on_next_batch: + self._initialize_with_data(x[0]) + + jac = (self.scale.sum() * np.prod(self.dims_in[1:])).repeat(x[0].shape[0]) + if rev: + jac = -jac + + if not rev: + return [x[0] * self.scale.exp() + self.bias], jac + else: + return [(x[0] - self.bias) / self.scale.exp()], jac + + def output_dims(self, input_dims): + assert len(input_dims) == 1, "Can only use 1 input" + return input_dims + + +class ActNorm2(InvertibleModule): + '''A technique to achieve a stable initlization. + + First introduced in Kingma et al 2018: https://arxiv.org/abs/1807.03039 + The module is similar to a traditional batch normalization layer, but the + data mean and standard deviation is only computed for the first batch of + data. To ensure invertibility, the mean and standard devation are kept + fixed from that point on. + Using ActNorm layers interspersed throughout an INN ensures that + intermediate outputs of the INN have standard deviation 1 and mean 0, so + that the training is stable at the start, avoiding exploding or zeroed + outputs. + Just as with standard batch normalization layers, ActNorm contains + additional channel-wise scaling and bias parameters. + ''' + + def __init__(self, dims_in, dims_c=None, init_data: Union[torch.Tensor, None] = None, inverse: bool = False, scaling: float = 1.): + ''' + Args: + init_data: If ``None``, use the first batch of data passed through this + module to initialize the mean and standard deviation. + If ``torch.Tensor``, use this as data to initialize instead of the + first real batch. + ''' + + super().__init__(dims_in, dims_c) + self.dims_in = dims_in[0] + self.inverse = inverse + self.scaling = scaling + self.scale = nn.Parameter(torch.zeros(1)) + self.bias = nn.Parameter(torch.zeros(1)) + + if init_data: + self._initialize_with_data(init_data) + else: + # self.init_on_next_batch = True + self.init_on_next_batch = False + + def on_load_state_dict(*args): + # when this module is loading state dict, we SHOULDN'T init with data, + # because that will reset the trained parameters. Registering a hook + # that disable this initialisation. + self.init_on_next_batch = False + self._register_load_state_dict_pre_hook(on_load_state_dict) + + def _initialize_with_data(self, data): + # Initialize to mean 0 and std 1 with sample batch + # 'data' expected to be of shape (batch, channels[, ...]) + # If actnorm is computed during a reverse computation, flip the direction of actnorm + sign = (-1)**int(self.inverse) + + assert all([data.shape[i+1] == self.dims_in[i] for i in range(len(self.dims_in))]),\ + "Can't initialize ActNorm layer, provided data don't match input dimensions." + self.scale.data.view(-1)[:] \ + = sign * torch.log(self.scaling / data.transpose(0,1).contiguous().view(self.dims_in[0], -1).std(dim=-1)) + + data = data * self.scale.exp() + self.bias.data.view(-1)[:] \ + = sign * -data.transpose(0,1).contiguous().view(self.dims_in[0], -1).mean(dim=-1) + self.init_on_next_batch = False + + def forward(self, x, rev=False, jac=True): + if self.init_on_next_batch: + self._initialize_with_data(x[0]) + + jac = (self.scale.sum() * np.prod(self.dims_in[1:])).repeat(x[0].shape[0]) + if rev: + jac = -jac + + if not rev: + return [x[0] * self.scale.exp() + self.bias], jac + else: + return [(x[0] - self.bias) / self.scale.exp()], jac + + def output_dims(self, input_dims): + assert len(input_dims) == 1, "Can only use 1 input" + return input_dims + + + +class ActNorm(nn.Module): + def __init__(self, in_channel, logdet=True): + super().__init__() + + self.loc = nn.Parameter(torch.zeros(1, in_channel, 1, 1)) + self.scale = nn.Parameter(torch.ones(1, in_channel, 1, 1)) + + self.register_buffer("initialized", torch.tensor(0, dtype=torch.uint8)) + self.logdet = logdet + + def initialize(self, input): + with torch.no_grad(): + flatten = input.permute(1, 0, 2, 3).contiguous().view(input.shape[1], -1) + mean = ( + flatten.mean(1) + .unsqueeze(1) + .unsqueeze(2) + .unsqueeze(3) + .permute(1, 0, 2, 3) + ) + std = ( + flatten.std(1) + .unsqueeze(1) + .unsqueeze(2) + .unsqueeze(3) + .permute(1, 0, 2, 3) + ) + + self.loc.data.copy_(-mean) + self.scale.data.copy_(1 / (std + 1e-6)) + + def forward(self, input): + _, _, height, width = input.shape + + if self.initialized.item() == 0: + self.initialize(input) + self.initialized.fill_(1) + + log_abs = logabs(self.scale) + + logdet = height * width * torch.sum(log_abs) + + if self.logdet: + return self.scale * (input + self.loc), logdet + else: + return self.scale * (input + self.loc) + + def reverse(self, output, jac=False): + if jac: + _, _, height, width = output.shape + log_abs = logabs(self.scale) + logdet = height * width * torch.sum(log_abs) + return output / self.scale - self.loc, -logdet + + return output / self.scale - self.loc + + +class InvConv2d(nn.Module): + def __init__(self, in_channel): + super().__init__() + + weight = torch.randn(in_channel, in_channel) + q, _ = torch.linalg.qr(weight) + weight = q.unsqueeze(2).unsqueeze(3) + self.weight = nn.Parameter(weight) + + def forward(self, input): + _, _, height, width = input.shape + + out = F.conv2d(input, self.weight) + logdet = ( + height * width * torch.slogdet(self.weight.squeeze().double())[1].float() + ) + + return out, logdet + + def reverse(self, output, jac=False): + out = F.conv2d( + output, self.weight.squeeze().inverse().unsqueeze(2).unsqueeze(3) + ) + if jac: + _, _, height, width = output.shape + logdet = ( + height * width * torch.slogdet(self.weight.squeeze().double())[1].float() + ) + return out, -logdet + + return out + + +class Inj2xConv2d(nn.Module): + def __init__(self, in_channel, gamma=0.): + super().__init__() + + self.gamma = gamma + w1 = torch.randn(in_channel//2, in_channel//2) + w2 = torch.randn(in_channel//2, in_channel//2) + q1,_ = torch.linalg.qr(w1) + q2,_ = torch.linalg.qr(w2) + q = torch.concat([q1, q2], dim=1) + weight = q.unsqueeze(2).unsqueeze(3) + self.weight = nn.Parameter(weight) + + def forward(self, input): + _, _, height, width = input.shape + + self.w_gram = torch.matmul( self.weight.squeeze(), self.weight.squeeze().T ) + self.w_gram += self.gamma **2 * torch.eye(*self.w_gram.shape).to(self.w_gram.device) + out = F.conv2d(input, self.weight) + logdet = ( + 0.5 * height * width * torch.slogdet(self.w_gram.double())[1].float() + ) + + return out, logdet + + def reverse(self, output, jac=False): + + self.w_gram = torch.matmul( self.weight.squeeze(), self.weight.squeeze().T ) + self.w_gram += self.gamma **2 * torch.eye(*self.w_gram.shape).to(self.w_gram.device) + weight_inv = torch.matmul(self.weight.squeeze().T, self.w_gram.inverse()) # Moore-Penrose pseudoinverse + out = F.conv2d( + output, weight_inv.unsqueeze(2).unsqueeze(3) + ) + + if jac: + _, _, height, width = output.shape + logdet = ( + 0.5 * height * width * torch.slogdet(self.w_gram.double())[1].float() + ) + return out, -logdet + + return out + + +class InvConv2dLU(nn.Module): + def __init__(self, in_channel): + super().__init__() + + weight = np.random.randn(in_channel, in_channel) + q, _ = la.qr(weight) + w_p, w_l, w_u = la.lu(q.astype(np.float32)) + w_s = np.diag(w_u) + w_u = np.triu(w_u, 1) + u_mask = np.triu(np.ones_like(w_u), 1) + l_mask = u_mask.T + + w_p = torch.from_numpy(w_p) + w_l = torch.from_numpy(w_l) + w_s = torch.from_numpy(w_s) + w_u = torch.from_numpy(w_u) + + self.register_buffer("w_p", w_p) + self.register_buffer("u_mask", torch.from_numpy(u_mask)) + self.register_buffer("l_mask", torch.from_numpy(l_mask)) + self.register_buffer("s_sign", torch.sign(w_s)) + self.register_buffer("l_eye", torch.eye(l_mask.shape[0])) + self.w_l = nn.Parameter(w_l) + self.w_s = nn.Parameter(logabs(w_s)) + self.w_u = nn.Parameter(w_u) + + def forward(self, input): + _, _, height, width = input.shape + + weight = self.calc_weight() + + out = F.conv2d(input, weight) + logdet = height * width * torch.sum(self.w_s) + + return out, logdet + + def calc_weight(self): + weight = ( + self.w_p + @ (self.w_l * self.l_mask + self.l_eye) + @ ((self.w_u * self.u_mask) + torch.diag(self.s_sign * torch.exp(self.w_s))) + ) + + return weight.unsqueeze(2).unsqueeze(3) + + def reverse(self, output, jac=False): + weight = self.calc_weight() + + out = F.conv2d(output, weight.squeeze().inverse().unsqueeze(2).unsqueeze(3)) + + if jac: + _, _, height, width = output.shape + logdet = height * width * torch.sum(self.w_s) + return out, -logdet + return out + + +class ZeroConv2d(nn.Module): + def __init__(self, in_channel, out_channel, padding=1): + super().__init__() + + self.conv = nn.Conv2d(in_channel, out_channel, 3, padding=0) + self.conv.weight.data.zero_() + self.conv.bias.data.zero_() + self.scale = nn.Parameter(torch.zeros(1, out_channel, 1, 1)) + + def forward(self, input): + out = F.pad(input, [1, 1, 1, 1], value=1) + out = self.conv(out) + out = out * torch.exp(self.scale * 3) + + return out + +class ZeroLinear(nn.Module): + def __init__(self, in_channel, out_channel, padding=1): + super().__init__() + + self.conv = nn.Conv2d(in_channel, out_channel, 3, padding=0) + self.linear = nn.Linear(in_channel, out_channel) + self.linear.weight.data.zero_() + self.linear.bias.data.zero_() + self.scale = nn.Parameter(torch.zeros(1, out_channel, 1, 1)) + + def forward(self, input): + out = self.linear(input) + out = out * torch.exp(self.scale * 3) + + return out + +class AffineCoupling(nn.Module): + def __init__(self, in_channel, filter_size=512, affine=True, condition=False, num_cond_layers=0, fully_connected=False): + super().__init__() + + self.affine = affine + self.condition = condition + self.num_cond_layers = int(num_cond_layers * int(self.condition)) + + if not fully_connected: + self.net = nn.Sequential( + nn.Conv2d(in_channel // 2 + self.num_cond_layers, filter_size, 3, padding=1), + nn.ReLU(inplace=True), + nn.Conv2d(filter_size, filter_size, 1), + nn.ReLU(inplace=True), + ZeroConv2d(filter_size, in_channel if self.affine else in_channel // 2), + ) + else: + self.net = nn.Sequential( + nn.Linear(in_channel // 2 + self.num_cond_layers, filter_size), + nn.ReLU(inplace=True), + nn.Linear(filter_size, filter_size), + nn.ReLU(inplace=True), + nn.ZeroLinear(filter_size, in_channel if self.affine else in_channel // 2), + ) + + self.net[0].weight.data.normal_(0, 0.05) + self.net[0].bias.data.zero_() + + self.net[2].weight.data.normal_(0, 0.05) + self.net[2].bias.data.zero_() + + def forward(self, input, cond=None): + in_a, in_b = input.chunk(2, 1) + + if self.affine: + if self.condition: + log_s, t = self.net( + torch.concat([in_a, cond], dim=1) + ).chunk(2, 1) + else: + log_s, t = self.net(in_a).chunk(2, 1) + # s = torch.exp(log_s) + s = torch.sigmoid(log_s + 2) + # out_a = s * in_a + t + out_b = (in_b + t) * s + + logdet = torch.sum(torch.log(s).view(input.shape[0], -1), 1) + + else: + if self.condition: + net_out = self.net( + torch.concat([in_a, cond], dim=1) + ) + else: + net_out = self.net(in_a) + out_b = in_b + net_out + logdet = 0 + + return torch.cat([in_a, out_b], 1), logdet + + def reverse(self, output, cond=None, jac=False): + out_a, out_b = output.chunk(2, 1) + + if self.affine: + if self.condition: + log_s, t = self.net( + torch.concat([out_a, cond], dim=1) + ).chunk(2, 1) + else: + log_s, t = self.net(out_a).chunk(2, 1) + # s = torch.exp(log_s) + s = torch.sigmoid(log_s + 2) + # in_a = (out_a - t) / s + in_b = out_b / s - t + + logdet = torch.sum(torch.log(s).view(output.shape[0], -1), 1) + + else: + if self.condition: + net_out = self.net( + torch.concat([out_a, cond], dim=1) + ) + else: + net_out = self.net(out_a) + in_b = out_b - net_out + + logdet = 0 + + if jac: + return torch.cat([out_a, in_b], 1), -logdet + return torch.cat([out_a, in_b], 1) + +class Flow(nn.Module): + def __init__(self, in_channel, affine=True, filter_size=512, conv_lu=True): + super().__init__() + + self.actnorm = ActNorm(in_channel) + + if conv_lu: + self.invconv = InvConv2dLU(in_channel) + + else: + self.invconv = InvConv2d(in_channel) + + self.coupling = AffineCoupling(in_channel, affine=affine, filter_size=filter_size) + + def forward(self, input): + out, logdet = self.actnorm(input) + out, det1 = self.invconv(out) + out, det2 = self.coupling(out) + + logdet = logdet + det1 + logdet = logdet + det2 + + return out, logdet + + def reverse(self, output, jac=False): + if jac: + input, logdet = self.coupling.reverse(output, jac=jac) + input, det1 = self.invconv.reverse(input, jac=jac) + input, det2 = self.actnorm.reverse(input, jac=jac) + logdet += (det1 + det2) + return input, logdet + + input = self.coupling.reverse(output) + input = self.invconv.reverse(input) + input = self.actnorm.reverse(input) + return input + + +class CondFlow(nn.Module): + def __init__(self, in_channel, affine=True, filter_size=512, num_cond_layers=32, conv_lu=True): + super().__init__() + + self.actnorm = ActNorm(in_channel) + + if conv_lu: + self.invconv = InvConv2dLU(in_channel) + + else: + self.invconv = InvConv2d(in_channel) + + self.coupling = AffineCoupling(in_channel, affine=affine, filter_size=filter_size, condition=True, num_cond_layers=num_cond_layers) + + def forward(self, input, cond): + out, logdet = self.actnorm(input) + out, det1 = self.invconv(out) + out, det2 = self.coupling(out, cond) + + logdet = logdet + det1 + det2 + + return out, logdet + + def reverse(self, output, cond, jac=False): + if jac: + input, logdet = self.coupling.reverse(output, cond, jac=jac) + input, det1 = self.invconv.reverse(input, jac=jac) + input, det2 = self.actnorm.reverse(input, jac=jac) + logdet += (det1 + det2) + return input, logdet + + input = self.coupling.reverse(output, cond) + input = self.invconv.reverse(input) + input = self.actnorm.reverse(input) + return input + + +class InjFlow(nn.Module): + def __init__(self, in_channel, affine=True, filter_size=512, gamma=0.): + super().__init__() + + self.actnorm = ActNorm(in_channel) + + self.injconv = Inj2xConv2d(in_channel, gamma=gamma) + + self.coupling = AffineCoupling(in_channel//2, affine=affine, filter_size=filter_size) + + def forward(self, input): + out, logdet = self.actnorm(input) + out, det1 = self.injconv(out) + out, det2 = self.coupling(out) + + logdet = logdet + det1 + det2 + + return out, logdet + + def reverse(self, output, jac=False): + if jac: + input, logdet = self.coupling.reverse(output, jac=jac) + input, det1 = self.injconv.reverse(input, jac=jac) + input, det2 = self.actnorm.reverse(input, jac=jac) + logdet += (det1 + det2) + return input, logdet + + input = self.coupling.reverse(output) + input = self.injconv.reverse(input) + input = self.actnorm.reverse(input) + return input + +def gaussian_log_p(x, mean, log_sd): + return -0.5 * log(2 * pi) - log_sd - 0.5 * (x - mean) ** 2 / torch.exp(2 * log_sd) + + +def gaussian_sample(eps, mean, log_sd): + return mean + torch.exp(log_sd) * eps + + +class InvBlock(nn.Module): + def __init__(self, in_channel, n_flow, split=True, affine=True, filter_size=512, conv_lu=True, extract_z=True, squeeze=True, squeezer=Squeeze): + super().__init__() + + squeeze_dim = in_channel * 4 if squeeze else in_channel + + self.flows = nn.ModuleList() + for i in range(n_flow): + self.flows.append(Flow(squeeze_dim, affine=affine, conv_lu=conv_lu, filter_size=filter_size)) + + self.split = split + self.extract_z = extract_z + self.squeeze = squeeze + if self.squeeze: self.squeezer = squeezer(in_channel=in_channel) + + if split: + self.prior = ZeroConv2d(squeeze_dim // 2, squeeze_dim) + + elif (not split) and extract_z: + self.prior = ZeroConv2d(squeeze_dim, squeeze_dim * 2) + + def forward(self, input): + b_size, n_channel, height, width = input.shape + if self.squeeze: + # squeezed = input.view(b_size, n_channel, height // 2, 2, width // 2, 2) + # squeezed = squeezed.permute(0, 1, 3, 5, 2, 4) + # out = squeezed.contiguous().view(b_size, n_channel * 4, height // 2, width // 2) + out = self.squeezer(input) + else: out = input + + logdet = 0 + + for flow in self.flows: + out, det = flow(out) + logdet = logdet + det + + if self.extract_z: + if self.split: + out, z_new = out.chunk(2, 1) + mean, log_sd = self.prior(out).chunk(2, 1) + log_p = gaussian_log_p(z_new, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + + else: + zero = torch.zeros_like(out) + mean, log_sd = self.prior(zero).chunk(2, 1) + log_p = gaussian_log_p(out, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + z_new = out + + return out, logdet, log_p, z_new + + return out, logdet, 0, None + + def reverse(self, output, eps=None, reconstruct=False, jac=False): + b_size, n_channel, height, width = output.shape + input = output + + if reconstruct: + if self.split: + input = torch.cat([output, eps], 1) + else: + input = eps + + if jac: + mean = torch.zeros_like(eps) + log_sd = torch.zeros_like(eps) + log_p = gaussian_log_p(eps, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + + else: + if self.extract_z: + if self.split: + mean, log_sd = self.prior(input).chunk(2, 1) + z = gaussian_sample(eps, mean, log_sd) + input = torch.cat([output, z], 1) + else: + zero = torch.zeros_like(input) + # zero = F.pad(zero, [1, 1, 1, 1], value=1) + mean, log_sd = self.prior(zero).chunk(2, 1) + z = gaussian_sample(eps, mean, log_sd) + input = z + if jac: + log_p = gaussian_log_p(z, mean, log_sd) + log_p = -log_p.view(b_size, -1).sum(1) + else: + input = output + log_p = 0 + + logdet = 0 + for flow in self.flows[::-1]: + if jac: + input, det = flow.reverse(input, jac=True) + logdet += det + else: + input = flow.reverse(input) + + b_size, n_channel, height, width = input.shape + if self.squeeze: + # unsqueezed = input.view(b_size, n_channel // 4, 2, 2, height, width) + # unsqueezed = unsqueezed.permute(0, 1, 4, 2, 5, 3) + # out = unsqueezed.contiguous().view( + # b_size, n_channel // 4, height * 2, width * 2 + # ) + out = self.squeezer.reverse(input) + else: out = input + + if jac: + return out, logdet, log_p + return out + + +class InjBlock(nn.Module): + def __init__(self, in_channel, n_flow=1, gamma=1e-08, affine=True, filter_size=512, conv_lu=True, extract_z=True, squeeze=True, squeezer=Squeeze): + super().__init__() + + squeeze_dim = in_channel * 4 if squeeze else in_channel + in_dim = squeeze_dim + + self.flows = nn.ModuleList() + for i in range(n_flow): + self.flows.append(InjFlow(in_dim, affine=affine, filter_size=filter_size, gamma=gamma)) + in_dim = in_dim // 2 + + self.extract_z = extract_z + self.squeeze = squeeze + if self.squeeze: self.squeezer = squeezer(in_channel=in_channel) + + if extract_z: + self.prior = ZeroConv2d(in_dim, in_dim * 2) + + def forward(self, input): + b_size, n_channel, height, width = input.shape + if self.squeeze: + # squeezed = input.view(b_size, n_channel, height // 2, 2, width // 2, 2) + # squeezed = squeezed.permute(0, 1, 3, 5, 2, 4) + # out = squeezed.contiguous().view(b_size, n_channel * 4, height // 2, width // 2) + out = self.squeezer(input) + else: out = input + + logdet = 0 + + for flow in self.flows: + out, det = flow(out) + logdet = logdet + det + + if self.extract_z: + zero = torch.zeros_like(out) + mean, log_sd = self.prior(zero).chunk(2, 1) + log_p = gaussian_log_p(out, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + z_new = out + + return out, logdet, log_p, z_new + + return out, logdet, 0, None + + def reverse(self, output, eps=None, reconstruct=False, jac=False): + input = output + b_size = input.shape[0] + + if reconstruct: + input = eps + if jac: + mean = torch.zeros_like(eps) + log_sd = torch.zeros_like(eps) + log_p = gaussian_log_p(eps, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + + else: + if self.extract_z: + zero = torch.zeros_like(input) + # zero = F.pad(zero, [1, 1, 1, 1], value=1) + mean, log_sd = self.prior(zero).chunk(2, 1) + z = gaussian_sample(eps, mean, log_sd) + input = z + if jac: + log_p = gaussian_log_p(z, mean, log_sd) + log_p = -log_p.view(b_size, -1).sum(1) + else: + input = output + log_p = 0 + + logdet = 0 + for flow in self.flows[::-1]: + if jac: + input, det = flow.reverse(input, jac=True) + logdet += det + else: + input = flow.reverse(input) + + _, n_channel, height, width = input.shape + if self.squeeze: + # unsqueezed = input.view(b_size, n_channel // 4, 2, 2, height, width) + # unsqueezed = unsqueezed.permute(0, 1, 4, 2, 5, 3) + # out = unsqueezed.contiguous().view( + # b_size, n_channel // 4, height * 2, width * 2 + # ) + out = self.squeezer.reverse(input) + else: out = input + + if jac: + return out, logdet, log_p + return out + + +class InvCondBlock(nn.Module): + def __init__(self, in_channel, n_flow, split=True, affine=True, filter_size=512, num_cond_layers=32, conv_lu=True, extract_z=True, squeeze=True, squeezer=Squeeze): + super().__init__() + + squeeze_dim = in_channel * 4 if squeeze else in_channel + self.num_cond_layers = num_cond_layers * 4 if squeeze else num_cond_layers + self.extract_z = extract_z + self.squeeze = squeeze + if self.squeeze: + self.squeezer = squeezer(in_channel=in_channel) + self.cond_squeezer = squeezer(in_channel=num_cond_layers) + + self.flows = nn.ModuleList() + for i in range(n_flow): + self.flows.append(CondFlow(squeeze_dim, affine=affine, conv_lu=conv_lu, filter_size=filter_size, num_cond_layers=self.num_cond_layers)) + + self.split = split + + if split: + self.prior = ZeroConv2d(squeeze_dim // 2, squeeze_dim) + + elif (not split) and extract_z: + self.prior = ZeroConv2d(squeeze_dim, squeeze_dim * 2) + + def forward(self, input, cond): + b_size, n_channel, height, width = input.shape + if self.squeeze: + # squeezed = input.view(b_size, n_channel, height // 2, 2, width // 2, 2) + # squeezed = squeezed.permute(0, 1, 3, 5, 2, 4) + # out = squeezed.contiguous().view(b_size, n_channel * 4, height // 2, width // 2) + out = self.squeezer(input) + cond = self.cond_squeezer(cond) + else: out = input + + logdet = 0 + + for flow in self.flows: + out, det = flow(out, cond) + logdet = logdet + det + + if self.extract_z: + if self.split: + out, z_new = out.chunk(2, 1) + mean, log_sd = self.prior(out).chunk(2, 1) + log_p = gaussian_log_p(z_new, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + + else: + zero = torch.zeros_like(out) + mean, log_sd = self.prior(zero).chunk(2, 1) + log_p = gaussian_log_p(out, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + z_new = out + + return out, logdet, log_p, z_new + + return out, logdet, 0, None + + def reverse(self, output, cond, eps=None, reconstruct=False, jac=False): + input = output + b_size = input.shape[0] + if self.squeeze: + cond = self.cond_squeezer(cond) + + if reconstruct: + if self.split: + input = torch.cat([output, eps], 1) + else: + input = eps + + if jac: + mean = torch.zeros_like(eps) + log_sd = torch.zeros_like(eps) + log_p = gaussian_log_p(eps, mean, log_sd) + log_p = log_p.view(b_size, -1).sum(1) + + else: + if self.extract_z: + if self.split: + mean, log_sd = self.prior(input).chunk(2, 1) + z = gaussian_sample(eps, mean, log_sd) + input = torch.cat([output, z], 1) + + else: + zero = torch.zeros_like(input) + # zero = F.pad(zero, [1, 1, 1, 1], value=1) + mean, log_sd = self.prior(zero).chunk(2, 1) + z = gaussian_sample(eps, mean, log_sd) + input = z + if jac: + log_p = gaussian_log_p(z, mean, log_sd) + log_p = -log_p.view(b_size, -1).sum(1) + else: + input = output + log_p = 0 + + logdet = 0 + for flow in self.flows[::-1]: + if jac: + input, det = flow.reverse(input, cond, jac=True) + logdet += det + else: + input = flow.reverse(input, cond) + + _, n_channel, height, width = input.shape + if self.squeeze: + # unsqueezed = input.view(b_size, n_channel // 4, 2, 2, height, width) + # unsqueezed = unsqueezed.permute(0, 1, 4, 2, 5, 3) + # out = unsqueezed.contiguous().view( + # b_size, n_channel // 4, height * 2, width * 2 + # ) + out = self.squeezer.reverse(input) + else: out = input + + if jac: + return out, logdet, log_p + return out + +class ConvBlock(nn.Module): + """ + A Convolutional Block that consists of two convolution layers each followed by + instance normalization, LeakyReLU activation and dropout. + """ + + def __init__(self, in_chans: int, out_chans: int, drop_prob: float): + """ + Args: + in_chans: Number of channels in the input. + out_chans: Number of channels in the output. + drop_prob: Dropout probability. + """ + super().__init__() + + self.in_chans = in_chans + self.out_chans = out_chans + self.drop_prob = drop_prob + + self.layers = nn.Sequential( + nn.Conv2d(in_chans, out_chans, kernel_size=3, padding=1, bias=False), + nn.InstanceNorm2d(out_chans), + nn.LeakyReLU(negative_slope=0.2, inplace=True), + nn.Dropout2d(drop_prob), + nn.Conv2d(out_chans, out_chans, kernel_size=3, padding=1, bias=False), + nn.InstanceNorm2d(out_chans), + nn.LeakyReLU(negative_slope=0.2, inplace=True), + nn.Dropout2d(drop_prob), + ) + + def forward(self, image: torch.Tensor) -> torch.Tensor: + """ + Args: + image: Input 4D tensor of shape `(N, in_chans, H, W)`. + + Returns: + Output tensor of shape `(N, out_chans, H, W)`. + """ + return self.layers(image) + + +class TransposeConvBlock(nn.Module): + """ + A Transpose Convolutional Block that consists of one convolution transpose + layers followed by instance normalization and LeakyReLU activation. + """ + + def __init__(self, in_chans: int, out_chans: int): + """ + Args: + in_chans: Number of channels in the input. + out_chans: Number of channels in the output. + """ + super().__init__() + + self.in_chans = in_chans + self.out_chans = out_chans + + self.layers = nn.Sequential( + nn.ConvTranspose2d( + in_chans, out_chans, kernel_size=2, stride=2, bias=False + ), + nn.InstanceNorm2d(out_chans), + nn.LeakyReLU(negative_slope=0.2, inplace=True), + ) + + def forward(self, image: torch.Tensor) -> torch.Tensor: + """ + Args: + image: Input 4D tensor of shape `(N, in_chans, H, W)`. + + Returns: + Output tensor of shape `(N, out_chans, H*2, W*2)`. + """ + return self.layers(image) + diff --git a/src/models.py b/src/models.py new file mode 100644 index 0000000..9e3f153 --- /dev/null +++ b/src/models.py @@ -0,0 +1,746 @@ +""" +Copyright (c) authors. +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +Parts copyright (c) Facebook, Inc. and its affiliates. + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +from time import time + +import torch +import torch.nn as nn +import torch.optim +import numpy as np +import utils +from model_tools import * +import torch.distributions as dists +# from tqdm import tqdm + +import FrEIA.framework as Ff +import FrEIA.modules as Fm + +torch.manual_seed(1234) +np.random.seed(42) + +# from FrEIA.framework import InputNode, OutputNode, Node, ReversibleGraphNet +# from FrEIA.modules import GLOWCouplingBlock, PermuteRandom + +DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu' + +def subnet_fc(c_in, c_out): + return nn.Sequential(nn.Linear(c_in, 512), nn.ReLU(), + nn.Linear(512, c_out)) + +def subnet_conv(c_in, c_out): + return nn.Sequential(nn.Conv2d(c_in, 256, 3, padding=1), nn.ReLU(), + nn.Conv2d(256, c_out, 3, padding=1)) + +def subnet_conv_1x1(c_in, c_out): + return nn.Sequential(nn.Conv2d(c_in, 256, 1), nn.ReLU(), + nn.Conv2d(256, c_out, 1)) + +class ConvINN(object): + + def __init__(self, input_shape=[3,28,28], num_conv_layers=[4,12], num_fc_layers=[12], device=None): + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + # print(input_shape, num_conv_layers, num_fc_layers) + nodes = [Ff.InputNode(*input_shape, name='input')] + ndim_x = np.prod(input_shape) + + # Higher resolution convolutional part + for k in range(num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_conv, 'clamp':1.2}, + name=F'conv_high_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_high_res_{k}')) + + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + + # Lower resolution convolutional part + for k in range(num_conv_layers[1]): + if k%2 == 0: + subnet = subnet_conv_1x1 + else: + subnet = subnet_conv + + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.2}, + name=F'conv_low_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_low_res_{k}')) + + # Make the outputs into a vector, then split off 1/4 of the outputs for the + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + split_node = Ff.Node(nodes[-1], + Fm.Split, + {'section_sizes':(ndim_x // 4, 3 * ndim_x // 4), 'dim':0}, + name='split') + nodes.append(split_node) + + # Fully connected part + for k in range(num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + name=F'fully_connected_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_{k}')) + + # Concatenate the fully connected part and the skip connection to get a single output + nodes.append(Ff.Node([nodes[-1].out0, split_node.out1], + Fm.Concat1d, {'dim':0}, name='concat')) + nodes.append(Ff.OutputNode(nodes[-1], name='output')) + + conv_inn = Ff.GraphINN(nodes) + + self.model = conv_inn.to(self.device) + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + self.identifier = "ConvINN-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + def sample(self, num_samples, temp=1.): + z = np.random.randn(num_samples, np.prod(self.input_shape)) * temp + x,_ = self.model(torch.Tensor(z).to(self.device), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch): + + zbatch, jac = self.model([data_batch.to(self.device)], jac=True) + return - torch.mean(utils.log_normal(zbatch) + jac) + + def save(self, *args, **kwargs): + torch.save(self.model.state_dict(), *args, **kwargs) + + +class CondNet(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape): + super().__init__() + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + self.resolution_levels = nn.ModuleList([ + nn.Sequential(nn.Conv2d(3, 16, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(16, 16, 3, padding=1)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(16, 32, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(32, 32, 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.AvgPool2d(2), + Flatten(), + nn.Linear(32 * cond_shape[1]//4 * cond_shape[2]//4, 256)) + ]) + + def forward(self, c): + outputs = [c] + for m in self.resolution_levels: + outputs.append(m(outputs[-1])) + return outputs[1:] + +class CondConvINN(nn.Module): + + def __init__(self, input_shape=[3,28,28], cond_shape=[3,28,28], num_conv_layers=[4,12], num_fc_layers=[12], device=None): + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + # print(input_shape, num_conv_layers, num_fc_layers) + nodes = [Ff.InputNode(*input_shape, name='cond_input')] + ndim_x = np.prod(input_shape) + + # Define the conditions + # num_conds = int(np.ceil(np.log2(input_shape[-1]))) - 3 + # cond_channels = [np.min( base_cond_channels * 2**i , 256 ) for i in range(num_conds)] + # conditions = [ + # Ff.ConditionNode( np.min( base_cond_channels * 2**i, 256), + # input_shape[1] // 2**i, input_shape[2] // 2**i) for i in range(num_conds) + # ] + + conditions = [Ff.ConditionNode(16, input_shape[1], input_shape[2]), + Ff.ConditionNode(32, input_shape[1]//2, input_shape[2]//2), + Ff.ConditionNode(256) + ] + + # Higher resolution convolutional part + for k in range(num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_conv, 'clamp':1.2}, + conditions = conditions[0], + name = F'cond_conv_high_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_high_res_{k}')) + + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + + # Lower resolution convolutional part + for k in range(num_conv_layers[1]): + if k%2 == 0: + subnet = subnet_conv_1x1 + else: + subnet = subnet_conv + + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.2}, + conditions = conditions[1], + name = F'cond_conv_low_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_low_res_{k}')) + + # Make the outputs into a vector, then split off 1/4 of the outputs for the + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + split_node = Ff.Node(nodes[-1], + Fm.Split, + {'section_sizes':(ndim_x // 4, 3 * ndim_x // 4), 'dim':0}, + name='split') + nodes.append(split_node) + + # Fully connected part + for k in range(num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + conditions = conditions[2], + name = F'cond_fully_connected_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_{k}')) + + # Concatenate the fully connected part and the skip connection to get a single output + nodes.append(Ff.Node([nodes[-1].out0, split_node.out1], + Fm.Concat1d, {'dim':0}, name='cond_concat')) + nodes.append(Ff.OutputNode(nodes[-1], name='cond_output')) + + conv_inn = Ff.GraphINN(nodes + conditions) + + self.model = conv_inn.to(self.device) + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet(cond_shape=self.cond_shape).to(self.device) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = "CondConvINN-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def forward(self, input, cond): + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + def sample(self, num_samples, cond, temp=1.): + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cond = torch.cat([cond]*num_samples) + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False): + + batch_size = len(data_batch) + n_pixel = np.prod(self.input_shape) + num_bins = 2 ** num_bits + + if not tiled: + x_posts = [] + jac_rev = torch.zeros(size=(batch_size,)).to(self.device) + data_fidelity_prob = torch.zeros(size=(batch_size,)).to(self.device) + for i in range(num_z): + # z = torch.randn(batch_size, np.prod(self.input_shape)).to(self.device) + z = self.latent_dist.sample([batch_size, np.prod(self.input_shape)]) + x_post,jac_r = self.model(z, self.cond_net(data_batch), rev=True) + x_posts.append(x_post) + jac_rev += jac_r/ num_z + data_fidelity_prob += degradation_op.log_prob(data_batch, x_post) / num_z + x_posts = torch.stack(x_posts, dim=0) + else: + # z = torch.randn(batch_size*num_z, np.prod(self.input_shape)).to(self.device) + z = self.latent_dist.sample([batch_size*num_z, np.prod(self.input_shape)]) + data_batch_tiled = torch.cat([data_batch]*num_z, 0) + x_posts, jac_rev = self.model(z, self.cond_net(data_batch_tiled), rev=True) + data_fidelity_prob = degradation_op.log_prob(data_batch, x_posts) + x_posts = torch.reshape(x_posts, [num_z, batch_size, *self.input_shape]) + + loss = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + loss = - torch.mean(loss / np.log(2) / n_pixel ) + return loss, x_posts + + def save(self, *args, **kwargs): + torch.save(self.model.state_dict(), *args, **kwargs) + + +class Glow(nn.Module): + def __init__( + self, input_shape, num_flow, num_block, + filter_size = 512, + affine = True, + conv_lu = True, + device = None, + ): + super().__init__() + + self.device = device if device != None else DEVICE + self.blocks = nn.ModuleList() + self.input_shape = input_shape + self.num_flow = num_flow + self.num_block = num_block + n_channel = input_shape[0] + for i in range(num_block - 1): + self.blocks.append(InvBlock(n_channel, num_flow, affine=affine, filter_size=filter_size, conv_lu=conv_lu)) + n_channel *= 2 + self.blocks.append(InvBlock(n_channel, num_flow, split=False, filter_size=filter_size, affine=affine)) + + self.z_shapes, self.cum_idxs = self.calc_z_shapes() + + self.identifier = f"Glow-flow{num_flow}-block{num_block}" + self.trainable_parameters = self.parameters() + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def calc_z_shapes(self): + z_shapes = [] + input_size = self.input_shape[1] + n_channel = self.input_shape[0] + + for i in range(self.num_block - 1): + input_size //= 2 + n_channel *= 2 + + z_shapes.append((n_channel, input_size, input_size)) + + input_size //= 2 + z_shapes.append((n_channel * 4, input_size, input_size)) + + z_inds = [np.prod(zz) for zz in z_shapes] + z_inds_c = [np.sum(z_inds[:i+1]) for i in range(len(z_shapes))] + return z_shapes, z_inds_c + + def initialize_actnorm(self, data_batch): + with torch.no_grad(): + _,_,_ = self(data_batch.to(self.device)) + + def list2array_z(self, z): + bs = z[0].shape[0] + assert np.prod( [ zz.shape[0] == bs for zz in z ] ), "Wrong shapes in z" + + if isinstance(z[0], np.ndarray): + return np.concatenate([zz.reshape(bs, -1) for zz in z], axis=1) + elif isinstance(z[0], torch.Tensor): + return torch.cat( [torch.reshape(zz, [bs, -1]) for zz in z], dim=1) + + def array2list_z(self, z): + bs = z.shape[0] + z_shapes = [(0,)] + self.z_shapes + z_idxs = [0] + self.cum_idxs + z_list = [] + for i in range(1,len(z_shapes)): + z_list.append( z[:,z_idxs[i-1]:z_idxs[i]].reshape(bs, *z_shapes[i]) ) + return z_list + + def forward(self, input): + log_p_sum = 0 + logdet = 0 + out = input + z_outs = [] + + for block in self.blocks: + out, det, log_p, z_new = block(out) + z_outs.append(z_new) + logdet = logdet + det + + if log_p is not None: + log_p_sum = log_p_sum + log_p + + z_outs = self.list2array_z(z_outs) + return z_outs, log_p_sum, logdet + + def reverse(self, z, reconstruct=False): + z_list = self.array2list_z(z) + for i, block in enumerate(self.blocks[::-1]): + if i == 0: + input = block.reverse(z_list[-1], z_list[-1], reconstruct=reconstruct) + + else: + input = block.reverse(input, z_list[-(i + 1)], reconstruct=reconstruct) + + return input, None + + def sample(self, num_samples, temp=1.): + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + x,_ = self.reverse(z) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, num_bits=0): + + npixel = np.prod(self.input_shape) + if num_bits == 0: + _,log_p,logdet = self(data_batch.to(self.device)) + loss = log_p + logdet + else: + num_bins = 2 ** num_bits + dbatch = data_batch + torch.rand_like(data_batch) / num_bins + _,log_p,logdet = self(dbatch.to(self.device)) + loss = log_p + logdet - np.log(num_bins) * npixel + return - torch.mean( loss / np.log(2) / npixel ) + + def save(self, *args, **kwargs): + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict) + + +class CondNet2(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape, cond_layer_thicknesses=[64, 128, 128, 512]): + super().__init__() + + ct = cond_layer_thicknesses + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + self.resolution_levels = nn.ModuleList([ + nn.Sequential(nn.Conv2d(3, ct[0], 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ct[0], ct[0], 3, padding=1)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(ct[0], ct[1], 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ct[1], ct[1], 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(ct[1], ct[2], 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.AvgPool2d(4), + Flatten(), + nn.Linear(ct[2] * cond_shape[1] // 16 * cond_shape[2] // 16, ct[3]))]) + + def forward(self, c): + outputs = [c] + for m in self.resolution_levels: + outputs.append(m(outputs[-1])) + return outputs[1:] + + +class CondConvINN2(nn.Module): + '''cINN, including the ocnditioning network''' + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_conv_layers = [2,4,4], + num_fc_layers = [4], + cond_layer_thicknesses = [64, 128, 128, 512], + device = None): + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_conv_layers = num_conv_layers + self.num_fc_layers = num_fc_layers + self.cond_layer_thicknesses = cond_layer_thicknesses + # nodes = [Ff.InputNode(*input_shape, name='cond_input')] + # ndim_x = np.prod(input_shape) + + self.model = self.build_inn().to(device) + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet2(cond_shape=self.cond_shape, cond_layer_thicknesses=cond_layer_thicknesses).to(self.device) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = "CondConvINN2-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def build_inn(self): + + input_shape = self.input_shape + ct = self.cond_layer_thicknesses + + def sub_conv(ch_hidden, kernel): + pad = kernel // 2 + return lambda ch_in, ch_out: nn.Sequential( + nn.Conv2d(ch_in, ch_hidden, kernel, padding=pad), + nn.ReLU(), + nn.Conv2d(ch_hidden, ch_out, kernel, padding=pad)) + + def sub_fc(ch_hidden): + return lambda ch_in, ch_out: nn.Sequential( + nn.Linear(ch_in, ch_hidden), + nn.ReLU(), + nn.Linear(ch_hidden, ch_out)) + + nodes = [Ff.InputNode(*input_shape)] + # outputs of the cond. net at different resolution levels + conditions = [Ff.ConditionNode(ct[0], input_shape[1], input_shape[2]), + Ff.ConditionNode(ct[1], input_shape[1] // 2, input_shape[2] // 2), + Ff.ConditionNode(ct[2], input_shape[1] // 4, input_shape[1] // 4), + Ff.ConditionNode(ct[3])] + + split_nodes = [] + + subnet = sub_conv(32, 3) + for k in range(self.num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.0}, + conditions=conditions[0])) + + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + + for k in range(self.num_conv_layers[1]): + subnet = sub_conv(64, 3 if k%2 else 1) + + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.0}, + conditions=conditions[1])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + #split off 75% of the channels + section_sizes = [ input_shape[0], 3*input_shape[0] ] + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + + for k in range(self.num_conv_layers[2]): + subnet = sub_conv(128, 3 if k%2 else 1) + + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':0.6}, + conditions=conditions[2])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + #split off 50% ch + section_sizes = [2*input_shape[0], 2*input_shape[0]] + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + + # fully_connected part + subnet = sub_fc(512) + for k in range(self.num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':0.6}, + conditions=conditions[3])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + # concat everything + nodes.append(Ff.Node([s.out0 for s in split_nodes] + [nodes[-1].out0], + Fm.Concat1d, {'dim':0})) + nodes.append(Ff.OutputNode(nodes[-1])) + + return Ff.ReversibleGraphNet(nodes + split_nodes + conditions, verbose=False) + + def forward(self, input, cond): + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + def sample(self, num_samples, cond, temp=1.): + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cond = torch.cat([cond]*num_samples) + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False): + + batch_size = len(data_batch) + n_pixel = np.prod(self.input_shape) + num_bins = 2 ** num_bits + + if not tiled: + x_posts = [] + jac_rev = torch.zeros(size=(batch_size,)).to(self.device) + data_fidelity_prob = torch.zeros(size=(batch_size,)).to(self.device) + zs = self.latent_dist.sample([batch_size*num_z, np.prod(self.input_shape)]) + for i in range(num_z): + # z = torch.randn(batch_size, np.prod(self.input_shape)).to(self.device) + z = zs[i*batch_size:(i+1)*batch_size] + x_post,jac_r = self.model(z, self.cond_net(degradation_op.rev(data_batch)), rev=True) + x_posts.append(x_post) + jac_rev += jac_r/ num_z + data_fidelity_prob_single = degradation_op.log_prob(data_batch, x_post) + data_fidelity_prob += data_fidelity_prob_single / num_z + x_posts = torch.stack(x_posts, dim=0) + else: + # z = torch.randn(batch_size*num_z, np.prod(self.input_shape)).to(self.device) + z = self.latent_dist.sample([batch_size*num_z, np.prod(self.input_shape)]) + data_batch_tiled = torch.cat([data_batch]*num_z, 0) + x_posts, jac_rev = self.model(z, self.cond_net(degradation_op.rev(data_batch_tiled)), rev=True) + data_fidelity_prob = degradation_op.log_prob(data_batch_tiled, x_posts) + x_posts = torch.reshape(x_posts, [num_z, batch_size, *self.input_shape]) + jac_rev = jac_rev.reshape(num_z, batch_size) + jac_rev = torch.mean(jac_rev, axis=0) + data_fidelity_prob = data_fidelity_prob.reshape(num_z, batch_size) + data_fidelity_prob = torch.mean(data_fidelity_prob, axis=0) + + loss = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + loss = - torch.mean(loss / np.log(2) / n_pixel ) + return loss, x_posts + + def save(self, *args, **kwargs): + torch.save(self.model.state_dict(), *args, **kwargs) + + +class Unet(nn.Module): + """ + PyTorch implementation of a U-Net model. + + O. Ronneberger, P. Fischer, and Thomas Brox. U-net: Convolutional networks + for biomedical image segmentation. In International Conference on Medical + image computing and computer-assisted intervention, pages 234-241. + Springer, 2015. + """ + + def __init__( + self, + input_shape: list, + in_chans: int, + out_chans: int, + chans: int = 32, + num_pool_layers: int = 4, + drop_prob: float = 0.0, + *args, + **kwargs, + ): + """ + Args: + in_chans: Number of channels in the input to the U-Net model. + out_chans: Number of channels in the output to the U-Net model. + chans: Number of output channels of the first convolution layer. + num_pool_layers: Number of down-sampling and up-sampling layers. + drop_prob: Dropout probability. + """ + super().__init__() + + self.in_chans = in_chans + self.out_chans = out_chans + self.chans = chans + self.num_pool_layers = num_pool_layers + self.drop_prob = drop_prob + + self.down_sample_layers = nn.ModuleList([ConvBlock(in_chans, chans, drop_prob)]) + ch = chans + for _ in range(num_pool_layers - 1): + self.down_sample_layers.append(ConvBlock(ch, ch * 2, drop_prob)) + ch *= 2 + self.conv = ConvBlock(ch, ch * 2, drop_prob) + + self.up_conv = nn.ModuleList() + self.up_transpose_conv = nn.ModuleList() + for _ in range(num_pool_layers - 1): + self.up_transpose_conv.append(TransposeConvBlock(ch * 2, ch)) + self.up_conv.append(ConvBlock(ch * 2, ch, drop_prob)) + ch //= 2 + + self.up_transpose_conv.append(TransposeConvBlock(ch * 2, ch)) + self.up_conv.append( + nn.Sequential( + ConvBlock(ch * 2, ch, drop_prob), + nn.Conv2d(ch, self.out_chans, kernel_size=1, stride=1), + ) + ) + + self.trainable_parameters = self.parameters() + + def forward(self, image: torch.Tensor) -> torch.Tensor: + """ + Args: + image: Input 4D tensor of shape `(N, in_chans, H, W)`. + + Returns: + Output tensor of shape `(N, out_chans, H, W)`. + """ + stack = [] + output = image + + # apply down-sampling layers + for layer in self.down_sample_layers: + output = layer(output) + stack.append(output) + output = F.avg_pool2d(output, kernel_size=2, stride=2, padding=0) + + output = self.conv(output) + + # apply up-sampling layers + for transpose_conv, conv in zip(self.up_transpose_conv, self.up_conv): + downsample_layer = stack.pop() + output = transpose_conv(output) + + # reflect pad on the right/botton if needed to handle odd input dimensions + padding = [0, 0, 0, 0] + if output.shape[-1] != downsample_layer.shape[-1]: + padding[1] = 1 # padding right + if output.shape[-2] != downsample_layer.shape[-2]: + padding[3] = 1 # padding bottom + if torch.sum(torch.tensor(padding)) != 0: + output = F.pad(output, padding, "reflect") + + output = torch.cat([output, downsample_layer], dim=1) + output = conv(output) + + return output + + +if __name__ == '__main__': + + import degradations + import scipy.misc as misc + + degradation = degradations.GaussianBlurNoise(input_shape=[3,64,64]) + cond_net = CondConvINN2() + test_image = misc.face() + test_image = misc.imresize(test_image, [64,64,3]) + test_image = np.swapaxes(test_image.T, 1,2) + test_image = np.stack([test_image, test_image[::-1], test_image[:,::-1]]) + loss = cond_net.get_loss(test_image, degradation, num_z=4, reg_parameter=1) + loss_tiled = cond_net.get_loss(test_image, degradation, num_z=4, reg_parameter=1, tiled=True) + print(loss, loss_tiled) + diff --git a/src/models2.py b/src/models2.py new file mode 100644 index 0000000..8fb08a3 --- /dev/null +++ b/src/models2.py @@ -0,0 +1,1776 @@ +""" +Copyright (c) authors. +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +Parts copyright (c) Facebook, Inc. and its affiliates. + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +from time import time + +import torch +import torch.nn as nn +import torch.optim +import numpy as np +import utils +import model_tools +from model_tools import * +import torch.distributions as dists +import ast +import os +# from tqdm import tqdm + +import FrEIA.framework as Ff +import FrEIA.modules as Fm + +torch.manual_seed(1234) +np.random.seed(42) + +# from FrEIA.framework import InputNode, OutputNode, Node, ReversibleGraphNet +# from FrEIA.modules import GLOWCouplingBlock, PermuteRandom + +DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu' + +def load_model(path_to_pkl, ambient=False, load_post_model=False): + if ambient: + main = 'main_' + else: main = '' + folder_path = os.path.split(path_to_pkl)[0] + configpath = os.path.join(folder_path, 'config.txt') + with open(configpath, 'r') as fid: + configs = fid.read() + configs = ast.literal_eval(configs) + main_model = globals()[configs[main+'model_type']]( + configs['input_shape'], + **configs[main+'model_args'] + ) + main_model.load(path_to_pkl) + if load_post_model: + # raise NotImplementedError() + post_model = globals()[configs['post_model_type']]( + configs['input_shape'], + configs['cond_shape'], + **configs['post_model_args'] + ) + suffix = path_to_pkl.split('_')[-1] + path_to_post = os.path.join(folder_path, f'post-network_{suffix}') + post_model.load(path_to_post) + return main_model, post_model + return main_model + +def load_post_model(path_to_pkl): + folder_path = os.path.split(path_to_pkl)[0] + configpath = os.path.join(folder_path, 'config.txt') + with open(configpath, 'r') as fid: + configs = fid.read() + configs = ast.literal_eval(configs) + # raise NotImplementedError() + post_model = globals()[configs['post_model_type']]( + configs['input_shape'], + configs['cond_shape'], + **configs['post_model_args'] + ) + post_model.load(path_to_pkl) + return post_model + + +def subnet_fc(c_in, c_out): + return nn.Sequential(nn.Linear(c_in, 512), nn.ReLU(), + nn.Linear(512, c_out)) + +def subnet_conv(c_in, c_out, interm=256): + return nn.Sequential(nn.Conv2d(c_in, interm, 3, padding=1), nn.ReLU(), + nn.Conv2d(interm, c_out, 3, padding=1)) + +def subnet_conv_1x1(c_in, c_out): + return nn.Sequential(nn.Conv2d(c_in, 256, 1), nn.ReLU(), + nn.Conv2d(256, c_out, 1)) + + +# Loss function for the conditional INNs +def get_conditional_loss_freia(cond_model, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False, cutoff_dim=0, cutoff_mul=1): + + batch_size = len(data_batch) + n_pixel = np.prod(cond_model.input_shape) + num_bins = 2 ** num_bits + + with torch.no_grad(): + zs = cond_model.latent_dist.sample([batch_size*num_z, np.prod(cond_model.input_shape)]) + # cutoff_dim = int(np.prod(cond_model.input_shape) * cutoff_dim) + # zs[:,:cutoff_dim] *= cutoff_mul + + if tiled: + data_batch_tiled = torch.cat([data_batch]*num_z, 0) + cond = cond_model.cond_net(degradation_op.rev(data_batch_tiled)) + x_posts, jac_rev = cond_model.model(zs, cond, rev=True) + data_fidelity_prob = degradation_op.log_prob(data_batch_tiled, x_posts) + x_posts = x_posts.view(num_z, batch_size, *cond_model.input_shape) + jac_rev = jac_rev.view(num_z, batch_size) + data_fidelity_prob = data_fidelity_prob.view(num_z, batch_size) + + if importance_weighting: # return an array of losses for diffeernt z and diffeent data samples + losses = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + losses = - losses / np.log(2) / n_pixel + return losses, x_posts + else: + jac_rev = torch.mean(jac_rev, axis=0) + data_fidelity_prob = torch.mean(data_fidelity_prob, axis=0) + else: + if importance_weighting: raise("Importance sampling is only impemented with tiling for loss") + x_posts = [] + cond = cond_model.cond_net(degradation_op.rev(data_batch)) + jac_rev = torch.zeros(size=(batch_size,)).to(cond_model.device) + data_fidelity_prob = torch.zeros(size=(batch_size,)).to(cond_model.device) + for i in range(num_z): + # z = torch.randn(batch_size, np.prod(cond_model.input_shape)).to(cond_model.device) + z = zs[i*batch_size:(i+1)*batch_size] + x_post,jac_r = cond_model.model(z, cond, rev=True) + x_posts.append(x_post) + jac_rev += jac_r/ num_z + data_fidelity_prob_single = degradation_op.log_prob(data_batch, x_post) + data_fidelity_prob += data_fidelity_prob_single / num_z + x_posts = torch.stack(x_posts, dim=0) + + loss = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + loss = - torch.mean(loss / np.log(2) / (n_pixel-cutoff_dim) ) + return loss, x_posts + +def get_conditional_loss(cond_model, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False): + + batch_size = len(data_batch) + n_pixel = np.prod(cond_model.input_shape) + num_bins = 2 ** num_bits + + if tiled: + # z = torch.randn(batch_size*num_z, np.prod(cond_model.input_shape)).to(cond_model.device) + z = cond_model.latent_dist.sample([batch_size*num_z, cond_model.latent_shape]) + data_batch_tiled = torch.cat([data_batch]*num_z, 0) + cond = degradation_op.rev(data_batch_tiled) + x_posts, jac_rev, log_p_rev = cond_model.reverse(z, cond) + jac_rev += log_p_rev + data_fidelity_prob = degradation_op.log_prob(data_batch_tiled, x_posts) + x_posts = torch.reshape(x_posts, [num_z, batch_size, *cond_model.input_shape]) + jac_rev = jac_rev.reshape(num_z, batch_size) + data_fidelity_prob = data_fidelity_prob.reshape(num_z, batch_size) + + if importance_weighting: # return an array of losses for diffeernt z and diffeent data samples + losses = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + losses = - losses / np.log(2) / n_pixel + return losses, x_posts + else: + jac_rev = torch.mean(jac_rev, axis=0) + data_fidelity_prob = torch.mean(data_fidelity_prob, axis=0) + else: + if importance_weighting: raise("Importance sampling requires tiling for loss") + x_posts = [] + jac_rev = torch.zeros(size=(batch_size,)).to(cond_model.device) + data_fidelity_prob = torch.zeros(size=(batch_size,)).to(cond_model.device) + zs = cond_model.latent_dist.sample([batch_size*num_z, cond_model.latent_shape]) + for i in range(num_z): + # z = torch.randn(batch_size, np.prod(cond_model.input_shape)).to(cond_model.device) + z = zs[i*batch_size:(i+1)*batch_size] + x_post, jac_r, log_p_r = cond_model.reverse(z, degradation_op.rev(data_batch)) + jac_r += log_p_r + x_posts.append(x_post) + jac_rev += jac_r/ num_z + data_fidelity_prob_single = degradation_op.log_prob(data_batch, x_post) + data_fidelity_prob += data_fidelity_prob_single / num_z + x_posts = torch.stack(x_posts, dim=0) + + loss = reg_parameter*data_fidelity_prob + jac_rev - np.log(num_bins) * n_pixel + loss = - torch.mean(loss / np.log(2) / n_pixel ) + return loss, x_posts + + +class ConvINN(object): + + def __init__(self, input_shape=[3,28,28], num_conv_layers=[4,12], num_fc_layers=[12], device=None): + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + # print(input_shape, num_conv_layers, num_fc_layers) + nodes = [Ff.InputNode(*input_shape, name='input')] + ndim_x = np.prod(input_shape) + + # Higher resolution convolutional part + for k in range(num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_conv, 'clamp':1.2}, + name=F'conv_high_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_high_res_{k}')) + + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + + # Lower resolution convolutional part + for k in range(num_conv_layers[1]): + if k%2 == 0: + subnet = subnet_conv_1x1 + else: + subnet = subnet_conv + + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.2}, + name=F'conv_low_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_low_res_{k}')) + + # Make the outputs into a vector, then split off 1/4 of the outputs for the + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + split_node = Ff.Node(nodes[-1], + Fm.Split, + {'section_sizes':(ndim_x // 4, 3 * ndim_x // 4), 'dim':0}, + name='split') + nodes.append(split_node) + + # Fully connected part + for k in range(num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + name=F'fully_connected_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_{k}')) + + # Concatenate the fully connected part and the skip connection to get a single output + nodes.append(Ff.Node([nodes[-1].out0, split_node.out1], + Fm.Concat1d, {'dim':0}, name='concat')) + nodes.append(Ff.OutputNode(nodes[-1], name='output')) + + conv_inn = Ff.GraphINN(nodes) + + self.model = conv_inn.to(self.device) + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + self.identifier = "ConvINN-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + def sample(self, num_samples, temp=1.): + z = np.random.randn(num_samples, np.prod(self.input_shape)) * temp + x,_ = self.model(torch.Tensor(z).to(self.device), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch): + + zbatch, jac = self.model([data_batch.to(self.device)], jac=True) + return - torch.mean(utils.log_normal(zbatch) + jac) + + def save(self, *args, **kwargs): + torch.save(self.model.state_dict(), *args, **kwargs) + + +class CondNet(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape): + super().__init__() + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + self.resolution_levels = nn.ModuleList([ + nn.Sequential(nn.Conv2d(3, 16, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(16, 16, 3, padding=1)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(16, 32, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(32, 32, 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.AvgPool2d(2), + Flatten(), + nn.Linear(32 * cond_shape[1]//4 * cond_shape[2]//4, 256)) + ]) + + def forward(self, c): + outputs = [c] + for m in self.resolution_levels: + outputs.append(m(outputs[-1])) + return outputs[1:] + +class CondConvINN(nn.Module): + + def __init__(self, input_shape=[3,28,28], cond_shape=[3,28,28], num_conv_layers=[4,12], num_fc_layers=[12], device=None): + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + # print(input_shape, num_conv_layers, num_fc_layers) + nodes = [Ff.InputNode(*input_shape, name='cond_input')] + ndim_x = np.prod(input_shape) + + # Define the conditions + # num_conds = int(np.ceil(np.log2(input_shape[-1]))) - 3 + # cond_channels = [np.min( base_cond_channels * 2**i , 256 ) for i in range(num_conds)] + # conditions = [ + # Ff.ConditionNode( np.min( base_cond_channels * 2**i, 256), + # input_shape[1] // 2**i, input_shape[2] // 2**i) for i in range(num_conds) + # ] + + conditions = [Ff.ConditionNode(16, input_shape[1], input_shape[2]), + Ff.ConditionNode(32, input_shape[1]//2, input_shape[2]//2), + Ff.ConditionNode(256) + ] + + # Higher resolution convolutional part + for k in range(num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_conv, 'clamp':1.2}, + conditions = conditions[0], + name = F'cond_conv_high_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_high_res_{k}')) + + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + + # Lower resolution convolutional part + for k in range(num_conv_layers[1]): + if k%2 == 0: + subnet = subnet_conv_1x1 + else: + subnet = subnet_conv + + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.2}, + conditions = conditions[1], + name = F'cond_conv_low_res_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_low_res_{k}')) + + # Make the outputs into a vector, then split off 1/4 of the outputs for the + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + split_node = Ff.Node(nodes[-1], + Fm.Split, + {'section_sizes':(ndim_x // 4, 3 * ndim_x // 4), 'dim':0}, + name='split') + nodes.append(split_node) + + # Fully connected part + for k in range(num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + conditions = conditions[2], + name = F'cond_fully_connected_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'cond_permute_{k}')) + + # Concatenate the fully connected part and the skip connection to get a single output + nodes.append(Ff.Node([nodes[-1].out0, split_node.out1], + Fm.Concat1d, {'dim':0}, name='cond_concat')) + nodes.append(Ff.OutputNode(nodes[-1], name='cond_output')) + + conv_inn = Ff.GraphINN(nodes + conditions) + + self.model = conv_inn.to(self.device) + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet(cond_shape=self.cond_shape).to(self.device) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = "CondConvINN-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def forward(self, input, cond): + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + def sample(self, num_samples, cond, temp=1.): + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cond = torch.cat([cond]*num_samples) + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False): + + return get_conditional_loss_freia(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting) + + def save(self, *args, **kwargs): + torch.save(self.model.state_dict(), *args, **kwargs) + + +class Glow(nn.Module): + def __init__( + self, input_shape, num_flow, num_block, + filter_size = 512, + affine = True, + conv_lu = True, + device = None, + ): + super().__init__() + + self.device = device if device != None else DEVICE + self.blocks = nn.ModuleList() + self.input_shape = input_shape + self.num_flow = num_flow + self.num_block = num_block + n_channel = input_shape[0] + for i in range(num_block - 1): + self.blocks.append(InvBlock(n_channel, num_flow, affine=affine, filter_size=filter_size, conv_lu=conv_lu)) + n_channel *= 2 + self.blocks.append(InvBlock(n_channel, num_flow, split=False, filter_size=filter_size, affine=affine)) + + self.z_shapes, self.cum_idxs = self.calc_z_shapes() + + self.identifier = f"Glow-flow{num_flow}-block{num_block}" + self.trainable_parameters = self.parameters() + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def calc_z_shapes(self): + z_shapes = [] + input_size = self.input_shape[1] + n_channel = self.input_shape[0] + + for i in range(self.num_block - 1): + input_size //= 2 + n_channel *= 2 + + z_shapes.append((n_channel, input_size, input_size)) + + input_size //= 2 + z_shapes.append((n_channel * 4, input_size, input_size)) + + z_inds = [np.prod(zz) for zz in z_shapes] + z_inds_c = [np.sum(z_inds[:i+1]) for i in range(len(z_shapes))] + return z_shapes, z_inds_c + + def initialize_actnorm(self, data_batch): + with torch.no_grad(): + _,_,_ = self(data_batch.to(self.device)) + + def list2array_z(self, z): + bs = z[0].shape[0] + assert np.prod( [ zz.shape[0] == bs for zz in z ] ), "Wrong shapes in z" + + if isinstance(z[0], np.ndarray): + return np.concatenate([zz.reshape(bs, -1) for zz in z], axis=1) + elif isinstance(z[0], torch.Tensor): + return torch.cat( [torch.reshape(zz, [bs, -1]) for zz in z], dim=1) + + def array2list_z(self, z): + bs = z.shape[0] + z_shapes = [(0,)] + self.z_shapes + z_idxs = [0] + self.cum_idxs + z_list = [] + for i in range(1,len(z_shapes)): + z_list.append( z[:,z_idxs[i-1]:z_idxs[i]].reshape(bs, *z_shapes[i]) ) + return z_list + + def forward(self, input): + log_p_sum = 0 + logdet = 0 + out = input + z_outs = [] + + for block in self.blocks: + out, det, log_p, z_new = block(out) + z_outs.append(z_new) + logdet = logdet + det + + if log_p is not None: + log_p_sum = log_p_sum + log_p + + z_outs = self.list2array_z(z_outs) + return z_outs, log_p_sum, logdet + + def reverse(self, z, reconstruct=False): + z_list = self.array2list_z(z) + for i, block in enumerate(self.blocks[::-1]): + if i == 0: + input = block.reverse(z_list[-1], z_list[-1], reconstruct=reconstruct) + + else: + input = block.reverse(input, z_list[-(i + 1)], reconstruct=reconstruct) + + return input, None + + def sample(self, num_samples, temp=1.): + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + x,_ = self.reverse(z) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, num_bits=0, importance_weighting=False): + + data_shape = list(data_batch.shape) + if len(data_shape) == 5: + data_batch = data_batch.reshape( -1, *data_shape[2:] ) + npixel = np.prod(self.input_shape) + + if num_bits == 0: + _,log_p,logdet = self(data_batch.to(self.device)) + loss = log_p + logdet + else: + num_bins = 2 ** num_bits + dbatch = data_batch + torch.rand_like(data_batch) / num_bins + _,log_p,logdet = self(dbatch.to(self.device)) + loss = log_p + logdet - np.log(num_bins) * npixel + + if not importance_weighting: + return - torch.mean( loss / np.log(2) / npixel ) + else: # return per-data-point array of losses (1D, will need to be reshaped) + return - loss.reshape(data_shape[:-3]) / np.log(2) / npixel + + def save(self, *args, **kwargs): + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict) + + +class CondNet2(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape, cond_layer_thicknesses=[64, 128, 128, 512], avg_pool=4): + super().__init__() + + ct = cond_layer_thicknesses + self.cond_shape = cond_shape + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + in_channels = 3 if self.cond_shape[0] == 3 else 4 + self.resolution_levels = nn.ModuleList([ + nn.Sequential(nn.Conv2d(in_channels, ct[0], 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ct[0], ct[0], 3, padding=1)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(ct[0], ct[1], 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ct[1], ct[1], 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.Conv2d(ct[1], ct[2], 3, padding=1, stride=2)), + + nn.Sequential(nn.LeakyReLU(), + nn.AvgPool2d(avg_pool), + Flatten(), + nn.Linear(ct[2] * cond_shape[1] // 16 * cond_shape[2] // 16, ct[3]))]) + + def forward(self, c): + if self.cond_shape[0] != 3: + outputs = [forward_squeeze(c)] + else: outputs = [c] + for m in self.resolution_levels: + outputs.append(m(outputs[-1])) + return outputs[1:] + +class CondConvINN2(nn.Module): + '''cINN, including the ocnditioning network''' + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_conv_layers = [2,4,4], + num_fc_layers = [4], + cond_layer_thicknesses = [64, 128, 128, 512], + cond_avg_pool = 4, + device = None, + **kwargs): + """ + `input_shape` : Shape of the *output* image of the conditional INN + `cond_shape` : Shape of the conditioning input + `num_conv_layers` : List containing the number of convolutional layers in each block. The len of the list is the number of convolutional blocks. + `num_fc_layers` : List containing the number of fully connected layers in each block. The len of the list is the number of fully connected blocks. + `cond_layer_thicknesses` : Number of channels in conditioning layer input. The conditioning input will be preprocessed to have these many channels. + `cond_avg_pool` : Average pooling ratio to use in the conditioning subnetwork. + `device` : CPU/GPU device to load the model on. Defaults to DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu' + """ + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_conv_layers = num_conv_layers + self.num_fc_layers = num_fc_layers + self.cond_layer_thicknesses = cond_layer_thicknesses + # nodes = [Ff.InputNode(*input_shape, name='cond_input')] + # ndim_x = np.prod(input_shape) + + self.model = self.build_inn() + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet2(cond_shape=self.cond_shape, cond_layer_thicknesses=cond_layer_thicknesses, avg_pool=cond_avg_pool) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = "CondConvINN2-" + '-'.join(['{}']*(len(num_fc_layers) + len(num_conv_layers))).format(*num_conv_layers, *num_fc_layers) + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def build_inn(self): + + input_shape = self.input_shape + cond_shape = self.cond_shape if input_shape[0] >= 2 else [self.cond_shape[0]*4, self.cond_shape[1]//2, self.cond_shape[2]//2] + ct = self.cond_layer_thicknesses + + def sub_conv(ch_hidden, kernel): + pad = kernel // 2 + return lambda ch_in, ch_out: nn.Sequential( + nn.Conv2d(ch_in, ch_hidden, kernel, padding=pad), + nn.ReLU(), + nn.Conv2d(ch_hidden, ch_out, kernel, padding=pad)) + + def sub_fc(ch_hidden): + return lambda ch_in, ch_out: nn.Sequential( + nn.Linear(ch_in, ch_hidden), + nn.ReLU(), + nn.Linear(ch_hidden, ch_out)) + + nodes = [Ff.InputNode(*input_shape)] + # outputs of the cond. net at different resolution levels + conditions = [Ff.ConditionNode(ct[0], cond_shape[1], cond_shape[2]), + Ff.ConditionNode(ct[1], cond_shape[1] // 2, cond_shape[2] // 2), + Ff.ConditionNode(ct[2], cond_shape[1] // 4, cond_shape[1] // 4), + Ff.ConditionNode(ct[3])] + + split_nodes = [] + + nodes.append(Ff.Node(nodes[-1], model_tools.ActNormCoarse, {'inverse': True, 'scaling': 1./6})) + + subnet = sub_conv(32, 3) + if self.input_shape[0] < 2: + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + + for k in range(self.num_conv_layers[0]): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.0}, + conditions=conditions[0])) + + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + + for k in range(self.num_conv_layers[1]): + subnet = sub_conv(64, 3 if k%2 else 1) + + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':1.0}, + conditions=conditions[1])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + #split off 75% of the channels + section_sizes = [ cond_shape[0], 3*cond_shape[0] ] + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + + for k in range(self.num_conv_layers[2]): + subnet = sub_conv(128, 3 if k%2 else 1) + + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':0.6}, + conditions=conditions[2])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + #split off 50% ch + section_sizes = [2*cond_shape[0], 2*cond_shape[0]] + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + + # fully_connected part + subnet = sub_fc(512) + for k in range(self.num_fc_layers[0]): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':0.6}, + conditions=conditions[3])) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + + # concat everything + nodes.append(Ff.Node([s.out0 for s in split_nodes] + [nodes[-1].out0], + Fm.Concat1d, {'dim':0})) + nodes.append(Ff.OutputNode(nodes[-1])) + + return Ff.ReversibleGraphNet(nodes + split_nodes + conditions, verbose=False) + + def initialize_actnorm(self, data_batch, degradation_op): + for m in self.model.module_list: + if isinstance(m, model_tools.ActNormCoarse): + m.init_on_next_batch = True + with torch.no_grad(): + data_batch_rev = degradation_op.rev(data_batch) + x = self.sample(data_batch.shape[0], data_batch_rev) + # After 1 pass through self.model, init_on_next_batch on all the actnorms automatically is set to False again. + + def forward(self, input, cond): + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + def sample(self, num_samples, cond, temp=1.): + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + if cond.shape[0] == 1: + cond = torch.cat([cond]*num_samples) + else: assert cond.shape[0] == num_samples, "batch size of condition must be equal to 1 or num_samples" + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False, cutoff_dim=0., cutoff_mul=0.): + + return get_conditional_loss_freia(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting) + + def save(self, *args, **kwargs): + # torch.save(self.model.state_dict(), *args, **kwargs) + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict, strict=False) + + +class CondNet3(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape, + num_cond_chans = 4, + num_block = 5, + num_noncond_blocks = 0, + ): + super().__init__() + + self.cond_shape = cond_shape + self.num_cond_chans = num_cond_chans + self.num_noncond_blocks = num_noncond_blocks + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + # Note that at the beginning the input is Haar Squeezed based on the num_noncond_blocks to match the sizes + self.blocks = nn.ModuleList() + C = self.cond_shape[0] * (4 ** num_noncond_blocks) + ncc = num_cond_chans + self.blocks.append( + nn.Sequential( + nn.Conv2d(C, ncc, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc, 3, padding=1), + ) + ) + for i in range(num_block - num_noncond_blocks - 1): + self.blocks.append( + nn.Sequential( + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc*2, 3, padding=1, stride=2), + ) + ) + ncc *= 2 + + def forward(self, c): + for i in range(self.num_noncond_blocks): + c = Squeeze()(c) + outputs = [c] + for m in self.blocks: + outputs.append(m(outputs[-1])) + return outputs[1:] + + +class CondLDFlow(nn.Module): + "Conditional low dimenional injective flow achitecture" + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_flow = 2, + num_block = 4, + num_cond_chans = 16, + compression_ratio = 4, + num_noncond_blocks = 1, + filter_size = 512, + gamma = 1e-08, + squeezer = 'Squeeze', + device = None): + """ + input_shape : shape of image output of the posterior network + cond_shape : shape of the input to the conditioning network + num_flow : number of flows in each invertible block + num_cond_chans : number of channels in the first conditioning layer + compression_ratio : ratio of latent space size and image size + num_noncond_blocks : num of blocks to go without conditioning + filter_size : filter size in affine coupling + tikhonov_gamma : reg parameter for tikhonov inversion + """ + + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_flow = num_flow + self.num_block = num_block + self.num_cond_chans = num_cond_chans + self.gamma = gamma + self.compression_ratio = compression_ratio # must be a power of two + self.num_inj_flows = num_inj_flows = int(np.log2(compression_ratio)) + self.squeezer = getattr(model_tools, squeezer) + + C = input_shape[0] + self.blocks = nn.ModuleList([]) + nif = 0 + for i in range(num_noncond_blocks): + if nif < num_inj_flows: + self.blocks.append( + InvBlock(C, num_flow, split=False, filter_size=filter_size, extract_z=False, squeeze=True, squeezer=self.squeezer).to(self.device) + ) + self.blocks.append( + InjBlock(4*C, 1, gamma=gamma, filter_size=filter_size, extract_z=False, squeeze=False).to(self.device) + ) + nif += 1 + else: + self.blocks.append( + InvBlock(C, num_flow, split=True, filter_size=filter_size, extract_z=True, squeeze=True, squeezer=self.squeezer).to(self.device) + ) + C *= 2 + + ncc = num_cond_chans + for i in range(num_block - num_noncond_blocks - 1): + if nif < num_inj_flows: + self.blocks.append( + InvCondBlock(C, num_flow, split=False, filter_size=filter_size, num_cond_layers=ncc, extract_z=False, squeeze=True, squeezer=self.squeezer).to(self.device) + ) + self.blocks.append( + InjBlock(4*C, 1, gamma=gamma, filter_size=filter_size, extract_z=False, squeeze=False).to(self.device) + ) + nif += 1 + else: + self.blocks.append( + InvCondBlock(C, num_flow, split=True, filter_size=filter_size, num_cond_layers=ncc, extract_z=True, squeeze=True, squeezer=self.squeezer).to(self.device) + ) + C *= 2 + ncc *= 2 + + self.blocks.append( + InvCondBlock(C, num_flow, split=False, filter_size=filter_size, num_cond_layers=ncc, extract_z=True, squeeze=True, squeezer=self.squeezer).to(self.device) + ) + + self.cond_net = CondNet3( + cond_shape = self.cond_shape, + num_cond_chans = self.num_cond_chans, + num_block = self.num_block, + num_noncond_blocks = num_noncond_blocks, + ).to(self.device) + + self.trainable_parameters = self.parameters() + + self.z_shapes, self.cum_idxs = self.calc_z_shapes() + self.latent_shape = np.sum([np.prod(zsh) for zsh in self.z_shapes]) + self.identifier = f"CondLDFlow-nf{num_flow}-nb{num_block}-nc{num_cond_chans}-cr{compression_ratio}-nn{num_noncond_blocks}" + + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def calc_z_shapes(self): + z_shapes = [] + input_size = self.input_shape[1] + n_channel = self.input_shape[0] + + for i in range(self.num_block - 1): + input_size //= 2 + n_channel *= 2 + + z_shapes.append((n_channel, input_size, input_size)) + + input_size //= 2 + z_shapes.append((n_channel * 4, input_size, input_size)) + z_shapes = z_shapes[self.num_inj_flows:] + + z_inds = [np.prod(zz) for zz in z_shapes] + z_inds_c = [np.sum(z_inds[:i+1]) for i in range(len(z_shapes))] + + return z_shapes, z_inds_c + + def initialize_actnorm(self, data_batch, cond_batch): + with torch.no_grad(): + _,_,_ = self(data_batch.to(self.device), cond_batch.to(self.device)) + + def list2array_z(self, z): + bs = z[0].shape[0] + assert np.prod( [ zz.shape[0] == bs for zz in z ] ), "Wrong shapes in z" + + if isinstance(z[0], np.ndarray): + return np.concatenate([zz.reshape(bs, -1) for zz in z], axis=1) + elif isinstance(z[0], torch.Tensor): + return torch.cat( [torch.reshape(zz, [bs, -1]) for zz in z], dim=1) + + def array2list_z(self, z): + bs = z.shape[0] + z_shapes = [(0,)] + self.z_shapes + z_idxs = [0] + self.cum_idxs + z_list = [] + for i in range(1,len(z_shapes)): + z_list.append( z[:,z_idxs[i-1]:z_idxs[i]].reshape(bs, *z_shapes[i]) ) + return z_list + + def forward(self, input, cond): + + log_p_sum = 0 + logdet = 0 + out = input + z_outs = [] + conditions = self.cond_net(cond) + conds = iter(conditions) + + for i,block in enumerate(self.blocks): + if isinstance(block, InvCondBlock): + cond = next(conds) + out, det, log_p, z_new = block(out, cond) + else: + out, det, log_p, z_new = block(out) + + logdet += det + log_p_sum += log_p + if z_new != None: + z_outs.append(z_new) + + z_outs = self.list2array_z(z_outs) + return z_outs, log_p_sum, logdet + + def reverse(self, z, cond): + + log_p_sum = 0 + logdet = 0 + z_list = self.array2list_z(z) + conditions = self.cond_net(cond) + out = z_list[-1] + conds = iter(conditions[::-1]) + zs = iter(z_list[::-1]) + + for i, block in enumerate(self.blocks[::-1]): + try: z = next(zs) + except StopIteration: z = out + + if isinstance(block, InvCondBlock): + cond = next(conds) + out, det, log_p = block.reverse(out, cond, z, jac=True) + else: + out, det, log_p = block.reverse(out, z, jac=True) + + logdet += det + log_p_sum += log_p + + return out, log_p_sum, logdet + + def sample(self, num_samples, cond, temp=1.): + if len(cond.shape) == 3: cond = cond.unsqueeze(0) + if cond.shape[0] == 1: cond = torch.cat([cond]*num_samples, dim=0) + assert cond.shape[0] == num_samples, "Num. conditionals should be 1 or equal to num_samples" + + z = self.latent_dist.sample([num_samples, self.latent_shape]) * temp + x,_,_ = self.reverse(z, cond) + return x.cpu().detach().numpy() + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False): + + return get_conditional_loss(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting) + + def save(self, *args, **kwargs): + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict) + +class CondNet4(nn.Module): + '''conditioning network''' + def __init__(self, cond_shape, + num_cond_chans = 4, + num_block = 5, + linear_layer_dim = 512, + squeezer = Squeeze(), + squeeze_first = True, + ): + super().__init__() + + self.cond_shape = cond_shape + self.num_cond_chans = num_cond_chans + self.squeezer = squeezer + self.squeeze_first = squeeze_first + + class Flatten(nn.Module): + def __init__(self, *args): + super().__init__() + def forward(self, x): + return x.view(x.shape[0], -1) + + # Note that at the beginning the input is Squeezed to match the sizes + self.blocks = nn.ModuleList() + if squeeze_first: + C = 4*self.cond_shape[0] + H = self.cond_shape[1] // 2 + else: + C = self.cond_shape[0] + H = self.cond_shape[1] + ncc = num_cond_chans + self.blocks.append( + nn.Sequential( + nn.Conv2d(C, ncc, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc, 3, padding=1), + ) + ) + for i in range(num_block - 2): + self.blocks.append( + nn.Sequential( + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc, 3, padding=1), + nn.LeakyReLU(), + nn.Conv2d(ncc, ncc*2, 3, padding=1, stride=2), + ) + ) + ncc *= 2 + + self.blocks.append( + nn.Sequential( + nn.LeakyReLU(), + Flatten(), + nn.Linear( + ncc * (H // 2**(num_block - 2)) * (H // 2**(num_block - 2)), + linear_layer_dim + ) + ) + ) + + def forward(self, c): + if self.squeeze_first: + c = self.squeezer(c) + outputs = [c] + for m in self.blocks: + outputs.append(m(outputs[-1])) + return outputs[1:] + + +class CondGlow(nn.Module): + "Conditional flow architecture" + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_flow = 2, + num_block = 4, + num_cond_chans = 16, + filter_size = 32, + final_cond_dim = 512, + first_split_ratio = 0.25, + squeezer = 'Squeeze', + device = None): + """ + input_shape : shape of image output of the posterior network + cond_shape : shape of the input to the conditioning network + num_flow : number of flows in each invertible block + num_cond_chans : number of channels in the first conditioning layer + compression_ratio : ratio of latent space size and image size + num_noncond_blocks : num of blocks to go without conditioning + filter_size : filter size in affine coupling + """ + + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_flow = num_flow + self.num_block = num_block + self.num_cond_chans = num_cond_chans + self.filter_size = filter_size + self.final_cond_dim = final_cond_dim + self.first_split_ratio = first_split_ratio + self.squeezer = getattr(model_tools, squeezer)(cond_shape[0]) + + self.model = self.build_inn() + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet4(cond_shape=self.cond_shape, num_cond_chans=self.num_cond_chans, num_block=self.num_block, linear_layer_dim=self.final_cond_dim, squeezer=self.squeezer) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = f"CondGlow-nf{num_flow}-nb{num_block}-nc{num_cond_chans}-fil{filter_size}-spl{first_split_ratio}" + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def build_inn(self): + + C = self.input_shape[0] + filter_size = self.filter_size + + def subnet_conv(ch_hidden, kernel): + pad = kernel // 2 + return lambda ch_in, ch_out: nn.Sequential( + nn.Conv2d(ch_in, ch_hidden, kernel, padding=pad), + nn.ReLU(), + nn.Conv2d(ch_hidden, ch_out, kernel, padding=pad)) + + def subnet_fc(ch_hidden): + return lambda ch_in, ch_out: nn.Sequential( + nn.Linear(ch_in, ch_hidden), + nn.ReLU(), + nn.Linear(ch_hidden, ch_out)) + + def add_block(nodes, num_flow, subnet, condition, clamp=1.0): + for k in range(num_flow): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':clamp}, + conditions=condition)) + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + return nodes + + def split(nodes, split_nodes, section_sizes): + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + return nodes, split_nodes + + nodes = [Ff.InputNode(*self.input_shape)] + conditions = [] + ncc = self.num_cond_chans + chans = C + cs = self.cond_shape[1] // 2 + for i in range(self.num_block - 1): + conditions.append(Ff.ConditionNode(ncc, cs, cs)) + ncc *= 2; cs //= 2 + conditions.append(Ff.ConditionNode(self.final_cond_dim)) + + split_nodes = [] + + # First block with Wavelet Downsampling + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[0]) + section_sizes = [ int(4*chans*self.first_split_ratio), int(4*chans*(1-self.first_split_ratio)) ] + print(section_sizes) + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans = int(4*chans*self.first_split_ratio) + filter_size *= 2 + + for bl in range(1,self.num_block-1): + # nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[bl], clamp=0.6) + section_sizes = [ 2*chans, 2*chans ] + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans *= 2 + filter_size *= 2 + + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + subnet = subnet_fc(filter_size) + nodes = add_block(nodes, self.num_flow, subnet, conditions[-1], clamp=0.6) + + # concat the split nodes + nodes.append(Ff.Node([s.out0 for s in split_nodes] + [nodes[-1].out0], + Fm.Concat1d, {'dim':0})) + nodes.append(Ff.OutputNode(nodes[-1])) + + return Ff.ReversibleGraphNet(nodes + split_nodes + conditions, verbose=False) + + def forward(self, input, cond): + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + def sample(self, num_samples, cond, temp=1.): + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cond = torch.cat([cond]*num_samples) + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False): + + return get_conditional_loss_freia(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting) + + def save(self, *args, **kwargs): + # torch.save(self.model.state_dict(), *args, **kwargs) + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict, strict=False) + + +class CondGlow2(nn.Module): + "Conditional flow architecture" + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_flow = 2, + num_block = 4, + num_cond_chans = 16, + filter_size = 32, + final_cond_dim = 512, + first_split_ratio = 0.25, + squeezer = 'Squeeze', + sparsity_weight = 0.1, + sparsifier = None, + cutoff_dim = 0, + cutoff_mul = 1, + permutation = 'random', + device = None): + """ + input_shape : shape of image output of the posterior network + cond_shape : shape of the input to the conditioning network + num_flow : number of flows in each invertible block + num_cond_chans : number of channels in the first conditioning layer + compression_ratio : ratio of latent space size and image size + num_noncond_blocks : num of blocks to go without conditioning + filter_size : filter size in affine coupling + """ + + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_flow = num_flow + self.num_block = num_block + self.num_cond_chans = num_cond_chans + self.filter_size = filter_size + self.final_cond_dim = final_cond_dim + self.first_split_ratio = first_split_ratio + self.squeezer = getattr(model_tools, squeezer)(cond_shape[0]) + self.sparsity_weight = sparsity_weight + self.sparsifier = sparsifier + self.cutoff_dim = cutoff_dim + self.cutoff_mul = cutoff_mul + self.permutation = permutation + + self.model = self.build_inn() + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet4(cond_shape=self.cond_shape, num_cond_chans=self.num_cond_chans, num_block=self.num_block, linear_layer_dim=self.final_cond_dim, squeezer=self.squeezer, squeeze_first=False) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = f"CondGlow-nf{num_flow}-nb{num_block}-nc{num_cond_chans}-fil{filter_size}-spl{first_split_ratio}" + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def build_inn(self): + + C = self.input_shape[0] + filter_size = self.filter_size + + def subnet_conv(ch_hidden, kernel): + pad = kernel // 2 + return lambda ch_in, ch_out: nn.Sequential( + nn.Conv2d(ch_in, ch_hidden, kernel, padding=pad), + nn.ReLU(), + nn.Conv2d(ch_hidden, ch_out, kernel, padding=pad)) + + def subnet_fc(ch_hidden): + return lambda ch_in, ch_out: nn.Sequential( + nn.Linear(ch_in, ch_hidden), + nn.ReLU(), + nn.Linear(ch_hidden, ch_out)) + + def add_block(nodes, num_flow, subnet, condition, clamp=1.0, permutation='invconv'): + for k in range(num_flow): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':clamp}, + conditions=condition)) + # nodes.append(Ff.Node(nodes[-1], model_tools.ActNormCoarse, {'inverse': True, 'scaling': 1.})) + # nodes.append(Ff.Node(nodes[-1], model_tools.ActNorm2, {'inverse': True, 'scaling': 1.})) + if permutation=='random': + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + elif permutation=='invconv': + nodes.append(Ff.Node(nodes[-1], model_tools.Inv1x1Conv, {})) + return nodes + + def split(nodes, split_nodes, section_sizes): + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + return nodes, split_nodes + + nodes = [Ff.InputNode(*self.input_shape)] + conditions = [] + ncc = self.num_cond_chans + chans = C + cs = self.cond_shape[1] + for i in range(self.num_block - 1): + conditions.append(Ff.ConditionNode(ncc, cs, cs)) + ncc *= 2; cs //= 2 + conditions.append(Ff.ConditionNode(self.final_cond_dim)) + + split_nodes = [] + + + nodes.append(Ff.Node(nodes[-1], model_tools.ActNormCoarse, {'inverse': True, 'scaling': 1./6})) + + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[0], permutation=self.permutation) + # nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + section_sizes = [ int(4*chans*self.first_split_ratio), int(4*chans*(1-self.first_split_ratio)) ] + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans = int(4*chans*self.first_split_ratio) + filter_size *= 2 + + for bl in range(1,self.num_block-1): + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[bl], clamp=0.6, permutation=self.permutation) + # nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + section_sizes = [ 2*chans, 2*chans ] + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans *= 2 + filter_size *= 2 + + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + subnet = subnet_fc(filter_size) + nodes = add_block(nodes, self.num_flow, subnet, conditions[-1], clamp=0.6, permutation='random') + + # concat the split nodes + nodes.append(Ff.Node([s.out0 for s in split_nodes] + [nodes[-1].out0], + Fm.Concat1d, {'dim':0})) + nodes.append(Ff.OutputNode(nodes[-1])) + + return Ff.ReversibleGraphNet(nodes + split_nodes + conditions, verbose=False) + + def change_sparsity_weight(self, new_weight): + self.model.module_list[0].threshold = new_weight + + # def initialize_actnorm(self, data_batch, degradation_op): + # with torch.no_grad(): + # data_batch_rev = degradation_op.rev(data_batch) + # x = self.sample(data_batch.shape[0], data_batch_rev) + # std = np.std(x) + # self.model.module_list[0].final_scale *= 1/std/6 + # self.model.module_list[0].final_scale.to(self.device) + + def initialize_actnorm(self, data_batch, degradation_op): + for m in self.model.module_list: + if isinstance(m, model_tools.ActNormCoarse): + m.init_on_next_batch = True + with torch.no_grad(): + data_batch_rev = degradation_op.rev(data_batch) + x = self.sample(data_batch.shape[0], data_batch_rev) + # After 1 pass through self.model, init_on_next_batch on all the actnorms automatically is set to False again. + + def forward(self, input, cond, rev=False): + + if not rev: + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + else: + x_posts, jac_rev = self.model(input, self.cond_net(cond), rev=True) + return x_posts, jac_rev + + def sample(self, num_samples, cond, temp=1., cutoff_dim=None, cutoff_mul=None): + if cutoff_dim == None: cutoff_dim = self.cutoff_dim + if cutoff_mul == None: cutoff_mul = self.cutoff_mul + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cutoff_dim = int(np.prod(self.input_shape) * cutoff_dim) + z[:, :cutoff_dim] *= cutoff_mul + if cond.shape[0] == 1: + cond = torch.cat([cond]*num_samples) + else: assert cond.shape[0] == num_samples, "batch size of condition must be equal to 1 or num_samples" + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False, cutoff_dim=None, cutoff_mul=None): + if cutoff_dim == None: cutoff_dim = self.cutoff_dim + if cutoff_mul == None: cutoff_mul = self.cutoff_mul + return get_conditional_loss_freia(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting, cutoff_dim=cutoff_dim, cutoff_mul=cutoff_mul) + + def save(self, *args, **kwargs): + # torch.save(self.model.state_dict(), *args, **kwargs) + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict, strict=False) + + +class CondGlow3(nn.Module): + "Conditional flow architecture" + def __init__(self, + input_shape = [3,64,64], + cond_shape = [3,64,64], + num_flow = 2, + num_block = 4, + num_cond_chans = 16, + filter_size = 32, + final_cond_dim = 512, + first_split_ratio = 0.25, + squeezer = 'Squeeze', + sparsity_weight = 0.1, + sparsifier = None, + cutoff_dim = 0, + cutoff_mul = 1, + device = None): + """ + input_shape : shape of image output of the posterior network + cond_shape : shape of the input to the conditioning network + num_flow : number of flows in each invertible block + num_cond_chans : number of channels in the first conditioning layer + compression_ratio : ratio of latent space size and image size + num_noncond_blocks : num of blocks to go without conditioning + filter_size : filter size in affine coupling + """ + + + super().__init__() + + self.device = device if device != None else DEVICE + self.input_shape = input_shape + self.cond_shape = cond_shape + self.num_flow = num_flow + self.num_block = num_block + self.num_cond_chans = num_cond_chans + self.filter_size = filter_size + self.final_cond_dim = final_cond_dim + self.first_split_ratio = first_split_ratio + self.squeezer = getattr(model_tools, squeezer)(cond_shape[0]) + self.sparsity_weight = sparsity_weight + self.sparsifier = sparsifier + self.cutoff_dim = cutoff_dim + self.cutoff_mul = cutoff_mul + + self.model = self.build_inn() + self.trainable_parameters = [p for p in self.model.parameters() if p.requires_grad] + for p in self.trainable_parameters: p.data = 0.02 * torch.randn_like(p) + self.cond_net = CondNet4(cond_shape=self.cond_shape, num_cond_chans=self.num_cond_chans, num_block=self.num_block, linear_layer_dim=self.final_cond_dim, squeezer=self.squeezer) + self.trainable_parameters += list(self.cond_net.parameters()) + self.identifier = f"CondGlow-nf{num_flow}-nb{num_block}-nc{num_cond_chans}-fil{filter_size}-spl{first_split_ratio}" + + # define the latent variable distribution + self.latent_dist = dists.normal.Normal(loc=torch.tensor(0, dtype=torch.float32).to(self.device), scale=torch.tensor(1, dtype=torch.float32).to(self.device)) + + def build_inn(self): + + C = self.input_shape[0] + filter_size = self.filter_size + + def subnet_conv(ch_hidden, kernel): + pad = kernel // 2 + return lambda ch_in, ch_out: nn.Sequential( + nn.Conv2d(ch_in, ch_hidden, kernel, padding=pad), + nn.ReLU(), + nn.Conv2d(ch_hidden, ch_out, kernel, padding=pad)) + + def subnet_fc(ch_hidden): + return lambda ch_in, ch_out: nn.Sequential( + nn.Linear(ch_in, ch_hidden), + nn.ReLU(), + nn.Linear(ch_hidden, ch_out)) + + def add_block(nodes, num_flow, subnet, condition, clamp=1.0, permutation='invconv'): + for k in range(num_flow): + nodes.append(Ff.Node(nodes[-1], Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet, 'clamp':clamp}, + conditions=condition)) + # nodes.append(Ff.Node(nodes[-1], model_tools.ActNormCoarse, {'inverse': True, 'scaling': 1.})) + # nodes.append(Ff.Node(nodes[-1], model_tools.ActNorm2, {'inverse': True, 'scaling': 1.})) + if permutation=='random': + nodes.append(Ff.Node(nodes[-1], Fm.PermuteRandom, {'seed':k})) + elif permutation=='invconv': + nodes.append(Ff.Node(nodes[-1], model_tools.Inv1x1Conv, {})) + return nodes + + def split(nodes, split_nodes, section_sizes): + nodes.append(Ff.Node(nodes[-1], Fm.Split, + {'section_sizes':section_sizes, 'dim':0})) + split_nodes.append(Ff.Node(nodes[-1].out1, Fm.Flatten, {})) + return nodes, split_nodes + + nodes = [Ff.InputNode(*self.input_shape)] + conditions = [] + ncc = self.num_cond_chans + chans = C + cs = self.cond_shape[1] // 2 + for i in range(self.num_block - 1): + conditions.append(Ff.ConditionNode(ncc, cs, cs)) + ncc *= 2; cs //= 2 + conditions.append(Ff.ConditionNode(self.final_cond_dim)) + + split_nodes = [] + + # Sparsifier + # if self.sparsifier != None: + # nodes.append(Ff.Node(nodes[-1], model_tools.SparsifierHardThreshold, + # { + # 'sparsifier' : self.sparsifier, + # 'threshold' : self.sparsity_weight, + # 'epsilon' : 1.e-03, + # })) + nodes.append(Ff.Node(nodes[-1], model_tools.ActNormCoarse, {'inverse': True, 'scaling': 1./6})) + + if self.input_shape[0] == 3: + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + else: + nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[0], permutation='random') + section_sizes = [ int(4*chans*self.first_split_ratio), int(4*chans*(1-self.first_split_ratio)) ] + + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans = int(4*chans*self.first_split_ratio) + filter_size *= 2 + + for bl in range(1,self.num_block-1): + # nodes.append(Ff.Node(nodes[-1], Fm.IRevNetDownsampling, {})) + nodes.append(Ff.Node(nodes[-1], Fm.HaarDownsampling, {'order_by_wavelet': True, 'rebalance':0.5})) + subnet = subnet_conv(filter_size, 3) + nodes = add_block(nodes, self.num_flow, subnet, conditions[bl], clamp=0.6, permutation='random') + section_sizes = [ 2*chans, 2*chans ] + nodes, split_nodes = split(nodes, split_nodes, section_sizes=section_sizes) + chans *= 2 + filter_size *= 2 + + # fully connected part + nodes.append(Ff.Node(nodes[-1], Fm.Flatten, {}, name='flatten')) + subnet = subnet_fc(filter_size) + nodes = add_block(nodes, self.num_flow, subnet, conditions[-1], clamp=0.6, permutation='random') + + # concat the split nodes + nodes.append(Ff.Node([s.out0 for s in split_nodes] + [nodes[-1].out0], + Fm.Concat1d, {'dim':0})) + nodes.append(Ff.OutputNode(nodes[-1])) + + return Ff.ReversibleGraphNet(nodes + split_nodes + conditions, verbose=False) + + def change_sparsity_weight(self, new_weight): + self.model.module_list[0].threshold = new_weight + + # def initialize_actnorm(self, data_batch, degradation_op): + # with torch.no_grad(): + # data_batch_rev = degradation_op.rev(data_batch) + # x = self.sample(data_batch.shape[0], data_batch_rev) + # std = np.std(x) + # self.model.module_list[0].final_scale *= 1/std/6 + # self.model.module_list[0].final_scale.to(self.device) + + def initialize_actnorm(self, data_batch, degradation_op): + for m in self.model.module_list: + if isinstance(m, model_tools.ActNormCoarse): + m.init_on_next_batch = True + with torch.no_grad(): + data_batch_rev = degradation_op.rev(data_batch) + x = self.sample(data_batch.shape[0], data_batch_rev) + # After 1 pass through self.model, init_on_next_batch on all the actnorms automatically is set to False again. + + def forward(self, input, cond, rev=False): + + if not rev: + z, jac = self.model([input], self.cond_net(cond), jac=True) + return z, jac + + else: + x_posts, jac_rev = self.model(input, self.cond_net(cond), rev=True) + return x_posts, jac_rev + + def sample(self, num_samples, cond, temp=1., cutoff_dim=None, cutoff_mul=None): + if cutoff_dim == None: cutoff_dim = self.cutoff_dim + if cutoff_mul == None: cutoff_mul = self.cutoff_mul + # z = torch.randn(num_samples, np.prod(self.input_shape)).to(self.device) * temp + z = self.latent_dist.sample([num_samples, np.prod(self.input_shape)]) * temp + cutoff_dim = int(np.prod(self.input_shape) * cutoff_dim) + z[:, :cutoff_dim] *= cutoff_mul + if cond.shape[0] == 1: + cond = torch.cat([cond]*num_samples) + else: assert cond.shape[0] == num_samples, "batch size of condition must be equal to 1 or num_samples" + x,_ = self.model(z, self.cond_net(cond), rev=True) + x = x.cpu().detach().numpy() + return x + + def get_loss(self, data_batch, degradation_op, num_z=1, reg_parameter=1, num_bits=0, tiled=False, importance_weighting=False, cutoff_dim=None, cutoff_mul=None): + if cutoff_dim == None: cutoff_dim = self.cutoff_dim + if cutoff_mul == None: cutoff_mul = self.cutoff_mul + return get_conditional_loss_freia(self, data_batch, degradation_op, num_z=num_z, reg_parameter=reg_parameter, num_bits=num_bits, tiled=tiled, importance_weighting=importance_weighting, cutoff_dim=cutoff_dim, cutoff_mul=cutoff_mul) + + def save(self, *args, **kwargs): + # torch.save(self.model.state_dict(), *args, **kwargs) + torch.save(self.state_dict(), *args, **kwargs) + + def load(self, path_to_pkl): + state_dict = torch.load(path_to_pkl) + self.load_state_dict(state_dict, strict=False) + + +class Unet(nn.Module): + """ + PyTorch implementation of a U-Net model. + + O. Ronneberger, P. Fischer, and Thomas Brox. U-net: Convolutional networks + for biomedical image segmentation. In International Conference on Medical + image computing and computer-assisted intervention, pages 234–241. + Springer, 2015. + """ + + def __init__( + self, + input_shape: list, + in_chans: int, + out_chans: int, + chans: int = 32, + num_pool_layers: int = 4, + drop_prob: float = 0.0, + *args, + **kwargs, + ): + """ + Args: + in_chans: Number of channels in the input to the U-Net model. + out_chans: Number of channels in the output to the U-Net model. + chans: Number of output channels of the first convolution layer. + num_pool_layers: Number of down-sampling and up-sampling layers. + drop_prob: Dropout probability. + """ + super().__init__() + + self.in_chans = in_chans + self.out_chans = out_chans + self.chans = chans + self.num_pool_layers = num_pool_layers + self.drop_prob = drop_prob + + self.down_sample_layers = nn.ModuleList([ConvBlock(in_chans, chans, drop_prob)]) + ch = chans + for _ in range(num_pool_layers - 1): + self.down_sample_layers.append(ConvBlock(ch, ch * 2, drop_prob)) + ch *= 2 + self.conv = ConvBlock(ch, ch * 2, drop_prob) + + self.up_conv = nn.ModuleList() + self.up_transpose_conv = nn.ModuleList() + for _ in range(num_pool_layers - 1): + self.up_transpose_conv.append(TransposeConvBlock(ch * 2, ch)) + self.up_conv.append(ConvBlock(ch * 2, ch, drop_prob)) + ch //= 2 + + self.up_transpose_conv.append(TransposeConvBlock(ch * 2, ch)) + self.up_conv.append( + nn.Sequential( + ConvBlock(ch * 2, ch, drop_prob), + nn.Conv2d(ch, self.out_chans, kernel_size=1, stride=1), + ) + ) + + self.trainable_parameters = self.parameters() + + def forward(self, image: torch.Tensor) -> torch.Tensor: + """ + Args: + image: Input 4D tensor of shape `(N, in_chans, H, W)`. + + Returns: + Output tensor of shape `(N, out_chans, H, W)`. + """ + stack = [] + output = image + + # apply down-sampling layers + for layer in self.down_sample_layers: + output = layer(output) + stack.append(output) + output = F.avg_pool2d(output, kernel_size=2, stride=2, padding=0) + + output = self.conv(output) + + # apply up-sampling layers + for transpose_conv, conv in zip(self.up_transpose_conv, self.up_conv): + downsample_layer = stack.pop() + output = transpose_conv(output) + + # reflect pad on the right/botton if needed to handle odd input dimensions + padding = [0, 0, 0, 0] + if output.shape[-1] != downsample_layer.shape[-1]: + padding[1] = 1 # padding right + if output.shape[-2] != downsample_layer.shape[-2]: + padding[3] = 1 # padding bottom + if torch.sum(torch.tensor(padding)) != 0: + output = F.pad(output, padding, "reflect") + + output = torch.cat([output, downsample_layer], dim=1) + output = conv(output) + + return output + + +if __name__ == '__main__': + + import degradations + import scipy.misc as misc + from skimage.transform import resize + + input_shape = [3,64,64] + degradation = degradations.GaussianBlurNoise(input_shape=input_shape, kernel_sigma=1.5) + # degradation = degradations.FourierSamplerGaussianNoise(input_shape=input_shape, random=False, mask_file='../masks_mri/cartesian_4fold_64.npy') + + # sparsifier = sparsifiers.SparsifyingTransform(input_shape) + sparsifier = sparsifiers.WaveletTransform([1,64,64], level=2) + + # post_model_args = {'num_flow': 2, 'num_block': 4, 'num_cond_chans': 16, 'compression_ratio': 1, 'num_noncond_blocks': 1, 'gamma': 1e-08, 'filter_size': 64} + # post_model_args = {'num_flow': 2, 'num_block': 4, 'num_cond_chans': 16, 'filter_size': 32, 'final_cond_dim': 512, 'first_split_ratio': 0.25, 'squeezer': 'IRevNetSqueeze'} + post_model_args = {'num_flow': 4, 'num_block': 4, 'num_cond_chans': 32, 'filter_size': 32, 'final_cond_dim': 512, 'first_split_ratio': 0.25, 'squeezer': 'HaarSqueeze'} + # post_model_args = {'num_flow': 4, 'num_block': 4, 'num_cond_chans': 32, 'filter_size': 32, 'final_cond_dim': 512, 'first_split_ratio': 0.25, 'squeezer': 'HaarSqueeze'} + post_model = CondGlow2(input_shape, cond_shape=degradation.output_shape, **post_model_args) + post_model = post_model.to(post_model.device) + + xgt = np.load('xgt.npy') + xgt = resize(xgt, (64,64)) + xgt = torch.Tensor(xgt.reshape(1,1,64,64)) + xgt = torch.cat([xgt]*4, axis=0) + xgt = torch.cat([xgt]*3, axis=1) + cond = degradation(xgt).to('cuda') + x = post_model.sample(4, degradation.rev(cond[0:1])) + print(x.shape) + loss, x_posts = post_model.get_loss(cond, num_z=2, tiled=True, degradation_op=degradation) + + # squeeze = HaarSqueeze(1) + # coeffs = squeeze(x_posts[1,0:1].detach().cpu()).numpy() + # coeffs = np.squeeze(coeffs) + # import matplotlib + # matplotlib.use('Agg') + # import matplotlib.pyplot as plt + # temp = '/home/vak2/Documents/temp.png' + # plt.hist(coeffs[3].flatten(), bins=np.linspace(-7,7,100)); + # plt.hist(coeffs[2].flatten(), bins=np.linspace(-7,7,100)); + # plt.hist(coeffs[1].flatten(), bins=np.linspace(-7,7,100)); + # plt.hist(coeffs[0].flatten(), bins=np.linspace(-7,7,100)); + # plt.savefig(temp);plt.close() diff --git a/src/sparsifiers.py b/src/sparsifiers.py new file mode 100644 index 0000000..a23f9f4 --- /dev/null +++ b/src/sparsifiers.py @@ -0,0 +1,258 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.nn as nn +import numpy as np +import pywt +import ptwt +import wavelet_utils as wtutils + +class SparsifyingTransform(object): + + def __init__(self, input_shape, *args, **kwargs): + self.input_shape = input_shape + self.fixed_subspace = np.zeros((np.prod(self.input_shape)), dtype=bool) + + def __call__(self, input): + return input.reshape(input.shape[0], -1) + + def inv(self, output): + return output.reshape(output.shape[0], *self.input_shape) + + def split_leading_coeffs(self, input, k): + + assert k >= np.sum(self.fixed_subspace), "Number of significant coeffs k is smaller than the mandatory subspace dimension" + + if isinstance(input, np.ndarray): + print("Operating on NumPy array") + module = np + else: module = torch + + # get locations of leading k coeffs in each sample + coeffs = self(input) # N x n + if module == torch: + coeffs_mod = coeffs.detach().clone() + else: + coeffs_mod = coeffs.copy() + coeffs_mod[:,self.fixed_subspace] = 0 + sorting_coeff_idxs = module.argsort(module.abs(coeffs_mod)) + sorting_coeff_idxs = module.flip(sorting_coeff_idxs, [-1]) + leading_coeff_locs = module.argsort(sorting_coeff_idxs) < (k - np.sum(self.fixed_subspace)) + leading_coeff_locs[:,self.fixed_subspace] = True + if module == torch: + leading_coeff_locs = leading_coeff_locs.detach() + + leading_coeffs = coeffs * leading_coeff_locs + trailing_coeffs = coeffs * (~leading_coeff_locs) + + return leading_coeffs, trailing_coeffs + + def split_leading_components(self, input, k): + leading_coeffs, trailing_coeffs = self.split_leading_coeffs(input, k) + return self.inv(leading_coeffs), self.inv(trailing_coeffs) + + +class WaveletTransform(SparsifyingTransform): + + def __init__(self, input_shape, wavelet='haar', level=2, fixed_subspace_ratio=1/16, mode='zero', **kwargs): + + super().__init__(input_shape) + self.wavelet = pywt.Wavelet(wavelet) + self.level = level + self.mode = mode + self.fixed_subspace = np.zeros((np.prod(self.input_shape)), dtype=bool) + self.fixed_subspace[:int( len(self.fixed_subspace) * fixed_subspace_ratio )] = True + + def __call__(self, input): + if isinstance(input, np.ndarray): + coeffs = pywt.wavedec2(input, self.wavelet, level=self.level, mode=self.mode) + elif isinstance(input, torch.Tensor): + coeffs = ptwt.wavedec2(input, self.wavelet, level=self.level, mode=self.mode) + + c, shapes = wtutils.coeffs_to_array(coeffs) + self.shapes = shapes + return c + + def inv(self, output, shapes=None): + if shapes == None: shapes = self.shapes + coeffs = wtutils.array_to_coeffs(output, shapes) + + if isinstance(output, np.ndarray): + img = pywt.waverec2(coeffs, self.wavelet) + elif isinstance(output, torch.Tensor): + img = ptwt.waverec2(coeffs, self.wavelet) + return img + +class GradientTransform(SparsifyingTransform): + def __init__(self, input_shape): + super().__init__(input_shape) + C,H,W = input_shape + self.fixed_subspace = np.zeros((2*C,H,W), dtype=bool) + self.fixed_subspace[:C,0,:] = True + self.fixed_subspace[C:,:,0] = True + self.fixed_subspace = self.fixed_subspace.flatten() + + def __call__(self, input): + if isinstance(input, np.ndarray): module = np + elif isinstance(input, torch.Tensor): module = torch + input_x = module.roll(input, 1, 2) + input_x[:,:,0] = 0 + input_y = module.roll(input, 1, 3) + input_y[:,:,:,0] = 0 + input_dx = input - input_x + input_dy = input - input_y + + if isinstance(input, np.ndarray): + coeffs = np.concatenate([input_dx, input_dy], 1) + else: + coeffs = torch.cat([input_dx, input_dy], dim=1) + # return coeffs.reshape(coeffs.shape[0], -1) + return coeffs + + def inv(self, output): + if isinstance(output, np.ndarray): module = np + elif isinstance(output, torch.Tensor): module = torch + C,H,W = self.input_shape + # o = output.reshape(-1,2*C,H,W) + o = output + return 0.5 * ( module.cumsum(o[:,:C], 2) + module.cumsum(o[:,C:], 3) ) + + +class SparsifyingRegularizer(nn.Module): + """ This is a module which takes as input an image and a sparsifying transform, and outputs a regularizer + """ + def __init__(self, input_shape, sparsifying_transform, num_leading_coeffs, + penalty_norm = 1, + weight_norm = 1, + ): + """ + input_shape : Shape of the input image + sparsifying_transform : Sparsifying transform used. + num_leading_coeffs : Number of leading coeffs, should be a divisor of prod(input_shape) + conv_type_switch_thresh : Threshold for the number of channels for switching from regular convolution to group convolution + penalty_norm + weight_norm + """ + super().__init__() + + self.input_shape = input_shape + self.sparsifying_transform = sparsifying_transform + self.num_leading_coeffs = num_leading_coeffs + self.penalty_norm = penalty_norm + self.weight_norm = weight_norm + + final_num_channels = np.prod(input_shape) + C,H,W = input_shape + ch_in = C + layers = [] + while ch_in*16 <= C*H*W: + groups = int(ch_in > C*16)*ch_in + int(ch_in <= C*16) + layers.append( + nn.Conv2d(ch_in, ch_in*16, 3, stride=2, padding=1, groups=groups), + ) + layers.append(nn.AvgPool2d(2)) + layers.append(nn.ReLU()) + ch_in *= 16 + + groups = int(ch_in > C*16)*ch_in + int(ch_in <= C*16) + if ch_in < C*H*W: + layers.append( + nn.Conv2d(ch_in, ch_in*4, 3, stride=2, padding=1, groups=groups), + ) + else: layers = layers[:-1] + + self.weighting_net = nn.Sequential(*layers) + self.trainable_parameters = list(self.weighting_net.parameters()) + + def forward(self, input): + _, trailing_coeffs = self.sparsifying_transform.split_leading_coeffs( + input, self.num_leading_coeffs + ) + coeff_weights = self.weighting_net(input) + assert(coeff_weights.shape[1] == np.prod(self.input_shape)), "Improper number of channels for the coeff weights" + assert(coeff_weights.shape[2] == coeff_weights.shape[3] == 1), "Improper dimensions of coeff weights" + coeff_weights = coeff_weights.squeeze(3).squeeze(2) + weight_norm = torch.norm(coeff_weights, p=self.weight_norm, dim=1, keepdim=True) + coeff_weights = coeff_weights / weight_norm * (coeff_weights.shape[1])**(1/self.weight_norm) + penalty = torch.norm( + # trailing_coeffs / coeff_weights, + trailing_coeffs, + p = self.penalty_norm, + dim = 1 + ) + return penalty / (trailing_coeffs.shape[1])**(1/self.penalty_norm) + + +def sparsifying_regularizer2(x, sp_trans : SparsifyingTransform, threshold_weight=0.1): + + # coeffs = coeffs + 0.5 + # t = int(threshold_weight*np.prod(x.shape[1:])) + # _, coeffs = sp_trans.split_leading_coeffs(x, t) + C = x.shape[1] + n_pixel = np.prod(x.shape[1:]) + coeffs = sp_trans(x) + coeff_abs = torch.abs(coeffs) # N*num_z x C*H*W + # coeff_avg = threshold_weight * torch.mean(coeff_abs, dim=1, keepdim=True) + zero_cond = (coeff_abs < threshold_weight) + # zero_cond = torch.prod(zero_cond, dim=1, keepdim=True) + zero_cond = zero_cond[:,0:C] * zero_cond[:,C:2*C] + zero_cond = torch.cat([zero_cond]*2, dim=1) + + penalty = torch.norm(coeffs * zero_cond, p=1) + # penalty = torch.norm(coeffs, p=1) + return penalty / np.log(2) / n_pixel + +def sparsifying_regularizer3(x, sp_trans : SparsifyingTransform, threshold_weight=0.1): + + # coeffs = coeffs + 0.5 + # t = int(threshold_weight*np.prod(x.shape[1:])) + # _, coeffs = sp_trans.split_leading_coeffs(x, t) + C = x.shape[1] + n_pixel = np.prod(x.shape[1:]) + coeffs = sp_trans(x) + coeff_abs = torch.abs(coeffs) # N*num_z x C*H*W + coeff_sorted,_ = coeff_abs.flatten().sort() + threshw = coeff_sorted[-int(len(coeff_sorted)*threshold_weight)-1] + zero_cond = (coeff_abs < threshw) + # zero_cond = torch.prod(zero_cond, dim=1, keepdim=True) + zero_cond = zero_cond[:,0:C] * zero_cond[:,C:2*C] + zero_cond = torch.cat([zero_cond]*2, dim=1) + + penalty = torch.norm(coeffs * zero_cond, p=1) + # penalty = torch.norm(coeffs, p=1) + return penalty / np.log(2) / n_pixel + + +if __name__ == '__main__': + + import imageio as io + from skimage.transform import resize + + # img = np.load('xgt_s.npy') + # img = np.swapaxes(img,0,2) + # img = np.stack([img, img], axis=0) + # img = img[:,0:1] + # img = resize(img, [2,1,128,128]) + + # input_shape = [1,128,128] + + # # T = SparsifyingTransform([3,64,64]) + # T = WaveletTransform(input_shape, wavelet='haar') + # nlc = np.prod(input_shape) // 4 + # sparse_reg = SparsifyingRegularizer(input_shape, T, nlc) + + # imgt = torch.tensor(img, requires_grad=True, dtype=torch.float32) + # penalty = sparse_reg(imgt) + + # img = np.load('xgt_ell.npy') + input_shape = [1,128,128] + # img = img.reshape(1,1,32,32) + T = GradientTransform(input_shape) + # T = WaveletTransform(input_shape) + # coeffs = T(img) \ No newline at end of file diff --git a/src/train_ambient.py b/src/train_ambient.py new file mode 100644 index 0000000..fd76cc5 --- /dev/null +++ b/src/train_ambient.py @@ -0,0 +1,560 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +import models2 +import degradations +import utils +import ast +import argparse +import sys +import os +import time +import datetime +# import torch.multiprocessing as mp +import torch.distributed as dist +import torch.nn as nn +# import wandb +import socket +import sparsifiers +# from torch.profiler import profile, record_function, ProfilerActivity + +class AttrDataParallel(nn.parallel.DistributedDataParallel): + def __getattr__(self, name): + try: + return super().__getattr__(name) + except AttributeError: + return getattr(self.module, name) + +# def __setatptr__(self, name, value): +# try: +# return super().__setattr__(name, value) +# except AttributeError: +# return setattr(self.module, name, value) + +parser = argparse.ArgumentParser() +# Multiprocessing arguments +parser.add_argument('--rank', default=0, type=int, help='Current rank') +parser.add_argument('-n', '--num_nodes', default=1, type=int, metavar='N') +parser.add_argument('-g', '--num_gpus', default=1, type=int, help='number of gpus per node') +parser.add_argument('-nr', '--nr', default=0, type=int, help='ranking within the nodes') +parser.add_argument('--port', type=str, default='12355') + +# training arguments +parser.add_argument("--num_kimgs", type=float, default=10000) +parser.add_argument("--num_kimgs_post", type=float, default=10000) +parser.add_argument("--num_kimgs_main", type=float, default=10000) +parser.add_argument("--batch_size", type=int, default=8) +parser.add_argument("--lr_post", type=float, default=1e-06) +# parser.add_argument("--lr_main", type=float, default=1e-06) +parser.add_argument("--lr", type=float, default=1e-06) +# parser.add_argument("--lr_pre", type=float, default=1e-05) +parser.add_argument("--reg_parameter", type=float, default=1e-03) +parser.add_argument("--num_z", type=int, default=10) +parser.add_argument("--results_dir", type=str, default='') +parser.add_argument("--resume_from", type=str, default='') +parser.add_argument("--tiled_for_loss", type=lambda b:bool(int(b)), default=0, help="Whether to tile the data batch while computing loss or loop over various zs") +parser.add_argument("--importance_weighting", type=int, default=0, help="Whether or not to do importance weighting for the gradient update") +parser.add_argument("--schedule_sparsity_weight", type=lambda b:bool(int(b)), help="0 or 1") +parser.add_argument("--benchmark_cudnn", type=lambda b:bool(int(b)), help="0 or 1", default=0) + +# model arguments +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--main_model_type", type=str, default='ConvINN') +parser.add_argument("--main_model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) +parser.add_argument("--main_actnorm", type=lambda b:bool(int(b)), help="0 or 1") +parser.add_argument("--post_model_type", type=str, default='ConvINN') +parser.add_argument("--post_model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) +parser.add_argument("--post_actnorm", type=lambda b:bool(int(b)), help="0 or 1") + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) +parser.add_argument("--num_bits", type=int, default=0) + +# sparsity regularization related args +parser.add_argument("--cutoff_dim", type=float, default=0) +parser.add_argument("--sparsifier_type", type=str, default='WaveletTransform') +parser.add_argument("--sparsifier_args", type=ast.literal_eval, default={'level': 2, 'wavelet': 'haar'}) +parser.add_argument("--sparsity_weight", type=float, default=0.0, help="") +parser.add_argument("--threshold_weight", type=float, default=0.0, help="") + +def train(gpu, args): + + # args.lr_post = args.lr_main = args.lr + args.lr_main = args.lr + # args.lr_post = args.lr * 100 + + rank = args.nr * args.num_gpus + gpu + dist.init_process_group( + backend='nccl', + init_method='env://', + world_size=args.world_size, + rank=rank + ) + # print("Im here") + # Configure wandb + if rank == 0: + server_name = socket.gethostname().split('.')[0] + # wandb.init(mode="disabled", settings=wandb.Settings(start_method="fork"), + # project=f'{server_name}-{args.num_gpus}gpu-{args.data_type}-deg{args.degradation_type}-{args.main_model_type}-{args.post_model_type}-reg{args.reg_parameter}-bit{args.num_bits}-lr{args.lr}-nz{args.num_z}-impw{args.importance_weighting}', entity='kvarun95') + # wandb.config = { + # "num_gpus" : args.num_gpus, + # "main_lr" : args.lr_main, + # "post_lr" : args.lr_post, + # "kimgs" : int(args.num_kimgs), + # "reg" : args.reg_parameter, + # "bits" : args.num_bits, + # "num_z" : args.num_z, + # "batch_size" : args.eff_batch_size, + # "deg" : args.degradation_type, + # "deg_args" : args.degradation_args, + # "input_shape" : args.input_shape, + # } + # print("Im here 2") + + device = f'cuda:{gpu}' if torch.cuda.is_available() else 'cpu' + torch.manual_seed(0) + # print("Im here 3") + + def print0(*args, **kwargs): + if rank == 0: print(*args, **kwargs) + + args.num_iters = int( args.num_kimgs * 1000 / args.eff_batch_size ) + args.num_iters_post = int( args.num_kimgs_post * 1000 / args.eff_batch_size ) if args.num_kimgs_post else 1 + args.num_iters_main = int( args.num_kimgs_main * 1000 / args.eff_batch_size ) if args.num_kimgs_main else 1 + + # forward model (degradation) + args.data_args['input_shape'] = args.input_shape + degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits, device=device) + # print("Im here 4") + + # sparsifier + sp_trans = getattr(sparsifiers, args.sparsifier_type)(args.input_shape, **args.sparsifier_args) + args.post_model_args['sparsifier'] = sp_trans + args.post_model_args['sparsity_weight'] = args.sparsity_weight + + # main and posterior models + main_model = getattr(models2, args.main_model_type)(args.input_shape, **args.main_model_args, device=device) + # print("Im here 5") + post_model = getattr(models2, args.post_model_type)(args.input_shape, cond_shape=degradation.output_shape, **args.post_model_args, device=device) + # print("Im here 6") + + # Resume training from previous iteration + if args.resume_from != '': + print0(f"Resuming training from {args.resume_from} ...") + main_model.load(args.resume_from) + post_resume_from = os.path.split(args.resume_from) + post_resume_from = os.path.join(post_resume_from[0], 'post-'+post_resume_from[1][5:]) + post_model.load(post_resume_from) + main_model.to(device) + post_model.to(device) + # print("Im here 7") + + # optimizer + main_optimizer = torch.optim.Adam(main_model.trainable_parameters, lr=args.lr_main) + post_optimizer = torch.optim.Adam(list(post_model.trainable_parameters), lr=args.lr_post) + # tot_optimizer = torch.optim.Adam(main_model.trainable_parameters + post_model.trainable_parameters, lr=args.lr) + # print("Im here 9") + + # wrap models with DDP + main_model = AttrDataParallel(main_model, device_ids=[gpu]) + post_model = AttrDataParallel(post_model, device_ids=[gpu]) + # print("Im hre 10") + + # data loaders using the distributed sampler + train_dataset = getattr(dataset_tool, args.data_type)(train=True, ambient=True, degradation=degradation, **args.data_args) + test_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) + test_dataset_clean = getattr(dataset_tool, args.data_type)(train=False, **args.data_args) + # print("Im here 11") + + train_sampler = torch.utils.data.distributed.DistributedSampler(train_dataset, num_replicas=args.world_size, rank=rank) + # print("im here 12") + train_dataloader = torch.utils.data.DataLoader(train_dataset, + batch_size = args.batch_size, + shuffle = False, + num_workers = 4*args.world_size, + pin_memory = True, + sampler = train_sampler) + # test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=args.batch_size, shuffle=True, num_workers=args.num_workers) + # print("Im here 13") + + if rank == 0: + save_folder = utils.setup_saver(args.results_dir, f'{server_name}-{args.num_gpus}gpu-deg{args.degradation_type}-{args.main_model_type}-{args.post_model_type}-reg{args.reg_parameter}-spparam{args.sparsity_weight}-thw{args.threshold_weight}-bit{args.num_bits}-lr{args.lr}-nz{args.num_z}-impw{args.importance_weighting}') + # print("Im here 14") + print0(args.__dict__, file=open(f'{save_folder}/config.txt', 'w')) + sys.stdout = utils.Logger(save_folder+'/log.txt') + print0(args) + print(save_folder) + + noisies = [degradation.rev(train_dataset[i][0].to(device), mode='real').cpu().detach().numpy() for i in range(16)] + _ = utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/reals.png', imrange=[-0.5,0.5]) + _ = utils.save_images(noisies, f'{save_folder}/noisies.png', imrange=[-0.5-degradation.std*np.sqrt(2/np.pi), 0.5]) + + # define importance weighting functions + # def imp_weighting1(loss): + # loss -= np.log(args.num_z) + # loss = torch.logsumexp(loss, 0) + # loss = torch.mean(loss) + # loss_weight = 1 + # return loss, loss_weight + + def imp_weighting1(loss): + importance_weights = torch.softmax(loss, dim=0).detach() + loss = loss * importance_weights + loss = torch.mean(torch.sum(loss, dim=0)) + loss_weight = 1 + return loss, loss_weight + + def imp_weighting2(loss): + loss -= np.log(args.num_z*args.batch_size) + loss = torch.logsumexp(loss, [0,1]) + total_loss = torch.zeros_like(loss) + dist.barrier() + + # losses_to_scatter = [loss.clone().detach() for _ in range(args.world_size)] + # gathered_losses = list(torch.empty([4], dtype=loss.dtype).to(device).chunk(4)) + # dist.all_to_all(gathered_losses, losses_to_scatter) + # dist.barrier() + # total_l = torch.logsumexp(torch.Tensor(gathered_losses), 0).detach() + # log_weight = loss.detach() - total_loss.detach() + # loss_weight = torch.exp(log_weight) + # return loss, loss_weight + + if rank == 0: + gathered_losses = [torch.zeros_like(loss) for _ in range(args.world_size)] + dist.gather(loss, gathered_losses, dst=0) + total_l = torch.logsumexp(torch.Tensor(gathered_losses), 0).detach() + dist.barrier() + # scattered_losses = [total_l.clone() for _ in range(args.world_size)] + # dist.scatter(total_loss, scattered_losses, src=0) + # dist.broadcast(total_l, src=0) + dist.reduce_scatter(total_loss, [total_l]) + dist.barrier() + else: + dist.gather(loss, dst=0) + dist.barrier() + # dist.broadcast(total_l, src=0) + dist.barrier() + + log_weight = loss.detach() - total_loss.detach() + loss_weight = torch.exp(log_weight) + return loss, loss_weight + + # Use in the case of single GPU + def imp_weighting2_single(loss): + importance_weights = torch.softmax(loss.flatten(), dim=0).detach().reshape(loss.shape) + loss *= importance_weights + loss = torch.mean(loss) + loss_weight = 1 + return loss, loss_weight + + # Switch on CUDNN benchmarking + if args.benchmark_cudnn: + torch.backends.cudnn.benchmark = True + + ################################################################ + print0("Pretraining posterior model") + if rank == 0: + os.makedirs(f'{save_folder}/posterior-pretraining', exist_ok=True) + y_tests = [test_dataset[i][0] for i in range(4)] + y_tests = [yt.reshape(1,*yt.shape).to(device, non_blocking=True) for yt in y_tests] + y_tests = [degradation.rev(yt) for yt in y_tests] + start_time = time.time() + # print("im here 15") + + print_freq = int(np.ceil(2500 / args.eff_batch_size)) + save_freq = int(np.ceil(50000 / args.eff_batch_size)) + idx = 0 + dloader = iter(train_dataloader) + while args.num_iters_post and (args.resume_from == ''): + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + # print("Im here 16") + + x = degradation.rev(y.to(device), use_device=True).detach() + # print("Im here 17") + if idx == 0 and args.post_actnorm: + # x_in = degradation.rev(y.to(device), mode='real', use_device=True).detach() + # post_model.initialize_actnorm(x_in, x) + post_model.initialize_actnorm(y.to(device), degradation) + idx += 1 + continue + + # y = torch.cat([y]*3, dim=1) + y = y.to(device, non_blocking=True) + post_optimizer.zero_grad() + # print("Im here 17") + loss,_ = post_model.get_loss(y, degradation, num_z=args.num_z, reg_parameter=1., num_bits=args.num_bits, tiled=args.tiled_for_loss, cutoff_dim=args.cutoff_dim) + # print("Im here 18") + + # importance weighting + # if args.importance_weighting == 1: + # loss, loss_weight = imp_weighting1(loss) + # elif args.importance_weighting == 2: + # loss, loss_weight = imp_weighting2(loss) + # else: loss_weight = 1 + + loss.backward() + warmup_lr = args.lr_post * min(1, idx * args.eff_batch_size / (10000 * 10)) + post_optimizer.param_groups[0]["lr"] = warmup_lr + post_optimizer.step() + if rank == 0: + if (idx < print_freq and idx % max(1, print_freq // 5) == 0) or (idx % print_freq == 0): + kimg = idx*args.eff_batch_size/1000 + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {kimg:.2f}, time : {timesec} Curr. loss : {loss}") + # wandb.log({"post_loss": loss}, step=int(kimg)) + if (idx < save_freq and idx % max(1, save_freq // 5) == 0) or (idx % save_freq == 0): + kimg = idx*args.eff_batch_size // 1000 + xsamps = [] + for yt in y_tests: + # # yt = torch.cat([yt]*3, dim=0) + # yt = yt.reshape(1,*yt.shape).to(device, non_blocking=True) + # yt = degradation.rev(yt) + # # yt = torch.cat([yt]*4, dim=0) + x_samp = post_model.sample(4, yt, temp=1) + # x_samp = np.swapaxes(x_samp, 1,2) + # x_samp = np.swapaxes(x_samp, 2,3) + xsamps.append(x_samp) + xsamps = np.concatenate(xsamps, axis=0) + _ = utils.save_images(xsamps, f'{save_folder}/posterior-pretraining/fakes_{kimg:06}.png', imrange=[-0.5,0.5]) + # wandb.log({"post_example": wandb.Image(f'{save_folder}/posterior-pretraining/fakes_{kimg:06}.png')}, step=kimg) + post_model.save(f'{save_folder}/posterior-pretraining/network_{kimg:06}.pt') + + idx += 1 + if idx >= args.num_iters_post: + break + + print0("Pretraining main model") + torch.cuda.empty_cache() + if rank == 0: + os.makedirs(f'{save_folder}/main-pretraining', exist_ok=True) + _ = utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/main-pretraining/reals.png', imrange=[-0.5,0.5]) + _ = utils.save_images(noisies, f'{save_folder}/main-pretraining/noisies.png', imrange=[-0.5, 0.5]) + idx = 0 + dloader = iter(train_dataloader) + while args.num_iters_main and (args.resume_from == ''): + try: x = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + x = next(dloader)[0] + + # x = torch.cat([x]*3, dim=1) + x = degradation.rev(x.to(device), mode='real', use_device=True).detach() + if idx == 0 and args.main_actnorm: + main_model.initialize_actnorm(x) + # main_model = main_model.to(device) + idx += 1 + continue + + main_optimizer.zero_grad() + loss = main_model.get_loss(x, num_bits=args.num_bits) + + # if args.importance_weighting == 1: + # loss, loss_weight = imp_weighting1(loss) + # elif args.importance_weighting == 2: + # loss, loss_weight = imp_weighting2(loss) + # else: loss_weight = 1 + + loss.backward() + warmup_lr = args.lr_main * min(1, idx * args.eff_batch_size / (10000 * 10)) + main_optimizer.param_groups[0]["lr"] = warmup_lr + main_optimizer.step() + + if idx % int(np.ceil(args.num_iters_main / 50)) == 0 and rank == 0: + kimg = idx*args.eff_batch_size / 1000 + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {kimg:.2f}, time : {timesec} Curr. loss : {loss}") + # wandb.log({"main_loss": loss}, step=int(kimg)) + if idx % int(np.ceil(args.num_iters_main / 10)) == 0 and rank == 0: + kimg = idx*args.eff_batch_size // 1000 + for temp in [0.5, 0.7, 1.0]: + x_samp = np.concatenate([main_model.sample(4, temp=temp) for _ in range(4)]) + # x_samp = np.squeeze(x_samp) + # x_samp = np.swapaxes(x_samp, 1,2) + # x_samp = np.swapaxes(x_samp, 2,3) + # x_samp = np.squeeze(x_samp) + _ = utils.save_images(x_samp, f'{save_folder}/main-pretraining/fakes_{kimg:06}_temp{temp}.png', imrange=[-0.5,0.5]) + # wandb.log({f"main_example_{temp}": wandb.Image(f'{save_folder}/main-pretraining/fakes_{kimg:06}_temp{temp}.png')}, step=kimg) + main_model.save(f'{save_folder}/main-pretraining/network_{kimg:06}.pt') + + idx += 1 + if idx >= args.num_iters_main: + break + + print0("Jointly training main and posterior models") + torch.cuda.empty_cache() + scaler = torch.cuda.amp.GradScaler() + # if rank == 0: + # _ = utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/reals.png', imrange=[-0.5,0.5]) + # _ = utils.save_images(noisies, f'{save_folder}/noisies.png', imrange=[-0.5, 0.5]) + idx = 0 + dloader = iter(train_dataloader) + print_freq = int(np.ceil(10000 / args.eff_batch_size)) + save_freq = int(np.ceil(100000 / args.eff_batch_size)) + while args.num_iters: + # t = time.time() + try: y,labels = next(dloader) + except StopIteration: + dloader = iter(train_dataloader) + y,labels = next(dloader) + + # torch.cuda.synchronize() + # print("Dataloader get next :", time.time() - t) + # t = time.time() + + # sparsity regularization scheduling + if args.schedule_sparsity_weight: + kimg = idx*args.eff_batch_size // 1000 + # sparsity_weight = (kimg < 1000)*0 + (kimg >= 1000)*args.sparsity_weight*(1-np.exp(-abs(kimg-1000)/1000)) + sparsity_weight = args.sparsity_weight*(1-np.exp(-kimg/100)) + # post_model.change_sparsity_weight(sparsity_weight) + else: sparsity_weight = args.sparsity_weight + # torch.cuda.synchronize() + # print("Sparsity schedule :", time.time() - t) + # t = time.time() + + # y = torch.cat([y]*3, dim=1) + y = y.to(device, non_blocking=True) + # torch.cuda.synchronize() + # print("Data to device", time.time() - t) + # t = time.time() + # tot_optimizer.zero_grad() + main_optimizer.zero_grad(set_to_none=True) + post_optimizer.zero_grad(set_to_none=True) + # torch.cuda.synchronize() + # print("Zero grad :", time.time() - t) + # t = time.time() + with torch.cuda.amp.autocast(): + post_loss, x_posts = post_model.get_loss(y, degradation, num_z=args.num_z, reg_parameter=args.reg_parameter, num_bits=args.num_bits, tiled=args.tiled_for_loss, importance_weighting=args.importance_weighting) + # torch.cuda.synchronize() + # print("Post loss :", time.time() - t) + # t = time.time() + x_posts,labels = train_dataset.deaugment(x_posts, labels) + main_loss = main_model.get_loss(x_posts, num_bits=args.num_bits, importance_weighting=args.importance_weighting) + # torch.cuda.synchronize() + # print("Main loss :", time.time() - t) + # t = time.time() + loss = main_loss + post_loss + + # Importance weighting + if args.importance_weighting == 1: + loss, loss_weight = imp_weighting1(loss) + elif args.importance_weighting == 2 and args.num_gpus == 1: + loss, loss_weight = imp_weighting2_single(loss) + elif args.importance_weighting == 2 and args.num_gpus != 1: + loss, loss_weight = imp_weighting2(loss) + else: loss_weight = 1 + # torch.cuda.synchronize() + # print("Imp weights : ", time.time() - t) + # t = time.time() + + + # Sparsifying penalty + # sparsifying_penalty = utils.total_variation(x_posts) + # sparsifying_penalty = 0 + # coeffs = sp_trans(x_posts.view(-1, *args.input_shape)+0.5) + if args.sparsity_weight: + sparsifying_penalty = sparsifiers.sparsifying_regularizer2(x_posts.view(-1, *args.input_shape)+0.5, sp_trans, threshold_weight=args.threshold_weight) + else: sparsifying_penalty = 0 + # torch.cuda.synchronize() + # print("sparsifying_penalty :", time.time() - t) + # t = time.time() + loss_full = loss * loss_weight + sparsity_weight* sparsifying_penalty + + scaler.scale(loss_full).backward() + # torch.cuda.synchronize() + # print("Backward : ", time.time() - t) + # t = time.time() + # tot_optimizer.step() + warmup_lr = args.lr_main * min(1, (idx + args.num_iters_main) * args.eff_batch_size / (10000 * 10)) + main_optimizer.param_groups[0]["lr"] = warmup_lr + warmup_lr = args.lr_post * min(1, (idx + args.num_iters_post) * args.eff_batch_size / (10000 * 10)) + post_optimizer.param_groups[0]["lr"] = warmup_lr + # main_optimizer.step() + scaler.step(main_optimizer) + # post_optimizer.step() + scaler.step(post_optimizer) + # torch.cuda.synchronize() + # print("Optimizer step :", time.time() - t) + # t = time.time() + scaler.update() + + # Logging + if rank == 0: + if (idx < print_freq and idx % (print_freq // 10) == 0) or (idx % print_freq == 0): + kimg = idx*args.eff_batch_size/1000 + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + if args.importance_weighting == 1: + post_loss_summ = torch.mean(torch.logsumexp(post_loss, 0)) + main_loss_summ = torch.mean(torch.logsumexp(main_loss, 0)) + elif args.importance_weighting == 2: + post_loss_summ = torch.logsumexp(post_loss, [0,1]) + main_loss_summ = torch.logsumexp(main_loss, [0,1]) + else: post_loss_summ = post_loss; main_loss_summ = main_loss + print0(f"kImg. : {kimg:.2f}, time : {timesec}, Post. loss : {post_loss_summ:.2f}, Main loss : {main_loss_summ:.2f}, Curr. loss : {loss}") + # wandb.log({"post_loss" : post_loss_summ, "main_loss": main_loss_summ, "tot_loss": loss}, step=int(kimg)) + if (idx < save_freq and idx % (save_freq // 5) == 0) or (idx % save_freq == 0): + kimg = idx*args.eff_batch_size // 1000 + for temp in [0.5, 0.7, 0.85, 1.0]: + x_samp = np.concatenate([main_model.sample(4, temp=temp) for _ in range(4)]) + _ = utils.save_images(x_samp, f'{save_folder}/fakes_{kimg:06}_temp{temp}.png', imrange=[-0.5,0.5]) + # wandb.log({f"main_example_{temp}": wandb.Image(f'{save_folder}/fakes_{kimg:06}_temp{temp}.png')}, step=kimg) + xsamps = [] + for yt in y_tests: + # yt = yt.reshape(1,*yt.shape).to(device, non_blocking=True) + # yt = degradation.rev(yt) + # yt = torch.cat([yt]*4, dim=0) + x_samp = post_model.sample(4, yt, temp=1) + xsamps.append(x_samp) + xsamps = np.concatenate(xsamps, axis=0) + _ = utils.save_images(xsamps, f'{save_folder}/fakes_{kimg:06}_postsamp.png', imrange=[-0.5,0.5]) + # wandb.log({"post_example": wandb.Image(f'{save_folder}/fakes_{kimg:06}_postsamp.png')}, step=kimg) + main_model.save(f'{save_folder}/main-network_{kimg:06}.pt') + post_model.save(f'{save_folder}/post-network_{kimg:06}.pt') + + idx += 1 + if idx >= args.num_iters: + break + # torch.cuda.synchronize() + # print("Rest :", time.time() - t) + # t = time.time() + + +if __name__ == '__main__': + + args = parser.parse_args() + + args.world_size = args.num_gpus * args.num_nodes + os.environ['MASTER_ADDR'] = 'localhost' + os.environ['MASTER_PORT'] = args.port + + # Effective batch size + args.eff_batch_size = args.batch_size * args.world_size + + # importance weighting + if args.importance_weighting: args.tiled_for_loss = 1 + + # Spawn multiprocesses (one on each gpu) + print(args) + if args.world_size > 1: + # mp.spawn(train, nprocs=args.num_gpus, args=(args,)) + train(args.rank, args) + else: + train(0, args) \ No newline at end of file diff --git a/src/train_ambient_mnist.py b/src/train_ambient_mnist.py new file mode 100644 index 0000000..15c03ee --- /dev/null +++ b/src/train_ambient_mnist.py @@ -0,0 +1,245 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +import models +import degradations +import utils +import ast +import argparse +import sys +import os +import time +import datetime + +parser = argparse.ArgumentParser() +# Multiprocessing arguments +parser.add_argument('-n', '--nodes', default=1, type=int, metavar='N') +parser.add_argument('-g', '--gpus', default=1, type=int, help='number of gpus per node') +parser.add_argument('-nr', '--nr', default=0, type=int, help='ranking within the nodes') + +# training arguments +parser.add_argument("--num_kimgs", type=int, default=10000) +parser.add_argument("--num_kimgs_post", type=int, default=10000) +parser.add_argument("--num_kimgs_main", type=int, default=10000) +parser.add_argument("--batch_size", type=int, default=8) +parser.add_argument("--lr_post", type=float, default=1e-06) +parser.add_argument("--lr_main", type=float, default=1e-06) +# parser.add_argument("--lr_pre", type=float, default=1e-05) +parser.add_argument("--reg_parameter", type=float, default=1e-03) +parser.add_argument("--num_z", type=int, default=10) +parser.add_argument("--results_dir", type=str, default='') +parser.add_argument("--resume_from", type=str, default='') + +# model arguments +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--main_model_type", type=str, default='ConvINN') +parser.add_argument("--main_model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) +parser.add_argument("--main_actnorm", type=lambda b:bool(int(b)), help="0 or 1") +parser.add_argument("--post_model_type", type=str, default='ConvINN') +parser.add_argument("--post_model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) +parser.add_argument("--post_actnorm", type=lambda b:bool(int(b)), help="0 or 1") + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--degradation_type", type=str, default='GaussianNoise') +parser.add_argument("--degradation_args", type=ast.literal_eval, default={'mean':0., 'std':0.3}) +parser.add_argument("--num_bits", type=int, default=0) + + +def train(gpu, args): + + device = f'cuda:{gpu}' if torch.cuda.is_available() else 'cpu' + torch.manual_seed(0) + + def print0(*args, **kwargs): + if gpu == 0: print(*args, **kwargs) + + args.num_iters = args.num_kimgs * 1000 // args.batch_size + args.num_iters_post = args.num_kimgs_post * 1000 // args.batch_size + args.num_iters_main = args.num_kimgs_main * 1000 // args.batch_size + + args.data_args['input_shape'] = args.input_shape + degradation = getattr(degradations, args.degradation_type)(**args.degradation_args, input_shape=args.input_shape, num_bits=args.num_bits) + train_dataset = getattr(dataset_tool, args.data_type)(train=True, ambient=True, degradation=degradation, **args.data_args) + test_dataset = getattr(dataset_tool, args.data_type)(train=False, ambient=True, degradation=degradation, **args.data_args) + test_dataset_clean = getattr(dataset_tool, args.data_type)(train=False, **args.data_args) + train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) + test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) + + main_model = getattr(models, args.main_model_type)(args.input_shape, **args.main_model_args) + post_model = getattr(models, args.post_model_type)(args.input_shape, cond_shape=degradation.output_shape, **args.post_model_args) + main_optimizer = torch.optim.Adam(main_model.trainable_parameters, lr=args.lr_main) + post_optimizer = torch.optim.Adam(post_model.trainable_parameters, lr=args.lr_post) + # tot_optimizer = torch.optim.Adam(main_model.trainable_parameters + post_model.trainable_parameters, lr=args.lr) + + save_folder = utils.setup_saver(args.results_dir, main_model.identifier + f'-lr{args.lr_main}' + f'-{post_model.identifier}' + f'-lr{args.lr_post}' + f'-bits{args.num_bits}-{args.degradation_type}') + print0(args.__dict__, file=open(f'{save_folder}/config.txt', 'w')) + sys.stdout = utils.Logger(save_folder+'/log.txt') + print0(args, flush=True) + + if gpu == 0: + noisies = [train_dataset[i][0].detach().numpy() for i in range(16)] + utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/reals.png', imrange=[-0.5,0.5]) + utils.save_images(noisies, f'{save_folder}/noisies.png', imrange=[-0.5, 0.5]) + + print("Pretraining posterior model") + + if gpu == 0: + os.makedirs(f'{save_folder}/posterior-pretraining', exist_ok=True) + y_tests = [test_dataset[i][0] for i in range(4)] + start_time = time.time() + idx = 0 + dloader = iter(train_dataloader) + while True: + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + + # y = torch.cat([y]*3, dim=1) + y = y.to(device) + post_optimizer.zero_grad() + loss,_ = post_model.get_loss(y, degradation, num_z=args.num_z, reg_parameter=args.reg_parameter, num_bits=args.num_bits) + loss.backward() + warmup_lr = args.lr_post * min(1, idx * args.batch_size / (10000 * 10)) + post_optimizer.param_groups[0]["lr"] = warmup_lr + post_optimizer.step() + + if idx % 50 == 0: + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {idx*args.batch_size/1000:.2f}, time : {timesec} Curr. loss : {loss}") + if idx % 500 == 0: + xsamps = [] + if gpu == 0: + for yt in y_tests: + # yt = torch.cat([yt]*3, dim=0) + yt = yt.reshape(1,*yt.shape).to(device) + x_samp = post_model.sample(4, yt, temp=1) + # x_samp = np.swapaxes(x_samp, 1,2) + # x_samp = np.swapaxes(x_samp, 2,3) + xsamps.append(x_samp) + xsamps = np.concatenate(xsamps, axis=0) + utils.save_images(xsamps, f'{save_folder}/posterior-pretraining/fakes_{(idx*args.batch_size//1000):06}.png', imrange=[-0.5,0.5]) + post_model.save(f'{save_folder}/posterior-pretraining/network_{(idx*args.batch_size//1000):06}.pt') + + idx += 1 + if idx >= args.num_iters_post: + break + + print("Pretraining main model") + if gpu == 0: + os.makedirs(f'{save_folder}/main-pretraining', exist_ok=True) + utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/main-pretraining/reals.png', imrange=[-0.5,0.5]) + utils.save_images(noisies, f'{save_folder}/main-pretraining/noisies.png', imrange=[-0.5, 0.5]) + idx = 0 + dloader = iter(train_dataloader) + while True: + try: x = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + x = next(dloader)[0] + + # x = torch.cat([x]*3, dim=1) + x.to(device) + if idx == 0 and args.main_actnorm: + main_model.initialize_actnorm(x) + main_model = main_model.to(device) + idx += 1 + continue + + main_optimizer.zero_grad() + loss = main_model.get_loss(x, num_bits=args.num_bits) + loss.backward() + warmup_lr = args.lr_main * min(1, idx * args.batch_size / (10000 * 10)) + main_optimizer.param_groups[0]["lr"] = warmup_lr + main_optimizer.step() + + if idx % (50 // args.batch_size) == 0: + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {idx*args.batch_size/1000:.2f}, time : {timesec} Curr. loss : {loss}") + if idx % (500 // args.batch_size) == 0: + for temp in [0.5, 0.7, 1.0]: + x_samp = main_model.sample(16, temp=temp) + # x_samp = np.squeeze(x_samp) + # x_samp = np.swapaxes(x_samp, 1,2) + # x_samp = np.swapaxes(x_samp, 2,3) + # x_samp = np.squeeze(x_samp) + utils.save_images(x_samp, f'{save_folder}/main-pretraining/fakes_{(idx*args.batch_size//1000):06}_temp{temp}.png', imrange=[-0.5,0.5]) + main_model.save(f'{save_folder}/main-pretraining/network_{(idx*args.batch_size//1000):06}.pt') + + idx += 1 + if idx >= args.num_iters_main: + break + + + print("Jointly training main and posterior models") + if gpu == 0: + utils.save_images(np.stack([test_dataset_clean[i][0].detach().numpy() for i in range(16)]), f'{save_folder}/reals.png', imrange=[-0.5,0.5]) + utils.save_images(noisies, f'{save_folder}/noisies.png', imrange=[-0.5, 0.5]) + idx = 0 + dloader = iter(train_dataloader) + while True: + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + + # y = torch.cat([y]*3, dim=1) + y = y.to(device) + # tot_optimizer.zero_grad() + main_optimizer.zero_grad() + post_optimizer.zero_grad() + loss, x_posts = post_model.get_loss(y, degradation, num_z=args.num_z, reg_parameter=args.reg_parameter) + for x_post in x_posts: + loss += main_model.get_loss(x_post, num_bits=args.num_bits) / args.num_z + loss.backward() + # tot_optimizer.step() + warmup_lr = args.lr_main * min(1, (idx + args.num_iters_main) * args.batch_size / (10000 * 10)) + main_optimizer.param_groups[0]["lr"] = warmup_lr + warmup_lr = args.lr_post * min(1, (idx + args.num_iters_post) * args.batch_size / (10000 * 10)) + post_optimizer.param_groups[0]["lr"] = warmup_lr + main_optimizer.step() + post_optimizer.step() + + if idx % (5000 // args.batch_size) == 0: + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {idx*args.batch_size/1000:.2f}, time : {timesec} Curr. loss : {loss}") + if idx % (50000 // args.batch_size) == 0: + for temp in [0.5, 0.7, 1.0]: + x_samp = main_model.sample(16, temp=temp) + utils.save_images(x_samp, f'{save_folder}/fakes_{(idx*args.batch_size//1000):06}_temp{temp}.png', imrange=[-0.5,0.5]) + xsamps = [] + if gpu == 0: + for yt in y_tests: + yt = yt.reshape(1,*yt.shape).to(device) + x_samp = post_model.sample(4, yt, temp=1) + xsamps.append(x_samp) + xsamps = np.concatenate(xsamps, axis=0) + utils.save_images(xsamps, f'{save_folder}/fakes_{(idx*args.batch_size//1000):06}_postsamp.png', imrange=[-0.5,0.5]) + main_model.save(f'{save_folder}/main-network_{(idx*args.batch_size//1000):06}.pt') + post_model.save(f'{save_folder}/post-network_{(idx*args.batch_size//1000):06}.pt') + + idx += 1 + if idx >= args.num_iters: + break + + +if __name__ == '__main__': + + args = parser.parse_args() + print(args) + + train(0, args) \ No newline at end of file diff --git a/src/train_vanilla.py b/src/train_vanilla.py new file mode 100644 index 0000000..e642172 --- /dev/null +++ b/src/train_vanilla.py @@ -0,0 +1,161 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import torch.optim +import numpy as np +import dataset_tool +import models +import utils +import ast +import os +import argparse +import sys +import torch.distributed as dist +import torch.multiprocessing as mp +import time +import datetime + +import torch.nn.parallel as parallel + +parser = argparse.ArgumentParser() + +# multiprocessing arguments +parser.add_argument('-n', '--nodes', default=1, type=int, metavar='N') +parser.add_argument('-g', '--gpus', default=1, type=int, help='number of gpus per node') +parser.add_argument('-nr', '--nr', default=0, type=int, help='ranking within the nodes') + +# model arguments +parser.add_argument("--input_shape", type=int, nargs='+', default=[3, 28, 28]) +parser.add_argument("--model_type", type=str, default='ConvINN') +parser.add_argument("--model_args", type=ast.literal_eval, default={'num_conv_layers': [4,12], 'num_fc_layers': [4]}) +parser.add_argument("--actnorm", type=lambda b:bool(int(b)), help="0 or 1") + +# training arguments +parser.add_argument("--num_kimgs", type=int, default=10000) +parser.add_argument("--batch_size", type=int, default=64) +parser.add_argument("--lr", type=float, default=1e-05) +parser.add_argument("--results_dir", type=str, default='') +parser.add_argument("--resume_from", type=str, default='') + +# data args +parser.add_argument("--data_type", type=str, default='MNISTDataset') +parser.add_argument("--data_args", type=ast.literal_eval, default={'power_of_two': False}) +parser.add_argument("--num_bits", type=int, default=0) + +def train(gpu, args): + + def print0(*args, **kwargs): + if gpu == 0: print(*args, **kwargs) + + args.num_iters = args.num_kimgs * 1000 // args.batch_size + + # initialize process + # rank = args.nr * args.gpus + gpu + # dist.init_process_group( + # backend='nccl', + # init_method='env://', + # world_size=args.world_size, + # rank=rank + # ) + + device = f'cuda:{gpu}' if torch.cuda.is_available() else 'cpu' + torch.manual_seed(0) + + args.data_args['input_shape'] = args.input_shape + train_dataset = getattr(dataset_tool, args.data_type)(train=True, **args.data_args) + test_dataset = getattr(dataset_tool, args.data_type)(train=False, **args.data_args) + train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) + test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=args.batch_size, shuffle=True, num_workers=4) + + model = getattr(models, args.model_type)(args.input_shape, **args.model_args, device=device).to(device) + optimizer = torch.optim.Adamax(model.trainable_parameters, lr=args.lr) + + # Configure saving + save_folder = utils.setup_saver(args.results_dir, model.identifier+f'-lr{args.lr}-bits{args.num_bits}') + print0(args.__dict__, file=open(f'{save_folder}/config.txt', 'w')) + sys.stdout = utils.Logger(save_folder+'/log.txt') + print0(args, flush=True) + + if gpu == 0: + utils.save_images(np.stack([train_dataset[i][0].detach().numpy() for i in range(16)], axis=0), f'{save_folder}/reals.png', imrange=[-0.5,0.5]) + + if args.resume_from != '': + print0(f"Resuming training from {args.resume_from} ...") + model.load(args.resume_from) + model.to(device) + + print0("Training vanilla model") + idx = 0 + dloader = iter(train_dataloader) + start_time = time.time() + while True: + try: x = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + x = next(dloader)[0] + + # x = torch.cat([x]*3, dim=1) + x.to(device, non_blocking=True) + if args.resume_from == '': + if idx == 0 and args.actnorm: + model.initialize_actnorm(x) + model = model.to(device) + # model = parallel.DistributedDataParallel(model, device_ids=[gpu]) + idx += 1 + continue + + optimizer.zero_grad() + loss = model.get_loss(x, num_bits=args.num_bits) + loss.backward() + # warmup_lr = args.lr * min(1, idx * args.batch_size / (10000 * 10)) + warmup_lr = args.lr * min(1, idx * args.batch_size / (50000 * 10)) + optimizer.param_groups[0]["lr"] = warmup_lr + optimizer.step() + print_freq = int(np.ceil(5000 / args.batch_size)) + save_freq = int(np.ceil(100000 / args.batch_size)) + + if (idx < print_freq and idx % (print_freq // 5) == 0) or (idx % print_freq == 0): + timesec = time.time() - start_time + timesec = str(datetime.timedelta(seconds=int(timesec))) + print0(f"kImg. : {idx*args.batch_size/1000:.2f}, time : {timesec} Curr. loss : {loss}") + if (idx < save_freq and idx % (save_freq // 5) == 0) or (idx % save_freq == 0): + for temp in [0.5, 0.7, 1.0]: + x_samp = model.sample(16, temp=temp) + # x_samp = np.squeeze(x_samp) + # x_samp = np.swapaxes(x_samp, 1,2) + # x_samp = np.swapaxes(x_samp, 2,3) + # x_samp = np.squeeze(x_samp) + if gpu == 0: + utils.save_images(x_samp, f'{save_folder}/fakes_{(idx*args.batch_size//1000):06}_temp{temp}.png', imrange=[-0.5,0.5]) + model.save(f'{save_folder}/network_{(idx*args.batch_size/1000):06}.pt') + opt_state = { + 'idx': idx, + 'opt': optimizer.state_dict(), + 'lr' : optimizer.param_groups[0]["lr"] + } + torch.save(opt_state, f'{save_folder}/optimizer_{(idx*args.batch_size//1000):06}.pt') + + idx += 1 + if idx >= args.num_iters: + break + + +if __name__ == '__main__': + + args = parser.parse_args() + print(args) + + train(0, args) + + # args.world_size = args.gpus * args.nodes + # os.environ['MASTER_ADDR'] = 'localhost' + # os.environ['MASTER_PORT'] = '12355' + # mp.spawn(train, nprocs=args.gpus, args=(args,)) + + diff --git a/src/utils.py b/src/utils.py new file mode 100644 index 0000000..7419f7a --- /dev/null +++ b/src/utils.py @@ -0,0 +1,87 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import numpy as np +import os +import glob +import imageio as io +import json +import sys +import ast + +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt + +class Logger(object): + def __init__(self, logfile): + self.terminal = sys.stdout + self.log = open(logfile, "w") + + def write(self, message): + self.terminal.write(message) + self.log.write(message) + self.log.flush() + + def flush(self): + #this flush method is needed for python 3 compatibility. + #this handles the flush command by doing nothing. + #you might want to specify some extra behavior here. + self.log.flush() + return self.terminal.flush() + +def scatterplot_saver(data, path): + plt.scatter(data[:,0], data[:,1], alpha=0.3, edgecolor='none') + plt.xlim([-5,5]) + plt.ylim([-5,5]) + plt.savefig(path) + plt.close() + +def log_normal(var, std=1.): + K = np.prod(var.shape[1:]) + var = torch.reshape(var, [var.shape[0], -1]) + return -K/2 * np.log(2*np.pi) - K * np.log(std) - 0.5 * torch.norm(var, dim=-1)**2 / std**2 + +def setup_saver(results_dir, identifier): + folder_no = len(glob.glob(f'{results_dir}/*')) + folder = f'{results_dir}/{folder_no:03}-{identifier}' + os.makedirs(folder, exist_ok=True) + return folder + +def save_images(images, path, imrange=[0,1]): + + images = np.squeeze(images) + if len(images.shape) == 4: + images = np.swapaxes(images, 1, 2) + images = np.swapaxes(images, 2, 3) + if images.shape[-1] == 2: + images = images[...,0] + 1.j*images[...,1] + # images = images.detach().numpy() + N = int(np.sqrt(len(images))) + imrows = [ np.concatenate(images[N*i:N*i+N], axis=1) for i in range(N) ] + im = np.concatenate(imrows) + im = np.clip(im, *imrange) + im = (im - imrange[0]) / (imrange[1] - imrange[0]) * 255 + im = abs(im) + im = im.astype(np.uint8) + io.imsave(path, im) + return im + +def get_tv_loss(data_batch): + data_shape = data_batch.shape + if len(data_shape) == 5: + data_batch = data_batch.reshape( -1, *data_shape[2:] ) + +def total_variation(img): + if len(img.shape) == 5: + img = img.reshape( -1, *img.shape[2:] ) + x = img[:,:,1:,:] - img[:,:,:-1,:] + y = img[:,:,:,1:] - img[:,:,:,:-1] + tvnorm = torch.sum(torch.abs(x)) + torch.sum(torch.abs(y)) + return tvnorm \ No newline at end of file diff --git a/src/wavelet_utils.py b/src/wavelet_utils.py new file mode 100644 index 0000000..fbadaf5 --- /dev/null +++ b/src/wavelet_utils.py @@ -0,0 +1,60 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import torch +import numpy as np + +def unroll_shape(c): + if isinstance(c, tuple): + return tuple([unroll_shape(cc) for cc in c]) + elif isinstance(c, list): + return [unroll_shape(cc) for cc in c] + else: + return c.shape + +def coeffs_to_array(coeffs): + + shapes = unroll_shape(coeffs) + + def c2a(cofs): + array_list = [] + if isinstance(cofs, list) or isinstance(cofs, tuple): + for c in cofs: + array_list.append(c2a(c)) + if isinstance(array_list[0], np.ndarray): + array = np.concatenate(array_list, axis=-1) + elif isinstance(array_list[0], torch.Tensor): + array = torch.cat(array_list, -1) + return array + elif isinstance(cofs, torch.Tensor) or isinstance(cofs, np.ndarray): + array = cofs.reshape(cofs.shape[0], -1) + return array + + coeff_array = c2a(coeffs) + return coeff_array, shapes + +def array_to_coeffs(coeff_array, shapes): + + def a2c(array, sh): + if (isinstance(sh, tuple) or isinstance(sh, list)) and isinstance(sh[0], int): + ar = array[...,:np.prod(sh[1:])] + ar = ar.reshape(sh) + leftover = array[...,np.prod(sh[1:]):] + return ar, leftover + elif (isinstance(sh, tuple) or isinstance(sh, list)) and isinstance(sh[0], tuple): + leftover = array + array_tuple = [] + for s in sh: + ar, leftover = a2c(leftover, s) + array_tuple.append(ar) + array_tuple = tuple(array_tuple) + return array_tuple, leftover + + coeffs, _ = a2c(coeff_array, shapes) + return list(coeffs) + diff --git a/toy/ambient_model.py b/toy/ambient_model.py new file mode 100644 index 0000000..f940ce8 --- /dev/null +++ b/toy/ambient_model.py @@ -0,0 +1,393 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +from time import time + +import torch +import torch.nn as nn +import torch.optim +import numpy as np +# from tqdm import tqdm + +import FrEIA.framework as Ff +import FrEIA.modules as Fm + +torch.manual_seed(1234) +np.random.seed(42) + +# from FrEIA.framework import InputNode, OutputNode, Node, ReversibleGraphNet +# from FrEIA.modules import GLOWCouplingBlock, PermuteRandom + +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +def subnet_fc(c_in, c_out): + return nn.Sequential(nn.Linear(c_in, 512), nn.ReLU(), + nn.Linear(512, c_out)) + +def get_main_model(num_layers=16, block_type='AllInOneBlock'): + + # Define the main flow + mainflow = Ff.SequenceINN(2) + for k in range(num_layers): + mainflow.append(Fm.AllInOneBlock, subnet_constructor=subnet_fc, permute_soft=True) + + mainflow.block_type = block_type + + return mainflow + +def get_main_model2(num_layers=8, block_type='GLOWCouplingBlock'): + + nodes = [Ff.InputNode(2, name='input')] + + for k in range(num_layers): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + name=F'coupling_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_{k}')) + + nodes.append(Ff.OutputNode(nodes[-1], name='output')) + # TODO: Define the posterior flow + # This will be a conditional INN, use the conditional INN paper arch for this. + model = Ff.ReversibleGraphNet(nodes, verbose=False) + model.block_type = block_type + return model + +def get_posterior_model(num_layers=8, block_type='AllInOneBlock'): + + cond = Ff.ConditionNode(2) + nodes = [Ff.InputNode(2, name='Input')] + + for k in range(num_layers): + nodes.append(Ff.Node(nodes[-1], getattr(Fm, block_type), + {'subnet_constructor': subnet_fc, + 'permute_soft' : True}, + conditions=cond)) + + model = Ff.ReversibleGraphNet(nodes + [cond, Ff.OutputNode(nodes[-1])], verbose=False) + model.block_type = block_type + + return model + +def log_normal(var, std=1.): + K = np.prod(var.shape[1:]) + var = torch.reshape(var, [var.shape[0], -1]) + return -K/2 * np.log(2*np.pi) - K * np.log(std) - 0.5 * torch.norm(var, dim=-1)**2 / std**2 + +def get_model_loss(model, importance_weighting=0): + + def loss_fn(data_batch): + zbatch, jac = model([data_batch], jac=True) + return - torch.mean(log_normal(zbatch) + jac) + + def loss_fn_impw(data_batch): + zbatch, jac = model([data_batch], jac=True) + return - log_normal(zbatch) + jac + + if importance_weighting: + return loss_fn_impw + else: return loss_fn + +def get_posterior_loss(model, latent_bs=512, noise_std=0.1, num_z_per_data=1, reg_parameter=1., importance_weighting=0, **kwargs): + + if kwargs['fwd_model'] == 'simple_slant_squish': + R = np.array([ + [1/np.sqrt(2), -1/np.sqrt(2)], + [1/np.sqrt(2), 1/np.sqrt(2)] + ]) + A = torch.Tensor(R.T @ np.diag([np.sqrt(3), 1/np.sqrt(3)]) @ R).to(device) + Ainv = torch.linalg.inv(A) + fwd = lambda x : (A @ x.T).T + fwdinv = lambda y : ( Ainv @ y.T).T + elif kwargs['fwd_model'] == None: + fwd = lambda x : x + fwdinv = lambda y : y + + def loss_fn(data_batch): + + x_posts = [] + jac_rev = torch.zeros(size=(batch_size,)).to(device) + data_fidelity_prob = torch.zeros(size=(batch_size,)).to(device) + for i in range(num_z_per_data): + z = np.random.randn(latent_bs, 2) + x_post,jac_r = model(torch.Tensor(z).to(device), [fwdinv(data_batch)], rev=True) + x_posts.append(x_post) + jac_rev += jac_r/ num_z_per_data + data_fidelity_prob += log_normal( data_batch - fwd(x_post) , std=noise_std) / num_z_per_data + + return - torch.mean(reg_parameter*data_fidelity_prob + jac_rev), x_posts + + def loss_fn_impw(data_batch): + x_posts = [] + jac_rev = [] + data_fidelity_prob = [] + for i in range(num_z_per_data): + z = np.random.randn(latent_bs, 2) + x_post,jac_r = model(torch.Tensor(z).to(device), [fwdinv(data_batch)], rev=True) + x_posts.append(x_post) + # jac_rev += jac_r/ num_z_per_data + jac_rev.append(jac_r) + data_fidelity_prob.append( log_normal( data_batch - fwd(x_post) , std=noise_std) ) + jac_rev = torch.stack(jac_rev, dim=0) + data_fidelity_prob = torch.stack(data_fidelity_prob, dim=0) + + return -(reg_parameter*data_fidelity_prob + jac_rev), x_posts + + if importance_weighting: + return loss_fn_impw + else: + return loss_fn + + +def sample_from_cond(model, **kwargs): + + if kwargs['fwd_model'] == 'simple_slant_squish': + R = np.array([ + [1/np.sqrt(2), -1/np.sqrt(2)], + [1/np.sqrt(2), 1/np.sqrt(2)] + ]) + A = torch.Tensor(R.T @ np.diag([np.sqrt(3), 1/np.sqrt(3)]) @ R).to(device) + Ainv = torch.linalg.inv(A) + fwd = lambda x : (A @ x.T).T + fwdinv = lambda y : ( Ainv @ y.T).T + elif kwargs['fwd_model'] == None: + fwd = lambda x : x + fwdinv = lambda y : y + + def sampler(num_samples, cond): + z = np.random.randn(num_samples, 2) + cond = torch.stack([cond]*num_samples, dim=0).to(device) + assert len(cond) == num_samples, "Wrong number of conditional or num_samples" + x,_ = model(torch.Tensor(z).to(device), [fwdinv(cond)], rev=True) + x = x.cpu().detach().numpy() + return x + + return sampler + + +def sample_from(model): + + def sampler(num_samples, temp=1): + z = np.random.randn(num_samples, 2) * temp + x,_ = model(torch.Tensor(z).to(device), rev=True) + x = x.cpu().detach().numpy() + return x + + return sampler + +def scatterplot_saver(*args, path): + for dat in args: + plt.scatter(dat[:,0], dat[:,1], alpha=0.3, edgecolor='none') + plt.xlim([-5,5]) + plt.ylim([-5,5]) + plt.savefig(path) + plt.close() + +if __name__ == '__main__': + import data + import glob + import matplotlib + matplotlib.use('Agg') + import matplotlib.pyplot as plt + import os + import dill + + N = 50000000 + batch_size = 2000 + num_iters = 100000 + num_iters_pre = 5000 + num_layers = 24 + num_layers_post = 16 + noise_std = 0.4 + reg_parameter = 0.05 + reg_parameter2 = 0.05 + num_z_per_data = 30 + importance_weighting = 0 + # fwd_model = 'simple_slant_squish' + fwd_model = None + + if fwd_model == 'simple_slant_squish': + R = np.array([ + [1/np.sqrt(2), -1/np.sqrt(2)], + [1/np.sqrt(2), 1/np.sqrt(2)] + ]) + A = torch.Tensor(R.T @ np.diag([np.sqrt(3), 1/np.sqrt(3)]) @ R).to(device) + Ainv = torch.linalg.inv(A) + fwd = lambda x : (A @ x.T).T + fwdinv = lambda y : ( Ainv @ y.T).T + elif fwd_model == None: + fwd = lambda x : x + fwdinv = lambda y : y + + dataset, _ = data.generate('all', N, noise='gaussian', fwd_model=fwd_model, noise_std=noise_std) + print(dataset.shape) + + main_model = get_main_model(num_layers) + post_model = get_posterior_model(num_layers_post) + + main_model = main_model.to(device) + post_model = post_model.to(device) + + main_trainable_parameters = [p for p in main_model.parameters() if p.requires_grad] + post_trainable_parameters = [p for p in post_model.parameters() if p.requires_grad] + main_optimizer = torch.optim.Adam(main_trainable_parameters, lr=2e-04) + post_optimizer = torch.optim.Adam(post_trainable_parameters, lr=2e-04) + tot_optimizer = torch.optim.Adam(main_trainable_parameters + post_trainable_parameters, lr=2e-04) + + ## Pretrain the main model with noisy data + main_loss_fn = get_model_loss(main_model) + + train_dataloader = torch.utils.data.DataLoader( + torch.utils.data.TensorDataset(dataset), batch_size=batch_size, shuffle=True, drop_last=True) + dloader = iter(train_dataloader) + + # Saving + folder = '../results/toy/toy_ambient2' + folder_no = len(glob.glob(f'{folder}/*')) + folder = f'../results/toy/toy_ambient2/{folder_no:03}-{main_model.block_type}-{num_layers}/pre-main' + os.makedirs(folder, exist_ok=True) + scatterplot_saver(dataset[:1000], path=f'{folder}/reals.png') + + sampler = sample_from(main_model) + + # Pretrain the main model with noisy data + print("Pretraining the main model with noisy data") + idx = 0 + while True: + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + + y = y.to(device) + y = fwdinv(y) + main_optimizer.zero_grad() + loss = main_loss_fn(y) + loss.backward() + main_optimizer.step() + + if idx % 50 == 0: + print(f"Idx. : {idx}, Curr. loss : {loss}") + if idx % 50 == 0: + x_samp = sampler(1000) + scatterplot_saver(x_samp, path=f'{folder}/fakes_{idx:06}.png') + torch.save(main_model, f'{folder}/network_{idx:06}.pth', pickle_module=dill) + + idx += 1 + if idx >= num_iters_pre: + break + + + ## Pretrain the posterior model + post_loss_fn = get_posterior_loss(post_model, latent_bs=batch_size, reg_parameter=reg_parameter, num_z_per_data=num_z_per_data, fwd_model=fwd_model) + + dloader = iter(train_dataloader) + + # Saving + folder = f'../results/toy/toy_ambient2/{folder_no:03}-{main_model.block_type}-{num_layers}/pre-post' + os.makedirs(folder, exist_ok=True) + y_tests,_ = data.generate('all', 8, noise='gaussian', shuffle=False, seed=1, fwd_model=fwd_model, noise_std=noise_std) + real_post_samples = [data.generate_posterior_samples(200, yt, noise_std=noise_std) for yt in y_tests] + scatterplot_saver(dataset[:100], *real_post_samples, path=f'{folder}/reals.png') + # scatterplot_saver(dataset[:100], path=f'{folder}/reals.png') + + sampler = sample_from_cond(post_model, fwd_model=fwd_model) + + # Pretrain the posterior model + print("Pretraining the posterior model") + idx = 0 + while True: + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + + y = y.to(device) + post_optimizer.zero_grad() + loss, _ = post_loss_fn(y) + loss.backward() + post_optimizer.step() + + if idx % 50 == 0: + print(f"Idx. : {idx}, Curr. loss : {loss}") + if idx % 50 == 0: + x_samp = [sampler(200, yt) for yt in y_tests] + scatterplot_saver(dataset[:100], *x_samp, path=f'{folder}/fakes_{idx:06}.png') + torch.save(post_model, f'{folder}/network_{idx:06}.pth', pickle_module=dill) + + idx += 1 + if idx >= num_iters_pre: + break + + + ## Train both models jointly + dloader = iter(train_dataloader) + main_loss_fn = get_model_loss(main_model, importance_weighting=importance_weighting) + post_loss_fn = get_posterior_loss(post_model, latent_bs=batch_size, reg_parameter=reg_parameter2, num_z_per_data=num_z_per_data, importance_weighting=importance_weighting, fwd_model=fwd_model) + + # Saving + folder = f'../results/toy/toy_ambient2/{folder_no:03}-{main_model.block_type}-{num_layers}/main' + os.makedirs(folder, exist_ok=True) + data_gt,_ = data.generate('all', 1000, shuffle=True, seed=1) + data_gt = data_gt.numpy() + scatterplot_saver(dataset[:1000], data_gt, path=f'{folder}/reals.png') + + sampler = sample_from(main_model) + cond_sampler = sample_from_cond(post_model, fwd_model=fwd_model) + + # Train both models jointly + print("Training both models jointly") + idx = 0 + while True: + try: y = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + y = next(dloader)[0] + + y = y.to(device) + tot_optimizer.zero_grad() + loss_post, x_posts = post_loss_fn(y) + + if importance_weighting == 0: + loss_main = torch.zeros(size=()).to(device) + for x_post in x_posts: + loss_main += main_loss_fn(x_post) / len(x_posts) + else: + loss_main = [] + for x_post in x_posts: + loss_main.append( main_loss_fn(x_post) ) + loss_main = torch.stack(loss_main, dim=0) + loss = loss_main + loss_post + if importance_weighting: + importance_weights = torch.softmax(loss, dim=0).detach() + loss = loss * importance_weights + loss = torch.mean(torch.sum(loss, dim=0)) + loss.backward() + tot_optimizer.step() + + if idx % 50 == 0: + print(f"Idx. : {idx}, Curr. loss : {loss}") + if idx % 50 == 0: + + # save samples from main model + x_samp = sampler(1000, temp=0.8) + scatterplot_saver(dataset[:1000], data_gt, x_samp, path=f'{folder}/fakes_{idx:06}.png') + + # save samples from posterior model + x_post = [cond_sampler(200, yt) for yt in y_tests] + scatterplot_saver(dataset[:100], *x_post, path=f'{folder}/posts_{idx:06}.png') + + torch.save(post_model, f'{folder}/post-network_{idx:06}.pth', pickle_module=dill) + torch.save(main_model, f'{folder}/main-network_{idx:06}.pth', pickle_module=dill) + + idx += 1 + if idx >= num_iters: + break diff --git a/toy/data.py b/toy/data.py new file mode 100644 index 0000000..e13c392 --- /dev/null +++ b/toy/data.py @@ -0,0 +1,137 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import numpy as np +import torch +import torch.utils.data + +verts = [ + (-2.4142, 1.), + (-1., 2.4142), + (1., 2.4142), + (2.4142, 1.), + (2.4142, -1.), + (1., -2.4142), + (-1., -2.4142), + (-2.4142, -1.) + ] + +label_maps = { + 'all': [0, 1, 2, 3, 4, 5, 6, 7], + 'some': [0, 0, 0, 0, 1, 1, 2, 3], + 'none': [0, 0, 0, 0, 0, 0, 0, 0], + } + + +def generate(labels, tot_dataset_size, fwd_model=None, noise=None, shuffle=True, seed=0, **kwargs): + # print('Generating artifical data for setup "%s"' % (labels)) + + np.random.seed(seed) + N = tot_dataset_size + mapping = label_maps[labels] + + pos = np.random.normal(size=(N, 2), scale=0.1) + labels = np.zeros((N, 8)) + n = N//8 + + for i, v in enumerate(verts): + pos[i*n:(i+1)*n, :] += v + labels[i*n:(i+1)*n, mapping[i]] = 1. + + if shuffle: + shuffling = np.random.permutation(N) + else: shuffling = np.arange(N) + + if fwd_model == None: pass + + if fwd_model == 'simple_slant_squish': + R = np.array([ + [1/np.sqrt(2), -1/np.sqrt(2)], + [1/np.sqrt(2), 1/np.sqrt(2)] + ]) + A = R.T @ np.diag([np.sqrt(3), 1/np.sqrt(3)]) @ R + pos = (A @ pos.T).T + + if noise == None: pass + + elif noise == 'gaussian': + pos_noise = np.random.randn(*pos.shape) * kwargs['noise_std'] + pos += pos_noise + + pos = torch.tensor(pos[shuffling], dtype=torch.float) + labels = torch.tensor(labels[shuffling], dtype=torch.float) + + return pos, labels + + # test_loader = torch.utils.data.DataLoader( + # torch.utils.data.TensorDataset(pos[:test_split], labels[:test_split]), + # batch_size=batch_size, shuffle=True, drop_last=True) + + # train_loader = torch.utils.data.DataLoader( + # torch.utils.data.TensorDataset(pos[test_split:], labels[test_split:]), + # batch_size=batch_size, shuffle=True, drop_last=True) + + # return test_loader, train_loader + + +def generate_posterior_samples(tot_dataset_size, cond, **kwargs): + + samples = [] + cond = cond.numpy() + while True: + sample_pxgy = cond + np.random.randn(*cond.shape) * kwargs['noise_std'] + + acceptance_prob = np.mean([ + np.exp( + - (sample_pxgy - vert)**2 / 2 / (0.1**2) + ) + for vert in np.array(verts)]) / np.mean([ + np.exp( + - (verts[0] - vert)**2 / 2 / (0.1**2) + ) + for vert in np.array(verts)]) + + if np.random.uniform(0,1) >= acceptance_prob: + samples.append(sample_pxgy) + + if len(samples) >= tot_dataset_size: + break + + return np.array(samples) + + +if __name__ == '__main__': + import matplotlib + matplotlib.use('Agg') + import matplotlib.pyplot as plt + temp = '/home/vak2/Documents/temp.png' + + N = 10000 + idx = np.random.randint(10000) + dat,lab = generate('all', N) + dat_n = dat + np.random.randn(*dat.shape) * 0.1 + postsamp = generate_posterior_samples(1000, dat_n[idx], noise_std=0.2) + + print(lab[idx]) + + plt.scatter(dat_n[:,0], dat_n[:,1], alpha=0.01, edgecolor='none') + plt.scatter(dat[:,0], dat[:,1], alpha=0.01, edgecolor='none') + plt.scatter(postsamp[:,0], postsamp[:,1], alpha=0.01, edgecolor='none') + plt.xlim([-5,5]) + plt.ylim([-5,5]) + plt.savefig(temp) + plt.close() + + + + + + + + + diff --git a/toy/plotting.py b/toy/plotting.py new file mode 100644 index 0000000..2e6594f --- /dev/null +++ b/toy/plotting.py @@ -0,0 +1,121 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +import numpy as np +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt + +cmap = 'gist_heat' + +def plot_true_distribution(scale=0.15): + verts = [ + (-2.4142, 1.), + (-1., 2.4142), + (1., 2.4142), + (2.4142, 1.), + (2.4142, -1.), + (1., -2.4142), + (-1., -2.4142), + (-2.4142, -1.) + ] + + x,y = np.meshgrid(np.linspace(-4,4,128), np.linspace(-4,4,128)) + + pdf = np.zeros_like(x) + for v in verts: + pdf += np.exp( - ( (x - v[0])**2 + (y - v[1])**2 ) / 2 / scale**2 ) + + plt.imshow(pdf, cmap=cmap) + plt.xlim([-4,4]) + plt.ylim([-4,4]) + plt.axis('equal') + plt.axis('off') + plt.title("True distribution") + plt.savefig('../results/toy/true_distribution.svg', bbox_inches='tight', pad=0) + plt.savefig('../results/toy/true_distribution.png', bbox_inches='tight', pad=0) + plt.close() + + +def plot_noisy_distribution(scale=0.15, noise_std=0.45): + verts = [ + (-2.4142, 1.), + (-1., 2.4142), + (1., 2.4142), + (2.4142, 1.), + (2.4142, -1.), + (1., -2.4142), + (-1., -2.4142), + (-2.4142, -1.) + ] + + x,y = np.meshgrid(np.linspace(-4,4,128), np.linspace(-4,4,128)) + + pdf = np.zeros_like(x) + for v in verts: + pdf += np.exp( - ( (x - v[0])**2 + (y - v[1])**2 ) / 2 / (scale**2 + noise_std**2) ) + + plt.imshow(pdf, cmap=cmap) + plt.xlim([-4,4]) + plt.ylim([-4,4]) + plt.axis('equal') + plt.axis('off') + plt.title("Measurement distribution") + plt.savefig('../results/toy/meas_distribution.svg', bbox_inches='tight', pad=0) + plt.savefig('../results/toy/meas_distribution.png', bbox_inches='tight', pad=0) + plt.close() + + +def plot_inn_distribution(scale=0.15, path='', name=''): + + import scipy.stats as st + from skimage.transform import resize + + data = np.load(path)[:2000] + # bins = [ + # np.linspace(-4, 4, 128), + # np.linspace(-4, 4, 128), + # ] + # kernel = st.gaussian_kde(data.T) + # x,y = np.meshgrid(bins[0], bins[1]) + # positions = np.vstack([x.ravel(), y.ravel()]) + # counts = np.reshape(kernel(positions).T, x.shape) + counts,_,_ = np.histogram2d(data[...,0], data[...,1], bins=64, range=[[-4,4],[-4,4]]) + counts = resize(counts, (128,128), anti_aliasing=True) + + plt.imshow(counts, cmap=cmap) + # plt.scatter(data[...,0], data[...,1], alpha=0.3, edgecolor='none') + # plt.xlim([-4,4]) + # plt.ylim([-4,4]) + plt.axis('equal') + plt.axis('off') + plt.title(f"{name} distribution") + plt.savefig(f'../results/toy/{name}_distribution.svg', bbox_inches='tight', pad=0) + plt.savefig(f'../results/toy/{name}_distribution.png', bbox_inches='tight', pad=0) + plt.close() + + + + +if __name__ == '__main__': + + vanilla_path_0p7 = '/home/vak2/Documents/ambientflow/results/toy/toy_vanilla2/007-AllInOneBlock-24/data-029000-0.7.npy' + vanilla_path_1p0 = '/home/vak2/Documents/ambientflow/results/toy/toy_vanilla2/007-AllInOneBlock-24/data-029000-1.0.npy' + ambient_path_0p7 = '/home/vak2/Documents/ambientflow/results/toy/toy_ambient2/029-AllInOneBlock-24/data-027250-0.7.npy' + ambient_path_1p0 = '/home/vak2/Documents/ambientflow/results/toy/toy_ambient2/029-AllInOneBlock-24/data-027250-1.0.npy' + + plot_true_distribution() + plot_noisy_distribution() + plot_inn_distribution( + path = ambient_path_1p0, + name = 'ambient-1.0' + ) + plot_inn_distribution( + path = vanilla_path_1p0, + name = 'vanilla-1.0' + ) \ No newline at end of file diff --git a/toy/vanilla_model.py b/toy/vanilla_model.py new file mode 100644 index 0000000..b1d2b10 --- /dev/null +++ b/toy/vanilla_model.py @@ -0,0 +1,161 @@ +""" Copyright (c) 2022-2023 authors +Author : Varun A. Kelkar +Email : vak2@illinois.edu + +This source code is licensed under the MIT license found in the +LICENSE file in the root directory of this source tree. +""" + +from time import time + +import torch +import torch.nn as nn +import torch.optim +import numpy as np +# from tqdm import tqdm + +import FrEIA.framework as Ff +import FrEIA.modules as Fm + +torch.manual_seed(1234) +np.random.seed(42) + +# from FrEIA.framework import InputNode, OutputNode, Node, ReversibleGraphNet +# from FrEIA.modules import GLOWCouplingBlock, PermuteRandom + +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +def subnet_fc(c_in, c_out): + return nn.Sequential(nn.Linear(c_in, 512), nn.ReLU(), + nn.Linear(512, c_out)) + +def get_main_model(num_layers=16, block_type='AllInOneBlock'): + + # Define the main flow + mainflow = Ff.SequenceINN(2) + for k in range(num_layers): + mainflow.append(Fm.AllInOneBlock, subnet_constructor=subnet_fc, permute_soft=True) + + mainflow.block_type = block_type + + return mainflow + +def get_main_model2(num_layers=8, block_type='GLOWCouplingBlock'): + + nodes = [Ff.InputNode(2, name='input')] + + for k in range(num_layers): + nodes.append(Ff.Node(nodes[-1], + Fm.GLOWCouplingBlock, + {'subnet_constructor':subnet_fc, 'clamp':2.0}, + name=F'coupling_{k}')) + nodes.append(Ff.Node(nodes[-1], + Fm.PermuteRandom, + {'seed':k}, + name=F'permute_{k}')) + + nodes.append(Ff.OutputNode(nodes[-1], name='output')) + # TODO: Define the posterior flow + # This will be a conditional INN, use the conditional INN paper arch for this. + model = Ff.ReversibleGraphNet(nodes, verbose=False) + model.block_type = block_type + return model + + + +def log_normal(var): + K = np.prod(var.shape[1:]) + var = torch.reshape(var, [var.shape[0], -1]) + return -K/2 * np.log(2*np.pi) - 0.5 * torch.norm(var, dim=-1)**2 + +def get_loss(model): + + def loss_fn(data_batch): + zbatch, jac = model([data_batch], jac=True) + return - torch.mean(log_normal(zbatch) + jac) + + return loss_fn + +def sample_from(model): + + def sampler(num_samples): + z = np.random.randn(num_samples, 2) + z = torch.Tensor(z).to(device) + x,_ = model(z, rev=True) + x = x.detach().cpu().numpy() + return x + + return sampler + +def scatterplot_saver(data, path): + plt.scatter(data[:,0], data[:,1], alpha=0.3, edgecolor='none') + plt.xlim([-5,5]) + plt.ylim([-5,5]) + plt.savefig(path) + plt.close() + + + +if __name__ == '__main__': + import data + import glob + import matplotlib + matplotlib.use('Agg') + import matplotlib.pyplot as plt + import os + import dill + + N = 5000000 + batch_size = 16384 + num_iters = 50000 + num_layers = 24 + + dataset, _ = data.generate('all', N) + print(dataset.shape) + + model = get_main_model(num_layers) + + model = model.to(device) + + trainable_parameters = [p for p in model.parameters() if p.requires_grad] + optimizer = torch.optim.Adam(trainable_parameters, lr=5e-04) + + loss_fn = get_loss(model) + + train_dataloader = torch.utils.data.DataLoader( + torch.utils.data.TensorDataset(dataset), batch_size=batch_size, shuffle=True, drop_last=True) + dloader = iter(train_dataloader) + + # Saving + folder_no = len(glob.glob('../results/toy/toy_vanilla2/*')) + folder = f'../results/toy/toy_vanilla2/{folder_no:03}-{model.block_type}-{num_layers}' + os.makedirs(folder, exist_ok=True) + scatterplot_saver(dataset[:1000], f'{folder}/reals.png') + + sampler = sample_from(model) + + print("Training vanilla model") + idx = 0 + while True: + try: x = next(dloader)[0] + except StopIteration: + dloader = iter(train_dataloader) + x = next(dloader)[0] + + x = x.to(device) + optimizer.zero_grad() + loss = loss_fn(x) + loss.backward() + optimizer.step() + + if idx % 50 == 0: + print(f"Idx. : {idx}, Curr. loss : {loss}") + if idx % 100 == 0: + x_samp = sampler(1000) + scatterplot_saver(x_samp, f'{folder}/fakes_{idx:06}.png') + torch.save(model, f'{folder}/network_{idx:06}.pth', pickle_module=dill) + + + idx += 1 + if idx >= num_iters: + break