Spaces:
Runtime error
Runtime error
| # stablediffusion-infinity | |
| Outpainting with Stable Diffusion on an infinite canvas. | |
| [](https://colab.research.google.com/github/lkwq007/stablediffusion-infinity/blob/master/stablediffusion_infinity_colab.ipynb) | |
| Start with init_image: | |
| https://user-images.githubusercontent.com/1665437/190231611-fc263115-0fb9-4f2d-a71b-7e500c1e311d.mp4 | |
| Start with text2img: | |
| https://user-images.githubusercontent.com/1665437/190212025-f4a82c46-0ff1-4ca2-b79b-6c81601e3eed.mp4 | |
| It is recommended to run the notebook on a local server for better interactive control. | |
| The notebook might work on Windows (see this issue https://github.com/lkwq007/stablediffusion-infinity/issues/12 for more information) and Apple Silicon devices (untested, check guide here: https://huggingface.co/docs/diffusers/optimization/mps). | |
| ## Status | |
| This project mainly works as a proof of concept. In that case, the UI design is relatively weak, and the quality of results is not guaranteed. | |
| You may need to do prompt engineering or change the size of the selection box to get better outpainting results. | |
| Pull requests are welcome for better UI control, ideas to achieve better results, or any other improvements. | |
| ## Setup environment | |
| setup with `environment.yml` | |
| ``` | |
| git clone --recurse-submodules https://github.com/lkwq007/stablediffusion-infinity | |
| cd stablediffusion-infinity | |
| conda env create -f environment.yml | |
| ``` | |
| if the `environment.yml` doesn't work for you, you may install dependencies manually: | |
| ``` | |
| conda create -n sd-inf python=3.10 | |
| conda activate sd-inf | |
| conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch | |
| conda install scipy scikit-image | |
| conda install -c conda-forge diffusers transformers ftfy | |
| pip install opencv-python | |
| pip install gradio==3.4 | |
| ``` | |
| For windows, you may need to replace `pip install opencv-python` with `conda install -c conda-forge opencv` | |
| ## CPP library (optional) | |
| Note that `opencv` library (e.g. `libopencv-dev`/`opencv-devel`, the package name may differ on different distributions) is required for `PyPatchMatch`. You may need to install `opencv` by yourself. If no `opencv` installed, the `patch_match` option (usually better quality) won't work. | |
| ## How-to | |
| ``` | |
| conda activate sd-inf | |
| python app.py | |
| ``` | |
| ## Running with Docker | |
| This should get you started without needing to manually install anything, except for having an environment with Docker installed and an Nvidia GPU. | |
| This has been tested on Docker Desktop on Windows 10 using the WSL2 backend. | |
| First, update the .env file with your Huggingface token from https://huggingface.co/settings/tokens | |
| Open your shell that has docker and run these commands | |
| ``` | |
| cd stablediffusion-infinity | |
| docker-compose build | |
| docker-compose up | |
| ``` | |
| Watch the log for the url to open in your browser. Choose the one that starts with http://127.0.0.1:8888/ | |
| ## FAQs | |
| - Troubleshooting on Windows: | |
| - https://github.com/lkwq007/stablediffusion-infinity/issues/12 | |
| - False positive rate of safety checker is quite high: | |
| - https://github.com/lkwq007/stablediffusion-infinity/issues/8#issuecomment-1248448453 | |
| - What is the init_mode | |
| - init_mode indicates how to fill the empty/masked region, usually `patch_match` is better than others | |
| - The GUI is lagging on colab | |
| - It is recommended to run the notebook on a local server since the interactions and canvas content updates are actually handled by the python backend on the serverside, and that's how `ipycanvas` works | |
| - colab doesn't support the latest version of `ipycanvas`, which may have better performance | |
| ## Credit | |
| The code of `perlin2d.py` is from https://stackoverflow.com/questions/42147776/producing-2d-perlin-noise-with-numpy/42154921#42154921 and is **not** included in the scope of LICENSE used in this repo. | |