{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "Diffusion_models.ipynb", "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "gpuClass": "standard", "widgets": { "application/vnd.jupyter.widget-state+json": { "220b87d5fa1b4394a7d844d4a70eb44e": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_cdc137db2383499fb16dcb2d251d7166", "IPY_MODEL_6b620cb5551e4a399f713f2833ab6f3c", "IPY_MODEL_def8226c96af492f93888454faf14253" ], "layout": "IPY_MODEL_7b2d56dd305f4992b4bf76aae9b9d166" } }, "cdc137db2383499fb16dcb2d251d7166": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5e6a845cbb17482ea6124c4b5eaa816a", "placeholder": "​", "style": "IPY_MODEL_ececb39b40d04ee7a397fa4e85eff961", "value": "100%" } }, "6b620cb5551e4a399f713f2833ab6f3c": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3a40136f42e54d85bc37390310c78eab", "max": 9912422, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_98d2ac6a59894066a9ae80f74bdab442", "value": 9912422 } }, "def8226c96af492f93888454faf14253": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b6a2f1d4dd3241ee96ddb267ab7be4fd", "placeholder": "​", "style": "IPY_MODEL_78f28f387bd34190a4ad8560949aaa22", "value": " 9912422/9912422 [00:00<00:00, 15303639.75it/s]" } }, "7b2d56dd305f4992b4bf76aae9b9d166": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5e6a845cbb17482ea6124c4b5eaa816a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ececb39b40d04ee7a397fa4e85eff961": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3a40136f42e54d85bc37390310c78eab": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "98d2ac6a59894066a9ae80f74bdab442": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b6a2f1d4dd3241ee96ddb267ab7be4fd": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "78f28f387bd34190a4ad8560949aaa22": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4b9d79250b674901a585f1f4487ae007": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_80a886f6c87a45229e541a1d108e777d", "IPY_MODEL_32e5b467c1354b0ba29d3de1112dcc19", "IPY_MODEL_02526a1a83e64f2a8c06fc2e3e76531e" ], "layout": "IPY_MODEL_1a6509e231584cf2be36ba85d6321b46" } }, "80a886f6c87a45229e541a1d108e777d": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e1c19e62a421438cb3904ec25efdb3b8", "placeholder": "​", "style": "IPY_MODEL_4d88d768dea840a388f369d6eea3c463", "value": "100%" } }, "32e5b467c1354b0ba29d3de1112dcc19": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6a26a8846b99466ea1b5def343c90085", "max": 28881, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_fac036da46eb4e5fb351779191e518e9", "value": 28881 } }, "02526a1a83e64f2a8c06fc2e3e76531e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dab34735ce22444f860572e666097208", "placeholder": "​", "style": "IPY_MODEL_234ad43018f74693a9e0c448ce49aa4e", "value": " 28881/28881 [00:00<00:00, 961600.45it/s]" } }, "1a6509e231584cf2be36ba85d6321b46": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e1c19e62a421438cb3904ec25efdb3b8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4d88d768dea840a388f369d6eea3c463": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6a26a8846b99466ea1b5def343c90085": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fac036da46eb4e5fb351779191e518e9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "dab34735ce22444f860572e666097208": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "234ad43018f74693a9e0c448ce49aa4e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "10f8eb71af9d4715867093b4aa45c7ff": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_72fffbdaf1c54de58b317f0a65fdf12a", "IPY_MODEL_d87fcd5467ea45938a0620830472ebb8", "IPY_MODEL_edbc9e4fef1645adb10ccf20fffcf649" ], "layout": "IPY_MODEL_998fb34f166d477f94a941e810923e72" } }, "72fffbdaf1c54de58b317f0a65fdf12a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3e25a89c3dc04c578a414fc12bf1c522", "placeholder": "​", "style": "IPY_MODEL_76ce2d192e0f4de9a1bbd2ea694e973b", "value": "100%" } }, "d87fcd5467ea45938a0620830472ebb8": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a01958a97aa84368915a04922cfe7273", "max": 1648877, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_a30220a4b06c40afb46681e1ac21aa90", "value": 1648877 } }, "edbc9e4fef1645adb10ccf20fffcf649": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_cdc5265d55a14472a1dfa93a825a6dce", "placeholder": "​", "style": "IPY_MODEL_6c26c6d81ca24815baf20c600f2fcb4c", "value": " 1648877/1648877 [00:00<00:00, 4611263.86it/s]" } }, "998fb34f166d477f94a941e810923e72": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3e25a89c3dc04c578a414fc12bf1c522": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "76ce2d192e0f4de9a1bbd2ea694e973b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "a01958a97aa84368915a04922cfe7273": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a30220a4b06c40afb46681e1ac21aa90": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "cdc5265d55a14472a1dfa93a825a6dce": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6c26c6d81ca24815baf20c600f2fcb4c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9d91cf73a2914f7188ec567d16272b78": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_0ff413efbd1547f289785a51fa9f03da", "IPY_MODEL_7bb62ab594a744f3bbbecd1cfda186f0", "IPY_MODEL_ef370955f28f498db089099562bf7503" ], "layout": "IPY_MODEL_fade127b45b345b08bf3f47444315fe4" } }, "0ff413efbd1547f289785a51fa9f03da": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2f60e1427ca94840b09a17b2afae8b0a", "placeholder": "​", "style": "IPY_MODEL_6c18c277de9f4122b68b6b2e8b7d1bc7", "value": "100%" } }, "7bb62ab594a744f3bbbecd1cfda186f0": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5649f79c5c594ef782f3a27ee71790a7", "max": 4542, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_25d848d95997429f9ef89eeeda6a4d7e", "value": 4542 } }, "ef370955f28f498db089099562bf7503": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_74de9cf60268460bb0d06c7bac03972d", "placeholder": "​", "style": "IPY_MODEL_9829180ceede42c6b96761d97f6ea5a6", "value": " 4542/4542 [00:00<00:00, 164201.80it/s]" } }, "fade127b45b345b08bf3f47444315fe4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2f60e1427ca94840b09a17b2afae8b0a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6c18c277de9f4122b68b6b2e8b7d1bc7": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5649f79c5c594ef782f3a27ee71790a7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "25d848d95997429f9ef89eeeda6a4d7e": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "74de9cf60268460bb0d06c7bac03972d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9829180ceede42c6b96761d97f6ea5a6": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } } } } }, "cells": [ { "cell_type": "markdown", "source": [ "# Diffusion model" ], "metadata": { "id": "6up3XnbBYFT6" } }, { "cell_type": "markdown", "source": [ "Implementation is a mix of \n", "- [The Annotated Diffusion Model tutorial](https://huggingface.co/blog/annotated-diffusion) by Niels Rogge & Kashif Rasul\n", "- the codebase for [Diffusion Models Beat GANS on Image Synthesis](https://github.com/openai/guided-diffusion)\n", "- the codebase for [ GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models](https://github.com/openai/glide-text2im)" ], "metadata": { "id": "Uc9fDJ1mYIrb" } }, { "cell_type": "markdown", "source": [ "# Imports" ], "metadata": { "id": "UZurHfnv8y4I" } }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", "id": "OERviuw48vOJ" }, "outputs": [], "source": [ "#@title\n", "import numpy as np\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torch.optim as optim\n", "from functools import partial\n", "import matplotlib.pyplot as plt\n", "from torch.utils.data.sampler import SubsetRandomSampler\n", "from torch.utils.data import DataLoader\n", "from torchvision import datasets, transforms\n", "import torchvision\n", "import torch.nn as nn\n", "import torch.nn.functional as F \n", "from torch.utils.data import random_split\n", "from skimage.metrics import structural_similarity as ssim\n", "from skimage.draw import random_shapes\n", "import skimage\n", "from torch.utils.data import Dataset\n", "import random\n", "import matplotlib.pyplot as plt\n", "from tqdm import tqdm\n", "from torch import nn, einsum\n", "import math\n", "!pip install -q -U einops\n", "from einops import rearrange" ] }, { "cell_type": "markdown", "source": [ "# Data" ], "metadata": { "id": "8evogpDuA-qg" } }, { "cell_type": "code", "source": [ "#@title\n", "from torchvision import transforms\n", "from torch.utils.data import DataLoader\n", "\n", "# load dataset from the hub\n", "transform = transforms.Compose([\n", " #transforms.RandomHorizontalFlip(),\n", " transforms.ToTensor(),\n", " transforms.Lambda(lambda t: ((t * 2) - 1)*0.8)\n", "])\n", "dataset = datasets.MNIST(root='data', download=True, transform=transform)\n", "dataset, validation_data = random_split(dataset, [50000, 10000])\n", "image_size = 28\n", "channels = 1\n", "batch_size = 100\n", "\n", "# create dataloader\n", "dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True,num_workers=2)\n", "\n", "batch = next(iter(dataloader))\n", "print(batch[0].shape)\n", "print(batch[1].shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 477, "referenced_widgets": [ "220b87d5fa1b4394a7d844d4a70eb44e", "cdc137db2383499fb16dcb2d251d7166", "6b620cb5551e4a399f713f2833ab6f3c", "def8226c96af492f93888454faf14253", "7b2d56dd305f4992b4bf76aae9b9d166", "5e6a845cbb17482ea6124c4b5eaa816a", "ececb39b40d04ee7a397fa4e85eff961", "3a40136f42e54d85bc37390310c78eab", "98d2ac6a59894066a9ae80f74bdab442", "b6a2f1d4dd3241ee96ddb267ab7be4fd", "78f28f387bd34190a4ad8560949aaa22", "4b9d79250b674901a585f1f4487ae007", "80a886f6c87a45229e541a1d108e777d", "32e5b467c1354b0ba29d3de1112dcc19", "02526a1a83e64f2a8c06fc2e3e76531e", "1a6509e231584cf2be36ba85d6321b46", "e1c19e62a421438cb3904ec25efdb3b8", "4d88d768dea840a388f369d6eea3c463", "6a26a8846b99466ea1b5def343c90085", "fac036da46eb4e5fb351779191e518e9", "dab34735ce22444f860572e666097208", "234ad43018f74693a9e0c448ce49aa4e", "10f8eb71af9d4715867093b4aa45c7ff", "72fffbdaf1c54de58b317f0a65fdf12a", "d87fcd5467ea45938a0620830472ebb8", "edbc9e4fef1645adb10ccf20fffcf649", "998fb34f166d477f94a941e810923e72", "3e25a89c3dc04c578a414fc12bf1c522", "76ce2d192e0f4de9a1bbd2ea694e973b", "a01958a97aa84368915a04922cfe7273", "a30220a4b06c40afb46681e1ac21aa90", "cdc5265d55a14472a1dfa93a825a6dce", "6c26c6d81ca24815baf20c600f2fcb4c", "9d91cf73a2914f7188ec567d16272b78", "0ff413efbd1547f289785a51fa9f03da", "7bb62ab594a744f3bbbecd1cfda186f0", "ef370955f28f498db089099562bf7503", "fade127b45b345b08bf3f47444315fe4", "2f60e1427ca94840b09a17b2afae8b0a", "6c18c277de9f4122b68b6b2e8b7d1bc7", "5649f79c5c594ef782f3a27ee71790a7", "25d848d95997429f9ef89eeeda6a4d7e", "74de9cf60268460bb0d06c7bac03972d", "9829180ceede42c6b96761d97f6ea5a6" ] }, "cellView": "form", "id": "OEjbfSYfBAYM", "outputId": "772842de-8c91-4732-e9ef-5278f1aa2881" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to data/MNIST/raw/train-images-idx3-ubyte.gz\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ " 0%| | 0/9912422 [00:00 b c 1 1\") + h\n", " h = self.block2(h)\n", " return h + self.res_conv(x)\n", "\n", "\n", "class Attention(nn.Module):\n", " def __init__(self, dim, heads=4, dim_head=32):\n", " super().__init__()\n", " self.scale = dim_head**-0.5\n", " self.heads = heads\n", " hidden_dim = dim_head * heads\n", " self.to_qkv = nn.Conv2d(dim, hidden_dim * 3, 1, bias=False)\n", " self.to_out = nn.Conv2d(hidden_dim, dim, 1)\n", "\n", " def forward(self, x):\n", " b, c, h, w = x.shape\n", " qkv = self.to_qkv(x).chunk(3, dim=1)\n", " q, k, v = map(\n", " lambda t: rearrange(t, \"b (h c) x y -> b h c (x y)\", h=self.heads), qkv\n", " )\n", " q = q * self.scale\n", "\n", " sim = einsum(\"b h d i, b h d j -> b h i j\", q, k)\n", " sim = sim - sim.amax(dim=-1, keepdim=True).detach()\n", " attn = sim.softmax(dim=-1)\n", "\n", " out = einsum(\"b h i j, b h d j -> b h i d\", attn, v)\n", " out = rearrange(out, \"b h (x y) d -> b (h d) x y\", x=h, y=w)\n", " return self.to_out(out)\n", "\n", "class LinearAttention(nn.Module):\n", " def __init__(self, dim, heads=4, dim_head=32):\n", " super().__init__()\n", " self.scale = dim_head**-0.5\n", " self.heads = heads\n", " hidden_dim = dim_head * heads\n", " self.to_qkv = nn.Conv2d(dim, hidden_dim * 3, 1, bias=False)\n", "\n", " self.to_out = nn.Sequential(nn.Conv2d(hidden_dim, dim, 1), \n", " nn.GroupNorm(1, dim))\n", "\n", " def forward(self, x):\n", " b, c, h, w = x.shape\n", " qkv = self.to_qkv(x).chunk(3, dim=1)\n", " q, k, v = map(\n", " lambda t: rearrange(t, \"b (h c) x y -> b h c (x y)\", h=self.heads), qkv\n", " )\n", "\n", " q = q.softmax(dim=-2)\n", " k = k.softmax(dim=-1)\n", "\n", " q = q * self.scale\n", " context = torch.einsum(\"b h d n, b h e n -> b h d e\", k, v)\n", "\n", " out = torch.einsum(\"b h d e, b h d n -> b h e n\", context, q)\n", " out = rearrange(out, \"b h c (x y) -> b (h c) x y\", h=self.heads, x=h, y=w)\n", " return self.to_out(out)\n", "\n", "\n", "class PreNorm(nn.Module):\n", " def __init__(self, dim, fn):\n", " super().__init__()\n", " self.fn = fn\n", " self.norm = nn.GroupNorm(1, dim)\n", "\n", " def forward(self, x):\n", " x = self.norm(x)\n", " return self.fn(x)\n", "\n", "def get_device():\n", " if torch.cuda.is_available():\n", " device = 'cuda:0'\n", " else:\n", " device = 'cpu'\n", " return device\n", "device = get_device()" ], "metadata": { "cellView": "form", "id": "n-Py7tRI9JEh" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# U-Net model" ], "metadata": { "id": "66u0HoAC9RWW" } }, { "cell_type": "code", "source": [ "#@title\n", "class Unet(nn.Module):\n", " def __init__(self,dim,init_dim=None,out_dim=None,dim_mults=(1, 2, 4, 8),channels=3,with_time_emb=True,resnet_block_groups=8, num_classes=None):\n", " super().__init__()\n", "\n", " # determine dimensions\n", " self.channels = channels\n", "\n", " init_dim = default(init_dim, dim // 3 * 2)\n", " self.init_conv = nn.Conv2d(channels, init_dim, 7, padding=3)\n", "\n", " dims = [init_dim, *map(lambda m: dim * m, dim_mults)]\n", " in_out = list(zip(dims[:-1], dims[1:]))\n", " \n", " block_klass = partial(ResnetBlock, groups=resnet_block_groups)\n", "\n", " # time embeddings\n", " if with_time_emb:\n", " time_dim = dim * 4\n", " self.time_mlp = nn.Sequential(\n", " SinusoidalPositionEmbeddings(dim),\n", " nn.Linear(dim, time_dim),\n", " nn.GELU(),\n", " nn.Linear(time_dim, time_dim),\n", " )\n", " else:\n", " time_dim = None\n", " self.time_mlp = None\n", "\n", " self.num_classes = num_classes\n", " if self.num_classes is not None:\n", " self.label_emb = nn.Embedding(num_classes, time_dim)\n", "\n", " # layers\n", " self.downs = nn.ModuleList([])\n", " self.ups = nn.ModuleList([])\n", " num_resolutions = len(in_out)\n", "\n", " # down sampling layers\n", " for ind, (dim_in, dim_out) in enumerate(in_out):\n", " is_last = ind >= (num_resolutions - 1)\n", " self.downs.append(\n", " nn.ModuleList(\n", " [\n", " block_klass(dim_in, dim_out, time_emb_dim=time_dim),\n", " block_klass(dim_out, dim_out, time_emb_dim=time_dim),\n", " Residual(PreNorm(dim_out, LinearAttention(dim_out))),\n", " Downsample(dim_out) if not is_last else nn.Identity(),\n", " ]\n", " )\n", " )\n", "\n", " # mid layers\n", " mid_dim = dims[-1]\n", " self.mid_block1 = block_klass(mid_dim, mid_dim, time_emb_dim=time_dim)\n", " self.mid_attn = Residual(PreNorm(mid_dim, Attention(mid_dim)))\n", " self.mid_block2 = block_klass(mid_dim, mid_dim, time_emb_dim=time_dim)\n", "\n", " # up sampling layers\n", " for ind, (dim_in, dim_out) in enumerate(reversed(in_out[1:])):\n", " is_last = ind >= (num_resolutions - 1)\n", " self.ups.append(\n", " nn.ModuleList(\n", " [\n", " block_klass(dim_out * 2, dim_in, time_emb_dim=time_dim),\n", " block_klass(dim_in, dim_in, time_emb_dim=time_dim),\n", " Residual(PreNorm(dim_in, LinearAttention(dim_in))),\n", " Upsample(dim_in) if not is_last else nn.Identity(),\n", " ]\n", " )\n", " )\n", "\n", " # output layers\n", " out_dim = default(out_dim, channels)\n", " self.final_conv = nn.Sequential(\n", " block_klass(dim, dim), nn.Conv2d(dim, out_dim, 1)\n", " )\n", "\n", " def forward(self, x, time, y=None):\n", " x = self.init_conv(x)\n", "\n", " t = self.time_mlp(time) if exists(self.time_mlp) else None\n", "\n", " if self.num_classes is not None:\n", " assert y.shape == (x.shape[0],)\n", " t = t + self.label_emb(y)\n", "\n", " h = []\n", "\n", " # downsample\n", " for block1, block2, attn, downsample in self.downs:\n", " x = block1(x, t)\n", " x = block2(x, t)\n", " x = attn(x)\n", " h.append(x)\n", " x = downsample(x)\n", "\n", " # bottleneck\n", " x = self.mid_block1(x, t)\n", " x = self.mid_attn(x)\n", " x = self.mid_block2(x, t)\n", "\n", " # upsample\n", " for block1, block2, attn, upsample in self.ups:\n", " x = torch.cat((x, h.pop()), dim=1)\n", " x = block1(x, t)\n", " x = block2(x, t)\n", " x = attn(x)\n", " x = upsample(x)\n", "\n", " return self.final_conv(x)\n", "\n", "model = Unet(\n", " dim=32,\n", " channels=1,\n", " dim_mults=(1, 2, 4,),\n", " num_classes = None\n", ")\n", "model.to(device)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "cellView": "form", "id": "qnZjLcIo9TGx", "outputId": "246e2214-a477-46a4-fb92-2e2c73f560e3" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Unet(\n", " (init_conv): Conv2d(1, 20, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3))\n", " (time_mlp): Sequential(\n", " (0): SinusoidalPositionEmbeddings()\n", " (1): Linear(in_features=32, out_features=128, bias=True)\n", " (2): GELU(approximate=none)\n", " (3): Linear(in_features=128, out_features=128, bias=True)\n", " )\n", " (downs): ModuleList(\n", " (0): ModuleList(\n", " (0): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=32, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(20, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Conv2d(20, 32, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=32, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (2): Residual(\n", " (fn): PreNorm(\n", " (fn): LinearAttention(\n", " (to_qkv): Conv2d(32, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Sequential(\n", " (0): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1))\n", " (1): GroupNorm(1, 32, eps=1e-05, affine=True)\n", " )\n", " )\n", " (norm): GroupNorm(1, 32, eps=1e-05, affine=True)\n", " )\n", " )\n", " (3): Conv2d(32, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", " )\n", " (1): ModuleList(\n", " (0): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=64, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=64, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (2): Residual(\n", " (fn): PreNorm(\n", " (fn): LinearAttention(\n", " (to_qkv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Sequential(\n", " (0): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))\n", " (1): GroupNorm(1, 64, eps=1e-05, affine=True)\n", " )\n", " )\n", " (norm): GroupNorm(1, 64, eps=1e-05, affine=True)\n", " )\n", " )\n", " (3): Conv2d(64, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", " )\n", " (2): ModuleList(\n", " (0): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=128, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=128, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (2): Residual(\n", " (fn): PreNorm(\n", " (fn): LinearAttention(\n", " (to_qkv): Conv2d(128, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Sequential(\n", " (0): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1))\n", " (1): GroupNorm(1, 128, eps=1e-05, affine=True)\n", " )\n", " )\n", " (norm): GroupNorm(1, 128, eps=1e-05, affine=True)\n", " )\n", " )\n", " (3): Identity()\n", " )\n", " )\n", " (ups): ModuleList(\n", " (0): ModuleList(\n", " (0): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=64, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(256, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=64, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 64, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (2): Residual(\n", " (fn): PreNorm(\n", " (fn): LinearAttention(\n", " (to_qkv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Sequential(\n", " (0): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))\n", " (1): GroupNorm(1, 64, eps=1e-05, affine=True)\n", " )\n", " )\n", " (norm): GroupNorm(1, 64, eps=1e-05, affine=True)\n", " )\n", " )\n", " (3): ConvTranspose2d(64, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", " )\n", " (1): ModuleList(\n", " (0): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=32, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=32, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (2): Residual(\n", " (fn): PreNorm(\n", " (fn): LinearAttention(\n", " (to_qkv): Conv2d(32, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Sequential(\n", " (0): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1))\n", " (1): GroupNorm(1, 32, eps=1e-05, affine=True)\n", " )\n", " )\n", " (norm): GroupNorm(1, 32, eps=1e-05, affine=True)\n", " )\n", " )\n", " (3): ConvTranspose2d(32, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", " )\n", " )\n", " (mid_block1): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=128, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (mid_attn): Residual(\n", " (fn): PreNorm(\n", " (fn): Attention(\n", " (to_qkv): Conv2d(128, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (to_out): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (norm): GroupNorm(1, 128, eps=1e-05, affine=True)\n", " )\n", " )\n", " (mid_block2): ResnetBlock(\n", " (mlp): Sequential(\n", " (0): SiLU()\n", " (1): Linear(in_features=128, out_features=128, bias=True)\n", " )\n", " (block1): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 128, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (final_conv): Sequential(\n", " (0): ResnetBlock(\n", " (block1): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (block2): Block(\n", " (proj): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (norm): GroupNorm(8, 32, eps=1e-05, affine=True)\n", " (act): SiLU()\n", " )\n", " (res_conv): Identity()\n", " )\n", " (1): Conv2d(32, 1, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", ")" ] }, "metadata": {}, "execution_count": 11 } ] }, { "cell_type": "markdown", "source": [ "# Variance schedule + all related values" ], "metadata": { "id": "tmrmp1fjA4qE" } }, { "cell_type": "code", "source": [ "def cosine_beta_schedule(timesteps, s=0.008):\n", " steps = timesteps + 1\n", " x = torch.linspace(0, timesteps, steps)\n", " alphas_cumprod = torch.cos(((x / timesteps) + s) / (1 + s) * torch.pi * 0.5) ** 2\n", " alphas_cumprod = alphas_cumprod / alphas_cumprod[0]\n", " betas = 1 - (alphas_cumprod[1:] / alphas_cumprod[:-1])\n", " return torch.clip(betas, 0.0001, 0.9999)\n", "\n", "def linear_beta_schedule(timesteps):\n", " beta_start = 0.0001\n", " beta_end = 0.02\n", " return torch.linspace(beta_start, beta_end, timesteps)\n", "\n", "timesteps = 200\n", "\n", "# define beta schedule\n", "betas = linear_beta_schedule(timesteps=timesteps)\n", "\n", "# define alphas \n", "alphas = 1. - betas\n", "alphas_cumprod = torch.cumprod(alphas, axis=0)\n", "alphas_cumprod_prev = F.pad(alphas_cumprod[:-1], (1, 0), value=1.0)\n", "sqrt_recip_alphas = torch.sqrt(1.0 / alphas)\n", "\n", "# calculations for diffusion q(x_t | x_{t-1}) and others\n", "sqrt_alphas_cumprod = torch.sqrt(alphas_cumprod)\n", "sqrt_one_minus_alphas_cumprod = torch.sqrt(1. - alphas_cumprod)\n", "\n", "# calculations for posterior q(x_{t-1} | x_t, x_0)\n", "posterior_variance = betas * (1. - alphas_cumprod_prev) / (1. - alphas_cumprod)\n", "\n", "def extract(a, t, x_shape):\n", " batch_size = t.shape[0]\n", " out = a.gather(-1, t.cpu())\n", " return out.reshape(batch_size, *((1,) * (len(x_shape) - 1))).to(t.device)\n", "\n", "alphas_cumprod_next = F.pad(alphas_cumprod[1:], (0, 1), value=0)" ], "metadata": { "id": "zFKWrpmx97KS" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Forward sampling according to nice property" ], "metadata": { "id": "UdLSjs9QCDKm" } }, { "cell_type": "code", "source": [ "def q_sample(x_start, t, noise=None):\n", " if noise is None:\n", " noise = torch.randn_like(x_start)\n", " sqrt_alphas_cumprod_t = extract(sqrt_alphas_cumprod, t, x_start.shape)\n", " sqrt_one_minus_alphas_cumprod_t = extract(sqrt_one_minus_alphas_cumprod, t, x_start.shape)\n", " return sqrt_alphas_cumprod_t * x_start + sqrt_one_minus_alphas_cumprod_t * noise" ], "metadata": { "id": "n39KP00uB80i" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Loss function" ], "metadata": { "id": "AYZCalY3CIOq" } }, { "cell_type": "markdown", "source": [ "The loss function takes the original image, noise it with the forward process function and then compute the predicted noise using the model. It ouputs the loss between the predicted noise and the real noise " ], "metadata": { "id": "xvE_eiN2C3NL" } }, { "cell_type": "code", "source": [ "def p_losses(denoise_model, x_start, t, label, noise=None, loss_type=\"l1\"):\n", " if noise is None:\n", " noise = torch.randn_like(x_start)\n", "\n", " x_noisy = q_sample(x_start=x_start, t=t, noise=noise)\n", " predicted_noise = denoise_model(x_noisy, t, y=label)\n", "\n", " if loss_type == 'l1':\n", " loss = F.l1_loss(noise, predicted_noise)\n", " elif loss_type == 'l2':\n", " loss = F.mse_loss(noise, predicted_noise)\n", " elif loss_type == \"huber\":\n", " loss = F.smooth_l1_loss(noise, predicted_noise)\n", " else:\n", " raise NotImplementedError()\n", "\n", " return loss" ], "metadata": { "id": "Ha5wsd_BCHgR" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "# Training (unconditional model)" ], "metadata": { "id": "6Rio8GpvD1N4" } }, { "cell_type": "code", "source": [ "optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\n", "epochs = 20\n", "for epoch in tqdm(range(epochs)):\n", " for step, batch in enumerate(dataloader):\n", " optimizer.zero_grad()\n", "\n", " images, _ = batch \n", " images = images.to(device)\n", "\n", " # Algorithm 1 line 3: sample t uniformally for every example in the batch\n", " t = torch.randint(0, timesteps, (batch_size,), device=device).long()\n", "\n", " loss = p_losses(model, images, t, loss_type=\"huber\", label=None)\n", " loss.backward()\n", " optimizer.step()\n", "print(\"Loss:\", loss.item())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ErYwza2aDTtK", "outputId": "4ed47e93-c143-4d6c-aebd-6b40dbcb3c56" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "100%|██████████| 20/20 [17:14<00:00, 51.75s/it]" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Loss: 0.02039657160639763\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\n" ] } ] }, { "cell_type": "markdown", "source": [ "# DDPM sampling" ], "metadata": { "id": "BWmT7bJpFNSY" } }, { "cell_type": "markdown", "source": [ "Sampling functions for DDPM" ], "metadata": { "id": "AONtarLAFgC-" } }, { "cell_type": "code", "source": [ "# Sampling functions DDPM\n", "@torch.no_grad()\n", "def p_sample(model, x, t, t_index, label=None):\n", " betas_t = extract(betas, t, x.shape)\n", " sqrt_one_minus_alphas_cumprod_t = extract(\n", " sqrt_one_minus_alphas_cumprod, t, x.shape\n", " )\n", " sqrt_recip_alphas_t = extract(sqrt_recip_alphas, t, x.shape)\n", " \n", " # Equation 11 in the paper\n", " # Use our model (noise predictor) to predict the mean\n", " model_mean = sqrt_recip_alphas_t * (\n", " x - betas_t * model(x, t, y=label) / sqrt_one_minus_alphas_cumprod_t\n", " )\n", "\n", " if t_index == 0:\n", " return model_mean\n", " else:\n", " posterior_variance_t = extract(posterior_variance, t, x.shape)\n", " noise = torch.randn_like(x)\n", " # Algorithm 2 line 4:\n", " return model_mean + torch.sqrt(posterior_variance_t) * noise \n", "\n", "# Algorithm 2 (including returning all images)\n", "@torch.no_grad()\n", "def p_sample_loop(model, shape, label=None):\n", " #device = next(model.parameters()).device\n", "\n", " b = shape[0]\n", " # start from pure noise (for each example in the batch)\n", " img = torch.randn(shape, device=device)\n", " imgs = []\n", "\n", " for i in tqdm(reversed(range(0, timesteps)), desc='sampling loop time step', total=timesteps):\n", " img = p_sample(model, img, torch.full((b,), i, device=device, dtype=torch.long), i, label=label)\n", " imgs.append(img.cpu().numpy())\n", " return imgs\n", "\n", "@torch.no_grad()\n", "def sample(model, image_size, batch_size=16, channels=3, label=None):\n", " return p_sample_loop(model, shape=(batch_size, channels, image_size, image_size), label=label)" ], "metadata": { "id": "Ni3WVGvOEU6p" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Test sampling" ], "metadata": { "id": "IrqSqAxTHEYX" } }, { "cell_type": "code", "source": [ "# sample 64 images\n", "samples = sample(model, image_size=image_size, batch_size=64, channels=channels)\n", "\n", "# show a random one\n", "for i in range(5):\n", " plt.figure()\n", " plt.imshow(samples[-1][i].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "lARZzA6RHUD0", "outputId": "f4461e35-accb-4410-cf7d-95c5eb871f8c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:03<00:00, 53.13it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "import matplotlib.animation as animation\n", "fig = plt.figure()\n", "ims = []\n", "random_index =0\n", "for i in range(timesteps):\n", " if (i+1)%20==0:\n", " plt.figure()\n", " plt.imshow(samples[i][random_index].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\", animated=True)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "dWL2anYyHfzk", "outputId": "fa917aef-eb1f-448d-c612-322a4b9d8361" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAZCUlEQVR4nO2de3DV1bXHv8vwCE+BQHgLBRVB5NXASAVErY5YFUqpaG3RFqXtYKe2ztzr1HG0f9jKvWp1OnfaovLQEajv19gKUuQhQyVQ3qAihUIM4dkESCkQ1v0jxw5q9nenSTgn0/39zDBJzicrZ3OSlV/OWXvtZe4OIcR/PufkegFCiOygZBciEZTsQiSCkl2IRFCyC5EITbJ5Zy1atPBzzz2XeRpfUVERdM2bN6exBw4coL5t27bUN2kSfqjy8vJo7NGjR6mPrZ3dd4zy8nLq27VrR31lZSX1BQUF1B87dqxODgDOOYdfi2L+1KlTQXfy5Eka26FDB+pPnz5NfVVVFfXsZyb2PWM5VF5ejsrKSqvJ1SvZzexaAE8AyAPwlLs/HFvkt7/97aAfNGgQvb+FCxcGXd++fWnsk08+Sf0111xDfWFhYdDFflGsXLmS+t69e1PfuXNn6ln59M0336SxEydOpH716tXUT5kyhfo1a9YE3fvvv09jY7/8mzVrRv3hw4eDbu/evTT25ptvpj72Czz2i4wlbOx7dv311wfd008/HXR1/jPezPIA/B+AcQAGALjFzAbU9esJIc4u9XnOPgLAdnff4e4nACwAML5hliWEaGjqk+zdAew+4+M9mds+g5lNM7NiMyuOPf8TQpw9zvqr8e4+092L3L2oZcuWZ/vuhBAB6pPsJQB6nvFxj8xtQohGSH2SfTWAC8zsS2bWDMDNAF5vmGUJIRqaOpfe3P2Umd0F4G1Ul95mufvmWByrL8ZKWAMHDgy6WCmlW7du1MdKJa1bt66TA4CDBw9SP2rUKOq3bt1KfVlZWdBddtllNHbp0qXUX3TRRdQ/+uij1B8/fjzoxo4dS2M7duxI/c6dO6nfvXt30N144400NtYNGqvxx/ZO9OrVK+gmTZpEY7dv3x50bP9Avers7v4WgLfq8zWEENlB22WFSAQluxCJoGQXIhGU7EIkgpJdiERQsguRCFntZ8/Pz8eFF14Y9Js2baLxrH1vzJgxNJbVe4F4iyyrdW/bto3Gdu/+hZaBz5Cfn0/9P/7xjzrHDx8+nMYOGzaM+g8++ID62P/t8ssvD7oVK1bQ2HfffZf6CRMmUL9u3bqgW7VqFY1lbaRA/Gc19j1j5yvE9mVceeWVQbd48eKg05VdiERQsguRCEp2IRJByS5EIijZhUgEJbsQiZDV0ltFRQU9ITZ2muiMGTOCbuPGjXVeFxA/qZS1kQ4dOpTG9u/fn/rly5dT37VrV+pZq+fLL79MY2Mlx1gZ6OKLL6Z+x44dQceOegaAr3zlK9THGDlyZND16dOHxr722mvU33DDDfWKZ6cZx9qGb7311qBr2rRp0OnKLkQiKNmFSAQluxCJoGQXIhGU7EIkgpJdiERQsguRCFmtszdt2pS2RMaO72VTP2MtrIcOHaJ+/fr11LO1TZs2jcaWlPDZGeeddx71r776KvWTJ08OuthxzKwNFIjvX9izZw/1bPzw9OnTaWz79u2pZzVlgE9KnTNnDo2NtR3HjtguLS2lfu7cuUHXo0cPGsv2VZw4cSLodGUXIhGU7EIkgpJdiERQsguRCEp2IRJByS5EIijZhUiErNbZy8vL8cYbbwT91KlTafyCBQuCbvz48TT2j3/8I/Wx0cZsxG9sdPDRo0ep79SpE/Xjxo2jno3BXrJkCY0dNGgQ9bF+9tjjzvrdY338AwYMoD42prtdu3ZBFxvR/Ytf/IL6Z599lvrNm/n08q997WtBx0aTA/y4aFZnr1eym9lOAEcAVAE45e5F9fl6QoizR0Nc2a9w9/CJ90KIRoGeswuRCPVNdgew0MzWmFmNG8TNbJqZFZtZcVVVVT3vTghRV+r7Z/wody8xs0IAi8xsm7svO/MT3H0mgJkAkJ+fzztdhBBnjXpd2d29JPN2H4BXAIxoiEUJIRqeOie7mbUyszafvg/gGgB8tKUQImdYrIc8GGjWB9VXc6D66cA8d3+IxbRu3dqHDBkS9GycM8BrtrERurH+5NjrCexc+Y8++ojGnj59mvpYT/gPfvAD6nft2hV0sZ5vVqMH4me3s5ovAHzve98LuqVLl9LY2NjjWD2a9bO/+OKLNDa2d4KNTQbieyu2bNkSdLE9H+xndcaMGdi1a5fV5Or8nN3ddwAYXNd4IUR2UelNiERQsguRCEp2IRJByS5EIijZhUiErLa4tmnTBqNHjw76ZcuWBR3AyxmXXHIJjY2NB2bHVAP86OCrrrqKxnbu3Jn6WAkqdsx1UVG42TA2svnxxx+nPtaq2a9fP+pZaY/9LADxY65Xr15NfWVlZdDFxmB36NCB+m3btlEfK72xVtTt27fT2MGDw0Uw9njryi5EIijZhUgEJbsQiaBkFyIRlOxCJIKSXYhEULILkQhZP0r6D3/4Q9B/4xvfoPFs9PHhw4dpbKxlMXakMmtjLSwspLEvvPAC9f3796e+TZs21LM9BLH9B/PmzaP+0ksvpX7t2rXUs+Oc77vvPho7adIk6rdu3Up93759g+6ZZ56hscOHD6c+NkY71hp89dVXB91TTz1FY/v06RN0rP1VV3YhEkHJLkQiKNmFSAQluxCJoGQXIhGU7EIkgpJdiESo81HSdaGgoMCvu+66oGf1QwA4cuRI0HXv3p3GrlixgvouXbpQz+rFTZrw7Qrvvvsu9Tt27KD+7rvvpp6tjdWaAaBnz57Ux/q+Z86cSX379u2Dju2bAOKPS+x48IqKiqDr2LEjjY0dTR7bf1BeXk4964cfOXIkjWXHg//2t79FSUlJjUdJ68ouRCIo2YVIBCW7EImgZBciEZTsQiSCkl2IRFCyC5EIWe1nb9GiBR27HBvR26tXr6CLnW/OYgHgnHP47z3WOx3bq9CpUyfqY+N/e/fuTT3r5d+wYQONja39iSeeoD62NrMaS74AgFGjRtHY2Hn7sTr8sGHDgi7Wh19WVkZ9bI/AeeedRz3r1Y+df/DII48E3fz584MuemU3s1lmts/MNp1xWwczW2RmH2XehndOCCEaBbX5M34OgGs/d9u9ABa7+wUAFmc+FkI0YqLJ7u7LABz63M3jAczNvD8XwIQGXpcQooGp6wt0nd29NPP+XgDBJ1dmNs3Mis2s+NixY3W8OyFEfan3q/Fe/QpP8FUed5/p7kXuXtSqVav63p0Qoo7UNdnLzKwrAGTe7mu4JQkhzgZ1TfbXAdyWef82AK81zHKEEGeLaD+7mc0HMBZARwBlAB4A8CqA5wGcB2AXgJvc/fMv4n2BgoICHzduXNDv37+fxrPaJZufDsTromxeNgA0a9Ys6Pbu3Utjd+/eTf35559P/W233Ub9gQMHgi62fyC2ByBW616+fDn1bH9CrM7+wQcfUH/FFVdQ/+abbwZdbP568+bNqY99z2N+1apVQTdkyBAay9Y+b948lJWV1bi5Ibqpxt1vCairYrFCiMaDtssKkQhKdiESQckuRCIo2YVIBCW7EImQ1RZXd6fjhWNtqKwkwdoZAeDOO++kfvTo0dSz9tuWLVvS2NjRwLFjrA8d4lXN9957L+hij8snn3xCfax0F1sbO+Z6/PjxNPaxxx6jPlYuLS4uDrq2bdvS2Nj/O1aS/Pjjj6lnY7pjZT92lDRrKdaVXYhEULILkQhKdiESQckuRCIo2YVIBCW7EImgZBciEbJaZ2/ZsiWGDh0a9EuXLqXxu3btCrrZs2fT2IkTJ1Ifqzd/+OGHQTd48GAaO2bMGOpjR2jHjmtmrb8HDx6ksbHjmJcsWUJ9bI8Ba9/96U9/SmPvv/9+6rds2UL93/72t6C78MILaWyMuXPnUn/77bdT361bt6BjP+cAr8Oz/QG6sguRCEp2IRJByS5EIijZhUgEJbsQiaBkFyIRlOxCJEL0KOmGpLCw0Nmo2r59+9J4djxvrLc5Ly+P+pMnT1LPeunZCF0AGDhwIPV9+vShvrS0lPqbbrop6F588UUaGzuuuX17PqD3ggsuoJ7tIYj9v666ih9gHJswdPTo0aCLHYEdq3X369eP+tjeCPbzFvueFBUVBd3vfvc7lJSU1NjUriu7EImgZBciEZTsQiSCkl2IRFCyC5EISnYhEkHJLkQiZP3c+KqqqqCP1Rc3btwYdLHxv7ERvevXr6eere3LX/4yjY31Tv/973+nPvZ/e+ihh4Iu1mvfs2dP6u+44w7qFy9eTH1sVDZj2bJl1E+ePJl6Nsab9boD8cdt5syZ1Me+5+z+CwsLaey5554bdGw/SfTKbmazzGyfmW0647YHzazEzNZl/l0X+zpCiNxSmz/j5wC4tobbf+XuQzL/3mrYZQkhGpposrv7MgB8xo8QotFTnxfo7jKzDZk/84MbqM1smpkVm1nx8ePH63F3Qoj6UNdk/w2AvgCGACgF8GjoE919prsXuXtRfn5+He9OCFFf6pTs7l7m7lXufhrAkwBGNOyyhBANTZ2S3cy6nvHh1wFsCn2uEKJxEK2zm9l8AGMBdDSzPQAeADDWzIYAcAA7AXy/NnfWrFkz9OjRI+hjM61Zv/s///lPGhvzTZrwh4LN82YzyAF+5jzA9w8AwMUXX0w96+uuqKigsRMmTKB+zpw51MfOjWc+Vst+5513qGdnDADAjBkzgq5Lly409tixY9TH+tnZfhKAn+dfUFBAY8vKyoKO9clHk93db6nh5qdjcUKIxoW2ywqRCEp2IRJByS5EIijZhUgEJbsQiZDVFtfKykqsXbs26NnoYYCXS2K78/70pz9R3717d+qnTp0adDfeeCONHT16NPUtWrSgvri4mHpWFmzatCmNLS8vp75///7UHzlyhHo2Qjh2XHOnTp2oX7RoEfW//OUvg27evHk0NtZ2PGjQIOrbtGlD/bhx44Iu9rPMvqd0nDP9qkKI/xiU7EIkgpJdiERQsguRCEp2IRJByS5EIijZhUiErNbZ27Zti6uvvjroW7duTeOfe+65oLvhhhto7AMPPED9kiVLqP/Rj34UdLGRy7EW12HDhlEfG//LWoN37NhBY1mNHgA2bNhAfezI5K9+9atBd9ddd9HYn/zkJ9SzGj4ArFmzJuhibcWxo8fZcc5A/OeJHT9+6BA/8rGysjLo2JhqXdmFSAQluxCJoGQXIhGU7EIkgpJdiERQsguRCEp2IRIhq3X2I0eO0PpjrN7MiNV7N2/eTP2YMWOo79y5c9DFarax+z7//POpj9XxDxw4EHQ7d+6ksbHe6ZEjR1If6/vetCk8UuDee++lsbfeeiv18+fPp3779u1Bd/jwYRobq6OzI5sB4M4776Se9drHYlesWBF07h50urILkQhKdiESQckuRCIo2YVIBCW7EImgZBciEZTsQiRCVuvsVVVVdIRwrJ68cuXKoHvhhRdo7OWXX0496wMG+Mjn5cuX09jYeOBYLTw2urhZs2ZBx2qyAPDzn/+c+r/85S/U33PPPdS/+uqrQcd63YF4DT82VnnPnj1BFzv3ff369dT37NmT+tmzZ1PPzo2P7R8YOHBg0OXl5QVd9MpuZj3NbImZbTGzzWb248ztHcxskZl9lHnbPva1hBC5ozZ/xp8CcI+7DwBwKYDpZjYAwL0AFrv7BQAWZz4WQjRSosnu7qXuvjbz/hEAWwF0BzAewNzMp80FMOFsLVIIUX/+refsZtYbwFAAfwbQ2d1LM2ovgBo3j5vZNADTgPg+bCHE2aPWr8abWWsALwG4290/8yqbV+++r3EHvrvPdPcidy9iLyQJIc4utUp2M2uK6kR/zt1fztxcZmZdM74rgH1nZ4lCiIbAWEscAJiZofo5+SF3v/uM2/8XwEF3f9jM7gXQwd3/i32tLl26+JQpU4I+NrKZtSyePn2axp46dYr6Xr16Uc9Kb7Fxz7Hy1YABA6iPHUU9YsQI6hmxcdDs2GIAOH78OPVsdHEs9qmnnqJ++vTp1LPy2rZt22gsKxED8e/5rFmzqO/Xr1/QxdqK33vvvaArLi5GRUWF1eRq85z9MgDfAbDRzNZlbvsZgIcBPG9mUwHsAnBTLb6WECJHRJPd3VcAqPE3BYCrGnY5QoizhbbLCpEISnYhEkHJLkQiKNmFSAQluxCJkNUW17y8PLRr1y7oYzvsqqqqgq5FixY0lo2KBoBXXnmFejYeePDgwTT2jjvuoL59e94w2KpVK+q/9a1vBV3smOtYa29sXPTWrVupZ7XySy65hMY+/vjj1C9YsID6goKCoIu1FV9//fXUl5WVUV9eXk49e9xXrVpFY9mR61u2bAk6XdmFSAQluxCJoGQXIhGU7EIkgpJdiERQsguRCEp2IRIh2s/ekBQWFvqkSZOCPnY0MKs3N2nCtwzEjiWO1Xzff//9oGN1biA+/pcdt1yb+IMHDwbdd7/7XRobe8xZ3RaIj5t+9tlng+7IkSM0dvfu3dTHzjDo379/0LVu3ZrGxo6KjtXRY98zNmY7tt+EPW4vvfQS9u/fX2OXqq7sQiSCkl2IRFCyC5EISnYhEkHJLkQiKNmFSAQluxCJkNV+9pMnT6K0tDToY2OVf/3rXwfd5MmTaWysrho7V56dEx47g7x58+bUs/PwAWD48OHUv/HGG0HXtm1bGrtjxw7q2b4IAFizZg31Y8aMCbq5c+cGHQBceeWV1Mfq8GxUdqxGf/jwYer37eMzUfr27Ut99TiGmon9v1idnf2/dGUXIhGU7EIkgpJdiERQsguRCEp2IRJByS5EIijZhUiEaJ3dzHoCeAZAZwAOYKa7P2FmDwK4E8D+zKf+zN3fYl8rPz+f9hjH6s3sfPaWLVvS2Ng54bG+bXZW9/79+4MOAEpKSqifOHEi9b///e+pv+iii4IuPz+fxsbqwbFz4detW0c9q/vOmTOHxt5///3Ux84w+Otf/xp0sTkCu3bton7UqFHUx+rwzMf6/Nn3jO3pqM2mmlMA7nH3tWbWBsAaM1uUcb9y90dq8TWEEDmmNvPZSwGUZt4/YmZbAYS3kwkhGiX/1nN2M+sNYCiAP2duusvMNpjZLDOrcYaRmU0zs2IzK66srKzXYoUQdafWyW5mrQG8BOBud68A8BsAfQEMQfWV/9Ga4tx9prsXuXtR7Hm1EOLsUatkN7OmqE7059z9ZQBw9zJ3r3L30wCeBDDi7C1TCFFfoslu1e05TwPY6u6PnXF71zM+7esANjX88oQQDUVtXo2/DMB3AGw0s0/rLD8DcIuZDUF1OW4ngO9H76xJEzpGt6ioiMaz5/yx0cRjx46lnrWJAqCtubH22W7dulG/du1a6mOvdfzwhz8MulmzZtFYVrarjR8yZAj1K1asCLrYKOtYe+6JEyeov+yyy4Lu5MmTNJb9nALx1mDWEg0As2fPDropU6bQWFbqZa3atXk1fgWAmppvaU1dCNG40A46IRJByS5EIijZhUgEJbsQiaBkFyIRlOxCJEJWRza3adPGWS09Vl98/vnngy42mnjZsmXUv/3229R/85vfDLpDhw7R2KVLl1I/evRo6jt27Ej9hx9+GHQtWrSgsbHRxDHP9h8AQF5eXtDFjmu+9NJLqV+4cCH1bPRxjx49aOwnn3xSLx/bf8BGXa9cuZLGsvHjb7/9Ng4ePKiRzUKkjJJdiERQsguRCEp2IRJByS5EIijZhUgEJbsQiZDVOruZ7Qdw5hm9HQEcyNoC/j0a69oa67oAra2uNOTaerl7p5pEVpP9C3duVuzu/MSKHNFY19ZY1wVobXUlW2vTn/FCJIKSXYhEyHWyz8zx/TMa69oa67oAra2uZGVtOX3OLoTIHrm+sgshsoSSXYhEyEmym9m1ZvaBmW03s3tzsYYQZrbTzDaa2TozK87xWmaZ2T4z23TGbR3MbJGZfZR5W+OMvRyt7UEzK8k8duvM7Locra2nmS0xsy1mttnMfpy5PaePHVlXVh63rD9nN7M8AB8CuBrAHgCrAdzi7nxAepYws50Aitw95xswzGwMgKMAnnH3gZnb/gfAIXd/OPOLsr27/3cjWduDAI7meox3ZlpR1zPHjAOYAOB25PCxI+u6CVl43HJxZR8BYLu773D3EwAWABifg3U0etx9GYDPH4MzHsDczPtzUf3DknUCa2sUuHupu6/NvH8EwKdjxnP62JF1ZYVcJHt3ALvP+HgPGte8dwew0MzWmNm0XC+mBjq7+6dnQe0F0DmXi6mB6BjvbPK5MeON5rGry/jz+qIX6L7IKHcfBmAcgOmZP1cbJV79HKwx1U5rNcY7W9QwZvxf5PKxq+v48/qSi2QvAXDmKYY9Mrc1Cty9JPN2H4BX0PhGUZd9OkE383ZfjtfzLxrTGO+axoyjETx2uRx/notkXw3gAjP7kpk1A3AzgNdzsI4vYGatMi+cwMxaAbgGjW8U9esAbsu8fxuA13K4ls/QWMZ4h8aMI8ePXc7Hn7t71v8BuA7Vr8h/DOC+XKwhsK4+ANZn/m3O9doAzEf1n3UnUf3axlQABQAWA/gIwDsAOjSitT0LYCOADahOrK45WtsoVP+JvgHAusy/63L92JF1ZeVx03ZZIRJBL9AJkQhKdiESQckuRCIo2YVIBCW7EImgZBciEZTsQiTC/wNWa22BP59s1AAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Samples from the same original latent" ], "metadata": { "id": "faGeSswtHGjN" } }, { "cell_type": "code", "source": [ "@torch.no_grad()\n", "def p_sample_loop_same(model, shape):\n", " device = next(model.parameters()).device\n", "\n", " b = shape[0]\n", " # start from pure noise (for each example in the batch)\n", " img = torch.randn((shape[1],shape[2],shape[3]), device=device).repeat((b,1,1,1)).contiguous()\n", "\n", " for i in tqdm(reversed(range(0, timesteps)), desc='sampling loop time step', total=timesteps):\n", " img = p_sample(model, img, torch.full((b,), i, device=device, dtype=torch.long), i)\n", " return img\n", "\n", "@torch.no_grad()\n", "def sample_same(model, image_size, batch_size=16, channels=3):\n", " return p_sample_loop_same(model, shape=(batch_size, channels, image_size, image_size))\n", "\n", "# sample 64 images\n", "samples = sample_same(model, image_size=image_size, batch_size=10, channels=channels)\n", "\n", "for i in range(5):\n", " random_index = i\n", " plt.figure()\n", " plt.imshow(samples[random_index].reshape(image_size, image_size, channels).detach().cpu().squeeze(), cmap=\"gray\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "UUyzCPabHUiR", "outputId": "d13ecfda-8401-43ac-c43c-1fcc5c74b531" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:02<00:00, 68.56it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAPuElEQVR4nO3db4wVZZbH8d+RAWIcNCCh02H8t5N+oSwRDdGNEmGjEqaD4ETEP1HZrNrzYkzGZBMX2JjRbDbRXdllYjajPWIGN+o4Bg1knOi4xuCMRmOLoDSsyhJ1II3IEqMjUVY4+6KL2Va7nmpv3bpV7fl+EtLddbruPRT3R91bT1U95u4C8O13XN0NAOgMwg4EQdiBIAg7EARhB4L4TiefzMw49A9UzN1ttOWlwm5miyT9TNIESQ+4+11jWKfl56tymLCpfUnFvTV5+LTMdq1Tk7dpq1p+G29mEyT9u6QfSDpL0jVmdla7GgPQXmU+s58naZe773b3w5J+JWlpe9oC0G5lwj5T0h9H/LwnW/YlZtZnZgNmNlDiuQCUVPkBOnfvl9QvcYAOqFOZPfteSaeM+Pl72TIADVQm7K9K6jGzM8xskqSrJW1qT1sA2q3lt/Hu/oWZ3SLpGQ0PvT3o7oNjWC+3VjRMU+cwTpOHYsbr8FaRom1e5XBp2eHOuv5Nkvnq5Iu46DN7k1+0dYa9ydulSoT9m3P33JNqOF0WCIKwA0EQdiAIwg4EQdiBIAg7EERHr2cfz6IOf5X9e5cZsqxym5d97PH4emDPDgRB2IEgCDsQBGEHgiDsQBCEHQii40Nv43HIYjyrensXDa2VuaQZ7cWeHQiCsANBEHYgCMIOBEHYgSAIOxAEYQeC4BLXcaBoPHrixIm5tSVLliTXXbZsWbK+fPnyZL3Ijh07cmtXXHFFct233nqr1HOnFJ0fcP755yfrs2fPTtbXrVv3jXuqGnt2IAjCDgRB2IEgCDsQBGEHgiDsQBCEHQii47O4cg3z15WdMfTKK6/MrT3yyCPJdSdMmJCsb9myJVm/9957k/Xt27fn1rZu3Zpc98iRI8l6GVOmTEnWN2/enKzv2bMnWS86v6EqqVlcS51UY2bvSvpE0hFJX7j73DKPB6A67TiD7q/d/UAbHgdAhfjMDgRRNuwu6Xdm9pqZ9Y32C2bWZ2YDZjZQ8rkAlFD2bfw8d99rZjMkPWtm/+XuL4z8BXfvl9QvDR+gK/l8AFpUas/u7nuzr/slPSnpvHY0BaD9Wg67mZ1gZlOOfS9poaT8cRYAtSrzNr5L0pPZGPF3JD3i7k+3patvmbLnFixYsCBZv/POO3NrRePoqXFwSVqxYkWyPjg4mKw31caNG5P1s88+O1l/6aWX2tlOR7QcdnffLSm9RQA0BkNvQBCEHQiCsANBEHYgCMIOBMGtpNtg0qRJyfqMGTOS9b6+Uc80/rPVq1cn66mhvUOHDiXXvf7665P18Tq0JqW3yxlnnFHqsYeGhkqtXwf27EAQhB0IgrADQRB2IAjCDgRB2IEgCDsQRMfH2VO3RR6vt5m++eabk/V77rknWU9NuVzWhg0bkvVt27Yl60W3sR6v/2annnpqsl709960aVM72+kI9uxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EATXs2eKxosnT56cW1u2bFly3aLr3ascy969e3fL65Z97qoV9dbb29vyY7/44ovJetEtuJuIPTsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBNHxcfa6xm2Lnvf4449P1u+7777c2gUXXJBct2gcvayXX345t7Zu3brkuuP5evWia9Iffvjh3FrR3/ukk05qqacmK9yzm9mDZrbfzLaPWDbNzJ41s3eyr1OrbRNAWWN5G/9LSYu+smylpOfcvUfSc9nPABqsMOzu/oKkg19ZvFTS+uz79ZIub3NfANqs1c/sXe5+bLKrfZK68n7RzPokpSczA1C50gfo3N3NLPdoh7v3S+qXpNTvAahWq0NvH5hZtyRlX/e3ryUAVWg17Jskrci+XyFpY3vaAVCVwrfxZvaopAWSppvZHkk/lXSXpF+b2Y2S3pO0vMom26FoXHXq1PTo4bx583Jrxx1X7tykzz//vOXnlqS33347t/bpp58m123yOHqRSy65JFmfMmVKbq3o9bByZXqA6ejRo8l6E7drYdjd/Zqc0sVt7gVAhThdFgiCsANBEHYgCMIOBEHYgSDC3Er63HPPTdbvv//+ZL3ocsqUomGY1atXJ+tbtmyp7LnHs6IhyTKXFl933XXJ+tNPP93yY9eFPTsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBBFmnP2GG25I1ufMmZOspy5pLLrEddWqVcn62rVrk/Vv81h5yoknnpisF507Ucb777+frI/HW3CzZweCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIMKMs/f09CTrZcZFDx06lKwzjt6aa6+9NlmfNWtWsp7arkW3716zZk2yPh6xZweCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIMKMs992223J+qWXXpqsp8ZsJ0+enFy3qH748OFkPaqrrroqWS86PyF1D4Lnn38+ue6BAweS9fGocM9uZg+a2X4z2z5i2R1mttfMtmZ/eqttE0BZY3kb/0tJi0ZZ/m/uPif789v2tgWg3QrD7u4vSDrYgV4AVKjMAbpbzOyN7G3+1LxfMrM+Mxsws4ESzwWgpFbD/nNJ35c0R9KQpNyrBty9393nuvvcFp8LQBu0FHZ3/8Ddj7j7UUm/kHRee9sC0G4thd3Mukf8+ENJ2/N+F0AzFI6zm9mjkhZImm5meyT9VNICM5sjySW9K+lHFfbYFoODg8n6hx9+mKzPmDEjt1Z03/jHHnssWV+8eHGyXnSP8jLzkNfp9ttvT9bLzr+eGoe/++67k+t+GxWG3d2vGWXxugp6AVAhTpcFgiDsQBCEHQiCsANBEHYgiDCXuBZ55plnkvWiKZ9T5s+fn6xfdNFFyfrmzZuT9dQQU93DcqlhyXPOOafldccidYnr448/nlx30aLRrv36f6+//npLPdWJPTsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBME4e2bDhg3J+tVXX51bmzRpUnLdovoDDzyQrK9atSpZT40ZF91uuepx+IULF+bWLrvsskqfO/V3nz59enLdZcuWJeuMswNoLMIOBEHYgSAIOxAEYQeCIOxAEIQdCMI6eb2zmXnRuG9divrq6urKrQ0MpGe2Sq07lufet29fsr506dLcWlFvF198cbJeNB590003JesXXnhhbq1oKuuyUq/tomvln3rqqWR9yZIlLfVUNXeXu4/6gmLPDgRB2IEgCDsQBGEHgiDsQBCEHQiCsANBcD17puh8g9RY95lnnplcd9euXcn6ySefnKx3d3cn66+88kpurWg8uc77ylf93GXup//ZZ58l62Wmi65L4Z7dzE4xs+fNbIeZDZrZT7Ll08zsWTN7J/s6tfp2AbRqLG/jv5D0d+5+lqS/kvRjMztL0kpJz7l7j6Tnsp8BNFRh2N19yN23ZN9/ImmnpJmSlkpan/3aekmXV9UkgPK+0Wd2Mztd0jmSXpHU5e5DWWmfpFFPADezPkl9rbcIoB3GfDTezL4raYOkW93945E1Hz5aMeoRC3fvd/e57j63VKcAShlT2M1sooaD/rC7P5Et/sDMurN6t6T91bQIoB0KL3G14TGE9ZIOuvutI5b/i6T/cfe7zGylpGnuflvBYzX2Etcq9fT0JOtr1qxJ1nt7e5P11PBa2eGtsuuX+feusvdt27Yl1y2aonvHjh0t9VS11CWuY/nMfqGk6yW9aWZbs2WrJd0l6ddmdqOk9yQtb0ezAKpRGHZ3/4OkvP+e03c+ANAYnC4LBEHYgSAIOxAEYQeCIOxAENxKehyYPXt2sp66RLbo8tn58+cn64sXL07WTzvttGR9586dubXdu3cn1127dm2yPmvWrGT9o48+yq099NBDyXWLNPV1zK2kARB2IArCDgRB2IEgCDsQBGEHgiDsQBCMszdA2dsSp9Yvs64kTZw4MVmfOXNmsn7w4MHc2scff5xbG+/qep0zzg6AsANREHYgCMIOBEHYgSAIOxAEYQeCYJx9HKhzWuXxLOJrjXF2AIQdiIKwA0EQdiAIwg4EQdiBIAg7EEThLK5mdoqkhyR1SXJJ/e7+MzO7Q9LNkj7MfnW1u/+2qkYjizhejPYrPKnGzLoldbv7FjObIuk1SZdreD72P7n7PWN+Mk6qASqVOqlmLPOzD0kayr7/xMx2SkrfngRA43yjz+xmdrqkcyS9ki26xczeMLMHzWxqzjp9ZjZgZgOlOgVQypjPjTez70raLOmf3P0JM+uSdEDDn+P/UcNv9f+24DF4Gw9UKPU2fkxhN7OJkn4j6Rl3/9dR6qdL+o27/2XB4xB2oEKlLoSx4XSuk7RzZNCzA3fH/FDS9rKNAqjOWI7Gz5P0e0lvSjqaLV4t6RpJczT8Nv5dST/KDualHos9O1Ch0m/j24WwA9XienYAhB2IgrADQRB2IAjCDgRB2IEgCi+Eabcy0wsDaB17diAIwg4EQdiBIAg7EARhB4Ig7EAQhB0IotPj7AckvTfi5+nZMkmNm5r4S701SFP7kuitVe3s7bS8QkevZ//ak5sNuPvc2hpIaGpvTe1LordWdao33sYDQRB2IIi6w95f8/OnNLW3pvYl0VurOtJbrZ/ZAXRO3Xt2AB1C2IEgagm7mS0ys7fMbJeZrayjhzxm9q6ZvWlmW+ueny6bQ2+/mW0fsWyamT1rZu9kX0edY6+m3u4ws73ZtttqZr019XaKmT1vZjvMbNDMfpItr3XbJfrqyHbr+Gd2M5sg6W1Jl0raI+lVSde4+46ONpLDzN6VNNfdaz8Bw8wukvQnSQ8dm1rLzP5Z0kF3vyv7j3Kqu/99Q3q7Q99wGu+KesubZvxvVOO2a+f0562oY89+nqRd7r7b3Q9L+pWkpTX00Xju/oKkg19ZvFTS+uz79Rp+sXRcTm+N4O5D7r4l+/4TScemGa912yX66og6wj5T0h9H/LxHzZrv3SX9zsxeM7O+upsZRdeIabb2Seqqs5lRFE7j3UlfmWa8MduulenPy+IA3dfNc/dzJf1A0o+zt6uN5MOfwZo0dvpzSd/X8ByAQ5LW1NlMNs34Bkm3uvvHI2t1brtR+urIdqsj7HslnTLi5+9lyxrB3fdmX/dLelLDHzua5INjM+hmX/fX3M+fufsH7n7E3Y9K+oVq3HbZNOMbJD3s7k9ki2vfdqP11antVkfYX5XUY2ZnmNkkSVdL2lRDH19jZidkB05kZidIWqjmTUW9SdKK7PsVkjbW2MuXNGUa77xpxlXztqt9+vNs1seO/pHUq+Ej8v8t6R/q6CGnr7+QtC37M1h3b5Ie1fDbuv/V8LGNGyWdLOk5Se9I+k9J0xrU239oeGrvNzQcrO6aepun4bfob0jamv3prXvbJfrqyHbjdFkgCA7QAUEQdiAIwg4EQdiBIAg7EARhB4Ig7EAQ/wcqZiBWUxYAvwAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "# DDIM" ], "metadata": { "id": "I4Ir2qQyFi1z" } }, { "cell_type": "markdown", "source": [ "Sampling functions for DDIM" ], "metadata": { "id": "IZgigpieFvjD" } }, { "cell_type": "code", "source": [ "@torch.no_grad()\n", "def ddim_sample(model, x, t, t_index, eta, label=None):\n", " sqrt_one_minus_alphas_cumprod_t = extract(sqrt_one_minus_alphas_cumprod, t, x.shape)\n", " sqrt_alphas_cumprod_t = extract(sqrt_alphas_cumprod, t, x.shape)\n", "\n", " if t_index == 0:\n", " z_theta = model(x, t, y=label)\n", " x0 = (x - z_theta * sqrt_one_minus_alphas_cumprod_t) / sqrt_alphas_cumprod_t\n", " return x0\n", " else:\n", " posterior_variance_t = extract(posterior_variance, t, x.shape)\n", " alphas_cumprod_prev_t = extract(alphas_cumprod_prev, t, x.shape)\n", " z_theta = model(x, t, y=label)\n", " x0 = (x - z_theta * sqrt_one_minus_alphas_cumprod_t) / sqrt_alphas_cumprod_t\n", " c1 = eta * torch.sqrt(posterior_variance_t)\n", " c2 = ((1 - alphas_cumprod_prev_t) - c1 ** 2).sqrt()\n", " model_mean = alphas_cumprod_prev_t.sqrt() * x0 + c2 * z_theta\n", " noise = torch.randn_like(x)\n", " return model_mean + c1*noise\n", "\n", "# Algorithm 2 (including returning all images)\n", "@torch.no_grad()\n", "def ddim_loop(model, shape,seeded,eta,x_start, label=None):\n", " #device = next(model.parameters()).device\n", "\n", " b = shape[0]\n", " # start from pure noise (for each example in the batch)\n", " if seeded:\n", " img = torch.randn((shape[1],shape[2],shape[3]), device=device).repeat(((b,1,1,1)))\n", " elif x_start != None:\n", " img = ddim_inversion(model, x_start)\n", " else:\n", " img = torch.randn(shape, device=device)\n", " imgs = []\n", "\n", " for i in tqdm(reversed(range(0, timesteps)), desc='sampling loop time step', total=timesteps):\n", " img = ddim_sample(model, img, torch.full((b,), i, device=device, dtype=torch.long), i, eta, label=label)\n", " imgs.append(img.cpu().numpy())\n", " return imgs\n", "\n", "@torch.no_grad()\n", "def ddim_generation(model, image_size, batch_size=16, channels=3, seeded=False, eta=0, x_start=None, label=None):\n", " return ddim_loop(model, shape=(batch_size, channels, image_size, image_size),seeded=seeded, eta=eta,x_start=x_start, label=label)" ], "metadata": { "id": "kBAEjaG5Fn0b" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "DDIM inversion" ], "metadata": { "id": "5qcphSM-Fzp6" } }, { "cell_type": "code", "source": [ "@torch.no_grad()\n", "def ddim_inversion_fn(model, x, t, t_index):\n", " sqrt_one_minus_alphas_cumprod_t = extract(sqrt_one_minus_alphas_cumprod, t, x.shape)\n", " sqrt_alphas_cumprod_t = extract(sqrt_alphas_cumprod, t, x.shape)\n", "\n", " alphas_cumprod_next_t = extract(alphas_cumprod_next, t, x.shape)\n", " z_theta = model(x, t)\n", " x0 = (x - z_theta * sqrt_one_minus_alphas_cumprod_t) / sqrt_alphas_cumprod_t\n", " c2 = ((1 - alphas_cumprod_next_t)).sqrt()\n", " x_next = alphas_cumprod_next_t.sqrt() * x0 + c2 * z_theta\n", " return x_next \n", "\n", "# Algorithm 2 (including returning all images)\n", "@torch.no_grad()\n", "def ddim_inversion(model, x_start):\n", " #device = next(model.parameters()).device\n", " img = x_start\n", " for i in tqdm((range(0, timesteps-1)), desc='inversion loop time step', total=timesteps):\n", " img = ddim_inversion_fn(model, img, torch.full((batch_size,), i, device=device, dtype=torch.long), i)\n", " return img" ], "metadata": { "id": "Xn4nIIv4FViQ" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Sampling from DDIM" ], "metadata": { "id": "4NR0TXh-HwHR" } }, { "cell_type": "code", "source": [ "# sample 64 images\n", "samples = ddim_generation(model, image_size=image_size, batch_size=64, channels=channels,eta=0)\n", "\n", "# show a random one\n", "for i in range(5):\n", " plt.figure()\n", " plt.imshow(samples[-1][i].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "H-l4zOixHzxA", "outputId": "09411ef8-46b9-45f0-a08b-f1205754752d" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:03<00:00, 53.65it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Sampling from the same original latent" ], "metadata": { "id": "BscF05EJH0j-" } }, { "cell_type": "code", "source": [ "# sample 64 images\n", "samples = ddim_generation(model, image_size=image_size, batch_size=64, channels=channels,eta=0,seeded=True)\n", "\n", "# show a random one\n", "for i in range(3):\n", " random_index = i\n", " plt.figure()\n", " plt.imshow(samples[-1][random_index].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 779 }, "id": "hSFoB9K9H4Gp", "outputId": "0afbeccb-7234-460a-e781-c17b4f0eac25" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:04<00:00, 43.27it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAATM0lEQVR4nO3df4xV5ZkH8O93EBAQRATHEdltbYzRaHZEJJtUDRvdxqKJ1ERTTBSj2ekfJbZqwhr3j2q0Cdls21SzqRl/UtvVqKAYAtmypFnSfxpGw/JDcP0RiSCCFQNTYGCGefaPOTajznme8bz3nnu77/eTkJm5z33Pfe859+Hec5/zvi/NDCLy/19HqzsgIvVQsotkQskukgklu0gmlOwimTitzgcjaSRL41FloFlt2107V0xS9mv0vDo6/Peidt4vzRQ9bzMb86AkJTvJ6wH8EsAEAE+Z2crg/pg4cWJpfHh4OHq8ym2jF070ovV2cLTtqG+RcRzcyo+dul+ameyTJk1y40NDQ258woQJTWk7HilvPqdOnaq8be95Vf4YT3ICgH8H8F0AlwBYSvKSqtsTkeZKOWdfCOBdM3vfzE4CeBHATY3plog0WkqyzwXw4ai/9xa3fQHJHpJ9JPtyPccSaQdN/4LOzHoB9AJAR0eHsl2kRVLe2fcBmDfq7/OL20SkDaUk+xYAF5L8JslJAL4P4PXGdEtEGq3yx3gzGyK5HMB/YqT09oyZ7UzpTFQG8kSlkuj7Aq8kCPgljai8lXoNwGmn+YfJK9VEbVP7Fj13Lx7t86gEFUk5ZlE8Kgumlls9Xp54xyvpnN3M1gNYn7INEamHLpcVyYSSXSQTSnaRTCjZRTKhZBfJhJJdJBO1jmc3MwwODpbGJ0+eHLavEgPimm0U9+qmzR53HdVsU4ZyNrvvKcOSU7YdxaPnHdXRvdcxAMyYMcON9/f3u/Fm0Du7SCaU7CKZULKLZELJLpIJJbtIJpTsIpmotfQG+GWilFlUIynDZwG/jJM6DDSSUlZMGR4LxPstpXQXtY36Fg1r9sqO0TGLSpbRMTl69Kgb96TMdOzRO7tIJpTsIplQsotkQskukgklu0gmlOwimVCyi2Si9jq7VyNMqaum1mSj2qY3/DYa7hhtO7XenLKSavTYU6ZMcePRcz///PNLYytWrHDbLl261I1Hx3Tv3r2lsYsvvthtmzqNder04lXbutc1VH5EEfmromQXyYSSXSQTSnaRTCjZRTKhZBfJhJJdJBO11tlJurXRqF6cMhb+zDPPdOPHjx9346effnppLBozHo1tPvvss934kiVL3Ph5551XGps/f77b9siRI248qkevW7fOjd9+++2lsblz57ptd+70VwB/+eWX3fgrr7zixlOkzr3gxaPrB1qyZDPJDwD0AzgFYMjMFqRsT0SapxHv7P9gZn9qwHZEpIl0zi6SidRkNwC/I/kGyZ6x7kCyh2Qfyb7UpYREpLrUj/FXmdk+kucA2Ehyt5ltHn0HM+sF0AsAHR0dynaRFkl6ZzezfcXPgwBeBbCwEZ0SkcarnOwkp5Gc/vnvAL4DYEejOiYijcWq59EkL8DIuzkwcjrwH2b206CNeTXplPmyo3HZqXO7p8wbH9mwYYMbv+aaa9x4yhwB0Xj0iRMnuvFoaWPP/fff78Y3btzoxnfv3u3GvXp1yvFuhJQ6u9f3wcFBDA8Pj9n5yufsZvY+gL+r2l5E6qXSm0gmlOwimVCyi2RCyS6SCSW7SCYql96q6OjocEtvUV9Syl/RtlOWHo5EfTt06JAbj4bQek6ePJkUj/q2adMmN/7oo4+Wxvr7+922x44dc+Mpxzw6nlHJMSppRqW9lKHeXnxgYKC09KZ3dpFMKNlFMqFkF8mEkl0kE0p2kUwo2UUyoWQXyUStU0mbmVufTB2m2kxe3TSlLgoAhw8fduNz5sxx417f7rnnHrftb37zGzeeekxSat3NvAbEmxocSB8Cm7JEeOpw7DJ6ZxfJhJJdJBNKdpFMKNlFMqFkF8mEkl0kE0p2kUzUWmcH/BrilClT3LYnTpyo/LjNrOFH9eBbbrnFjc+aNcuNR31bsWJFaezFF19020ai51a15gvEzys6ZlHcu6YjGsefOv9Byn5p1rb1zi6SCSW7SCaU7CKZULKLZELJLpIJJbtIJpTsIpmovc7uiZYP9qSOfU6pq0b14jvvvNONp9RkAWD69OmlsZkzZ7ptP/30Uzce1XyjcdveMU193s28diLqW+o1AJ5mjeMPe0TyGZIHSe4YddsskhtJvlP8PKspvRORhhnPfz/PAbj+S7c9AGCTmV0IYFPxt4i0sTDZzWwzgC+vAXQTgFXF76sALGlwv0Skwaqes3ea2f7i948BdJbdkWQPgJ6KjyMiDZL8BZ2ZGcnSbxTMrBdALwB49xOR5qr6leEBkl0AUPw82LguiUgzVE321wEsK35fBmBtY7ojIs0Srs9O8gUAiwDMBnAAwE8AvAbgJQB/A2APgFvNzF/IGyPrs3vzdaeMnU6dazuKe+t1d3d3u203b96c9NhRLdtrv2HDBrftunXr3Hg0p/327dvd+N69e0tjkydPdttG67enzNef+npIXSvAO6bjyMnSmLc+e3jObmZLS0LXRm1FpH3oclmRTCjZRTKhZBfJhJJdJBNKdpFM1D7ENWVYo9d22rRpbtuhoSE3Hg2v9R77sssuc9t6UxoD6VMHe6WYG264wW177bV+USWa3vv48eNuvK+vrzSWMqQZAN5++203PnXq1NKY1y8AeO2119z4J5984saj15t3zDSVtIgkUbKLZELJLpIJJbtIJpTsIplQsotkQskukolwiGsjdXR0mDesMWWI66RJk9y2Ud0z4vVtzpw5btvdu3e78WioZ0+PP6uXF+/sLJ0xDABw7rnnuvFov0a1cm9o8Geffea2fe+999z4wMCAG7/66qtLY9G1D2vX+lM03HHHHW482r5XZ4+GNHu8Ia56ZxfJhJJdJBNKdpFMKNlFMqFkF8mEkl0kE0p2kUzUWmcnaaedVj6EPqoven2Nnof3uONp75kxY4Yb37Nnjxt/9dVX3fiyZcvceDTm3HPy5Ek3HtXhZ8+e7cbPOOOMr92nz0V1+OgagoULF5bGHn74Ybfthx9+6MYvuugiN56y5HM0DbVXwx8aGlKdXSR3SnaRTCjZRTKhZBfJhJJdJBNKdpFMKNlFMlHrvPEkk5bRjebTTpEyn320rPHMmTOTHju6BuDYsWOV20bj1fft2+fGP/roIzfezOs4onnjr7jiitJY1K9du3a58Wi8esqY9Ii3bW/ehjB7SD5D8iDJHaNue4jkPpJbi3+Lv26HRaRe43mrfA7A9WPc/gsz6y7+rW9st0Sk0cJkN7PNAA7V0BcRaaKUk+DlJLcVH/PPKrsTyR6SfST76rwOX0S+qGqy/wrAtwB0A9gP4GdldzSzXjNbYGYLogv8RaR5KiW7mR0ws1NmNgzgSQDlw4tEpC1USnaSXaP+/B6AHWX3FZH2ENbZSb4AYBGA2ST3AvgJgEUkuwEYgA8A/KARnfHmGAf8GmJ0ipBaw2/m9w1R31Pi0Xz50fNKjaesQz59+nQ3/sgjj7jxu+++uzQW1cmfffZZNx71PeX1GL1Wq9bww2Q3s6Vj3Px0pUcTkZbR5bIimVCyi2RCyS6SCSW7SCaU7CKZqHWIKxCXJKpKLRGlTGMdlUqiaawjKWW/6HlFpblmlpii8teTTz7pxhcv9gdbevvtpZdectuuX++P7Uot5XrxaNtVh2PrnV0kE0p2kUwo2UUyoWQXyYSSXSQTSnaRTCjZRTJRa53dzJLqrl7b1GGiKVNJN3OKayCus19++eWlsfnz57ttn3rqqaTHTtmvK1eudNveeOONbnxwcNCNr169ujS2fPlyt+3AwIAbj4559HpqxZTqemcXyYSSXSQTSnaRTCjZRTKhZBfJhJJdJBNKdpFMsM4lmUiaN7Y7qtmmjAGOnmc0jbW3tPHRo0fdtql1+O7ubjfu1cqjfbpgwQI3HvX9nHPOceNPPPFEaWzRokVJj/3YY4+5ca+On3rMUsece9uPrjfxDA0NYXh4eMyDrnd2kUwo2UUyoWQXyYSSXSQTSnaRTCjZRTKhZBfJRO3zxntS5pSP6ujR3O1RXbS/v780FtXoo21fcMEFbnzjxo1u3BvXfdttt7lto/125ZVXuvFoPPy8efPcuKe3t9eNP//882788OHDpbHotRbVuqNjHo219/Z76hwCZcJ3dpLzSP6e5Fskd5L8UXH7LJIbSb5T/DyrUg9EpBbj+Rg/BOB+M7sEwN8D+CHJSwA8AGCTmV0IYFPxt4i0qTDZzWy/mb1Z/N4PYBeAuQBuArCquNsqAEua1UkRSfe1ztlJfgPA5QD+CKDTzPYXoY8BdJa06QHQU72LItII4/42nuQZAFYD+LGZHRkds5FvFMb8VsHMes1sgZn5Iy5EpKnGlewkJ2Ik0X9rZmuKmw+Q7CriXQAONqeLItII4cd4jnzP/zSAXWb281Gh1wEsA7Cy+Lm2KT0cxStJNHOqaMAvtUTDIbu6utz4XXfd5canTJnixr3ht88995zb1huCCgD33XefG586daobP3ToUGns3nvvdduuXeu/pKLylrdcdeoS31FpLmWp66ht1WHp4zln/zaA2wFsJ7m1uO1BjCT5SyTvBrAHwK2VeiAitQiT3cz+AKDsv6FrG9sdEWkWXS4rkgklu0gmlOwimVCyi2RCyS6Sib+qqaS9tinT7zbbqlWr3PjNN9/sxlPqrqn7ZWhoyI1v27bNjT/++OOlsTVr1pTGgPjaiGjYsrdfoueVOmw5ZSrqlJzUVNIiomQXyYWSXSQTSnaRTCjZRTKhZBfJhJJdJBO1TiVN0q2lR3V2r/YZ1T29sc1AXI9O6XdU0025vgAATpw4UbntwMCAGz9y5Igbv+6669z4yZMnS2PRMYmkjEmP6uip491T6/CeqtdO6J1dJBNKdpFMKNlFMqFkF8mEkl0kE0p2kUwo2UUyUet49o6ODvPqm81csjkS1XxTxh9feumlbryzc8yVs/5iy5YtbtyTOr+5t1Q1kLb0cWqtO7p+IWXe+JQ56cezfe/1FG3bO2aDg4Mazy6SOyW7SCaU7CKZULKLZELJLpIJJbtIJpTsIpkI6+wk5wH4NYBOAAag18x+SfIhAP8E4JPirg+a2fpgW+bVEKOabcoY4Gjb49gPlbedMlZ+PFLWrY/2aWqd3utbVE+Oat0pr4fosVPnlY/ae5o1b/x4Jq8YAnC/mb1JcjqAN0huLGK/MLN/q9wzEanNeNZn3w9gf/F7P8ldAOY2u2Mi0lhf63MQyW8AuBzAH4ublpPcRvIZkmeVtOkh2UeyL6mnIpJk3NfGkzwDwH8D+KmZrSHZCeBPGDmPfwRAl5ndFWxD5+wV2kd0zv715XjOPq69RXIigNUAfmtma4oOHTCzU2Y2DOBJAAsr91BEmi5Mdo68NTwNYJeZ/XzU7V2j7vY9ADsa3z0RaZTxfBv/bQC3A9hOcmtx24MAlpLsxsjH+A8A/CDaEMmk6YO9jzfRR7rU6Z490XNKWVoYSJuWONp29DG9mVMiN3t4dTOXsk457QP804Do9CU6JmXG8238HwCM1XO3pi4i7UVX0IlkQskukgklu0gmlOwimVCyi2RCyS6SiVqXbDYzdwnfyZMnV952ah09qoV79eSoZtvsy2W955a6HHTUPqr5evHUS5hT4lHb6PqBqBaeolnXH+idXSQTSnaRTCjZRTKhZBfJhJJdJBNKdpFMKNlFMlHrks0kPwGwZ9RNszEytVU7ate+tWu/APWtqkb27W/NbM5YgVqT/SsPTvaZ2YKWdcDRrn1r134B6ltVdfVNH+NFMqFkF8lEq5O9t8WP72nXvrVrvwD1rapa+tbSc3YRqU+r39lFpCZKdpFMtCTZSV5P8m2S75J8oBV9KEPyA5LbSW5t9fp0xRp6B0nuGHXbLJIbSb5T/Bxzjb0W9e0hkvuKfbeV5OIW9W0eyd+TfIvkTpI/Km5v6b5z+lXLfqv9nJ3kBAD/C+AfAewFsAXAUjN7q9aOlCD5AYAFZtbyCzBIXgPgzwB+bWaXFrf9K4BDZray+I/yLDP75zbp20MA/tzqZbyL1Yq6Ri8zDmAJgDvRwn3n9OtW1LDfWvHOvhDAu2b2vpmdBPAigJta0I+2Z2abARz60s03AVhV/L4KIy+W2pX0rS2Y2X4ze7P4vR/A58uMt3TfOf2qRSuSfS6AD0f9vRfttd67AfgdyTdI9rS6M2PoNLP9xe8fA+hsZWfGEC7jXacvLTPeNvuuyvLnqfQF3VddZWbzAXwXwA+Lj6ttyUbOwdqpdvorAN8C0A1gP4CftbIzxTLjqwH82MyOjI61ct+N0a9a9lsrkn0fgHmj/j6/uK0tmNm+4udBAK+i/ZaiPvD5CrrFz4Mt7s9ftNMy3mMtM4422HetXP68Fcm+BcCFJL9JchKA7wN4vQX9+AqS04ovTkByGoDvoP2Won4dwLLi92UA1rawL1/QLst4ly0zjhbvu5Yvf25mtf8DsBgj38i/B+BfWtGHkn5dAOB/in87W903AC9g5GPdIEa+27gbwNkANgF4B8B/AZjVRn17HsB2ANswklhdLerbVRj5iL4NwNbi3+JW7zunX7XsN10uK5IJfUEnkgklu0gmlOwimVCyi2RCyS6SCSW7SCaU7CKZ+D9B0+tq1pD8UQAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAATMUlEQVR4nO3df4xV5ZkH8O93EBAQRATHEdltbYzRaHZEJJtUDRvdxqKJ1ERTTBSj2ekfJbZqwhr3j2q0Cdls21SzqRl/UtvVqKAYAtmypFnSfxpGw/JDcP0RiSCCFQNTYGCGefaPOTajznme8bz3nnu77/eTkJm5z33Pfe859+Hce5/zvi/NDCLy/19HqzsgIvVQsotkQskukgklu0gmlOwimTitzgcjaSRL41FloFlt2107V0xS9mv0vDo6/HNRO++XZoqet5mNeVCSkp3k9QB+CWACgKfMbGVwf0ycOLE0Pjw8HD1e5bbRCyd60Xo7ONp21LfIOA5u5cdO3S/NTPZJkya58aGhITc+YcKEprQdj5STz6lTpypv23teld/Gk5wA4N8BfBfAJQCWkryk6vZEpLlSPrMvBPCumb1vZicBvAjgpsZ0S0QaLSXZ5wL4cNTfe4vbvoBkD8k+kn25fsYSaQdN/4LOzHoB9AJAR0eHsl2kRVLO7PsAzBv19/nFbSLShlKSfQuAC0l+k+QkAN8H8HpjuiUijVb5bbyZDZFcDuA/MVJ6e8bMdqZ0JioDeaJSSfR9gVcSBPySRlTeSr0G4LTT/MPklWqitql9i567F4/2eVSCiqQcsygelQVTy60eL0+845X0md3M1gNYn7INEamHLpcVyYSSXSQTSnaRTCjZRTKhZBfJhJJdJBO1jmc3MwwODpbGJ0+eHLavEgPimm0U9+qmzR53HdVsU4ZyNrvvKcOSU7YdxaPnHdXRvdcxAMyYMcON9/f3u/Fm0JldJBNKdpFMKNlFMqFkF8mEkl0kE0p2kUzUWnoD/DJRyiyqkZThs4BfxkkdBhpJKSumDI8F4v2WUrqL2kZ9i4Y1e2XH6JhFJcvomBw9etSNe1JmOvbozC6SCSW7SCaU7CKZULKLZELJLpIJJbtIJpTsIpmovc7u1QhT6qqpNdmotukNv42GO0bbTq03p6ykGj32lClT3Hj03M8///zS2IoVK9y2S5cudePRMd27d29p7OKLL3bbpk5jnTq9eNW27nUNlR9RRP6qKNlFMqFkF8mEkl0kE0p2kUwo2UUyoWQXyUStdXaSbm00qhenjIU/88wz3fjx48fd+Omnn14ai8aMR2Obzz77bDe+ZMkSN37eeeeVxubPn++2PXLkiBuP6tHr1q1z47fffntpbO7cuW7bnTv9FcBffvllN/7KK6+48RSpcy948ej6gZYs2UzyAwD9AE4BGDKzBSnbE5HmacSZ/R/M7E8N2I6INJE+s4tkIjXZDcDvSL5BsmesO5DsIdlHsi91KSERqS71bfxVZraP5DkANpLcbWabR9/BzHoB9AJAR0eHsl2kRZLO7Ga2r/h5EMCrABY2olMi0niVk53kNJLTP/8dwHcA7GhUx0SksVj1czTJCzByNgdGPg78h5n9NGhjXk06Zb7saFx26tzuKfPGRzZs2ODGr7nmGjeeMkdANB594sSJbjxa2thz//33u/GNGze68d27d7txr16dcrwbIaXO7vV9cHAQw8PDY3a+8md2M3sfwN9VbS8i9VLpTSQTSnaRTCjZRTKhZBfJhJJdJBOVS29VdHR0uKW3qC8p5a9o2ylLD0eivh06dMiNR0NoPSdPnkyKR33btGmTG3/00UdLY/39/W7bY8eOufGUYx4dz6jkGJU0o9JeylBvLz4wMFBaetOZXSQTSnaRTCjZRTKhZBfJhJJdJBNKdpFMKNlFMlHrVNJm5tYnU4epNpNXN02piwLA4cOH3ficOXPcuNe3e+65x237m9/8xo2nHpOUWnczrwHxpgYH0ofApiwRnjocu4zO7CKZULKLZELJLpIJJbtIJpTsIplQsotkQskukola6+yAX0OcMmWK2/bEiROVH7eZNfyoHnzLLbe48VmzZrnxqG8rVqwojb344otu20j03KrWfIH4eUXHLIp713RE4/hT5z9I2S/N2rbO7CKZULKLZELJLpIJJbtIJpTsIplQsotkQskukona6+yeaPlgT+rY55S6alQvvvPOO914Sk0WAKZPn14amzlzptv2008/deNRzTcat+0d09Tn3cxrJ6K+pV4D4GnWOP6wRySfIXmQ5I5Rt80iuZHkO8XPs5rSOxFpmPH89/McgOu/dNsDADaZ2YUANhV/i0gbC5PdzDYD+PIaQDcBWFX8vgrAkgb3S0QarOpn9k4z21/8/jGAzrI7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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAATMUlEQVR4nO3df4xV5ZkH8O93EBAQRATHEdltbYzRaHZEJJtUDRvdxqKJ1ERTTBSj2ekfJbZqwhr3j2q0Cdls21SzqRl/UtvVqKAYAtmypFnSfxpGw/JDcP0RiSCCFQNTYGCGefaPOTajznme8bz3nnu77/eTkJm5z33Pfe859+Hce5/zvi/NDCLy/19HqzsgIvVQsotkQskukgklu0gmlOwimTitzgcjaSRL41FloFlt2107V0xS9mv0vDo6/HNRO++XZoqet5mNeVCSkp3k9QB+CWACgKfMbGVwf0ycOLE0Pjw8HD1e5bbRCyd60Xo7ONp21LfIOA5u5cdO3S/NTPZJkya58aGhITc+YcKEprQdj5STz6lTpypv23teld/Gk5wA4N8BfBfAJQCWkryk6vZEpLlSPrMvBPCumb1vZicBvAjgpsZ0S0QaLSXZ5wL4cNTfe4vbvoBkD8k+kn25fsYSaQdN/4LOzHoB9AJAR0eHsl2kRVLO7PsAzBv19/nFbSLShlKSfQuAC0l+k+QkAN8H8HpjuiUijVb5bbyZDZFcDuA/MVJ6e8bMdqZ0JioDeaJSSfR9gVcSBPySRlTeSr0G4LTT/MPklWqitql9i567F4/2eVSCiqQcsygelQVTy60eL0+845X0md3M1gNYn7INEamHLpcVyYSSXSQTSnaRTCjZRTKhZBfJhJJdJBO1jmc3MwwODpbGJ0+eHLavEgPimm0U9+qmzR53HdVsU4ZyNrvvKcOSU7YdxaPnHdXRvdcxAMyYMcON9/f3u/Fm0JldJBNKdpFMKNlFMqFkF8mEkl0kE0p2kUzUWnoD/DJRyiyqkZThs4BfxkkdBhpJKSumDI8F4v2WUrqL2kZ9i4Y1e2XH6JhFJcvomBw9etSNe1JmOvbozC6SCSW7SCaU7CKZULKLZELJLpIJJbtIJpTsIpmovc7u1QhT6qqpNdmotukNv42GO0bbTq03p6ykGj32lClT3Hj03M8///zS2IoVK9y2S5cudePRMd27d29p7OKLL3bbpk5jnTq9eNW27nUNlR9RRP6qKNlFMqFkF8mEkl0kE0p2kUwo2UUyoWQXyUStdXaSbm00qhenjIU/88wz3fjx48fd+Omnn14ai8aMR2Obzz77bDe+ZMkSN37eeeeVxubPn++2PXLkiBuP6tHr1q1z47fffntpbO7cuW7bnTv9FcBffvllN/7KK6+48RSpcy948ej6gZYs2UzyAwD9AE4BGDKzBSnbE5HmacSZ/R/M7E8N2I6INJE+s4tkIjXZDcDvSL5BsmesO5DsIdlHsi91KSERqS71bfxVZraP5DkANpLcbWabR9/BzHoB9AJAR0eHsl2kRZLO7Ga2r/h5EMCrABY2olMi0niVk53kNJLTP/8dwHcA7GhUx0SksVj1czTJCzByNgdGPg78h5n9NGhjXk06Zb7saFx26tzuKfPGRzZs2ODGr7nmGjeeMkdANB594sSJbjxa2thz//33u/GNGze68d27d7txr16dcrwbIaXO7vV9cHAQw8PDY3a+8md2M3sfwN9VbS8i9VLpTSQTSnaRTCjZRTKhZBfJhJJdJBOVS29VdHR0uKW3qC8p5a9o2ylLD0eivh06dMiNR0NoPSdPnkyKR33btGmTG3/00UdLY/39/W7bY8eOufGUYx4dz6jkGJU0o9JeylBvLz4wMFBaetOZXSQTSnaRTCjZRTKhZBfJhJJdJBNKdpFMKNlFMlHrVNJm5tYnU4epNpNXN02piwLA4cOH3ficOXPcuNe3e+65x237m9/8xo2nHpOUWnczrwHxpgYH0ofApiwRnjocu4zO7CKZULKLZELJLpIJJbtIJpTsIplQsotkQskukola6+yAX0OcMmWK2/bEiROVH7eZNfyoHnzLLbe48VmzZrnxqG8rVqwojb344otu20j03KrWfIH4eUXHLIp713RE4/hT5z9I2S/N2rbO7CKZULKLZELJLpIJJbtIJpTsIplQsotkQskukona6+yeaPlgT+rY55S6alQvvvPOO914Sk0WAKZPn14amzlzptv2008/deNRzTcat+0d09Tn3cxrJ6K+pV4D4GnWOP6wRySfIXmQ5I5Rt80iuZHkO8XPs5rSOxFpmPH89/McgOu/dNsDADaZ2YUANhV/i0gbC5PdzDYD+PIaQDcBWFX8vgrAkgb3S0QarOpn9k4z21/8/jGAzrI7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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "DDIM inversion and reconstruction" ], "metadata": { "id": "9E2NpJsMH4iV" } }, { "cell_type": "code", "source": [ "# sample 64 images\n", "samples = ddim_generation(model, image_size=image_size, batch_size=batch_size, channels=channels,eta=0,x_start=images)\n", "\n", "for i in range(0,5):\n", " random_index = i\n", " f, axarr = plt.subplots(1,2)\n", " axarr[0].imshow(images[random_index].detach().cpu().squeeze(),cmap='gray')\n", " axarr[0].set_title(\"original\")\n", " axarr[1].imshow(samples[-1][random_index].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")\n", " axarr[1].set_title(\"reconstruction\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "-kqrDdKFH67Z", "outputId": "5cc2abcb-767e-4a57-e3bd-3a49da420f7a" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "inversion loop time step: 100%|█████████▉| 199/200 [00:05<00:00, 36.13it/s]\n", "sampling loop time step: 100%|██████████| 200/200 [00:05<00:00, 38.14it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAADHCAYAAAAAoQhGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAWu0lEQVR4nO3de5BcZZnH8e8PiHhBJUgICULixiCgJagR0EVEELm6gJZoVG66Rl3YAmFXgapdKSQQS0VgRSgoIBEQpQqQGAKILBoibJbIGggECHLZEHKVgEAWBPLsH31GO3PenumZvr49v0/V1PQ8/Z5z3tP99DOnz3suigjMzCw/m3S6A2ZmNjwu4GZmmXIBNzPLlAu4mVmmXMDNzDLlAm5mlikX8A6QdLGkf2t220HmM1FSSNqs0XmZdTtJX5D0q073o9Xk48BHBkkTgceBURHxamd7YyONpAAmR8SjLZj3REZobnsLvM0kbdrpPljvy+2bVm797RYu4E0iaWdJv5H0rKQHJP1DEZ8p6SJJcyW9CHysiJ1VNe03Ja2Q9LSkfyx2dbyzavqzisf7SHpK0imSVhfTHFc1n0Mk/Y+kP0taJumM9r4K1kmSnpD0LUn3AS9K2kvSXUVOLpK0T1XbrSRdUeTcOkm/qHruK5IelfSMpNmSxlc9F5K+JmlpMd8LJal47p2SfivpOUlrJf28iM8rJl8k6QVJn63K5W9JWglcIelYSfP7rVP1Z+ENkn4g6cliGfMlvQHom/+zxfw/1H9ekj4s6Z5iunskfbjqud9I+o6k30l6XtKvJG3dnHeltVzAm0DSKOCXwK+AbYB/Bq6W9K6iyeeB6cCbgf4JeiBwMvBx4J3APoMsblvgrcB2wJeBCyWNLp57ETga2BI4BPi6pMMbWTfLzlQq7/3fATcCZwFbAf8CXCdpTNHuSuCNwLup5OwPASTtC5wDHAmMA54EftZvGYcCHwTeW7Q7oIh/h8pnYDTwduA/ACJi7+L5XSNii4j4efH3tkXfJgDT6li37wMfAD5cTPdNYAPQN/8ti/nfXT2RpK2Am4ALgLcB5wI3SXpbVbPPA8cVr8XrqLxeXc8FvDn2BLYAZkTEXyLiP4E5VD5MADdGxO8iYkNEvNRv2iOBKyLigYhYD5wxyLJeAc6MiFciYi7wAvAugIj4TUTcXyznPuAa4KNNWUPLxQURsQz4IjA3IuYW+XAbsBA4WNI44CDgaxGxrsil3xbTfwG4PCLujYiXgdOADxX7mfvMiIhnI+J/gTuA3Yr4K1SK8fiIeCkiNtpYSdgAfDsiXo6I/xuooaRNgC8BJ0bE8oh4LSLuKvo4mEOApRFxZUS8GhHXAA8Bn6xqc0VEPFL049qqdepqLuDNMR5YFhEbqmJPUtlKBlg22LRVfw/UFuBP/QZq1lP554GkPSTdIWmNpOeArwFZfBW0punLnwnAZ4rdHM9KehbYi8pW9fbAMxGxLjH9eCq5C0BEvAD8ib/lMsDKqsd/zT8qW8QC/rvYjfilQfq6JrFBU8vWwOuBP9bZvtpG61So/nxC7XXqai7gzfE0sH2xldBnB2B58XigQ31WUPm62Wf7BvrxU2A2sH1EvBW4mMoHykaOvlxbBlwZEVtW/bwpImYUz20lacvE9E9TKf4ASHoTld0OyxNtN15wxMqI+EpEjAe+Cvy4b//1IH3t8yKV3Tp9y9626rm1wEvApDrm099G61So/nxmywW8ORZQ+a/9TUmjisGiT1Led5hyLXBcMQj6RqCRY77fTGXL6iVJu1PZr2cj01XAJyUdIGlTSa8vBg7fHhErgJupFNjRRc727Ue+hko+7iZpc+BsYEFEPDHYAiV9RlLfxsg6KoW171vpKir75QeyCHh3sezXU7U7sfh2ezlwrqTxxTp9qOjjmmI5teY/F9hR0uclbSbps8AuVHZzZs0FvAki4i9UCvZBVLYUfgwcHREP1THtzVQGV+4AHgX+q3iqnn17/f0TcKak54F/p/LPwUagYj/4YcDpVArcMuBf+dtn/igq+6wfAlYDJxXT/ZrKRsR1VL4dTgI+V+diPwgskPQClW+CJ0bEY8VzZwCzit05R9bo8yPAmcCvgaX0G/CnMrB4P3AP8AzwXWCTYuxoOvC7Yv579pvvn6gMvJ5CZXfQN4FDI2JtnevVtXwiT5eRtDOwGNh8pJ2UYGZD4y3wLiDpCEmbF4cDfhf4pYu3mQ3GBbw7fJXK19g/Aq8BX+9sd8wsB96FYmaWKW+Bm5llqqECLulASQ8X1004tVmdMus057blYNi7UFS5qt4jwP7AU1QO7ZkaEQ8OMI3311hLRUTDJy45t60bpXK7kS3w3YFHI+Kx4jjon1E57tQsd03JbUnJn0a1ar6t6kOttp1eh17QSAHfjo2v2/EUG19bAABJ0yQtlLSwgWWZtZNz27LQ8ouoR8QlwCXgr5nWW5zb1mmNFPDlbHzhpbfTAxeHMaNJud2qQ3S74dDfofShG/rbqxrZhXIPMFnSOyS9jsr1EmY3p1tmHeXctiwMews8Il6VdAJwK7AplYvAP9C0npl1iHPbctHWMzG9n9BarRmHEQ6Hc9tardmHEZqZWQe5gJuZZarlhxGajVQ+McUGU2sXdv/cqdXOW+BmZplyATczy5QLuJlZplzAzcwy5UFMsybxoKUNVaM54y1wM7NMuYCbmWXKBdzMLFMu4GZmmXIBNzPLlI9CMbO2q/cU8uHMo169cNSQt8DNzDLlAm5mlikXcDOzTLmAm5llqqFBTElPAM8DrwGvRsSUZnSq12255Zal2FFHHVWKXXDBBcnpN2zY0NDyN9kk/X87Nd81a9Yk206fPr0UqzUoNGvWrFLsueeeG6iLHefcHp56c/v888+ve57NGPBMWbZsWTJ+1lln1b2sq666qhRbv359Q/0aimYchfKxiFjbhPmYdRvntnU170IxM8tUowU8gF9J+r2kac3okFmXcG5b12t0F8peEbFc0jbAbZIeioh51Q2K5PcHwHLj3Lau19AWeEQsL36vBm4Adk+0uSQipngQyHLi3LYcaLino0p6E7BJRDxfPL4NODMibhlgmsbOfW2zKVPKn8sxY8Yk2y5ZsqQU+/SnP51se/zxx5diO+ywQylWa+S7VacQt2q+c+fOLcW+973vJdvOmzcvGa9XRDR8fvRwczunU7M/8IEPlGLNyO0TTjihFJswYcIQezd8rXoPan02Zs6cWYrNmDEj2Xbp0qUNLT+V243sQhkL3FC8YJsBPx0owc0y4ty2LAy7gEfEY8CuTeyLWVdwblsufBihmVmmXMDNzDLl64GTHqwEmDNnTim29dZbJ9umBnp23nnnhvr17LPPJuOrV69uaL7f+MY3kvFWDWKmXpsXX3yxoWVZfd7//vcn47Nnzy7Fxo4dm2z70EMPlWKN5nat93/FihWlWK28TF364eSTT062fe211+qe71A+B/fff38ptmrVqmTbVgywegvczCxTLuBmZplyATczy5QLuJlZplzAzcwy5aNQqH0Kca0jTlKGMiqfuklC6gYJ9913X3L6Rk83t5Fjm222Sca33XbbuucxlNxeu7Z8+fSzzz67FFu0aFFy+jvuuKPuZXWD1JEl7bykgrfAzcwy5QJuZpYpF3Azs0y5gJuZZWrY1wMf1sK69HrgDz/8cDI+adKklizvkEMOKcVuvfXWlixrpGnG9cCHo1uvB566jAHA5MmTW7K8Qw89tBS7+eabW7KsbtCu97zW9cC9BW5mlikXcDOzTLmAm5llygXczCxTgxZwSZdLWi1pcVVsK0m3SVpa/B7d2m6aNZ9z23JXz6n0M4EfAT+pip0K3B4RMySdWvz9reZ3L2/7779/Mr5gwYI298RqmEmP53YzjpJIzeMTn/hEsu1dd93V8PJaoRuPEGqGQbfAI2Ie8Ey/8GHArOLxLODwJvfLrOWc25a74e4DHxsRffc+Wgmk78Vklh/ntmWj4asRRkQMdIKOpGnAtEaXY9Zuzm3rdsPdAl8laRxA8bvmXXYj4pKImBIR6TsHm3UX57ZlY7hb4LOBY4AZxe8bm9ajTF122WWlWK3ByvXr17e6OzZ82eZ26rIYtQbvhtL20ksvLcXmz5+fbPvyyy/XPV9rXD2HEV4D3A28S9JTkr5MJbn3l7QU+Hjxt1lWnNuWu0G3wCNiao2n9mtyX8zayrltufOZmGZmmXIBNzPLlAu4mVmmfEMHmnNDh802a/iQemuCkXxDh9Rn+ZFHHkm2HUpujxo1qhTbsGFDsm2nX4Ne5Rs6mJn1GBdwM7NMuYCbmWXKBdzMLFMeeaP2wIsHZCwnrcrX1IClPxvdwVvgZmaZcgE3M8uUC7iZWaZcwM3MMuUzMYGjjjoqGb/iiivqnkcrzsScOHFiMr7zzjs3fVkAa9asKcUWLlzYkmW1ykg+EzPl2GOPTcZT16+vVQtSuV2r7SablLcJU4OgQ8nt1DwHiqesXl2+L8c999yTbNvOmlgvn4lpZtZjXMDNzDLlAm5mlikXcDOzTNVzT8zLJa2WtLgqdoak5ZL+UPwc3NpumjWfc9tyV8+hEzOBHwE/6Rf/YUR8v+k96oC1a9c2PI+bbrqpCT3Z2A477JCMN3oUSq2jJVIj9ccdd1yy7S233NJQH7rETHo8t1NHFsHQjrSYM2dOKVbreuApm266aSlW6yiUnXbaqe75ptRar3Xr1pVitY7QacVnuVUG3QKPiHnAM23oi1lbObctd43sAz9B0n3F19DRTeuRWec5ty0Lwy3gFwGTgN2AFcAPajWUNE3SQkl5nRFiI5Vz27IxrAIeEasi4rWI2ABcCuw+QNtLImJKREwZbifN2sW5bTkZ1vnfksZFxIrizyOAxQO1HwkOOOCAps+z1mBjq071HTNmTCl21VVXJdt+6lOfKsXmzZvX9D61W6/ldq1cSeVWrbYHHXRQU/s00LIaVeszM3p0eU9Yrdw+7LDDSrFuze1BC7ika4B9gK0lPQV8G9hH0m5AAE8AX21hH81awrltuRu0gEfE1ES4fCUcs8w4ty13PhPTzCxTLuBmZplyATczy5TvSj+ATl+gv9YF6x9//PFSbPbs2cm2H/3oR0ux3XbbLdk2dXp0avQe4L3vfW8p1q0j9SPZUE55r2UoR4zU+5mp1e7JJ58sxW688cZk21Ru77rrrnUtH+Atb3lLMv6e97ynFOvW3PYWuJlZplzAzcwy5QJuZpYpF3Azs0x5EJPa10yeO3du25Y3ffr0uqdfv359KbZixYpESzjvvPNKsdQAJKQHq5544olk2yuvvHKAHlq3SF3jHdLX+E7dfR6GNpi/cuXKUmzGjBmlWK2B0RdeeKEUe/rpp5NtL7zwwlKsVm6nPPbYY8n41VdfXfc8Os1b4GZmmXIBNzPLlAu4mVmmXMDNzDLlAm5mlim16sLqyYVJ7VvYCFPrFOLrr7++FKt1R/BULtx9993Jth/5yEfq71wbRURHrn8gKTp96YWUdn6+h2IoNyuZMiV9w6MbbrihFBs/fnzdy7vzzjuTbVOn6Hf6vY2IZG57C9zMLFMu4GZmmXIBNzPLlAu4mVmm6rmp8fbAT4CxVG70eklEnC9pK+DnwEQqN389MiLWta6rNpCzzz47GZ8wYULd83jwwQdLsS9+8YvD7lO3Gwm5PZTBt1Zc93uoy0rN95xzzkm2TQ1Y1urX4sWLS7Gjjz56oC5moZ4t8FeBUyJiF2BP4HhJuwCnArdHxGTg9uJvs5w4ty1rgxbwiFgREfcWj58HlgDbAYcBs4pms4DDW9VJs1ZwblvuhnQ1QkkTgfcBC4CxEdF3CbyVVL6GpqaZBkwbfhfNWs+5bTmqexBT0hbAdcBJEfHn6ueiskMruVMrIi6JiCkRkT4a36zDnNuWq7oKuKRRVBL86ojoO7VvlaRxxfPjgPSFh826mHPbclbPUSgCLgOWRMS5VU/NBo4BZhS/07eOHsFqjXIvWrSoFNt7771LsVoj6jvttFMpduCBB9bdr1p3u0/dETwV6xXO7Y0N5ciS0aNHJ+OjRo0qxaZOnVqKbb755snpJ0+eXIrtt99+ybZDOWomdWOSWrnd6dPmh6KefeB/DxwF3C/pD0XsdCrJfa2kLwNPAke2potmLePctqwNWsAjYj5Q619S+l+jWQac25Y7n4lpZpYpF3Azs0z5rvQtdMQRRyTjxx57bCk2lEHM1ODNUAZ0UnckBzjttNPqnoeNbPvuu28yvscee5Rip5xySilWK19TA+wbNmxItk19Pm6++eZk29NPPz0Zz523wM3MMuUCbmaWKRdwM7NMuYCbmWXKBdzMLFO+K30LjRkzJhmfNGlSKTZ//vxSbChHodSyZs2aUmzcuHF1T58b35W+s3bcccdSbMmSJaVYrSNLUmpd+mHVqlWlWK270qc+Mzm9X74rvZlZj3EBNzPLlAu4mVmmXMDNzDLlU+lbKDWACPDKK6+UYieddFIpdv7559e9rIsuuigZv/TSS+ueh1mjli1bVoqdeOKJpVit3E4NLF588cXJtqn4UAb4a7XNaXDTW+BmZplyATczy5QLuJlZplzAzcwyNWgBl7S9pDskPSjpAUknFvEzJC2X9Ifi5+DWd9eseZzblrtBT6WXNA4YFxH3Snoz8HvgcCo3en0hIr5f98JG2Kn01n5DOZW+2bmd09EL3arNl/Zo27IaVetU+npuarwCWFE8fl7SEmC75nfRrL2c25a7Ie0DlzQReB+woAidIOk+SZdLGl1jmmmSFkpa2FBPzVrIuW05qvtqhJK2AH4LTI+I6yWNBdYCAXyHylfRLw0yD+9CsZYaztUIm5XbOX0l71behZJWaxdKXQVc0ihgDnBrRJybeH4iMCci3jPIfFzAraWGWsCbmds5FYRu5QKeNuzLyaqylpcBS6oTvBgA6nMEsLgZHTVrF+d25xQFqfTTKEl1//SCeo5C2Qu4E7gf6LsK++nAVGA3Kl8znwC+WgwKDTQvb4FbSw3xKJSm5navFIV2aNWWdq++Bw3tQmkWF3BrNd+RJw8u4EPjO/KYmfUYF3Azs0y5gJuZZco3dDBrkv77dXt1f2wzNOO1aef4XbvVu27eAjczy5QLuJlZplzAzcwy5QJuZpapdg9irgWeLB5vXfzda7xenTOhg8vuy+2/vk49OMjW9TkwzNe869eLGrnd1jMxN1qwtDAipnRk4S3k9RrZevl16tV1y3m9vAvFzCxTLuBmZpnqZAG/pIPLbiWv18jWy69Tr65btuvVsX3gZmbWGO9CMTPLVNsLuKQDJT0s6VFJp7Z7+c1U3PB2taTFVbGtJN0maWnxO3lD3G4maXtJd0h6UNIDkk4s4tmvWyv1Sm47r/NZt7YWcEmbAhcCBwG7AFMl7dLOPjTZTODAfrFTgdsjYjJwe/F3bl4FTomIXYA9geOL96kX1q0leiy3Z+K8zkK7t8B3Bx6NiMci4i/Az4DD2tyHpomIecAz/cKHAbOKx7OAw9vaqSaIiBURcW/x+HlgCbAdPbBuLdQzue28zmfd2l3AtwOWVf39VBHrJWOr7p+4Ehjbyc40qrgr+/uABfTYujVZr+d2T733vZLXHsRsoagc4pPtYT6StgCuA06KiD9XP5f7utnw5f7e91Jet7uALwe2r/r77UWsl6ySNA6g+L26w/0ZFkmjqCT51RFxfRHuiXVrkV7P7Z5473str9tdwO8BJkt6h6TXAZ8DZre5D602GzimeHwMcGMH+zIsqtwu5TJgSUScW/VU9uvWQr2e29m/972Y120/kUfSwcB5wKbA5RExva0daCJJ1wD7ULma2Srg28AvgGuBHahcne7IiOg/INTVJO0F3AncD2wowqdT2V+Y9bq1Uq/ktvM6n3XzmZhmZpnyIKaZWaZcwM3MMuUCbmaWKRdwM7NMuYCbmWXKBdzMLFMu4GZmmXIBNzPL1P8DKeIjWNxMJ14AAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAADHCAYAAAAAoQhGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAW5UlEQVR4nO3da5QdVZnG8f8DBhUIl8YxJqEBR6KIsyRoQESWhvEGBLl8AEQHHQhEGHWhwwgZ0ZGV6Aw4KgMoKMhNRwEFQRQYjIii4DBcFAgiJDhgEgKRSyQJgxDyzodTrSddu9Ln9Ln02aef31pZ3f2eXVW7Tr/9pk7tXVWKCMzMLD8bjXUHzMxsdFzAzcwy5QJuZpYpF3Azs0y5gJuZZcoF3MwsUy7gY0DSVyV9ut1tR1jPDpJC0otaXZdZr5P0fkk/Gut+dJo8D3x8kLQD8L/AhIhYO7a9sfFGUgDTImJxB9a9A+M0t30E3mWSNh7rPlj/y+2TVm797RUu4G0i6bWSfipppaR7JR1QxC+SdI6kayWtAfYuYp+tW/ZEScslPSLp6OJUx451y3+2+H6mpKWSTpC0oljmyLr1zJL0K0lPS1oi6ZTuvgs2liQ9JOkkSXcDayTtJemWIifvkjSzru2ApAuLnHtK0lV1rx0jabGkJyVdLWlK3Wsh6VhJi4r1fkWSitd2lPQzSX+U9Liky4r4TcXid0laLemwulw+SdKjwIWS/l7SL4btU/3fwkslfVHSw8U2fiHppcDQ+lcW63/z8HVJ2lPSbcVyt0nas+61n0qaL+lmSask/UjSy9rzW+ksF/A2kDQB+AHwI+DlwEeBb0l6TdHkfcDngInA8ATdB/hH4B3AjsDMETb3CmBLYCowG/iKpK2L19YAHwC2AmYBx0k6qJV9s+wcTu13/9fA94HPAgPAPwFXSPqrot03gU2B11HL2dMBJP0t8G/AocBk4GHg0mHb2B/YDXh90e7dRXw+tb+BrYFtgbMAIuKtxeu7RMTmEXFZ8fMrir5tD8xpYN++ALwR2LNY7kRgHTC0/q2K9f+yfiFJA8A1wJnANsCXgGskbVPX7H3AkcV7sQm196vnuYC3xx7A5sCpEfFcRPwE+CG1PyaA70fEzRGxLiKeHbbsocCFEXFvRDwDnDLCtp4H5kXE8xFxLbAaeA1ARPw0Iu4ptnM3cAnwtrbsoeXizIhYAvwdcG1EXFvkwwLgdmA/SZOBfYFjI+KpIpd+Viz/fuCCiLgzIv4E/DPw5uI885BTI2JlRPweuBGYXsSfp1aMp0TEsxGx3sFKwjrgMxHxp4j4vw01lLQRcBRwfEQsi4gXIuKWoo8jmQUsiohvRsTaiLgE+C3wnro2F0bEA0U/vlO3Tz3NBbw9pgBLImJdXexhakfJAEtGWrbu5w21BXhi2EDNM9T+80DSmyTdKOkPkv4IHAtk8VHQ2mYof7YHDilOc6yUtBLYi9pR9SDwZEQ8lVh+CrXcBSAiVgNP8JdcBni07vs/5x+1I2IB/1OcRjxqhL7+IXFAU+VlwEuABxtsX2+9fSrU/31C9T71NBfw9ngEGCyOEoZsBywrvt/QVJ/l1D5uDhlsoR/fBq4GBiNiS+Cr1P6gbPwYyrUlwDcjYqu6f5tFxKnFawOStkos/wi14g+ApM2onXZYlmi7/oYjHo2IYyJiCvAh4Oyh89cj9HXIGmqndYa2/Yq61x4HngVe1cB6hltvnwr1f5/ZcgFvj1up/a99oqQJxWDReyifO0z5DnBkMQi6KdDKnO+J1I6snpW0O7XzejY+/SfwHknvlrSxpJcUA4fbRsRy4DpqBXbrImeHziNfQi0fp0t6MfCvwK0R8dBIG5R0iKShg5GnqBXWoU+lj1E7L78hdwGvK7b9EupOJxafbi8AviRpSrFPby76+IdiO1XrvxZ4taT3SXqRpMOAnamd5syaC3gbRMRz1Ar2vtSOFM4GPhARv21g2euoDa7cCCwG/rt4qZFze8P9AzBP0irgX6j952DjUHEe/EDgk9QK3BLgE/zlb/4IauesfwusAD5WLPdjagcRV1D7dPgq4L0NbnY34FZJq6l9Ejw+In5XvHYKcHFxOufQij4/AMwDfgwsYtiAP7WBxXuA24AngdOAjYqxo88BNxfr32PYep+gNvB6ArXTQScC+0fE4w3uV8/yhTw9RtJrgYXAi8fbRQlm1hwfgfcASQdLenExHfA04Acu3mY2Ehfw3vAhah9jHwReAI4b2+6YWQ58CsXMLFM+Ajczy1RLBVzSPpLuL+6bMLddnTIba85ty8GoT6Godle9B4B3AkupTe05PCJ+s4FlfL7GOioiWr5wybltvSiV263cwnF3YPHQPE9Jl1Kbd1qZ5GaZaEtuFzfpK2l13KmZ9XaqD82o6kNKp96bburme9vKKZSprH/fjqWsf28BACTNkXS7pNtb2JZZNzm3LQsdv4l6RJwLnAv+mGn9xbltY62VAr6M9W+8tC19cHMYM9qU2536KN3MenthmnAvnBbphfehE1o5hXIbME3SKyVtQu1+CVe3p1tmY8q5bVkY9RF4RKyV9BHgemBjajeBv7dtPTMbI85ty0VXr8T0eULrtHZMIxwN53bn+BRKTSq3fSWmmVmmXMDNzDLV8WmEZuNVL1xU0quqTmm0etFP1fK9+rto9dSOj8DNzDLlAm5mlikXcDOzTLmAm5llyoOYfWLixInJ+NNPP12KLV26NNl2r732KsUefvjh1jo2jvTqQFkvaua92mKLLZLxlStXlmLN5Pbvf//7hvvQKY2+D1WDnT4CNzPLlAu4mVmmXMDNzDLlAm5mlikXcDOzTHkWSoa22WabUuzKK69Mtl23bl0ptmrVqmTb1atXt9YxsxYNDAyUYlW5nZqZUZXDa9asaa1jPcpH4GZmmXIBNzPLlAu4mVmmXMDNzDLV0iCmpIeAVcALwNqImNGOTtmGHXvssaXYnnvu2fDy55xzTjL+xBNPjLpP/ca53T6py8WrLg0/7rjjSrG3vOUtybapdVTl9uOPP95Qv3LTjlkoe0dE+d0xy59z23qaT6GYmWWq1QIewI8k3SFpTjs6ZNYjnNvW81o9hbJXRCyT9HJggaTfRsRN9Q2K5PcfgOXGuW09r6Uj8IhYVnxdAVwJ7J5oc25EzPAgkOXEuW05GPURuKTNgI0iYlXx/buAeW3rmXHMMcck4yeffHLD67jmmmtKsa9//euj7tN44Nxur9RskaOPPjrZ9lOf+lRDywNcd911pdh5552XbNsPM05SWjmFMgm4snhjXgR8OyL+qy29Mhtbzm3LwqgLeET8DtiljX0x6wnObcuFpxGamWXKBdzMLFOqGiDoyMak7m0sM4ODg6XYggULkm2nTZtWilXdB3nLLbdsrWOZiYgxGa2SFP06UNaqZnJ7xx13LMWqcnurrbZqrWMZiYhkbvsI3MwsUy7gZmaZcgE3M8uUC7iZWaZcwM3MMuWn0veI1Kh8akQe0pcWz5vnK72tN11//fWlWFVup8yfPz8ZT/0djLeZQD4CNzPLlAu4mVmmXMDNzDLlAm5mlilfSj8GXv3qV5di9913XylW9bv5yU9+Uortv//+ybbPPfdck73Lmy+l746qfU3l9sKFCxtePpXbs2bNSrZ9/vnnN9TFvuJL6c3M+owLuJlZplzAzcwy5QJuZpapEQu4pAskrZC0sC42IGmBpEXF1607202z9nNuW+4auZT+IuDLwDfqYnOBGyLiVElzi59Pan/38pYakQc47bTTGlp++fLlyfjHP/7xUmy8zTZpk4twbo8oNWOk6lL4z3/+86XYRhuVjxOXLVuWXD6V21WzTXwpfQNH4BFxE/DksPCBwMXF9xcDB7W5X2Yd59y23I32HPikiBg6PHwUmNSm/piNNee2ZaPluxFGRGzoAh1Jc4A5rW7HrNuc29brRnsE/pikyQDF1xVVDSPi3IiYEREzRrkts25ybls2RnsEfjXwQeDU4uv329ajPvLRj340GT/ggANKsdTgS2pAB+Dee+8txSZOnJhs26kndy9ZsqQj6+0Bzu1hUoOFVbmduuw9tfwJJ5yQXD512f3mm2+ebNtqblfdqiI1eaCbtxxpRiPTCC8Bfgm8RtJSSbOpJfc7JS0C3lH8bJYV57blbsQj8Ig4vOKlt7e5L2Zd5dy23PlKTDOzTLmAm5llygXczCxTfqBDm7ztbW8rxb773e8m2w4MDJRiqVkot9xyS3L5Rx55pBSbNm1asu0uu+xSirXjd77ddts11K9u8wMd2m/mzJml2OWXX55s2+jMkKrcXrp0aSlWdUuK6dOnN7StKlV/B9tvv30pVnVbi27VTz/Qwcysz7iAm5llygXczCxTLuBmZpnyIGaTjj/++GT85JNPLsVSg5VVUgNg7fjddGq9n/jEJ0qx008/veX1tsqDmKNXdXn8pz/96VJs663Tz7lI3fu71Xxrx/vaTB9Sl/mfccYZLfehFR7ENDPrMy7gZmaZcgE3M8uUC7iZWaZafiLPeHPQQelHJDYzYJmSGgBsx2Dj+eefX4rNnj072TZ1xVvq/s7Wnw4++OBkPDVgWTWw+MILL5RiZ555ZsN9aGbQ/cILLyzFjjzyyGTbnXbaqRTbd999G+5Dr/IRuJlZplzAzcwy5QJuZpYpF3Azs0w18kzMCyStkLSwLnaKpGWSfl3826+z3TRrP+e25a6RWSgXAV8GvjEsfnpEfKHtPeohqSe9p+77DemR8rvuuivZNrWOVatWNdm70UtdBg/pEfz9998/2Tb13mToIvo8t6tmVGyxxRal2Fvf+taG13v33Xcn43vvvXcptnLlyobX26qqp93PmTOnFHvXu96VbJt6b3rViEfgEXET8GQX+mLWVc5ty10r58A/Iunu4mNo+s42ZnlyblsWRlvAzwFeBUwHlgNfrGooaY6k2yXdPsptmXWTc9uyMaoCHhGPRcQLEbEOOA/YfQNtz42IGRExY7SdNOsW57blZFSX0kuaHBFDT/k8GFi4ofa9bo899kjGzz777FKs6rLe1CDk/PnzG27bC44++uhSrGp/d9111053Z0z0W27vtttuyXgzub1mzZpSbN68ecm23RywbMYRRxxRilUN8KZyu+q9GevL7kcs4JIuAWYCL5O0FPgMMFPSdCCAh4APdbCPZh3h3LbcjVjAI+LwRLh8hySzzDi3LXe+EtPMLFMu4GZmmXIBNzPLlB/oAAwODibjr3/96xteR+rJ3VdeeeWo+9Tr3vCGN4x1F2yY1EyJbbfdNtl2l112aXi9p5xySilWlduNzsro1KyOqvVutFHjx6rTp08vxcZ6tkkVH4GbmWXKBdzMLFMu4GZmmXIBNzPLlNrx5POGNyZ1b2NN2HTTTZPx+++/vxSbMmVKsu2CBQtKsX322ae1jnXIMccck4yfccYZpdgmm2ySbPv000+XYlW3JHjggQea6F1rImJMRpskRS8OdFXl9qJFi0qxSZMmJds2k9utvgfNPJU+JXU7CICzzjqrFJswYUKy7VNPPVWKVeX2gw8+2HDfWhERydz2EbiZWaZcwM3MMuUCbmaWKRdwM7NMuYCbmWXKl9IDzzzzTDKeGv2uGmXvxFPat9lmm2Q8NbNg9uzZybapp8o38zCG1atXJ+MnnXRSKdbN2SbWmKrcXrt2bSlWNdsjldutzjYZGBhIxjfbbLNS7Kijjkq2TeV26jL4KlW5PXfu3FKsW7NNmuUjcDOzTLmAm5llygXczCxTLuBmZplq5KHGg8A3gEnUHvR6bkScIWkAuAzYgdrDXw+NiPI1qBlLDepUDfRMmzatFLvsssta2n7V5btTp05teB2pwaZVq1Yl295zzz2lWGpAB+Dmm29uuA+9ajzkdtVg47p160qxqtzeaaedSrGq3G504P9Nb3pTcvmq+5c36tlnn03G77zzzlKsmdzuxdskQGNH4GuBEyJiZ2AP4MOSdgbmAjdExDTghuJns5w4ty1rIxbwiFgeEXcW368C7gOmAgcCFxfNLgYO6lQnzTrBuW25a2oeuKQdgF2BW4FJEbG8eOlRah9DU8vMAeaMvotmnefcthw1PIgpaXPgCuBjEbHevUSjduIreQItIs6NiBkRMaOlnpp1iHPbctVQAZc0gVqCfysivleEH5M0uXh9MrCiM1006xzntuVsxAc6qDb8ejHwZER8rC7+78ATEXGqpLnAQEScOMK6evKBDlVSN4f/2te+lmzb6oMxWr2RfZXLL7+8FKuaQVD1pPGcNPNAh3bndq/OVEhJ3Xqhmdzu5r5W/R1cccUVpdill16abHvVVVc1vN5WdeK9qXqgQyPnwN8CHAHcI+nXReyTwKnAdyTNBh4GDm1XZ826xLltWRuxgEfEL4Cq/1Le3t7umHWPc9ty5ysxzcwy5QJuZpYpP5W+SVWX+s6aNasUO+yww5Jt77jjjlLsjW98Y0PtABYvXlyKXXPNNcm2S5cuTcb7lZ9KP3qDg4PJeCq3DznkkGTbX/3qV6VY6v7zqUvbARYtWlSKXXvttcm2qdzuZj2D7g3m+qn0ZmZ9xgXczCxTLuBmZplyATczy5QLuJlZpjwLxfqKZ6E0ppm/+07d5qFX9eLv0bNQzMz6jAu4mVmmXMDNzDLlAm5mlqmmHqlmZv2hmYG6nAYse3EAspN8BG5mlikXcDOzTLmAm5llygXczCxTIxZwSYOSbpT0G0n3Sjq+iJ8iaZmkXxf/9ut8d83ax7ltuWvkqfSTgckRcaekicAdwEHUHvS6OiK+0PDGfCm9dViTT6Vva26PtxkQ1j2jfip9RCwHlhffr5J0HzC1/V006y7ntuWuqXPgknYAdgVuLUIfkXS3pAskbV2xzBxJt0u6vaWemnWQc9ty1PDdCCVtDvwM+FxEfE/SJOBxIID51D6KHjXCOnwKxTpqNHcjbFdu+xSKdUrVKZSGCrikCcAPgesj4kuJ13cAfhgRfzPCelzAraOaLeDtzG0XcOuUUd9OVrWsPB+4rz7BiwGgIQcDC9vRUbNucW5b7hqZhbIX8HPgHmBdEf4kcDgwndrHzIeADxWDQhtal4/AraOanIXS1tz2Ebh1SkunUNrFBdw6zU/ksX7kJ/KYmfUZF3Azs0y5gJuZZcoPdDBrk+HjST4nbqPV6Nikj8DNzDLlAm5mlikXcDOzTLmAm5llqtuDmI8DDxffv6z4ud94v8bO9mO47aHc/vP7lNPT3BuUQw6MRg77lcztrl6Jud6GpdsjYsaYbLyDvF/jWz+/T/26bznvl0+hmJllygXczCxTY1nAzx3DbXeS92t86+f3qV/3Ldv9GrNz4GZm1hqfQjEzy1TXC7ikfSTdL2mxpLnd3n47FQ+8XSFpYV1sQNICSYuKr8kH4vYySYOSbpT0G0n3Sjq+iGe/b53UL7ntvM5n37pawCVtDHwF2BfYGThc0s7d7EObXQTsMyw2F7ghIqYBNxQ/52YtcEJE7AzsAXy4+D31w751RJ/l9kU4r7PQ7SPw3YHFEfG7iHgOuBQ4sMt9aJuIuAl4clj4QODi4vuLgYO62qk2iIjlEXFn8f0q4D5gKn2wbx3UN7ntvM5n37pdwKcCS+p+XlrE+smkuucnPgpMGsvOtKp4KvuuwK302b61Wb/ndl/97vslrz2I2UFRm+KT7TQfSZsDVwAfi4in61/Lfd9s9HL/3fdTXne7gC8DBut+3raI9ZPHJE0GKL6uGOP+jIqkCdSS/FsR8b0i3Bf71iH9ntt98bvvt7zudgG/DZgm6ZWSNgHeC1zd5T502tXAB4vvPwh8fwz7MiqqPUrmfOC+iPhS3UvZ71sH9XtuZ/+778e87vqFPJL2A/4D2Bi4ICI+19UOtJGkS4CZ1O5m9hjwGeAq4DvAdtTuTndoRAwfEOppkvYCfg7cA6wrwp+kdr4w633rpH7Jbed1PvvmKzHNzDLlQUwzs0y5gJuZZcoF3MwsUy7gZmaZcgE3M8uUC7iZWaZcwM3MMuUCbmaWqf8HCjVF4gNkpJgAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "# Training (conditional model)" ], "metadata": { "id": "uACWxI33JsFc" } }, { "cell_type": "markdown", "source": [ "Train a conditional model with 20% dropped labels" ], "metadata": { "id": "SABZWNHMK6Br" } }, { "cell_type": "code", "source": [ "model = Unet(\n", " dim=32,\n", " channels=1,\n", " dim_mults=(1, 2, 4,),\n", " num_classes = 11\n", ")\n", "model.to(device);" ], "metadata": { "id": "dDA-qjEpJkeo" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\n", "epochs = 20\n", "for epoch in tqdm(range(epochs)):\n", " for step, batch in enumerate(dataloader):\n", " optimizer.zero_grad()\n", "\n", " images, labels = batch \n", " images = images.to(device)\n", " labels = labels+1\n", " p = torch.tensor(np.random.uniform(low=0.0, high=1.0,size=batch_size) > 0.2).to(labels)\n", " labels = p*labels\n", " labels = labels.to(device)\n", "\n", " # Algorithm 1 line 3: sample t uniformally for every example in the batch\n", " t = torch.randint(0, timesteps, (batch_size,), device=device).long()\n", "\n", " loss = p_losses(model, images, t, labels, loss_type=\"huber\")\n", " loss.backward()\n", " optimizer.step()\n", "print(\"Loss:\", loss.item())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HklVg8UpUsPO", "outputId": "470018e9-ec2f-499e-9570-03b12d7096d6" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "100%|██████████| 20/20 [17:02<00:00, 51.12s/it]" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Loss: 0.019680418074131012\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "\n" ] } ] }, { "cell_type": "markdown", "source": [ "# Conditional Generation" ], "metadata": { "id": "g2SXs97JKlOV" } }, { "cell_type": "code", "source": [ "# sample 64 images\n", "images, labels = batch \n", "labels = labels+1\n", "print(labels)\n", "samples = sample(model, image_size=image_size, batch_size=64, channels=channels, label=labels[:64].to(device))\n", "#samples = ddim_generation(model, image_size=image_size, batch_size=64, channels=channels, seeded=False, eta=0, x_start=None, label=labels[:64])\n", "\n", "# show a random one\n", "for i in range(5):\n", " random_index =i\n", " plt.figure()\n", " plt.imshow(samples[-1][random_index].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")\n", " plt.title(labels[random_index].item()-1);" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "K0hAaLcTKUYh", "outputId": "5d9c2735-5eb6-4b07-bf72-219befda63ea" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "tensor([ 8, 5, 6, 8, 4, 10, 6, 5, 7, 3, 3, 5, 4, 1, 6, 7, 3, 8,\n", " 4, 3, 3, 7, 4, 7, 3, 7, 10, 2, 5, 9, 3, 7, 3, 3, 4, 5,\n", " 8, 5, 6, 1, 2, 2, 1, 5, 2, 1, 4, 1, 2, 1, 5, 3, 3, 5,\n", " 3, 10, 2, 2, 5, 1, 8, 6, 9, 8, 8, 8, 10, 3, 2, 3, 4, 3,\n", " 1, 3, 6, 1, 3, 2, 8, 1, 9, 4, 2, 1, 9, 1, 8, 3, 10, 1,\n", " 1, 4, 2, 4, 10, 9, 6, 9, 8, 1])\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:03<00:00, 53.29it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "# Conditional Generation with classifier free guidance" ], "metadata": { "id": "0DRvADbyLd2I" } }, { "cell_type": "code", "source": [ "guidance_scale = 3.0\n", "\n", "def model_fn(x_t, ts, **kwargs):\n", " half = x_t[: len(x_t) // 2]\n", " combined = torch.cat([half, half], dim=0)\n", " eps = model(combined, ts, **kwargs)#model_out = model(combined, ts, **kwargs)\n", " #eps, rest = model_out[:, :3], model_out[:, 3:]\n", " cond_eps, uncond_eps = torch.split(eps, len(eps) // 2, dim=0)\n", " half_eps = uncond_eps + guidance_scale * (cond_eps - uncond_eps)\n", " eps = torch.cat([half_eps, half_eps], dim=0)\n", " return eps#torch.cat([eps, rest], dim=1)\n", "\n", "a = np.random.randint(1,11,size=32)\n", "b = np.zeros(32)\n", "labels = torch.tensor(np.concatenate((a,b)))\n", "print(labels.int())\n", "samples = sample(model_fn, image_size=image_size, batch_size=64, channels=channels, label=labels.int().to(device))\n", "\n", "# show a random one\n", "for i in range(5):\n", " random_index =i\n", " plt.figure()\n", " plt.imshow(samples[-1][random_index].reshape(image_size, image_size, channels).squeeze(), cmap=\"gray\")\n", " plt.title(labels.int()[random_index].item()-1);" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "OHTxAaokLdLc", "outputId": "adc1b089-8830-436b-dbae-4a8bd632c54b" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "tensor([ 4, 1, 10, 3, 1, 3, 4, 1, 9, 8, 4, 2, 9, 7, 3, 3, 8, 6,\n", " 7, 8, 3, 8, 5, 3, 2, 6, 10, 1, 6, 3, 3, 10, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=torch.int32)\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "sampling loop time step: 100%|██████████| 200/200 [00:03<00:00, 51.60it/s]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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56jpreD1knve8o4ez37Eys36uvXcdN3aW7f2JdFbszrVG2/jgSAIOxBE1WHvrXj9Kd3aW7f2JdFbszrSW6Wf2QF0TtVbdgAdQtiBICoJu5ldZWa/NbMPzGxZFT3kMbPdZvaOmb1V9fx02Rx6+82sf9htk8zsBTPblf0ecY69inpbaWYD2XP3lpldXVFv083sv83sPTN718zuzG6v9LlL9NWR563jn9nNbKyknZKulLRH0uuSbnT39zraSA4z2y1pnrtXvgOGmf2VpC8lPeXu52e3PSjpgLs/kP2hnOju/9Alva2U9GXV03hnsxVNGz7NuKSFkv5OFT53ib6uVweetyq27BdK+sDdP3T3byT9WtKCCvroeu6+VdKBw25eIGltdnmt6i+WjsvprSu4+6C7v5ldPijpu2nGK33uEn11RBVhP03S74Zd36Pumu/dJW0xszfMrKfqZkYwddg0W3slTa2ymREUTuPdSYdNM941z10z05+XxRd0R7rU3f9C0t9I+kn2drUref0zWDeNnTY0jXenjDDN+B9V+dw1O/15WVWEfUDS9GHXT89u6wruPpD93i9po7pvKup9382gm/3eX3E/f9RN03iPNM24uuC5q3L68yrC/rqkc8zsLDM7TtJiSZsq6OMIZjY+++JEZjZe0nx131TUmyQtyS4vkfR8hb38iW6ZxjtvmnFV/NxVPv15NutjR38kXa36N/L/J+kfq+ghp68fSHo7+3m36t4kPaf627pvVf9u4zZJkyW9JGmXpBclTeqi3p5WfWrvHaoHa1pFvV2q+lv0HZLeyn6urvq5S/TVkeeN3WWBIPiCDgiCsANBEHYgCMIOBEHYgSAIOxAEYQeC+H8vpGlwBvTp+gAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "" ], "metadata": { "id": "iTPLmE9-LsWJ" }, "execution_count": null, "outputs": [] } ] }