Improve notebook and add requirements file (#422)

This commit is contained in:
Arturo Mendivil 2022-09-07 10:42:26 -07:00 committed by GitHub
parent 29ab3c2028
commit edada042b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 104 additions and 53 deletions

View File

@ -3,7 +3,6 @@
"nbformat_minor": 0, "nbformat_minor": 0,
"metadata": { "metadata": {
"colab": { "colab": {
"name": "Stable_Diffusion_AI_Notebook.ipynb",
"provenance": [], "provenance": [],
"collapsed_sections": [], "collapsed_sections": [],
"private_outputs": true "private_outputs": true
@ -22,18 +21,18 @@
{ {
"cell_type": "markdown", "cell_type": "markdown",
"source": [ "source": [
"# Stable Diffusion AI Notebook\n", "# Stable Diffusion AI Notebook (Release 1.13)\n",
"\n", "\n",
"<img src=\"https://user-images.githubusercontent.com/60411196/186547976-d9de378a-9de8-4201-9c25-c057a9c59bad.jpeg\" alt=\"stable-diffusion-ai\" width=\"170px\"/> <br>\n", "<img src=\"https://user-images.githubusercontent.com/60411196/186547976-d9de378a-9de8-4201-9c25-c057a9c59bad.jpeg\" alt=\"stable-diffusion-ai\" width=\"170px\"/> <br>\n",
"#### Instructions:\n", "#### Instructions:\n",
"1. Execute each cell in order to mount a Dream bot and create images from text. <br>\n", "1. Execute each cell in order to mount a Dream bot and create images from text. <br>\n",
"2. Once cells 1-8 were run correctly you'll be executing a terminal in cell #9, you'll to enter `pipenv run scripts/dream.py` command to run Dream bot.<br> \n", "2. Once cells 1-8 were run correctly you'll be executing a terminal in cell #9, you'll need to enter `python scripts/dream.py` command to run Dream bot.<br> \n",
"3. After launching dream bot, you'll see: <br> `Dream > ` in terminal. <br> Insert a command, eg. `Dream > Astronaut floating in a distant galaxy`, or type `-h` for help.\n", "3. After launching dream bot, you'll see: <br> `Dream > ` in terminal. <br> Insert a command, eg. `Dream > Astronaut floating in a distant galaxy`, or type `-h` for help.\n",
"3. After completion you'll see your generated images in path `stable-diffusion/outputs/img-samples/`, you can also display images in cell #10.\n", "3. After completion you'll see your generated images in path `stable-diffusion/outputs/img-samples/`, you can also show last generated images in cell #10.\n",
"4. To quit Dream bot use `q` command. <br> \n", "4. To quit Dream bot use `q` command. <br> \n",
"---\n", "---\n",
"<font color=\"red\">Note:</font> It takes some time to load, but after installing all dependencies you can use the bot all time you want while colab instance is up. <br>\n", "<font color=\"red\">Note:</font> It takes some time to load, but after installing all dependencies you can use the bot all time you want while colab instance is up. <br>\n",
"<font color=\"red\">Requirements:</font> For this notebook to work you need to have [Stable-Diffusion-v-1-4](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) stored in your Google Drive, it will be needed in cell #6\n", "<font color=\"red\">Requirements:</font> For this notebook to work you need to have [Stable-Diffusion-v-1-4](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) stored in your Google Drive, it will be needed in cell #7\n",
"##### For more details visit Github repository: [lstein/stable-diffusion](https://github.com/lstein/stable-diffusion)\n", "##### For more details visit Github repository: [lstein/stable-diffusion](https://github.com/lstein/stable-diffusion)\n",
"---\n" "---\n"
], ],
@ -41,6 +40,15 @@
"id": "ycYWcsEKc6w7" "id": "ycYWcsEKc6w7"
} }
}, },
{
"cell_type": "markdown",
"source": [
"## ◢ Installation"
],
"metadata": {
"id": "dr32VLxlnouf"
}
},
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
@ -68,43 +76,28 @@
"from os.path import exists\n", "from os.path import exists\n",
"\n", "\n",
"if exists(\"/content/stable-diffusion/\")==True:\n", "if exists(\"/content/stable-diffusion/\")==True:\n",
" %cd /content/stable-diffusion/\n",
" print(\"Already downloaded repo\")\n", " print(\"Already downloaded repo\")\n",
"else:\n", "else:\n",
" !git clone --quiet https://github.com/lstein/stable-diffusion.git # Original repo\n", " !git clone --quiet https://github.com/lstein/stable-diffusion.git # Original repo\n",
" %cd stable-diffusion/\n", " %cd /content/stable-diffusion/\n",
" !git checkout --quiet tags/release-1.09\n", " !git checkout --quiet tags/release-1.13"
" "
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 3. Install Python 3.8 \n", "#@title 3. Install dependencies\n",
"%%capture --no-stderr\n",
"import gc\n", "import gc\n",
"!apt-get -qq install python3.8\n", "\n",
"gc.collect()" "if exists(\"/content/stable-diffusion/requirements-colab.txt\")==True:\n",
], " %cd /content/stable-diffusion/\n",
"metadata": { " print(\"Already downloaded requirements file\")\n",
"id": "daHlozvwKesj", "else:\n",
"cellView": "form" " !wget https://raw.githubusercontent.com/lstein/stable-diffusion/development/requirements-colab.txt\n",
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#@title 4. Install dependencies from file in a VirtualEnv\n",
"#@markdown Be patient, it takes ~ 5 - 7min <br>\n",
"%%capture --no-stderr\n",
"#Virtual environment\n",
"!pip install pipenv -q\n",
"!pip install colab-xterm\n", "!pip install colab-xterm\n",
"%load_ext colabxterm\n", "!pip install -r requirements-colab.txt\n",
"!pipenv --python 3.8\n", "gc.collect()"
"!pipenv install -r requirements.txt --skip-lock\n",
"gc.collect()\n"
], ],
"metadata": { "metadata": {
"cellView": "form", "cellView": "form",
@ -116,7 +109,44 @@
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 5. Mount google Drive\n", "#@title 4. Load small ML models required\n",
"%cd /content/stable-diffusion/\n",
"!python scripts/preload_models.py\n",
"gc.collect()"
],
"metadata": {
"cellView": "form",
"id": "ChIDWxLVHGGJ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#@title 5. Restart Runtime\n",
"exit()"
],
"metadata": {
"cellView": "form",
"id": "8rSMhgnAttQa"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## ◢ Configuration"
],
"metadata": {
"id": "795x1tMoo8b1"
}
},
{
"cell_type": "code",
"source": [
"#@title 6. Mount google Drive\n",
"from google.colab import drive\n", "from google.colab import drive\n",
"drive.mount('/content/drive')" "drive.mount('/content/drive')"
], ],
@ -130,7 +160,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 6. Drive Path to model\n", "#@title 7. Drive Path to model\n",
"#@markdown Path should start with /content/drive/path-to-your-file <br>\n", "#@markdown Path should start with /content/drive/path-to-your-file <br>\n",
"#@markdown <font color=\"red\">Note:</font> Model should be downloaded from https://huggingface.co <br>\n", "#@markdown <font color=\"red\">Note:</font> Model should be downloaded from https://huggingface.co <br>\n",
"#@markdown Lastest release: [Stable-Diffusion-v-1-4](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original)\n", "#@markdown Lastest release: [Stable-Diffusion-v-1-4](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original)\n",
@ -152,7 +182,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 7. Symlink to model\n", "#@title 8. Symlink to model\n",
"\n", "\n",
"from os.path import exists\n", "from os.path import exists\n",
"import os \n", "import os \n",
@ -181,32 +211,27 @@
"outputs": [] "outputs": []
}, },
{ {
"cell_type": "code", "cell_type": "markdown",
"source": [ "source": [
"#@title 8. Load small ML models required\n", "## ◢ Execution"
"%%capture --no-stderr\n",
"!pipenv run scripts/preload_models.py\n",
"gc.collect()"
], ],
"metadata": { "metadata": {
"cellView": "form", "id": "Mc28N0_NrCQH"
"id": "ChIDWxLVHGGJ" }
},
"execution_count": null,
"outputs": []
}, },
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 9. Run Terminal and Execute Dream bot\n", "#@title 9. Run Terminal and Execute Dream bot\n",
"#@markdown <font color=\"blue\">Steps:</font> <br>\n", "#@markdown <font color=\"blue\">Steps:</font> <br>\n",
"#@markdown 1. Execute command `pipenv run scripts/dream.py` to run dream bot.<br>\n", "#@markdown 1. Execute command `python scripts/dream.py` to run dream bot.<br>\n",
"#@markdown 2. After initialized you'll see `Dream>` line.<br>\n", "#@markdown 2. After initialized you'll see `Dream>` line.<br>\n",
"#@markdown 3. Example text: `Astronaut floating in a distant galaxy` <br>\n", "#@markdown 3. Example text: `Astronaut floating in a distant galaxy` <br>\n",
"#@markdown 4. To quit Dream bot use: `q` command.<br>\n", "#@markdown 4. To quit Dream bot use: `q` command.<br>\n",
"\n", "\n",
"#Run from virtual env\n", "import gc\n",
"\n", "%cd /content/stable-diffusion/\n",
"%load_ext colabxterm\n",
"%xterm\n", "%xterm\n",
"gc.collect()" "gc.collect()"
], ],
@ -220,18 +245,18 @@
{ {
"cell_type": "code", "cell_type": "code",
"source": [ "source": [
"#@title 10. Show generated images\n", "#@title 10. Show the last 15 generated images\n",
"\n", "import gc\n",
"import glob\n", "import glob\n",
"import matplotlib.pyplot as plt\n", "import matplotlib.pyplot as plt\n",
"import matplotlib.image as mpimg\n", "import matplotlib.image as mpimg\n",
"%matplotlib inline\n", "%matplotlib inline\n",
"\n", "\n",
"images = []\n", "images = []\n",
"for img_path in glob.glob('/content/stable-diffusion/outputs/img-samples/*.png'):\n", "for img_path in sorted(glob.glob('/content/stable-diffusion/outputs/img-samples/*.png'), reverse=True):\n",
" images.append(mpimg.imread(img_path))\n", " images.append(mpimg.imread(img_path))\n",
"\n", "\n",
"# Remove ticks and labels on x-axis and y-axis both\n", "images = images[:15] \n",
"\n", "\n",
"plt.figure(figsize=(20,10))\n", "plt.figure(figsize=(20,10))\n",
"\n", "\n",
@ -253,4 +278,4 @@
"outputs": [] "outputs": []
} }
] ]
} }

26
requirements-colab.txt Normal file
View File

@ -0,0 +1,26 @@
albumentations==0.4.3
clean-fid==0.1.29
einops==0.3.0
huggingface-hub==0.8.1
imageio-ffmpeg==0.4.2
imageio==2.9.0
kornia==0.6.0
numpy==1.21.6
omegaconf==2.1.1
opencv-python==4.6.0.66
pillow==9.2.0
pip>=22
pudb==2019.2
pytorch-lightning==1.4.2
streamlit==1.12.0
taming-transformers-rom1504==0.0.6
test-tube>=0.7.5
torch-fidelity==0.3.0
torchmetrics==0.6.0
torchtext==0.6.0
transformers==4.19.2
torch==1.12.1+cu113
torchvision==0.13.1+cu113
git+https://github.com/openai/CLIP.git@main#egg=clip
git+https://github.com/lstein/k-diffusion.git@master#egg=k-diffusion
-e .