Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

rapidrabbit76/stable-diffusion-API

Repository files navigation

Unofficial Fastapi implementation Stable-Diffusion API

UNOFFICIAL, Stable-Diffusion api using FastAPI

Samples

Text2Image-01 Text2Image-02
Image2Image-01 Image2Image-02
Inpaint-01 Inpaint-02

Features

  • long-prompt-weighting support
  • text2image
  • image2image
  • inpaints
  • negative-prompt
  • celery async task (check celery_task branch)
  • original ckpt format support
  • object storage support
  • stable-diffusion 2.0 support
  • token size checker
  • JAX/Flax pipeline

Requirements

API

fastapi[all]==0.80.0
fastapi-restful==0.4.3
fastapi-health==0.4.0
service-streamer==0.1.2
pydantic==1.9.2
diffusers==0.3.0
transformers==4.19.2
scipy
ftfy

Frontend

streamlit==1.12.2
requests==2.27.1 
requests-toolbelt==0.9.1 
pydantic==1.8.2
streamlit-drawable-canvas==0.9.2

API

/text2image

create image from input prompt

inputs:

- prompt(str): text prompt
- num_images(int): number of images
- guidance_scale(float): guidance scale for stable-diffusion
- height(int): image height
- width(int): image width
- seed(int): generator seed

outputs:

- prompt(str): input text prompt
- task_id(str): uuid4 hex string
- image_urls(str): generated images url

/image2image

create image from input image

inputs:

- prompt(str): text prompt
- init_image(imagefile): init image for i2i task
- num_images(int): number of images
- guidance_scale(float): guidance scale for stable-diffusion
- seed(int): generator seed

outputs:

- prompt(str): input text prompt
- task_id(str): uuid4 hex string
- image_urls(str): generated images url

Environment variable

# env setting is in 
>> ./core/settings/settings.py
Name Default Desc
MODEL_ID CompVis/stable-diffusion-v1-4 huggingface repo id or model path
ENABLE_ATTENTION_SLICING True Enable sliced attention computation.
CUDA_DEVICE "cuda" target cuda device
CUDA_DEVICES [0] visible cuda device
MB_BATCH_SIZE 1 Micro Batch: MAX Batch size
MB_TIMEOUT 120 Micro Batch: timeout sec
HUGGINGFACE_TOKEN None huggingface access token
IMAGESERVER_URL None result image base url
SAVE_DIR static result image save dir
CORS_ALLOW_ORIGINS [*] cross origin resource sharing setting for FastAPI

RUN from code (API)

1. install python Requirements

pip install -r requirements.txt

2. downlaod and caching huggingface model

python huggingface_model_download.py
# check stable-diffusion model in huggingface cache dir 
[[ -d ~/.cache/huggingface/diffusers/models--CompVis--stable-diffusion-v1-4 ]] && echo "exist"
>> exist

3. update settings.py in ./core/settings/settings.py

# example
class ModelSetting(BaseSettings):
 MODEL_ID: str = "CompVis/stable-diffusion-v1-4" # huggingface repo id
 ENABLE_ATTENTION_SLICING: bool = True
...
class Settings(
 ...
):
 HUGGINGFACE_TOKEN: str = "YOUR HUGGINGFACE ACCESS TOKEN"
 IMAGESERVER_URL: str = "http://localhost:3000/images"
 SAVE_DIR: str = 'static'
 ...

4. RUN API from code

bash docker/api/start.sh

RUN from code (frontend)

1. install python Requirements

pip install \
 streamlit==1.12.2 \
 requests==2.27.1 \
 requests-toolbelt==0.9.1 \
 pydantic==1.8.2 \
 streamlit-drawable-canvas==0.9.2

2. RUN streamlit frontend

streamlit run inpaint.py

RUN using Docker (docker-compose)

1. Image Build

docker-compose build

3. update docker-compose.yaml file in repo root

version: "3.7"
services:
 api:
 ...
 volumes:
 # mount huggingface model cache dir path to container root user home dir
 - /model:/model # if you load pretraind model 
 - ...
 environment:
 ...
 MODEL_ID: "CompVis/stable-diffusion-v1-4" 
 HUGGINGFACE_TOKEN: {YOUR HUGGINGFACE ACCESS TOKEN}
 ...
 deploy:
 ...
 frontend:
 ...

4. Container RUN

docker-compose up -d 
# or API only
docker-compsoe up -d api
# or frontend only
docker-compsoe up -d frontend

References

About

Unofficial Fastapi implementation of Stable-Diffusion API

Topics

Resources

Stars

Watchers

Forks

Languages

AltStyle によって変換されたページ (->オリジナル) /