diff --git a/.gitattributes b/.gitattributes index bb133b8a643d885e5f992d0a3337435023db0c43..08b916da765bf0a0a37400f8923aa1a9d13e45ab 100644 --- a/.gitattributes +++ b/.gitattributes @@ -497,3 +497,119 @@ results/reflow_ep99_eval_8step/8_rain_flow.png filter=lfs diff=lfs merge=lfs -te results/reflow_ep99_eval_8step/8_rain_input.png filter=lfs diff=lfs merge=lfs -text results/reflow_ep99_eval_8step/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text results/reflow_ep99_eval_8step/9_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/0_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/0_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/10_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/10_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/11_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/11_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/12_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/12_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/13_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/13_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/14_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/14_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/15_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/15_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/16_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/16_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/17_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/17_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/18_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/18_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/19_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/19_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/1_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/1_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/20_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/20_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/21_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/21_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/22_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/22_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/23_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/23_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/24_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/24_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/25_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/25_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/26_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/26_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/27_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/27_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/28_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/28_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/29_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/29_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/2_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/2_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/30_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/30_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/31_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/31_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/32_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/32_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/33_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/33_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/34_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/34_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/35_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/35_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/36_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/36_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/37_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/37_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/38_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/38_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/39_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/39_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/3_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/3_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/40_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/40_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/41_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/41_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/42_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/42_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/43_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/43_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/44_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/44_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/45_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/45_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/46_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/46_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/47_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/47_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/48_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/48_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/49_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/49_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/4_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/4_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/50_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/50_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/51_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/51_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/52_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/52_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/53_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/53_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/54_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/54_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/55_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/55_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/56_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/56_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/57_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/57_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/5_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/5_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/6_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/6_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/7_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/7_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/8_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/8_rain_input.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/9_rain_flow.png filter=lfs diff=lfs merge=lfs -text +results/reflow_ep99_eval_1step_fixed/9_rain_input.png filter=lfs diff=lfs merge=lfs -text diff --git a/diff2flow.py b/diff2flow.py index 4566ce823e6862c899ab73084c15afb12cac8174..adbc19d28210fafd6ae4f3514c6c0623e716fee0 100644 --- a/diff2flow.py +++ b/diff2flow.py @@ -58,7 +58,7 @@ def get_beta_schedule(beta_schedule, *, beta_start, beta_end, num_diffusion_time class VPDiffusionFlow: def __init__(self, args, config): self.args = args - self.flow_mode = getattr(args, 'flow_mode', 'vp') + self.flow_mode = getattr(args, "flow_mode", "vp") self.config = config self.device = config.device @@ -134,9 +134,9 @@ class VPDiffusionFlow: # Calculate alpha_bar analytically for linear beta schedule scalar_t = t.item() if isinstance(t, torch.Tensor) else t scalar_t = max(0.0, min(1.0, scalar_t)) - + N = self.num_timesteps - + # Integral of N * (b0 + (b1-b0)*s) ds from 0 to t # = N * [ b0*t + 0.5*(b1-b0)*t^2 ] b0 = self.beta_start @@ -151,6 +151,13 @@ class VPDiffusionFlow: w_list = [i for i in range(0, w - output_size + 1, r)] return h_list, w_list + def get_blending_window(self, patch_size): + # Hanning window (cosine-based, smooth goes to 0 at edges) + # Using periodic=False (symmetric window) + w = torch.hann_window(patch_size, periodic=False, device=self.device) + w2d = w.unsqueeze(0) * w.unsqueeze(1) + return w2d.view(1, 1, patch_size, patch_size) + def get_velocity(self, x, t, x_cond, patch_size=None, r_stride=16): # If no patching needed (x fits in patch_size or patch_size None), do normal if patch_size is None or ( @@ -163,42 +170,56 @@ class VPDiffusionFlow: t_idx = min(int(t * N), N - 1) t_input_scalar = t_idx - # Grid setup - h_list, w_list = self.overlapping_grid_indices(x, patch_size, r=r_stride) + # --- Padding to handle edges --- + # Pad by patch_size // 2 to ensure original edges are covered by window center + pad_size = patch_size // 2 + x_padded = torch.nn.functional.pad( + x, (pad_size, pad_size, pad_size, pad_size), mode="reflect" + ) + x_cond_padded = torch.nn.functional.pad( + x_cond, (pad_size, pad_size, pad_size, pad_size), mode="reflect" + ) + + # Grid setup on PADDED image + h_list, w_list = self.overlapping_grid_indices(x_padded, patch_size, r=r_stride) corners = [(i, j) for i in h_list for j in w_list] + # Use Weighted Averaging (Hanning Window) to reduce grid artifacts + window = self.get_blending_window(patch_size) + # Mask for overlap averaging - # Cache this if t doesn't change grid? Grid depends on image size, which is constant during integration. - # But for now recompute is safer/easier. - x_grid_mask = torch.zeros_like(x, device=self.device) + x_grid_mask = torch.zeros_like(x_padded, device=self.device) for hi, wi in corners: - x_grid_mask[:, :, hi : hi + patch_size, wi : wi + patch_size] += 1 + x_grid_mask[:, :, hi : hi + patch_size, wi : wi + patch_size] += window # Accumulate output (epsilon or velocity) - output_accum = torch.zeros_like(x, device=self.device) + output_accum = torch.zeros_like(x_padded, device=self.device) # Process in batches batch_size = 64 # From restoration.py logic or config # Prepare params if VP - if self.flow_mode == 'vp': + if self.flow_mode == "vp": beta_discrete = self.get_beta_t(t) beta_cont = beta_discrete * N ab = self.alphas_cumprod[t_idx] - + # Loop over patches # NOTE: drift depends on x (noisy) and x_cond (clean/cond). for i in range(0, len(corners), batch_size): batch_corners = corners[i : i + batch_size] - # Crop batch + # Crop batch from PADDED input x_batch = torch.cat( - [crop(x, hi, wi, patch_size, patch_size) for (hi, wi) in batch_corners], + [ + crop(x_padded, hi, wi, patch_size, patch_size) + for (hi, wi) in batch_corners + ], dim=0, ) cond_batch = torch.cat( [ - crop(x_cond, hi, wi, patch_size, patch_size) + crop(x_cond_padded, hi, wi, patch_size, patch_size) for (hi, wi) in batch_corners ], dim=0, @@ -208,19 +229,33 @@ class VPDiffusionFlow: ) with torch.no_grad(): - model_output = self.model(torch.cat([cond_batch, x_batch], dim=1), t_batch) + model_output = self.model( + torch.cat([cond_batch, x_batch], dim=1), t_batch + ) + + # Scatter back with window weighting + # model_output: [B, C, P, P] + weighted_output = model_output * window - # Scatter back for idx, (hi, wi) in enumerate(batch_corners): output_accum[0, :, hi : hi + patch_size, wi : wi + patch_size] += ( - model_output[idx] + weighted_output[idx] ) # Average - model_output_full = torch.div(output_accum, x_grid_mask) + # Add epsilon to mask to avoid division by zero + model_output_full = torch.div(output_accum, x_grid_mask + 1e-8) + + # --- Crop back to original size --- + # x_padded was padded by pad_size on all sides. + # Original is at pad_size : -pad_size + if pad_size > 0: + model_output_full = model_output_full[ + :, :, pad_size:-pad_size, pad_size:-pad_size + ] # Compute v - if self.flow_mode == 'reflow': + if self.flow_mode == "reflow": # In Reflow, model output is velocity v = model_output_full else: @@ -229,7 +264,7 @@ class VPDiffusionFlow: coeff1 = -0.5 * beta_cont coeff2 = 0.5 * beta_cont / torch.sqrt(1 - ab) v = coeff1 * x + coeff2 * epsilon - + return v def _get_velocity_single(self, x, t, x_cond): @@ -245,7 +280,7 @@ class VPDiffusionFlow: with torch.no_grad(): model_output = self.model(torch.cat([x_cond, x], dim=1), t_input) - if self.flow_mode == 'reflow': + if self.flow_mode == "reflow": return model_output else: epsilon = model_output @@ -315,7 +350,11 @@ def main(): "--rtol", type=float, default=1e-4, help="Relative tolerance for ODE solver" ) parser.add_argument( - "--flow_mode", type=str, default="vp", choices=["vp", "reflow"], help="Flow mode: vp (default) or reflow" + "--flow_mode", + type=str, + default="vp", + choices=["vp", "reflow"], + help="Flow mode: vp (default) or reflow", ) args = parser.parse_args() diff --git a/generate_reflow_pairs.py b/generate_reflow_pairs.py index c997bf846a82f25c711407b0ade384969632f0e4..70db046093005c27dd4d22a97a2d7d125310227c 100644 --- a/generate_reflow_pairs.py +++ b/generate_reflow_pairs.py @@ -10,7 +10,17 @@ from diff2flow import VPDiffusionFlow, dict2namespace import datasets from tqdm import tqdm -def ode_inverse_solve(flow_model, x_data, x_cond, steps=100, method="dopri5", patch_size=64, atol=1e-5, rtol=1e-5): + +def ode_inverse_solve( + flow_model, + x_data, + x_cond, + steps=100, + method="dopri5", + patch_size=64, + atol=1e-5, + rtol=1e-5, +): """ Solves the ODE from t=0 (data) to t=1 (noise). Returns x_1 (noise latent). @@ -18,7 +28,7 @@ def ode_inverse_solve(flow_model, x_data, x_cond, steps=100, method="dopri5", pa # Define the drift function wrapper for torchdiffeq # For inversion, we integrate from 0 to 1. # The drift v(x, t) is defined for t in [0, 1]. - + def drift_func(t, x): # flow_model.get_velocity expects t in [0, 1] # When using torchdiffeq, t will be traversing 0->1. @@ -26,7 +36,7 @@ def ode_inverse_solve(flow_model, x_data, x_cond, steps=100, method="dopri5", pa # Time points from 0 to 1 t_eval = torch.linspace(0.0, 1.0, steps + 1, device=x_data.device) - + # Solve out = torchdiffeq.odeint( drift_func, x_data, t_eval, method=method, atol=atol, rtol=rtol @@ -34,6 +44,7 @@ def ode_inverse_solve(flow_model, x_data, x_cond, steps=100, method="dopri5", pa # Return final state at t=1 return out[-1] + def main(): parser = argparse.ArgumentParser() parser.add_argument("--config", type=str, required=True) @@ -47,40 +58,48 @@ def main(): parser.add_argument("--method", type=str, default="dopri5") parser.add_argument("--atol", type=float, default=1e-5) parser.add_argument("--rtol", type=float, default=1e-5) - parser.add_argument("--max_images", type=int, default=None, help="Max images to generate (for testing)") + parser.add_argument( + "--max_images", + type=int, + default=None, + help="Max images to generate (for testing)", + ) args = parser.parse_args() # Load Config with open(os.path.join("configs", args.config), "r") as f: config_dict = yaml.safe_load(f) config = dict2namespace(config_dict) - + if args.data_dir: config.data.data_dir = args.data_dir if args.dataset: config.data.dataset = args.dataset - + device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") config.device = device - + # Reproducibility torch.manual_seed(args.seed) np.random.seed(args.seed) - + # Load Model print("Initializing VPDiffusionFlow...") flow = VPDiffusionFlow(args, config) flow.load_ckpt(args.resume) - + os.makedirs(args.output_dir, exist_ok=True) - + # Load Dataset print(f"Loading dataset {config.data.dataset}...") DATASET = datasets.__dict__[config.data.dataset](config) - + # We use the TRAINING set to generate pairs for training the reflow model - train_loader, _ = DATASET.get_loaders(parse_patches=False, validation=config.data.dataset if args.dataset else 'raindrop') - + train_loader, _ = DATASET.get_loaders( + parse_patches=False, + validation=config.data.dataset if args.dataset else "raindrop", + ) + # We want to iterate over training data. Note: get_loaders usually returns (train_loader, val_loader). # RainDrop.get_loaders returns (train_loader, val_loader). # train_loader usually parses patches = True for original training. @@ -90,72 +109,75 @@ def main(): # The original training was likely on patches (RainDropDataset uses patch_size). # For Reflow, we should probably train on PATCHES to match the original training distribution and efficiency. # So let's use parse_patches=True for the loader to match training setup. - + # However, to use `ode_inverse_solve`, we need to follow the flow. # If we use patches, we can solve ODE for each patch independently. # This is consistent. - + # Re-get loaders with parse_patches=True to get training patches train_loader, _ = DATASET.get_loaders(parse_patches=True) - + print(f"Starting generation of reflow pairs...") - + count = 0 - + # Iterate through training patches - for i, (x_batch, img_id) in enumerate(tqdm(train_loader, desc="Generating Reflow Pairs")): + for i, (x_batch, img_id) in enumerate( + tqdm(train_loader, desc="Generating Reflow Pairs") + ): # x_batch: [B, N, 6, H, W] if parse_patches=True # Flatten B and N to process all patches if x_batch.ndim == 5: x_batch = x_batch.flatten(start_dim=0, end_dim=1) - - input_img = x_batch[:, :3, :, :].to(device) # Input (Rainy) - gt_img = x_batch[:, 3:, :, :].to(device) # GT (Clean) - + + input_img = x_batch[:, :3, :, :].to(device) # Input (Rainy) + gt_img = x_batch[:, 3:, :, :].to(device) # GT (Clean) + # Transform data to [-1, 1] x_cond = utils.sampling.data_transform(input_img) x_data = utils.sampling.data_transform(gt_img) - + # Run ODE Inversion: x_data (t=0) -> x_noise (t=1) # Note: patch_size argument in ode_inverse_solve usually used for stitching. # Here x_data IS a patch (e.g. 64x64 or config size). # So we can pass patch_size=None or just let it handle it. # Our VPDiffusionFlow.get_velocity handles patching if x > patch_size. # Here x is likely small. - + with torch.no_grad(): x_noise = ode_inverse_solve( - flow, - x_data, - x_cond, - steps=args.steps, - method=args.method, + flow, + x_data, + x_cond, + steps=args.steps, + method=args.method, patch_size=args.patch_size, - atol=args.atol, - rtol=args.rtol + atol=args.atol, + rtol=args.rtol, ) - + # Save pair (x_noise, x_cond, x_data) # x_noise is the 'target' input for the reflow model (at t=1) # x_data is the 'target' output (at t=0) # x_cond is the condition - + # We save this batch batch_data = { "x_noise": x_noise.cpu(), "x_data": x_data.cpu(), - "x_cond": x_cond.cpu() + "x_cond": x_cond.cpu(), } - + save_path = os.path.join(args.output_dir, f"batch_{i}.pth") torch.save(batch_data, save_path) - + print(f"Saved batch {i} to {save_path}") - + count += input_img.shape[0] if args.max_images and count >= args.max_images: print(f"Reached max images {args.max_images}") break + if __name__ == "__main__": main() diff --git a/results/reflow_ep99_eval_1step_fixed/0_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/0_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..79441c74dccedc6abb9efaf1128206f174a47319 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/0_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f42abb2682e851b3219756c2a035d317aed2b8b5ee4201131d81883b4b4ee9ca +size 621913 diff --git a/results/reflow_ep99_eval_1step_fixed/0_rain_input.png b/results/reflow_ep99_eval_1step_fixed/0_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..b412919cc747b93e35504ab9a9eb464dab83b63b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/0_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39d113839d5877614e47b8b6a0b277e4a5674bc49a3ca149a6fd849cc451d30d +size 396026 diff --git a/results/reflow_ep99_eval_1step_fixed/10_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/10_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b0fad51d1c790618d244d4b0b17a1ff9fc5055 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/10_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:023ec16e9887cf3b3256ad3d4bf0657e8c91bb2334d1fae44ec52988d1f64d8a +size 546552 diff --git a/results/reflow_ep99_eval_1step_fixed/10_rain_input.png b/results/reflow_ep99_eval_1step_fixed/10_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9443b74e5114d87a6f6e2434bee3b566065a0b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/10_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4deddb3c8ae3d5d0f69489ed76b7a70abf97b3934e485aa50258f3cd3f317f6 +size 323182 diff --git a/results/reflow_ep99_eval_1step_fixed/11_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/11_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..afaa293377253b51abf2534bc983ff2f2cef582e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/11_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:501bfaebb17d51aa879d70e224d7aeaabddb25d3502c8888edfedb3cb681c063 +size 572115 diff --git a/results/reflow_ep99_eval_1step_fixed/11_rain_input.png b/results/reflow_ep99_eval_1step_fixed/11_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..1e438727173fb5a352d6adb9ffbfa777b9f12c1c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/11_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:252cb7493ea8fabca1b1845ed4605425892097942c7e0486cc874f02bca4e13c +size 366803 diff --git a/results/reflow_ep99_eval_1step_fixed/12_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/12_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..37eb3386ea1957947af97caac653bee1934044bc --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/12_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b9988a9c40153b24e9e11f5dba15a77f8544bab760e89c15de229016b65dc09 +size 599764 diff --git a/results/reflow_ep99_eval_1step_fixed/12_rain_input.png b/results/reflow_ep99_eval_1step_fixed/12_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..6809f7a3e54fca9113a682708fd2391c0702d507 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/12_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3df4b9598121913a7466b2566c288751c13fbc55ebc73ae5a1adf3743a43ef23 +size 492788 diff --git a/results/reflow_ep99_eval_1step_fixed/13_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/13_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..77bf6ced9dba7b9c3a94b17c7570f2232ff11c23 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/13_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d27b09674c3ed7c8a8f532bd447e9f19424e7f98b260bd3c9affb84c5eec215e +size 589385 diff --git a/results/reflow_ep99_eval_1step_fixed/13_rain_input.png b/results/reflow_ep99_eval_1step_fixed/13_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..6711f7aec81d3ff4f753c5010e4d7747d8294fa5 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/13_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98ff22edea804e27c512ff33b95b964778f64dbbfc9803b1cdeb98911b0c0ee0 +size 372849 diff --git a/results/reflow_ep99_eval_1step_fixed/14_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/14_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..23547ce7199fd5dbd1d1c5f14abf1e9061ad028e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/14_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e966358e8e3bf7b01c432f0c1149c4784c221e55ecf673bcde5a08c0adcb156 +size 699733 diff --git a/results/reflow_ep99_eval_1step_fixed/14_rain_input.png b/results/reflow_ep99_eval_1step_fixed/14_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..3fcf0e1ed9e029f9e64aaca7213b73c05f0f4006 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/14_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ba3473bb5d2bacbae881e3ff100c4ecfc0f88201b99d31e6a2ac4e569520a28 +size 532436 diff --git a/results/reflow_ep99_eval_1step_fixed/15_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/15_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d4907e0ed5ff915f8e8526556d7d7e7a588253eb --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/15_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e7e5297a4c9a447c543dafa10ca5f0409225890e9e3610b9c656b21d021203e +size 646354 diff --git a/results/reflow_ep99_eval_1step_fixed/15_rain_input.png b/results/reflow_ep99_eval_1step_fixed/15_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..eb59f03c1402b035e5e9a66b72e80af297ef5074 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/15_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0aa14a8ddaad5ba506a50245010312bb08dbce72ca78770a982b40604be0bfdc +size 481653 diff --git a/results/reflow_ep99_eval_1step_fixed/16_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/16_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..9c517b161ffed348593dca8f556df57cb7490d1b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/16_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5698a1a2a3010db1ee37d15a610264544db6c724bc0ee0ca6904976a3317dfc +size 582402 diff --git a/results/reflow_ep99_eval_1step_fixed/16_rain_input.png b/results/reflow_ep99_eval_1step_fixed/16_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..bd55f5a84055a917056cdaf46472909ffc84e050 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/16_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a54153cf704b9e28b6fcf1d99bacdb3b006eba8a32c3ea565ac9584d28fc3692 +size 429058 diff --git a/results/reflow_ep99_eval_1step_fixed/17_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/17_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d1159267444bec5404653a36e6915b1d26a639 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/17_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bba89e200337ffc42eacfd702cc8e4e05299126f0b50dea10cc10a758cb456bf +size 577994 diff --git a/results/reflow_ep99_eval_1step_fixed/17_rain_input.png b/results/reflow_ep99_eval_1step_fixed/17_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..036a8d1a92bb132cc7d93f882b39e89f950beb62 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/17_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20c03e47dcba7e146f26dbbe10ec2d66f65713b6974aa88b1a50d530e3ad390e +size 386972 diff --git a/results/reflow_ep99_eval_1step_fixed/18_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/18_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4c99a7fb0af1d33eb00df868e95e4828b6767bae --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/18_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0694f9eaa3f6dc1632c6ae32aaaa25d15aebc977610da6073761b53e75b6de9 +size 603973 diff --git a/results/reflow_ep99_eval_1step_fixed/18_rain_input.png b/results/reflow_ep99_eval_1step_fixed/18_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7749ea238f5ac10c0765322ca4b0387197f6ff --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/18_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2c690eca0c3b365f2cec504edcd7677df5f17fdd70b394a45ee08c2c7e21de3 +size 391661 diff --git a/results/reflow_ep99_eval_1step_fixed/19_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/19_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..76a7dca1f2e026003b8d71d99e7a3f2dc51d8201 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/19_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4e2f596d130fb6b5ba8095bd65b211413e6232dcd1e2459366bc7b0af7eb00f +size 665996 diff --git a/results/reflow_ep99_eval_1step_fixed/19_rain_input.png b/results/reflow_ep99_eval_1step_fixed/19_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..383de38d48c6acb59370d52b2a41a6638e0cc6fa --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/19_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b96e84403ae84e2f707a5a1b48fac10ec687bb521a4bd0eea531024ef3853655 +size 577460 diff --git a/results/reflow_ep99_eval_1step_fixed/1_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/1_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc91f4861099ac7faf2d53ce3545f34dee74083 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/1_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f853287c255ebf9805b705e8ad40f0a897cf8c91facb27a3eb50d95a3809a68 +size 683273 diff --git a/results/reflow_ep99_eval_1step_fixed/1_rain_input.png b/results/reflow_ep99_eval_1step_fixed/1_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..b71f7d13989a8a9db1db3d5eee731a35dbc33283 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/1_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca6b62a56297c7b5a003cf66e5ace606f64c8303fb9e1eda10b6e6c1a5faac00 +size 516944 diff --git a/results/reflow_ep99_eval_1step_fixed/20_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/20_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4938d0c87d8a2502d05073c45983468f218914fb --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/20_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7c1c114364219424ed3e59f2640af4817be88d2a493f0d353e1fc94372e24f +size 725950 diff --git a/results/reflow_ep99_eval_1step_fixed/20_rain_input.png b/results/reflow_ep99_eval_1step_fixed/20_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4b1d3a0f7cf5c49f8a5542903d30128272c84f --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/20_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b15ea114a6f60a0e11e8e6777c1a5c35b9c85f52f7ad2517509399c99e1a9184 +size 608867 diff --git a/results/reflow_ep99_eval_1step_fixed/21_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/21_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0b9eb3bd45eb97eb238069f0876f5d023f2a55 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/21_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa604c60cf9df71fbce8f4bd5ebdb9e6957e82fee95f3f44f8c6e38301b492de +size 643879 diff --git a/results/reflow_ep99_eval_1step_fixed/21_rain_input.png b/results/reflow_ep99_eval_1step_fixed/21_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c275b1d70b01fb61cb23fcbd593d744b960ccf --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/21_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14fd4baff5036376daf0b83984eba9f33b6edf9d1faae67718fc93f8142cf84f +size 512145 diff --git a/results/reflow_ep99_eval_1step_fixed/22_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/22_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..8a16e4a6b2af26ab4ab04215fcdaafd1da6ab54e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/22_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30df02f687aa4194750e1dc76d9f844ec1d7b39d07d3d1450d5a25a0f825513c +size 687325 diff --git a/results/reflow_ep99_eval_1step_fixed/22_rain_input.png b/results/reflow_ep99_eval_1step_fixed/22_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..871c4c3e7f3782be2ae37f4fbda2a6779cc518a9 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/22_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7937cc67796f15e85b6ae12ab13b71eec43126cd4fd9426a10cf3aabbae3ed48 +size 514740 diff --git a/results/reflow_ep99_eval_1step_fixed/23_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/23_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..de74da0af1d2bb6a4c1fdb0fb90d5e8d20122eb7 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/23_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9dd41e0a1e38d6dc6d8aaaf8bb35f8c11a5073f1e37bd96544baf496502aef +size 634239 diff --git a/results/reflow_ep99_eval_1step_fixed/23_rain_input.png b/results/reflow_ep99_eval_1step_fixed/23_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..6eff4a400ff5aa2317ed19aad5c2cf8fc3a400b5 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/23_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d72421d76a15fca7e9b27656a21b250634acd7c284197fa3277a33402ac7dc39 +size 478856 diff --git a/results/reflow_ep99_eval_1step_fixed/24_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/24_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..a52d46fe59d6fea9baaf964360779e2669a56732 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/24_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe177fbe263baa11aba05b967f89f5e095abc537a3fa9db599d959d762ac05bd +size 702397 diff --git a/results/reflow_ep99_eval_1step_fixed/24_rain_input.png b/results/reflow_ep99_eval_1step_fixed/24_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..2d76439b9a07f97f5da41fb5ae6c1fc537e5206c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/24_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:710e76a693f89c0f179fc6a95582f196568d3967a50e1bea3047e472c1caa07d +size 529055 diff --git a/results/reflow_ep99_eval_1step_fixed/25_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/25_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e5bd4b0d17881d05d0e365118e072bb1c5d6fd --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/25_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:024e08867b8191b3612078bb7bc75283ac8dcfe9a8cc2962c42c8df332acd9ba +size 629483 diff --git a/results/reflow_ep99_eval_1step_fixed/25_rain_input.png b/results/reflow_ep99_eval_1step_fixed/25_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..6da37f621e492fc69b75815e533f8502f1ce440e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/25_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e6361ca9277281df0996f1a35e0d0c1638fb41e00eb7194bdc6fa8fa2fb36b0 +size 474900 diff --git a/results/reflow_ep99_eval_1step_fixed/26_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/26_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..9194078150c634c633a3dfb22306d2cbefc60027 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/26_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6beb8cb762564a57117a51f96fd7502a57c2c7170071727ccf2e19c0a79243a +size 622453 diff --git a/results/reflow_ep99_eval_1step_fixed/26_rain_input.png b/results/reflow_ep99_eval_1step_fixed/26_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..59d08d6d0afd21aea2f1b6614023217c154c01c4 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/26_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:122525ebebe8eacf09d0bd11cb389834a699c8549304b710264ba6287627299b +size 465510 diff --git a/results/reflow_ep99_eval_1step_fixed/27_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/27_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..35c46d49a523402c28a8ac63975e90ddf1e7e7c8 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/27_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f13b26f2a2f3510f2bb6d5a7f4382f7355fbaa79c0a48d7c94e6db8e49b92246 +size 600633 diff --git a/results/reflow_ep99_eval_1step_fixed/27_rain_input.png b/results/reflow_ep99_eval_1step_fixed/27_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5899f061edfe5d7e0b5ed10a0e1f5401389566 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/27_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b07f75cbb97dfaaea354275fd12003920c51e5ff231d41914b6958f3c197c41 +size 453938 diff --git a/results/reflow_ep99_eval_1step_fixed/28_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/28_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..54c6d916773690224f83a39dfb5ef73e219e3d91 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/28_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b1713dfe2a74da5944f652b0d17d6ab39ba7f66df223d0f35eab56eb39d0d40 +size 618875 diff --git a/results/reflow_ep99_eval_1step_fixed/28_rain_input.png b/results/reflow_ep99_eval_1step_fixed/28_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..9a60f2a371cc306db44387e4d95608f7aea0ee1b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/28_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ec7bef32f1bb7d2b2fbd613d1837d04166572da9217fecb3256dcc6f3f411b1 +size 432111 diff --git a/results/reflow_ep99_eval_1step_fixed/29_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/29_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b4de349247ef652a6a971267becf239563a16d --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/29_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a07bdc379b14d70c5c3fb1a721706c4f5483bc096c4084fd1b3b3c6bd24df19d +size 761527 diff --git a/results/reflow_ep99_eval_1step_fixed/29_rain_input.png b/results/reflow_ep99_eval_1step_fixed/29_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3fcedb08754418c03c28ce5d12abd91a2cf26c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/29_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:531a5e00f8174a01dbb2e6fdbe8bce64ee94041ab62a6ded9ec14f7385989c10 +size 686118 diff --git a/results/reflow_ep99_eval_1step_fixed/2_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/2_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2bf77f7340b8e6ab04886f662593fe395a84ef --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/2_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb9260be3aeafb76a09bf9e2ab2b376b5b3cd5e5d32655e99c0fef727bc0df12 +size 652793 diff --git a/results/reflow_ep99_eval_1step_fixed/2_rain_input.png b/results/reflow_ep99_eval_1step_fixed/2_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..e526bd1130f42e90682862a0b148050d68b592ef --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/2_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12e235a403f70b0522240bcfcaf406ade232f912129d549fe23a037c14382080 +size 489007 diff --git a/results/reflow_ep99_eval_1step_fixed/30_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/30_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc43ce50c6885897a9a175f7c36cfcbbd76b87b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/30_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64cb4e789f7ee29c755fa3ecf2ac42936e42f74d1b1bc33bbb874541d1e32a7b +size 623396 diff --git a/results/reflow_ep99_eval_1step_fixed/30_rain_input.png b/results/reflow_ep99_eval_1step_fixed/30_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..e0533c5f3d777d16d346d4fc8e2da5541a0899a3 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/30_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5999e4d74569af6359905f02f5734cc368b46e95b70afd153259c33a7ec59dc8 +size 529240 diff --git a/results/reflow_ep99_eval_1step_fixed/31_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/31_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..84fdc892a1867054469a9818cf7ac1544cd6e6a9 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/31_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1965cb9b5fb814dd0aded351f0d4efd48f97d3c136fca621b25d1ec5f447fbb7 +size 663111 diff --git a/results/reflow_ep99_eval_1step_fixed/31_rain_input.png b/results/reflow_ep99_eval_1step_fixed/31_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..7b024a4ed3ad7244c2a73dccc7548bb68c739b24 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/31_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3dad9c14fe08b4f7b5ceb1914232908dbc9f92be366aed8c3108917a2767d4f +size 486373 diff --git a/results/reflow_ep99_eval_1step_fixed/32_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/32_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..272b58db559938e13270a7cd3562b3d7d67838fd --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/32_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5964e85573f0731812a296a17b1afd558f8c999d7db6e8f9d99723b90f558f9 +size 593518 diff --git a/results/reflow_ep99_eval_1step_fixed/32_rain_input.png b/results/reflow_ep99_eval_1step_fixed/32_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..86f096b500f8629be4bfaf8e78a93e0ad3974ed1 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/32_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:604ce3cee88abe38593a2db43f9ba677a33094580a402efba8ccba587c333302 +size 417543 diff --git a/results/reflow_ep99_eval_1step_fixed/33_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/33_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bfa671052988d319aae70c69c4eec4963dcf57 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/33_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caf185a9d8a9ef2a659124401cb1547a4ee915cbca73f05986cb8a33f9b646d9 +size 662649 diff --git a/results/reflow_ep99_eval_1step_fixed/33_rain_input.png b/results/reflow_ep99_eval_1step_fixed/33_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..37e5c521ea7cf34540804bdb960c6a63317ac27c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/33_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:273964909ded3083f134fe514a58af1a71c9d840a16dd396bf0185a79bb26d19 +size 502788 diff --git a/results/reflow_ep99_eval_1step_fixed/34_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/34_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cea55665eaae2f8cf541f868be4391c9378a0d --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/34_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f863043b094c3d42a633da0f062940c5c5c26fda3f50b302672462cc709639e6 +size 549995 diff --git a/results/reflow_ep99_eval_1step_fixed/34_rain_input.png b/results/reflow_ep99_eval_1step_fixed/34_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..f3a6b714634dfdeb09c6957d5a70050ef5dcc86e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/34_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccf1742347c991db75ca828d2b637e0dd210b2c7d14a028dd9e80068230e9a8e +size 347956 diff --git a/results/reflow_ep99_eval_1step_fixed/35_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/35_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..dd768a2f114122352abeea674bd864efdd983b38 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/35_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c75073a8566d82a35fd5e22b3c656aca7a550e40e05a6ff7f6ac6e72c8e94c9 +size 600891 diff --git a/results/reflow_ep99_eval_1step_fixed/35_rain_input.png b/results/reflow_ep99_eval_1step_fixed/35_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..7d02f058b01e28a10a87e2f632d4145da6b93655 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/35_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9deda0181743673075bbfa84fb81f601ba0df8e7b2b15fc200edc212f8cef7af +size 377510 diff --git a/results/reflow_ep99_eval_1step_fixed/36_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/36_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..60b163758a5a290aa034a09a21f1476f1d3ccb92 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/36_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b90a4ba46687e82e3c30ba3d39979922a50083f048547ecdf94735d13d8f2ab +size 652834 diff --git a/results/reflow_ep99_eval_1step_fixed/36_rain_input.png b/results/reflow_ep99_eval_1step_fixed/36_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..144093231ee8851c1ad4137a92701aff505d4b21 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/36_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d2fb1ddf579027bbc959f2e5a53aabbe5a6524600317cf81799f0ff650929cc +size 532110 diff --git a/results/reflow_ep99_eval_1step_fixed/37_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/37_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..e988ce7f65d03d42bf4b64b3d4e335691b5f0f46 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/37_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370c6f0c3d1a5e3c0de4334b8bcb12ad175ff0ed3d0daa3b0cadb8f015d1a17f +size 587957 diff --git a/results/reflow_ep99_eval_1step_fixed/37_rain_input.png b/results/reflow_ep99_eval_1step_fixed/37_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8c2d66681427701c252f743dee50e9d4411c92 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/37_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e29c941c1a89df1abf71403e4bb432ea54da85774a577564e8fcd5626f24b125 +size 419206 diff --git a/results/reflow_ep99_eval_1step_fixed/38_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/38_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cc4c73caaa53f3bd532df9d356bff23bff68c6 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/38_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b0c1fa49ab7a47cdcfbfcf5d31c85731115c8e4585b5988cbfd17529b861fd8 +size 677069 diff --git a/results/reflow_ep99_eval_1step_fixed/38_rain_input.png b/results/reflow_ep99_eval_1step_fixed/38_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..ed22e719d2f5617ea7dc5153c00743c675103808 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/38_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d23902024136575b1e78d77617674235413df86431ab016e86e88e057ef914a6 +size 505472 diff --git a/results/reflow_ep99_eval_1step_fixed/39_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/39_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cac54a945393ab64200994742ff9f93e47de7f15 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/39_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a47472c8cce9662b29ab209fab35bb279515942520567771c3d216d8539e0c39 +size 658825 diff --git a/results/reflow_ep99_eval_1step_fixed/39_rain_input.png b/results/reflow_ep99_eval_1step_fixed/39_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..49bf9aa862bdf4df2480301ae6f0da6be13fa348 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/39_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370e023c2df963b8056cae72adf384ac0eb485a1bd1ea9f9d32566e55f504367 +size 465328 diff --git a/results/reflow_ep99_eval_1step_fixed/3_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/3_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..421dc3fa0381db67c41c7bd941abc4ee6d126820 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/3_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3907a1d98b77cb14e24161eab77aa88401b3949672ce492e71624bbd814cf72c +size 617366 diff --git a/results/reflow_ep99_eval_1step_fixed/3_rain_input.png b/results/reflow_ep99_eval_1step_fixed/3_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..e41615b0a1e41b9d59827e59bb7d442c6bfe1821 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/3_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94422a3b45675091320411df6779fde2c88a883984511b0c0bbb8ad73f21f92a +size 486967 diff --git a/results/reflow_ep99_eval_1step_fixed/40_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/40_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..180a2a2095edc343ead03464e2f07fc90bf7ee84 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/40_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e373ffdede05d915f8983495d683e0bfe0373885fe94af3a93fb28b8f4903483 +size 579371 diff --git a/results/reflow_ep99_eval_1step_fixed/40_rain_input.png b/results/reflow_ep99_eval_1step_fixed/40_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e7bdeba8b7df0aa768858b6be9968203ed6992 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/40_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:794cf9dd56cea22e8aaeb37d55e273f6010fcd5c89ec37ac5fd3a53ab14b70d9 +size 414339 diff --git a/results/reflow_ep99_eval_1step_fixed/41_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/41_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..13d70634e092ba4175480ebabfc695978e419293 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/41_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd171965afb7640ec3ad8cd9c132e08efed2550ffcbd2bd154f311ad0231470e +size 617695 diff --git a/results/reflow_ep99_eval_1step_fixed/41_rain_input.png b/results/reflow_ep99_eval_1step_fixed/41_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..91f52369aa6bcf8487d7f5ae3a0b08fa2f1c0aa3 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/41_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88a4e13411228d53afa9c38519cb8e57d719fd25abf544c3ef25f644ae04643d +size 467182 diff --git a/results/reflow_ep99_eval_1step_fixed/42_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/42_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..b1aef6b74793acb413a15d18fe6f584611708da1 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/42_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad984f45fb81c2fe6c115b2390d5142d3d7b36b5460caa3ba0d6ce42372ef40 +size 554074 diff --git a/results/reflow_ep99_eval_1step_fixed/42_rain_input.png b/results/reflow_ep99_eval_1step_fixed/42_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..98b48a419c3e1bceeb21d71e179f9293680af73f --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/42_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c6327c6cdceec889f28803be2b081e482eb6ddb6836a1b0e47229a8d4db3e14 +size 430167 diff --git a/results/reflow_ep99_eval_1step_fixed/43_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/43_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb58280bcedb7509ea4f682d32a718d093db3ae --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/43_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b09665ac0cfd09eff3a2fe081a812a7ba217a2657a5937a1db6e28b6ce5ce1c2 +size 648339 diff --git a/results/reflow_ep99_eval_1step_fixed/43_rain_input.png b/results/reflow_ep99_eval_1step_fixed/43_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..00eee3fcaea71810c4d3ccb865cc368629400169 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/43_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1716a94e627c4a5a7cb0188b67016dadbe752a7c412e65dbef61dbbdeec77ca2 +size 471781 diff --git a/results/reflow_ep99_eval_1step_fixed/44_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/44_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..8d03e16856ec39c799f985c5d9ec4ce41c20eb3d --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/44_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:705b4234d79d1841399ee38f7c59db56a85805751303eec3c94ba2f226b017c7 +size 633503 diff --git a/results/reflow_ep99_eval_1step_fixed/44_rain_input.png b/results/reflow_ep99_eval_1step_fixed/44_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b11b27bebbc7361837836b251dfb16644b089e --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/44_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:336d69fbd4a5f7d9ce3bfcf93dcece8217d1accadd009d7722105a3f5fc15090 +size 525254 diff --git a/results/reflow_ep99_eval_1step_fixed/45_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/45_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..353db1e2dc01e839b8270e6c0beb64375df04723 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/45_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:549d5f5f7533517ddcffb7a764505aba355df9a73c108c215f90434ff1624171 +size 691632 diff --git a/results/reflow_ep99_eval_1step_fixed/45_rain_input.png b/results/reflow_ep99_eval_1step_fixed/45_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..baec67df42ebd9394d751f5d8dc8fde35b20e2ce --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/45_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad3f9b0a8a737be417e32417444bf8062634a440f877edefb80dcdf867ffe1fc +size 617277 diff --git a/results/reflow_ep99_eval_1step_fixed/46_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/46_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..be6b82b38c223f37a461f894c0c722cc77de0237 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/46_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c11691d8221f5311ba583509dfc644949d85d8bbb2150c3d01ef8413a083b28e +size 656293 diff --git a/results/reflow_ep99_eval_1step_fixed/46_rain_input.png b/results/reflow_ep99_eval_1step_fixed/46_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b3c18cedd45a077ce31ee90ccb9ea0b2d960eb --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/46_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1af52ba99aa949ee1f515db360cde01349375061e0c511687e3d0bf67a20e56 +size 477549 diff --git a/results/reflow_ep99_eval_1step_fixed/47_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/47_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d83888c1c44b7bf42331e1c50055a2cdf826e8 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/47_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edcf5aa8477e10db45b98625efc0ef9ed5a6017c670ef0fff6c9eaa068c633db +size 683943 diff --git a/results/reflow_ep99_eval_1step_fixed/47_rain_input.png b/results/reflow_ep99_eval_1step_fixed/47_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..1861643717acdab5b8a01377b156d7a800535694 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/47_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13062b74e99f71385580c03abea9fb3a4ecf528cfb3c8d6b977a86099e8e78e5 +size 542103 diff --git a/results/reflow_ep99_eval_1step_fixed/48_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/48_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..ad199bb5c1d85fa97ebfe55b6404a5ee80918462 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/48_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fc9ca291d41d7b75749bb929b520cee8af2ff3b23087be8b8471e57b2626058 +size 663428 diff --git a/results/reflow_ep99_eval_1step_fixed/48_rain_input.png b/results/reflow_ep99_eval_1step_fixed/48_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d721e26dbf77d11c86ff37700b1a69fcd00728 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/48_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e367f1efceaa685864dfe8fecfd5d0423540ecbbac611adaf5ac5f76bd24f655 +size 590786 diff --git a/results/reflow_ep99_eval_1step_fixed/49_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/49_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..572161a83713eb23b911c18685d504cacff8d24c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/49_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b531415fbe23fbc1ed39673e10d7d625f78262f2f4fecd78fd74a96aec7655c +size 598882 diff --git a/results/reflow_ep99_eval_1step_fixed/49_rain_input.png b/results/reflow_ep99_eval_1step_fixed/49_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..931f5da66c47fb05a5e48d35c1dfc7026c321193 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/49_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d34231fff012159e4e01133f1359c3d3951ad08b67bc5fe994f95ed4148a1455 +size 397663 diff --git a/results/reflow_ep99_eval_1step_fixed/4_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/4_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..212d1c8ec7154ae3d1ff7ff899c55280459c6fca --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/4_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e42256fd3700ad19c61a45561d809fa5faf566206593e7ef0bf1144c4e44937 +size 623017 diff --git a/results/reflow_ep99_eval_1step_fixed/4_rain_input.png b/results/reflow_ep99_eval_1step_fixed/4_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..2687469015545729241ca6dab41e5ed6f4cbe313 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/4_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bda339e92ceacf5b37f48ea9926c40e3fbc6ace7f5fe5b957a039db0ee2b43c +size 434465 diff --git a/results/reflow_ep99_eval_1step_fixed/50_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/50_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..a384ff46b34d058854be0e3263dc6311f765d55b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/50_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:084af32e733df8f43a91ab847ab36559474be99d7ca52e2a14e0e4d4f1bcb8ba +size 623114 diff --git a/results/reflow_ep99_eval_1step_fixed/50_rain_input.png b/results/reflow_ep99_eval_1step_fixed/50_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6fb6642a96e3810e53cc2223399e2b7b204bd9 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/50_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03dfd96ff8cb64a474d893c0b63f48f76f8bfcb9454ee566ba27a9e63da41927 +size 439766 diff --git a/results/reflow_ep99_eval_1step_fixed/51_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/51_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..de7ca117b8904733acaf38aec028cc020049a4b8 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/51_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0847c5c0d8069f07399f248a5ebf56dd5c1bfcbb1a6b897c2717a62a52605d5e +size 676419 diff --git a/results/reflow_ep99_eval_1step_fixed/51_rain_input.png b/results/reflow_ep99_eval_1step_fixed/51_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0f58bfa4a997fda2eb77be779257b8819f2e3b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/51_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1df8662a35fb277492a107b8139e1c0cfee30b3d34258510c63e79bbd038cbea +size 539651 diff --git a/results/reflow_ep99_eval_1step_fixed/52_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/52_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d83ed000df58edfe0651d68a8d00b26d0c709242 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/52_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3299537fbf8de70047509daf0c8ccfc5bcdfeab7dea3b3e57dc41e8b7946cd0 +size 722155 diff --git a/results/reflow_ep99_eval_1step_fixed/52_rain_input.png b/results/reflow_ep99_eval_1step_fixed/52_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e9492172ba0c21b23747a683d097e49820ddc9 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/52_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56a5833dbd97e70985a88f4ce6e802819b8891b05db43d38524e10d41e7e9f23 +size 619971 diff --git a/results/reflow_ep99_eval_1step_fixed/53_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/53_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc7a7cb3fa493423c4c614c93646db2711f1831 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/53_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56829352b1b247fe50e489dbcb79350b74e0b951ceef325063ed853bc65b1d94 +size 678873 diff --git a/results/reflow_ep99_eval_1step_fixed/53_rain_input.png b/results/reflow_ep99_eval_1step_fixed/53_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..551b38be7a45b1849966f3c11e59b3d8fc3855f0 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/53_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af3560fc998575f084fbdd92a882e930f355ea01aaec866c69634c94fa7438a3 +size 535346 diff --git a/results/reflow_ep99_eval_1step_fixed/54_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/54_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..985d19e30ff5ad907680613ea58eaee30c0edd4b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/54_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38bab12795e06427a4554312e76f5614d162fc069fcf5be1aba0fb452ef53144 +size 648598 diff --git a/results/reflow_ep99_eval_1step_fixed/54_rain_input.png b/results/reflow_ep99_eval_1step_fixed/54_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..31899ebd2d73d262378a9483f2913e5984b1cc02 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/54_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85a26c38f68b8d2757e0fb28f5ca05b95a063426c9c1425ee34447fb997095cc +size 477877 diff --git a/results/reflow_ep99_eval_1step_fixed/55_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/55_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc88e6b85d78b6648e6a95a348f839197eb9fa6 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/55_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42406498f24928dd9df9a289a2c6966efa9bbc6da30991595140a3d3f80c4461 +size 654206 diff --git a/results/reflow_ep99_eval_1step_fixed/55_rain_input.png b/results/reflow_ep99_eval_1step_fixed/55_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..d9dc358e32e58d1568970fbca7ea0070712a19eb --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/55_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4290fd1244ae5655f781557d3de5e838f8c947643c43f017895527d5830b6297 +size 544412 diff --git a/results/reflow_ep99_eval_1step_fixed/56_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/56_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..8216e6dc4f26a30b7653eb052f0790a1ee0c04bc --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/56_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ebdfc675730e5b5e57c7e4fb6d8ea1beecd31a7467130f01c7ff8b73076b769 +size 696227 diff --git a/results/reflow_ep99_eval_1step_fixed/56_rain_input.png b/results/reflow_ep99_eval_1step_fixed/56_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..44f605466cc1e4a225f858a3506444eb24458c9c --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/56_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd9a6843a1f3dd7447dd7347aed66be26de4a8c18f66c87aa424e1522837f3c5 +size 550353 diff --git a/results/reflow_ep99_eval_1step_fixed/57_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/57_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..7560602409304dfec9ca1feebbb1e1b33df63c2d --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/57_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4573293569948a5e9113c9e91c733d525a100a6abdfe8782f60b1e2baf221aab +size 653721 diff --git a/results/reflow_ep99_eval_1step_fixed/57_rain_input.png b/results/reflow_ep99_eval_1step_fixed/57_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed08ccb68c58bdcac1ee421c5877c9a5a537315 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/57_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeb086bf98038259144499d2c75dd80ec4d91b54f78ec62ee2fba943367bed7f +size 483818 diff --git a/results/reflow_ep99_eval_1step_fixed/5_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/5_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd9617a13ffb91beddbd17afe8e73ed7c3b6a64 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/5_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6591f3eb614ae10727e57aecdc73fb04ea4e68f8c2c4249e40393d837a5ca62 +size 668978 diff --git a/results/reflow_ep99_eval_1step_fixed/5_rain_input.png b/results/reflow_ep99_eval_1step_fixed/5_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..e201a7b120654615dc196597c50a5e5af6fb7a5d --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/5_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b36487e5ecbfeed9ff75bcb8fc20849a21051f0c1962591a41214adcc08a222f +size 406862 diff --git a/results/reflow_ep99_eval_1step_fixed/6_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/6_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf574a70c67b24a62fa71d567982e92e386f63b --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/6_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afd766f3f647cc4c49b1943272dea7b8e6e63db6a6940c60ed9341811b778a3d +size 712795 diff --git a/results/reflow_ep99_eval_1step_fixed/6_rain_input.png b/results/reflow_ep99_eval_1step_fixed/6_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..9d519fa9309bc3f5a034c1da2c4bed39d0de1a85 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/6_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:827c2797304c6ccfecbd8c47b16e1c9075388350363827eeebaf5ee97c602ff2 +size 462035 diff --git a/results/reflow_ep99_eval_1step_fixed/7_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/7_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..831da3b3db7798b134101f7ddf48b55e85caa1d7 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/7_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95a896d021963a1accbb3682079f164c7b86dec3f8dfa1373a6e53733bdef735 +size 671723 diff --git a/results/reflow_ep99_eval_1step_fixed/7_rain_input.png b/results/reflow_ep99_eval_1step_fixed/7_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6b1ed83c198ac9adb7856d1b4d2fba3d5e8e0a --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/7_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8689e0b21368e1473e7c686138bb36f01ea5ab5d1f401eef53fd2c10f80f242 +size 494623 diff --git a/results/reflow_ep99_eval_1step_fixed/8_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/8_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffcefe257838f5205ef88557c9c89aa2c841884 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/8_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e16fe643c2a5b49181bc826c6c34aa96ad990d496becf6c7019d180a25ffa98 +size 644459 diff --git a/results/reflow_ep99_eval_1step_fixed/8_rain_input.png b/results/reflow_ep99_eval_1step_fixed/8_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb36204c68d2af46e26f1db90c2de1e3493f6fe --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/8_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:862b029e6af77cacb7a2530006b16e71b3ae097323513f2b66b9f65befef71eb +size 449906 diff --git a/results/reflow_ep99_eval_1step_fixed/9_rain_flow.png b/results/reflow_ep99_eval_1step_fixed/9_rain_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..df94c2904e2696eaab11a2c43ee1f00567310893 --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/9_rain_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25dcbc0e11633a4693d2f00efa28502adc30bc919170ba92e630487474314130 +size 618191 diff --git a/results/reflow_ep99_eval_1step_fixed/9_rain_input.png b/results/reflow_ep99_eval_1step_fixed/9_rain_input.png new file mode 100644 index 0000000000000000000000000000000000000000..4b47a0ddba76c4017937ad9a0ca4b6002a46b9da --- /dev/null +++ b/results/reflow_ep99_eval_1step_fixed/9_rain_input.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:678e551b7177ed2f5e9556674c7b9a59366f6f2738b92f08f2c7c60c15e2123d +size 489606 diff --git a/train_reflow.py b/train_reflow.py index fa5b7bd387d7d816ce67bb1b9e29219ab9d65c99..bbc7ec7f12ef74060c70509ec9039774e45e2282 100644 --- a/train_reflow.py +++ b/train_reflow.py @@ -12,14 +12,15 @@ from models.unet import DiffusionUNet from diff2flow import dict2namespace import utils.logging + class ReflowDataset(data.Dataset): def __init__(self, data_dir): super().__init__() self.files = sorted(glob.glob(os.path.join(data_dir, "*.pth"))) print(f"Found {len(self.files)} files in {data_dir}") - + def __len__(self): - # We might have batched files. + # We might have batched files. # For simplicity, let's load on demand. return len(self.files) @@ -29,16 +30,17 @@ class ReflowDataset(data.Dataset): # Since files are batched, returning a batch from __getitem__ is tricky for DataLoader if batch_size > 1. # However, if we set DataLoader batch_size=1, and use a custom collate, we can just return the batch tensor. # Or we can just load the whole batch and let the training loop handle it (gradient accumulation or just variable batch size). - + # Let's assume we train with whatever batch size was used for generation (or we can re-batch). # We'll just return the content of the file. path = self.files[index] data_dict = torch.load(path) return data_dict + def train_reflow(args, config): device = config.device - + # helper for tensorboard writer = SummaryWriter(log_dir=os.path.join(args.output, "logs")) @@ -46,62 +48,62 @@ def train_reflow(args, config): print("Loading model...") model = DiffusionUNet(config) model.to(device) - + # Load Pretrained Weights (Optional but recommended for Reflow) if args.resume: print(f"Loading pretrained weights from {args.resume}") checkpoint = torch.load(args.resume, map_location=device) - if 'state_dict' in checkpoint: - state_dict = checkpoint['state_dict'] + if "state_dict" in checkpoint: + state_dict = checkpoint["state_dict"] else: state_dict = checkpoint - + # Strip module. prefix new_state_dict = {} for k, v in state_dict.items(): - if k.startswith('module.'): + if k.startswith("module."): new_state_dict[k[7:]] = v else: new_state_dict[k] = v model.load_state_dict(new_state_dict, strict=True) - + optimizer = optim.Adam(model.parameters(), lr=config.optim.lr) - + # Dataset dataset = ReflowDataset(args.data_dir_reflow) # DataLoader: batch_size=1 because __getitem__ returns a batch already loader = data.DataLoader(dataset, batch_size=1, shuffle=True, num_workers=4) - + model.train() - + print("Starting training...") - + step = 0 - N = config.diffusion.num_diffusion_timesteps # e.g. 1000 - + N = config.diffusion.num_diffusion_timesteps # e.g. 1000 + for epoch in range(args.epochs): for i, batch_dict in enumerate(loader): # batch_dict contains keys with shape [1, B, C, H, W] due to DataLoader batch_size=1 - x_0 = batch_dict["x_data"].squeeze(0).to(device) # Data (Clean) - x_1 = batch_dict["x_noise"].squeeze(0).to(device) # Noise (Latent) - x_cond = batch_dict["x_cond"].squeeze(0).to(device) # Condition - + x_0 = batch_dict["x_data"].squeeze(0).to(device) # Data (Clean) + x_1 = batch_dict["x_noise"].squeeze(0).to(device) # Noise (Latent) + x_cond = batch_dict["x_cond"].squeeze(0).to(device) # Condition + B = x_0.shape[0] - + # Sample t uniform [0, 1] t = torch.rand(B, device=device) - + # Interpolate: x_t = t * x_1 + (1 - t) * x_0 # Note: Reflow definition: x_t = x_0 + t * (x_1 - x_0). # If t=0, x_t = x_0 (Data). If t=1, x_t = x_1 (Noise). # Velocity v = x_1 - x_0. # d x_t / dt = x_1 - x_0 = v. - + # Reshape t for broadcasting t_expand = t.view(B, 1, 1, 1) x_t = (1 - t_expand) * x_0 + t_expand * x_1 v_target = x_1 - x_0 - + # Prepare input for model # Model forward needs (x, t_emb). # Reuse UNet's embedding logic by scaling t @@ -109,33 +111,34 @@ def train_reflow(args, config): # VP-SDE config usually has t in 0..1000. # So we pass t * N. t_input = t * (N - 1) - + # Forward # Input to model: concat(x_cond, x_t) usually model_input = torch.cat([x_cond, x_t], dim=1) v_pred = model(model_input, t_input) - + # Loss loss = torch.mean((v_pred - v_target) ** 2) - + optimizer.zero_grad() loss.backward() optimizer.step() - + if step % 10 == 0: print(f"Epoch {epoch}, Step {step}, Loss: {loss.item():.6f}") writer.add_scalar("Loss/train", loss.item(), step) - + step += 1 - + # Save checkpoint if (epoch + 1) % 5 == 0 or epoch == 0: save_path = os.path.join(args.output, f"reflow_ckpt_{epoch}.pth") torch.save(model.state_dict(), save_path) print(f"Saved checkpoint to {save_path}") - + writer.close() + def main(): parser = argparse.ArgumentParser() parser.add_argument("--config", type=str, required=True) @@ -150,18 +153,19 @@ def main(): with open(os.path.join("configs", args.config), "r") as f: config_dict = yaml.safe_load(f) config = dict2namespace(config_dict) - + if args.lr: config.optim.lr = args.lr - + device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") config.device = device - + torch.manual_seed(args.seed) np.random.seed(args.seed) os.makedirs(args.output, exist_ok=True) - + train_reflow(args, config) + if __name__ == "__main__": main()