Skip to content

Commit

Permalink
Merge pull request #3 from nateraw/package
Browse files Browse the repository at this point in the history
add pypi package
  • Loading branch information
nateraw authored Sep 7, 2022
2 parents 79ac4c9 + a3c7240 commit 6e3ec16
Show file tree
Hide file tree
Showing 9 changed files with 1,462 additions and 52 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# This workflows will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries

name: Upload Python Package

on:
release:
types: [created]

jobs:
deploy:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
52 changes: 27 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,40 +26,42 @@ The app is built with [Gradio](https://gradio.app/), which allows you to interac
- Set the `num_walk_steps` - for testing you can use a small number like 3 or 5, but to get great results you'll want to use something larger (60-200 steps).
- You can (and should) use the `name` input to separate out where the images/videos are saved. (Note that currently ffmpeg will not overwrite if you already made a video with the same name. You'll have to use ffmpeg to create the video yourself if the app fails to do so.)

### The Script
### Python Package

#### Setup

Install the package

```
git clone https://github.com/nateraw/stable-diffusion-videos
cd stable-diffusion-videos
pip install -r requirements.txt
pip install stable_diffusion_videos
```

#### Usage
Authenticate with Hugging Face

If you would prefer to use the `stable_diffusion_walk.py` script directly, you can do so by running:

Run with `num_steps` set to 3 or 5 for testing, then up it to something like 60-200 for better results.

```bash
python stable_diffusion_walk.py \
--prompts "['a cat', 'a dog', 'a horse']" \
--seeds 903,123,42 \
--output_dir dreams \
--name animals_test \
--guidance_scale 8.5 \
--num_steps 5 \
--height 512 \
--width 512 \
--num_inference_steps 50 \
--scheduler klms \
--disable_tqdm \
--make_video \
--use_lerp_for_text \
--do_loop
```
huggingface-cli login
```

#### Usage

```python
from stable_diffusion_videos import walk

walk(
prompts=['a cat', 'a dog'],
seeds=[42, 1337],
output_dir='dreams', # Where images/videos will be saved
name='animals_test', # Subdirectory of output_dir where images/videos will be saved
guidance_scale=8.5, # Higher adheres to prompt more, lower lets model take the wheel
num_steps=5, # Change to 60-200 for better results...3-5 for testing
num_inference_steps=50,
scheduler='klms', # One of: "klms", "default", "ddim"
disable_tqdm=False, # Set to True to disable tqdm progress bar
make_video=True, # If false, just save images
use_lerp_for_text=True, # Use lerp for text embeddings instead of slerp
do_loop=False, # Change to True if you want last prompt to loop back to first prompt
)
```

## Credits

Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
transformers
git+https://github.com/huggingface/diffusers@f085d2f5c6569a1c0d90327c51328622036ef76e
diffusers @ git+https://github.com/huggingface/diffusers@f085d2f5c6569a1c0d90327c51328622036ef76e
scipy
fire
gradio
28 changes: 28 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from setuptools import find_packages, setup


def get_version() -> str:
rel_path = "stable_diffusion_videos/__init__.py"
with open(rel_path, "r") as fp:
for line in fp.read().splitlines():
if line.startswith("__version__"):
delim = '"' if '"' in line else "'"
return line.split(delim)[1]
raise RuntimeError("Unable to find version string.")


with open("requirements.txt", "r") as f:
requirements = f.read().splitlines()

setup(
name="stable_diffusion_videos",
version=get_version(),
author="Nathan Raw",
author_email="[email protected]",
description=(
"Create 🔥 videos with Stable Diffusion by exploring the latent space and morphing between text prompts."
),
license="Apache",
install_requires=requirements,
packages=find_packages(),
)
Loading

0 comments on commit 6e3ec16

Please sign in to comment.