diff --git a/proj5/images/2.3_epoch_20.gif b/proj5/images/2.3_epoch_20.gif new file mode 100644 index 0000000..4f26896 Binary files /dev/null and b/proj5/images/2.3_epoch_20.gif differ diff --git a/proj5/images/2.5_epoch_20.gif b/proj5/images/2.5_epoch_20.gif new file mode 100644 index 0000000..022f0e3 Binary files /dev/null and b/proj5/images/2.5_epoch_20.gif differ diff --git a/proj5/images/amalfi_campfire.png b/proj5/images/amalfi_campfire.png new file mode 100644 index 0000000..5ddc10b Binary files /dev/null and b/proj5/images/amalfi_campfire.png differ diff --git a/proj5/images/avocado.png b/proj5/images/avocado.png new file mode 100644 index 0000000..1b5d045 Binary files /dev/null and b/proj5/images/avocado.png differ diff --git a/proj5/images/avocado_1.png b/proj5/images/avocado_1.png new file mode 100644 index 0000000..c32a2a4 Binary files /dev/null and b/proj5/images/avocado_1.png differ diff --git a/proj5/images/avocado_10.png b/proj5/images/avocado_10.png new file mode 100644 index 0000000..92c275d Binary files /dev/null and b/proj5/images/avocado_10.png differ diff --git a/proj5/images/avocado_20.png b/proj5/images/avocado_20.png new file mode 100644 index 0000000..fab9db0 Binary files /dev/null and b/proj5/images/avocado_20.png differ diff --git a/proj5/images/avocado_3.png b/proj5/images/avocado_3.png new file mode 100644 index 0000000..9bdf12a Binary files /dev/null and b/proj5/images/avocado_3.png differ diff --git a/proj5/images/avocado_5.png b/proj5/images/avocado_5.png new file mode 100644 index 0000000..b859b85 Binary files /dev/null and b/proj5/images/avocado_5.png differ diff --git a/proj5/images/avocado_7.png b/proj5/images/avocado_7.png new file mode 100644 index 0000000..49ff5f6 Binary files /dev/null and b/proj5/images/avocado_7.png differ diff --git a/proj5/images/bay_bridge.png b/proj5/images/bay_bridge.png new file mode 100644 index 0000000..4781eb3 Binary files /dev/null and b/proj5/images/bay_bridge.png differ diff --git a/proj5/images/bay_bridge_1.png b/proj5/images/bay_bridge_1.png new file mode 100644 index 0000000..e8aec35 Binary files /dev/null and b/proj5/images/bay_bridge_1.png differ diff --git a/proj5/images/bay_bridge_10.png b/proj5/images/bay_bridge_10.png new file mode 100644 index 0000000..a9b22e7 Binary files /dev/null and b/proj5/images/bay_bridge_10.png differ diff --git a/proj5/images/bay_bridge_20.png b/proj5/images/bay_bridge_20.png new file mode 100644 index 0000000..06582d0 Binary files /dev/null and b/proj5/images/bay_bridge_20.png differ diff --git a/proj5/images/bay_bridge_3.png b/proj5/images/bay_bridge_3.png new file mode 100644 index 0000000..fcacce7 Binary files /dev/null and b/proj5/images/bay_bridge_3.png differ diff --git a/proj5/images/bay_bridge_5.png b/proj5/images/bay_bridge_5.png new file mode 100644 index 0000000..1c15d28 Binary files /dev/null and b/proj5/images/bay_bridge_5.png differ diff --git a/proj5/images/bay_bridge_7.png b/proj5/images/bay_bridge_7.png new file mode 100644 index 0000000..6a7fa08 Binary files /dev/null and b/proj5/images/bay_bridge_7.png differ diff --git a/proj5/images/campanile_1.png b/proj5/images/campanile_1.png new file mode 100644 index 0000000..ed893d2 Binary files /dev/null and b/proj5/images/campanile_1.png differ diff --git a/proj5/images/campanile_10.png b/proj5/images/campanile_10.png new file mode 100644 index 0000000..7915bdf Binary files /dev/null and b/proj5/images/campanile_10.png differ diff --git a/proj5/images/campanile_20.png b/proj5/images/campanile_20.png new file mode 100644 index 0000000..48ee2f4 Binary files /dev/null and b/proj5/images/campanile_20.png differ diff --git a/proj5/images/campanile_250.png b/proj5/images/campanile_250.png new file mode 100644 index 0000000..88caaae Binary files /dev/null and b/proj5/images/campanile_250.png differ diff --git a/proj5/images/campanile_3.png b/proj5/images/campanile_3.png new file mode 100644 index 0000000..3d13973 Binary files /dev/null and b/proj5/images/campanile_3.png differ diff --git a/proj5/images/campanile_5.png b/proj5/images/campanile_5.png new file mode 100644 index 0000000..9fae43e Binary files /dev/null and b/proj5/images/campanile_5.png differ diff --git a/proj5/images/campanile_500.png b/proj5/images/campanile_500.png new file mode 100644 index 0000000..6bd9487 Binary files /dev/null and b/proj5/images/campanile_500.png differ diff --git a/proj5/images/campanile_7.png b/proj5/images/campanile_7.png new file mode 100644 index 0000000..e3fae9f Binary files /dev/null and b/proj5/images/campanile_7.png differ diff --git a/proj5/images/campanile_750.png b/proj5/images/campanile_750.png new file mode 100644 index 0000000..39c7a8c Binary files /dev/null and b/proj5/images/campanile_750.png differ diff --git a/proj5/images/campanile_gaussian_250.png b/proj5/images/campanile_gaussian_250.png new file mode 100644 index 0000000..fb1954a Binary files /dev/null and b/proj5/images/campanile_gaussian_250.png differ diff --git a/proj5/images/campanile_gaussian_500.png b/proj5/images/campanile_gaussian_500.png new file mode 100644 index 0000000..37b45b8 Binary files /dev/null and b/proj5/images/campanile_gaussian_500.png differ diff --git a/proj5/images/campanile_gaussian_750.png b/proj5/images/campanile_gaussian_750.png new file mode 100644 index 0000000..044dc14 Binary files /dev/null and b/proj5/images/campanile_gaussian_750.png differ diff --git a/proj5/images/campanile_gaussian_final.png b/proj5/images/campanile_gaussian_final.png new file mode 100644 index 0000000..d5db7c7 Binary files /dev/null and b/proj5/images/campanile_gaussian_final.png differ diff --git a/proj5/images/campanile_image.png b/proj5/images/campanile_image.png new file mode 100644 index 0000000..553f473 Binary files /dev/null and b/proj5/images/campanile_image.png differ diff --git a/proj5/images/campanile_inpainted.png b/proj5/images/campanile_inpainted.png new file mode 100644 index 0000000..4d22e94 Binary files /dev/null and b/proj5/images/campanile_inpainted.png differ diff --git a/proj5/images/campanile_iterative_240.png b/proj5/images/campanile_iterative_240.png new file mode 100644 index 0000000..6952692 Binary files /dev/null and b/proj5/images/campanile_iterative_240.png differ diff --git a/proj5/images/campanile_iterative_390.png b/proj5/images/campanile_iterative_390.png new file mode 100644 index 0000000..972b572 Binary files /dev/null and b/proj5/images/campanile_iterative_390.png differ diff --git a/proj5/images/campanile_iterative_540.png b/proj5/images/campanile_iterative_540.png new file mode 100644 index 0000000..f21ed35 Binary files /dev/null and b/proj5/images/campanile_iterative_540.png differ diff --git a/proj5/images/campanile_iterative_690.png b/proj5/images/campanile_iterative_690.png new file mode 100644 index 0000000..5813cac Binary files /dev/null and b/proj5/images/campanile_iterative_690.png differ diff --git a/proj5/images/campanile_iterative_90.png b/proj5/images/campanile_iterative_90.png new file mode 100644 index 0000000..958e749 Binary files /dev/null and b/proj5/images/campanile_iterative_90.png differ diff --git a/proj5/images/campanile_iterative_final.png b/proj5/images/campanile_iterative_final.png new file mode 100644 index 0000000..00a1b40 Binary files /dev/null and b/proj5/images/campanile_iterative_final.png differ diff --git a/proj5/images/campanile_mask.png b/proj5/images/campanile_mask.png new file mode 100644 index 0000000..53ff25e Binary files /dev/null and b/proj5/images/campanile_mask.png differ diff --git a/proj5/images/campanile_one_step_250.png b/proj5/images/campanile_one_step_250.png new file mode 100644 index 0000000..f2890bd Binary files /dev/null and b/proj5/images/campanile_one_step_250.png differ diff --git a/proj5/images/campanile_one_step_500.png b/proj5/images/campanile_one_step_500.png new file mode 100644 index 0000000..b2fc8d7 Binary files /dev/null and b/proj5/images/campanile_one_step_500.png differ diff --git a/proj5/images/campanile_one_step_750.png b/proj5/images/campanile_one_step_750.png new file mode 100644 index 0000000..fc752bb Binary files /dev/null and b/proj5/images/campanile_one_step_750.png differ diff --git a/proj5/images/campanile_one_step_final.png b/proj5/images/campanile_one_step_final.png new file mode 100644 index 0000000..62c306a Binary files /dev/null and b/proj5/images/campanile_one_step_final.png differ diff --git a/proj5/images/campanile_replace.png b/proj5/images/campanile_replace.png new file mode 100644 index 0000000..6f819e7 Binary files /dev/null and b/proj5/images/campanile_replace.png differ diff --git a/proj5/images/campfire_man_v1.png b/proj5/images/campfire_man_v1.png new file mode 100644 index 0000000..c248666 Binary files /dev/null and b/proj5/images/campfire_man_v1.png differ diff --git a/proj5/images/campfire_man_v2.png b/proj5/images/campfire_man_v2.png new file mode 100644 index 0000000..73d352a Binary files /dev/null and b/proj5/images/campfire_man_v2.png differ diff --git a/proj5/images/coffee_image.png b/proj5/images/coffee_image.png new file mode 100644 index 0000000..c55bdd5 Binary files /dev/null and b/proj5/images/coffee_image.png differ diff --git a/proj5/images/coffee_inpainted.png b/proj5/images/coffee_inpainted.png new file mode 100644 index 0000000..0447b71 Binary files /dev/null and b/proj5/images/coffee_inpainted.png differ diff --git a/proj5/images/coffee_mask.png b/proj5/images/coffee_mask.png new file mode 100644 index 0000000..1b56269 Binary files /dev/null and b/proj5/images/coffee_mask.png differ diff --git a/proj5/images/coffee_replace.png b/proj5/images/coffee_replace.png new file mode 100644 index 0000000..0747439 Binary files /dev/null and b/proj5/images/coffee_replace.png differ diff --git a/proj5/images/dog.png b/proj5/images/dog.png new file mode 100644 index 0000000..6fb1990 Binary files /dev/null and b/proj5/images/dog.png differ diff --git a/proj5/images/dog_1.png b/proj5/images/dog_1.png new file mode 100644 index 0000000..32cca00 Binary files /dev/null and b/proj5/images/dog_1.png differ diff --git a/proj5/images/dog_10.png b/proj5/images/dog_10.png new file mode 100644 index 0000000..2187b20 Binary files /dev/null and b/proj5/images/dog_10.png differ diff --git a/proj5/images/dog_20.png b/proj5/images/dog_20.png new file mode 100644 index 0000000..2daf530 Binary files /dev/null and b/proj5/images/dog_20.png differ diff --git a/proj5/images/dog_3.png b/proj5/images/dog_3.png new file mode 100644 index 0000000..d0a2a4f Binary files /dev/null and b/proj5/images/dog_3.png differ diff --git a/proj5/images/dog_5.png b/proj5/images/dog_5.png new file mode 100644 index 0000000..3ff7c5b Binary files /dev/null and b/proj5/images/dog_5.png differ diff --git a/proj5/images/dog_7.png b/proj5/images/dog_7.png new file mode 100644 index 0000000..f9c1f5d Binary files /dev/null and b/proj5/images/dog_7.png differ diff --git a/proj5/images/epoch_1_results_part1.2.1.png b/proj5/images/epoch_1_results_part1.2.1.png new file mode 100644 index 0000000..d46e55d Binary files /dev/null and b/proj5/images/epoch_1_results_part1.2.1.png differ diff --git a/proj5/images/epoch_20_class_results.png b/proj5/images/epoch_20_class_results.png new file mode 100644 index 0000000..5094ea1 Binary files /dev/null and b/proj5/images/epoch_20_class_results.png differ diff --git a/proj5/images/epoch_20_time_results.png b/proj5/images/epoch_20_time_results.png new file mode 100644 index 0000000..b8a7863 Binary files /dev/null and b/proj5/images/epoch_20_time_results.png differ diff --git a/proj5/images/epoch_5_class_results.png b/proj5/images/epoch_5_class_results.png new file mode 100644 index 0000000..d580553 Binary files /dev/null and b/proj5/images/epoch_5_class_results.png differ diff --git a/proj5/images/epoch_5_results_part1.2.1.png b/proj5/images/epoch_5_results_part1.2.1.png new file mode 100644 index 0000000..db0261e Binary files /dev/null and b/proj5/images/epoch_5_results_part1.2.1.png differ diff --git a/proj5/images/epoch_5_time_results.png b/proj5/images/epoch_5_time_results.png new file mode 100644 index 0000000..05fa6ee Binary files /dev/null and b/proj5/images/epoch_5_time_results.png differ diff --git a/proj5/images/forward_eqn.png b/proj5/images/forward_eqn.png new file mode 100644 index 0000000..3148eaf Binary files /dev/null and b/proj5/images/forward_eqn.png differ diff --git a/proj5/images/generated_1.png b/proj5/images/generated_1.png new file mode 100644 index 0000000..b6ae68c Binary files /dev/null and b/proj5/images/generated_1.png differ diff --git a/proj5/images/generated_2.png b/proj5/images/generated_2.png new file mode 100644 index 0000000..fa18101 Binary files /dev/null and b/proj5/images/generated_2.png differ diff --git a/proj5/images/generated_3.png b/proj5/images/generated_3.png new file mode 100644 index 0000000..3e21008 Binary files /dev/null and b/proj5/images/generated_3.png differ diff --git a/proj5/images/generated_4.png b/proj5/images/generated_4.png new file mode 100644 index 0000000..3473c2f Binary files /dev/null and b/proj5/images/generated_4.png differ diff --git a/proj5/images/generated_5.png b/proj5/images/generated_5.png new file mode 100644 index 0000000..8ed65ec Binary files /dev/null and b/proj5/images/generated_5.png differ diff --git a/proj5/images/generated_cfg_1.png b/proj5/images/generated_cfg_1.png new file mode 100644 index 0000000..15dd743 Binary files /dev/null and b/proj5/images/generated_cfg_1.png differ diff --git a/proj5/images/generated_cfg_2.png b/proj5/images/generated_cfg_2.png new file mode 100644 index 0000000..5809dc8 Binary files /dev/null and b/proj5/images/generated_cfg_2.png differ diff --git a/proj5/images/generated_cfg_3.png b/proj5/images/generated_cfg_3.png new file mode 100644 index 0000000..c168c00 Binary files /dev/null and b/proj5/images/generated_cfg_3.png differ diff --git a/proj5/images/generated_cfg_4.png b/proj5/images/generated_cfg_4.png new file mode 100644 index 0000000..aec3947 Binary files /dev/null and b/proj5/images/generated_cfg_4.png differ diff --git a/proj5/images/generated_cfg_5.png b/proj5/images/generated_cfg_5.png new file mode 100644 index 0000000..b4420d3 Binary files /dev/null and b/proj5/images/generated_cfg_5.png differ diff --git a/proj5/images/house_drawing.png b/proj5/images/house_drawing.png new file mode 100644 index 0000000..3fc6d95 Binary files /dev/null and b/proj5/images/house_drawing.png differ diff --git a/proj5/images/house_drawing_1.png b/proj5/images/house_drawing_1.png new file mode 100644 index 0000000..77dc057 Binary files /dev/null and b/proj5/images/house_drawing_1.png differ diff --git a/proj5/images/house_drawing_10.png b/proj5/images/house_drawing_10.png new file mode 100644 index 0000000..2eea382 Binary files /dev/null and b/proj5/images/house_drawing_10.png differ diff --git a/proj5/images/house_drawing_20.png b/proj5/images/house_drawing_20.png new file mode 100644 index 0000000..6171ffb Binary files /dev/null and b/proj5/images/house_drawing_20.png differ diff --git a/proj5/images/house_drawing_3.png b/proj5/images/house_drawing_3.png new file mode 100644 index 0000000..ab711e5 Binary files /dev/null and b/proj5/images/house_drawing_3.png differ diff --git a/proj5/images/house_drawing_5.png b/proj5/images/house_drawing_5.png new file mode 100644 index 0000000..60954db Binary files /dev/null and b/proj5/images/house_drawing_5.png differ diff --git a/proj5/images/house_drawing_7.png b/proj5/images/house_drawing_7.png new file mode 100644 index 0000000..1b16fcd Binary files /dev/null and b/proj5/images/house_drawing_7.png differ diff --git a/proj5/images/hybrid_algo.png b/proj5/images/hybrid_algo.png new file mode 100644 index 0000000..5e77d78 Binary files /dev/null and b/proj5/images/hybrid_algo.png differ diff --git a/proj5/images/inpainting_eqn.png b/proj5/images/inpainting_eqn.png new file mode 100644 index 0000000..f647398 Binary files /dev/null and b/proj5/images/inpainting_eqn.png differ diff --git a/proj5/images/iterative_denoising_eqn.png b/proj5/images/iterative_denoising_eqn.png new file mode 100644 index 0000000..f72d10a Binary files /dev/null and b/proj5/images/iterative_denoising_eqn.png differ diff --git a/proj5/images/man_dog_1.png b/proj5/images/man_dog_1.png new file mode 100644 index 0000000..3fee59a Binary files /dev/null and b/proj5/images/man_dog_1.png differ diff --git a/proj5/images/man_dog_10.png b/proj5/images/man_dog_10.png new file mode 100644 index 0000000..ddb147e Binary files /dev/null and b/proj5/images/man_dog_10.png differ diff --git a/proj5/images/man_dog_20.png b/proj5/images/man_dog_20.png new file mode 100644 index 0000000..27c26e1 Binary files /dev/null and b/proj5/images/man_dog_20.png differ diff --git a/proj5/images/man_dog_3.png b/proj5/images/man_dog_3.png new file mode 100644 index 0000000..cedea23 Binary files /dev/null and b/proj5/images/man_dog_3.png differ diff --git a/proj5/images/man_dog_5.png b/proj5/images/man_dog_5.png new file mode 100644 index 0000000..79a4497 Binary files /dev/null and b/proj5/images/man_dog_5.png differ diff --git a/proj5/images/man_dog_7.png b/proj5/images/man_dog_7.png new file mode 100644 index 0000000..338d9f9 Binary files /dev/null and b/proj5/images/man_dog_7.png differ diff --git a/proj5/images/man_hat_100.png b/proj5/images/man_hat_100.png new file mode 100644 index 0000000..f01a886 Binary files /dev/null and b/proj5/images/man_hat_100.png differ diff --git a/proj5/images/man_hat_20.png b/proj5/images/man_hat_20.png new file mode 100644 index 0000000..4333104 Binary files /dev/null and b/proj5/images/man_hat_20.png differ diff --git a/proj5/images/mike_1.png b/proj5/images/mike_1.png new file mode 100644 index 0000000..fd63c6b Binary files /dev/null and b/proj5/images/mike_1.png differ diff --git a/proj5/images/mike_10.png b/proj5/images/mike_10.png new file mode 100644 index 0000000..a0e9d8b Binary files /dev/null and b/proj5/images/mike_10.png differ diff --git a/proj5/images/mike_20.png b/proj5/images/mike_20.png new file mode 100644 index 0000000..57f9c83 Binary files /dev/null and b/proj5/images/mike_20.png differ diff --git a/proj5/images/mike_3.png b/proj5/images/mike_3.png new file mode 100644 index 0000000..ed61beb Binary files /dev/null and b/proj5/images/mike_3.png differ diff --git a/proj5/images/mike_5.png b/proj5/images/mike_5.png new file mode 100644 index 0000000..f5bedeb Binary files /dev/null and b/proj5/images/mike_5.png differ diff --git a/proj5/images/mike_7.png b/proj5/images/mike_7.png new file mode 100644 index 0000000..b3ad21e Binary files /dev/null and b/proj5/images/mike_7.png differ diff --git a/proj5/images/mike_original.png b/proj5/images/mike_original.png new file mode 100644 index 0000000..901dc5c Binary files /dev/null and b/proj5/images/mike_original.png differ diff --git a/proj5/images/one_step_unet_arch.png b/proj5/images/one_step_unet_arch.png new file mode 100644 index 0000000..67c0d74 Binary files /dev/null and b/proj5/images/one_step_unet_arch.png differ diff --git a/proj5/images/out-of-distribution_sigmas.png b/proj5/images/out-of-distribution_sigmas.png new file mode 100644 index 0000000..b2dd984 Binary files /dev/null and b/proj5/images/out-of-distribution_sigmas.png differ diff --git a/proj5/images/pencil_bridge_1.png b/proj5/images/pencil_bridge_1.png new file mode 100644 index 0000000..bccaecd Binary files /dev/null and b/proj5/images/pencil_bridge_1.png differ diff --git a/proj5/images/pencil_bridge_10.png b/proj5/images/pencil_bridge_10.png new file mode 100644 index 0000000..b5ed923 Binary files /dev/null and b/proj5/images/pencil_bridge_10.png differ diff --git a/proj5/images/pencil_bridge_20.png b/proj5/images/pencil_bridge_20.png new file mode 100644 index 0000000..f14a2e6 Binary files /dev/null and b/proj5/images/pencil_bridge_20.png differ diff --git a/proj5/images/pencil_bridge_3.png b/proj5/images/pencil_bridge_3.png new file mode 100644 index 0000000..f4f888b Binary files /dev/null and b/proj5/images/pencil_bridge_3.png differ diff --git a/proj5/images/pencil_bridge_5.png b/proj5/images/pencil_bridge_5.png new file mode 100644 index 0000000..819b486 Binary files /dev/null and b/proj5/images/pencil_bridge_5.png differ diff --git a/proj5/images/pencil_bridge_7.png b/proj5/images/pencil_bridge_7.png new file mode 100644 index 0000000..f7b76d3 Binary files /dev/null and b/proj5/images/pencil_bridge_7.png differ diff --git a/proj5/images/rocket_campanile_1.png b/proj5/images/rocket_campanile_1.png new file mode 100644 index 0000000..eac61dd Binary files /dev/null and b/proj5/images/rocket_campanile_1.png differ diff --git a/proj5/images/rocket_campanile_10.png b/proj5/images/rocket_campanile_10.png new file mode 100644 index 0000000..79754fc Binary files /dev/null and b/proj5/images/rocket_campanile_10.png differ diff --git a/proj5/images/rocket_campanile_20.png b/proj5/images/rocket_campanile_20.png new file mode 100644 index 0000000..47ab4fc Binary files /dev/null and b/proj5/images/rocket_campanile_20.png differ diff --git a/proj5/images/rocket_campanile_3.png b/proj5/images/rocket_campanile_3.png new file mode 100644 index 0000000..9de8e39 Binary files /dev/null and b/proj5/images/rocket_campanile_3.png differ diff --git a/proj5/images/rocket_campanile_5.png b/proj5/images/rocket_campanile_5.png new file mode 100644 index 0000000..e40575c Binary files /dev/null and b/proj5/images/rocket_campanile_5.png differ diff --git a/proj5/images/rocket_campanile_7.png b/proj5/images/rocket_campanile_7.png new file mode 100644 index 0000000..399afe5 Binary files /dev/null and b/proj5/images/rocket_campanile_7.png differ diff --git a/proj5/images/rocketship_100.png b/proj5/images/rocketship_100.png new file mode 100644 index 0000000..0f51c5c Binary files /dev/null and b/proj5/images/rocketship_100.png differ diff --git a/proj5/images/rocketship_20.png b/proj5/images/rocketship_20.png new file mode 100644 index 0000000..3a9faed Binary files /dev/null and b/proj5/images/rocketship_20.png differ diff --git a/proj5/images/sigmas_noise.png b/proj5/images/sigmas_noise.png new file mode 100644 index 0000000..e7cc9fe Binary files /dev/null and b/proj5/images/sigmas_noise.png differ diff --git a/proj5/images/smiski_image.png b/proj5/images/smiski_image.png new file mode 100644 index 0000000..274a542 Binary files /dev/null and b/proj5/images/smiski_image.png differ diff --git a/proj5/images/smiski_inpainted.png b/proj5/images/smiski_inpainted.png new file mode 100644 index 0000000..7a2142f Binary files /dev/null and b/proj5/images/smiski_inpainted.png differ diff --git a/proj5/images/smiski_mask.png b/proj5/images/smiski_mask.png new file mode 100644 index 0000000..7cfd76e Binary files /dev/null and b/proj5/images/smiski_mask.png differ diff --git a/proj5/images/smiski_replace.png b/proj5/images/smiski_replace.png new file mode 100644 index 0000000..4f407b5 Binary files /dev/null and b/proj5/images/smiski_replace.png differ diff --git a/proj5/images/snowy_village_100.png b/proj5/images/snowy_village_100.png new file mode 100644 index 0000000..57a6e4b Binary files /dev/null and b/proj5/images/snowy_village_100.png differ diff --git a/proj5/images/snowy_village_20.png b/proj5/images/snowy_village_20.png new file mode 100644 index 0000000..470e8e6 Binary files /dev/null and b/proj5/images/snowy_village_20.png differ diff --git a/proj5/images/time_conditioning_unet_arch.png b/proj5/images/time_conditioning_unet_arch.png new file mode 100644 index 0000000..c9a642b Binary files /dev/null and b/proj5/images/time_conditioning_unet_arch.png differ diff --git a/proj5/images/training_loss.png b/proj5/images/training_loss.png new file mode 100644 index 0000000..543f0b0 Binary files /dev/null and b/proj5/images/training_loss.png differ diff --git a/proj5/images/training_loss_blooper.png b/proj5/images/training_loss_blooper.png new file mode 100644 index 0000000..e703f82 Binary files /dev/null and b/proj5/images/training_loss_blooper.png differ diff --git a/proj5/images/training_loss_class-conditioned.png b/proj5/images/training_loss_class-conditioned.png new file mode 100644 index 0000000..ae1a799 Binary files /dev/null and b/proj5/images/training_loss_class-conditioned.png differ diff --git a/proj5/images/training_loss_time-conditioned.png b/proj5/images/training_loss_time-conditioned.png new file mode 100644 index 0000000..cb12e8f Binary files /dev/null and b/proj5/images/training_loss_time-conditioned.png differ diff --git a/proj5/images/turtle_drawing.png b/proj5/images/turtle_drawing.png new file mode 100644 index 0000000..65e9861 Binary files /dev/null and b/proj5/images/turtle_drawing.png differ diff --git a/proj5/images/turtle_drawing_1.png b/proj5/images/turtle_drawing_1.png new file mode 100644 index 0000000..3fb8af9 Binary files /dev/null and b/proj5/images/turtle_drawing_1.png differ diff --git a/proj5/images/turtle_drawing_10.png b/proj5/images/turtle_drawing_10.png new file mode 100644 index 0000000..eb7343c Binary files /dev/null and b/proj5/images/turtle_drawing_10.png differ diff --git a/proj5/images/turtle_drawing_20.png b/proj5/images/turtle_drawing_20.png new file mode 100644 index 0000000..6c56780 Binary files /dev/null and b/proj5/images/turtle_drawing_20.png differ diff --git a/proj5/images/turtle_drawing_3.png b/proj5/images/turtle_drawing_3.png new file mode 100644 index 0000000..0818d67 Binary files /dev/null and b/proj5/images/turtle_drawing_3.png differ diff --git a/proj5/images/turtle_drawing_5.png b/proj5/images/turtle_drawing_5.png new file mode 100644 index 0000000..fc4019b Binary files /dev/null and b/proj5/images/turtle_drawing_5.png differ diff --git a/proj5/images/turtle_drawing_7.png b/proj5/images/turtle_drawing_7.png new file mode 100644 index 0000000..1efa3db Binary files /dev/null and b/proj5/images/turtle_drawing_7.png differ diff --git a/proj5/images/village_amalfi_v1.png b/proj5/images/village_amalfi_v1.png new file mode 100644 index 0000000..fb19bf6 Binary files /dev/null and b/proj5/images/village_amalfi_v1.png differ diff --git a/proj5/images/village_amalfi_v2.png b/proj5/images/village_amalfi_v2.png new file mode 100644 index 0000000..c5bbda5 Binary files /dev/null and b/proj5/images/village_amalfi_v2.png differ diff --git a/proj5/images/village_old.png b/proj5/images/village_old.png new file mode 100644 index 0000000..26e55b6 Binary files /dev/null and b/proj5/images/village_old.png differ diff --git a/proj5/images/village_old_v2.png b/proj5/images/village_old_v2.png new file mode 100644 index 0000000..28ee1b1 Binary files /dev/null and b/proj5/images/village_old_v2.png differ diff --git a/proj5/images/visual_anagrams_algo.png b/proj5/images/visual_anagrams_algo.png new file mode 100644 index 0000000..6863408 Binary files /dev/null and b/proj5/images/visual_anagrams_algo.png differ diff --git a/proj5/images/waterfall_skull.png b/proj5/images/waterfall_skull.png new file mode 100644 index 0000000..376baf9 Binary files /dev/null and b/proj5/images/waterfall_skull.png differ diff --git a/proj5/images/waterfalls_skulls_v1.png b/proj5/images/waterfalls_skulls_v1.png new file mode 100644 index 0000000..a018114 Binary files /dev/null and b/proj5/images/waterfalls_skulls_v1.png differ diff --git a/proj5/images/waterfalls_skulls_v2.png b/proj5/images/waterfalls_skulls_v2.png new file mode 100644 index 0000000..ed02942 Binary files /dev/null and b/proj5/images/waterfalls_skulls_v2.png differ diff --git a/proj5/index.html b/proj5/index.html new file mode 100644 index 0000000..22bfd6d --- /dev/null +++ b/proj5/index.html @@ -0,0 +1,684 @@ +cs180: proj5

cs180: proj5

Fun With Diffusion Models

Project 5A: The Power of Diffusion Models

We focus on working with the pre-trained, text-to-image DeepFloyd IF diffusion model, experimenting with inpainting and creating optical illusions.

Part 0: Setup

With the random seed of 180, I tried out 3 prompts, each with num_inference_steps values of 20 and 100. Overall, I observed how more steps resulted in higher quality outputs. With num_inference_steps = 20 outputs, the outputs look glossy and don’t quite capture the texture — the man looks airbrushed and oil painting looks cartoon-ish. With num_inference_steps = 100, the man looks more realistic, the rocket ship has a detailed background, and the snowy village looks more like an actual oil painting.

a man wearing a hat (20 steps)
a rocket ship (20 steps)
an oil painting of a snowy mountain village (20 steps)
a man wearing a hat (100 steps)
a rocket ship (100 steps)
an oil painting of a snowy mountain village (100 steps)

Part 1: Sampling Loops

1.1: Implementing the Forward Process

To take a clean image and add noise to it, I implemented forward(im, t) where the original image as im and timestep as t allow us to add more noise as t increases. This process is equivalent to computing the below equation:

Here are my results with the given campanile test image.

original
t = 250
t = 500
t = 750

1.2: Classical Denoising

With Gaussian blur filtering, by attempting to get rid of the noise, we get rid of the “signal” (the original image). As a result, we can see it is still difficult to recover the original image as the denoised output does not work well. Here are the side-by-side results.

Top row: Part 1.1’s results; Bottom row: Gaussian blur denoising results

t = 250
t = 500
t = 750
t = 250
t = 500
t = 750

1.3: One-Step Denoising

Using a pre-trained UNet, we estimate the image’s Gaussian noise at timestep t and can then remove said noise to (try to) recover the original image. Overall, this process performs better than Part 1.2’s Gaussian blur, but higher t values result in a deviation from the campanile’s actual look. Here are the side-by-side results.

Top row: original image; Middle row: Part 1.1’s results; Bottom row: one-step denoising results

original
t = 250
t = 500
t = 750
t = 250
t = 500
t = 750

1.4: Iterative Denoising

To address one-step denoising’s issue with higher t values, we implement iterative denoising. Each stride has a step size of 30, and we start at t = 990 and work our way down to t = 0. This process is equivalent to computing the below equation:

Here are the results of the process (displaying the process for every 5 loops).

t = 690
t = 540
t = 390
t = 240
t = 90

As a recap, here is the original image with the other methods’ results. As we can see, the best, most-detailed result is the iteratively denoised image.

original
gaussian
one-step
iterative

1.5: Diffusion Model Sampling

With the iterative_denoise function implemented, I can generate images from completely noisy images. Here are some of my results (not the best quality and independent of seed).

1.6: Classifier-Free Guidance (CFG)

To improve the results from Part 1.5, we can add both an unconditional and conditional noise estimate. Using the technique from the Classifier-Free Diffusion Guidance paper, we define our new noise estimate as the equation below, with γ\gamma controlling the CFG’s strength. Here are 5 images with a CFG scale of γ=7\gamma = 7.

1.7: Image-to-Image Translation

Using iterative_denoise_cfg, we add noise to the original image and then iteratively denoise it to generate new images. For all images, I used noise levels [1, 3, 5, 7, 10, 20] and text prompt "a high quality photo". Here are the results for the given campanile_image.png and my chosen dog.png and bay_bridge.png.

From left to right: increasing noise level, ending with the original image

1.7.1: Editing Hand-Drawn and Web Images

Now, let’s run this same process for hand-drawn and non-realistic images. For all images, I used noise levels [1, 3, 5, 7, 10, 20] and text prompt "a high quality photo". Here are the results for the internet’s avocado.png and mike.png as well as my hand-drawn house.png and turtle.png.

From left to right: increasing noise level, ending with the original image

1.7.2: Inpainting

Using a similar process, we implement the inpaint function to create a new image with the same content where m=0m = 0 but new content where m=1m = 1. Following the RePaint paper, we run the diffusion denoising loop and compute the below equation:

Here are the results for the given campanile_image.png and my chosen coffee.png and smiski.png.

From left to right: original, mask, to fill, inpainted

The smiski one is funny :)

1.7.3: Text-Conditional Image-to-Image Translation

Now, we continue the SDEdit method but guide the projection with a text prompt. Our goal is to create images that gradually look more like the original image while still maintaining similarity to the text prompt. For all images, I used noise levels [1, 3, 5, 7, 10, 20]. Here are the results.

From left to right: increasing noise level, ending with the original image

Given: campanile_image.png with "a rocket ship” prompt

Chosen: dog.png with "a photo of a man” prompt

Chosen: bay_bridge.png with "a pencil” prompt

1.8: Visual Anagrams

Visual anagrams are images which look like two different images when rotated 180 degrees. To generate visual anagrams, I denoised two times — first, for the original image with prompt 1 and second, for the flipped image with prompt 2. At each step, we combine them by averaging the two noise estimates. This process is equivalent to the below algorithm:

Given: "an oil painting of people around a campfire” with "an oil painting of an old man”

Chosen: “an oil painting of a snowy mountain village” with “a photo of the amalfi coast”

Chosen: “a lithograph of waterfalls” with “a lithograph of a skull”

1.9: Hybrid Images

Hybrid images are images which look like two different images when looking at it up-close versus afar. To generate hybrid images, I denoised the image using 2 prompts. At each step, we combine them by passing one through a high-pass filter and the other through a low-pass filter. To do so, I used a Gaussian blur of kernel_size = 33 and σ\sigmaσ = 2. Following the Factorized Diffusion paper, this process is equivalent to the below algorithm:

Given: “skull” from far away, ”waterfall” when close up

Chosen: “campfire” from far away, ”amalfi coast” when close up

Chosen: “old man” from far away, ”snowy village” when close up

Note: showing two because both are pretty cool!

Project 5B: Diffusion Models from Scratch

With all the learning and experimentation with diffusion models in Part A, we trained our own diffusion models on MNIST in Part B.

Part 1: Training a Single-Step Denoising UNet

1.1: Implementing the UNet

We implemented a one-step denoiser using the UNet architecture below.

1.2: Using the UNet to Train a Denoiser

To prepare for training the denoiser, we need to generate noisy images. We do so by adding noise to a clean MNIST image using z=x+σϵz = x + \sigma * \epsilon, where xx is a clean MNIST digit, σ\sigma is a constant, and ϵN(0,I)\epsilon \sim N(0,I). Our goal is to recover xx if given zz.

1.2.1: Training

Now, we can train a denoiser with σ=0.5σ = 0.5 and hidden dimension D=128D = 128 on the MNIST dataset. We use an Adam optimizer with a learning rate of 1e-4 and train for 5 epochs. Here is the training process’s loss curve plot.

With training completed, here are the denoised results on the test set. It works decently well, with cleaner results from epoch 5 (best seen with the digit 0 and leftmost digit 3 examples).

From top to bottom: original, noisy σ=0.5\mathit{σ = 0.5}, denoised

  • 1 Epoch of Training
  • 5 Epochs of Training

1.2.2: Out-of-Distribution Testing

We’ve trained our denoiser on noisy σ=0.5σ = 0.5 digits. Here are the results with more noisy (higher σσ) and less noisy (lower σσ) test set digits.

Part 2: Training a Diffusion Model

2.1: Adding Time Conditioning to UNet

We now need to implement a Denoising Diffusion Probabilistic Model (DDPM) to build and train a UNet model that iteratively denoises an image. This UNet follows the architecture below, containing the new operator FCBlock (fully-connected block) to support the conditioning signal.

2.2: Training the UNet

Now, we can train a time-conditioned UNet to predict the noise in xtx_t if given noisy image xtx_t and timestep tt. We do so by selecting a random image, random tt, predict the noise, and repeat until the model converges. Here is the training process’s loss curve plot.

2.3: Sampling from the UNet

With training complete, here are the results for the time-conditioned UNet, focusing on 5 and 20 epochs.

NOTE: Epoch 20 is the fully trained model.

  • 5 Epochs of Training
  • 20 Epochs of Training

2.4: Adding Class-Conditioning to UNet

We improve the time-conditioned UNet implementation by optionally conditioning it on the digit 0-9 class by adding 2 more FCBlocks and using one-hot vector c (not using a single scalar). With this model, we can choose the digit we want to generate. Here is the training process’s loss curve plot.

2.5 Sampling from the Class-Conditioned UNet

With training complete, here are the results for the class-conditioned UNet, focusing on 5 and 20 epochs.

NOTE: Epoch 20 is the fully trained model.

  • 5 Epochs of Training
  • 20 Epochs of Training

Bells and Whistles: Sampling GIFs

GIF 1: time-conditioned model after 20 epochs of training

GIF 2: time-conditioned and class-conditioned model after 20 epochs of training

Reflection & Bloopers

Definitely a challenging project but had fun reading new papers and experimenting! Splitting up the project and ramping up from working with pre-trained models to training our own in Part B made the project more approachable.

Only saved one blooper :’( so here it is!

\ No newline at end of file