From 89bc1a9f1cde4035a6a0226a93264039eb064595 Mon Sep 17 00:00:00 2001 From: jaydrennan <31525633+jaydrennan@users.noreply.github.com> Date: Thu, 4 Jan 2024 22:36:30 -0700 Subject: [PATCH] =?UTF-8?q?docs:=20adds=20docs=20tool,=20material=20for=20?= =?UTF-8?q?mkdocs,=20along=20with=20more=20fleshed=20ou=E2=80=A6=20(#428)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: adds docs tool, material for mkdocs, along with more fleshed out docstrings. this includes ability to serve up a local docs website. --------- Co-authored-by: Bryce --- Makefile | 5 + README.md | 152 ++++---- ...355545_PLMS50_PS7.5_a_scenic_landscape.jpg | Bin ...37692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg | Bin .../000040_527733581_PLMS40_PS7.5_leaves.jpg | Bin ..._PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg | Bin ...0066_801493266_PLMS40_PS7.5_gold_coins.jpg | Bin ...095192_PLMS40_PS7.5_piles_of_old_books.jpg | Bin ...7.5_portrait_photo_of_a_freckled_woman.jpg | Bin ...rait_of_a_smiling_lady._oil_painting._.jpg | Bin ...8_597948545_PLMS40_PS7.5_a_lush_forest.jpg | Bin ..._1_PLMS40_PS7.5_a_couple_smiling_fixed.png | Bin ..._1_PLMS40_PS7.5_a_couple_smiling_nofix.png | Bin ...PS7.5_a_silver_colored_dog_[generated].jpg | Bin ...0_PS7.5_a_aqua_colored_dog_[generated].jpg | Bin ..._856637805_PLMS40_PS7.5_colorful_smoke.jpg | Bin ...5_PLMS40_PS7.5_colorful_smoke_upscaled.jpg | Bin ...0_PS7.5_a_lime_colored_dog_[generated].jpg | Bin ...0_PS7.5_a_blue_colored_dog_[generated].jpg | Bin ...19_942389026_kdpmpp2m15_PS7.5_a_flower.gif | Bin ...kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg | Bin ...the_bird_wear_a_cowboy_hat_[generated].jpg | Bin ...0_PS7.5_a_scenic_landscape_[generated].jpg | Bin ...dim50_PS7.5_photo_of_a_dog_[generated].jpg | Bin ..._girl_with_a_pearl_earring_[generated].jpg | Bin ..._bowl_of_fruit._still_life_[generated].jpg | Bin ...lose-up_photo_of_a_bluejay_[generated].jpg | Bin ....5_macro_photo_of_a_flower_[generated].jpg | Bin ..._setting_on_a_green_valley_[generated].jpg | Bin 0 -> 115439 bytes .../assets}/bird-normal-generated.jpg | Bin {assets => docs/assets}/bird-normal.jpg | Bin .../assets}/bowl_of_fruit_strawberries.jpg | Bin {assets => docs/assets}/desert_360.jpg | Bin .../assets}/dog-hed-boundary-dalmation.jpg | Bin {assets => docs/assets}/dog-hed-boundary.jpg | Bin {assets => docs/assets}/dog_red.jpg | Bin .../fairytale-treehouse-openjourney-v1.jpg | Bin .../fairytale-treehouse-openjourney-v2.jpg | Bin .../assets}/fairytale-treehouse-sd14.jpg | Bin .../assets}/fairytale-treehouse-sd15.jpg | Bin .../assets}/fairytale-treehouse-sd20.jpg | Bin .../assets}/fairytale-treehouse-sd21.jpg | Bin .../assets}/fancy-living-depth-generated.jpg | Bin .../assets}/fancy-living-depth.jpg | Bin {assets => docs/assets}/fancy-living.jpg | Bin ...r-make-the-flower-out-of-paper-origami.gif | Bin .../assets}/freckled_woman_cyborg.jpg | Bin {assets => docs/assets}/gg-bridge-suprise.gif | Bin {assets => docs/assets}/gg-bridge.jpg | Bin .../assets}/girl-pearl-clown-compare.gif | Bin .../assets}/girl_with_a_pearl_earring.jpg | Bin ...girl_with_a_pearl_earring_clown_makeup.jpg | Bin .../girl_with_a_pearl_earring_suprise.gif | Bin .../assets}/indiana-pose-polar-bear.jpg | Bin {assets => docs/assets}/indiana-pose.jpg | Bin {assets => docs/assets}/indiana.jpg | Bin .../assets}/lena-canny-generated.jpg | Bin {assets => docs/assets}/lena-canny.jpg | Bin {assets => docs/assets}/lena.png | Bin {assets => docs/assets}/luke-suprise.gif | Bin {assets => docs/assets}/luke.jpg | Bin .../assets}/make-it-night-time.gif | Bin .../assets}/mask_examples/bowl001.jpg | Bin .../assets}/mask_examples/bowl002.jpg | Bin .../assets}/mask_examples/bowl003.jpg | Bin .../assets}/mask_examples/bowl004.jpg | Bin .../assets}/mask_examples/pearl000.jpg | Bin .../assets}/mask_examples/pearl001.jpg | Bin .../assets}/mask_examples/pearl002.jpg | Bin .../assets}/mask_examples/pearl003.jpg | Bin .../assets}/mask_examples/pearl004.jpg | Bin .../assets}/mask_examples/pearl_doctor.png | Bin .../mask_examples/pearl_firefighter.png | Bin .../assets}/mask_examples/pearl_pres.png | Bin .../assets}/mask_examples/pearl_robot.png | Bin .../assets}/mona-lisa-headshot-anim.gif | Bin .../assets}/mona-lisa-headshot-photo.jpg | Bin {assets => docs/assets}/mona-lisa-suprise.gif | Bin {assets => docs/assets}/mona-lisa.jpg | Bin {assets => docs/assets}/pearl-gray.jpg | Bin {assets => docs/assets}/pearl-recolor-a.jpg | Bin ...p2m30_PS9.0_img2img-0.01_make_it_anime.jpg | Bin ...S7.0_img2img-0.01_make_it_at_the_beach.jpg | Bin {assets => docs/assets}/pearl_depth_1.jpg | Bin {assets => docs/assets}/pearl_depth_2.jpg | Bin {assets => docs/assets}/pearl_depth_3.jpg | Bin ...1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg | Bin ...1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg | Bin {assets => docs/assets}/rocket-wide.png | Bin .../assets}/scenic_landscape_winter.jpg | Bin {assets => docs/assets}/shire-suprise.gif | Bin {assets => docs/assets}/shire.jpg | Bin {assets => docs/assets}/spock-suprise.gif | Bin {assets => docs/assets}/spock.jpg | Bin {assets => docs/assets}/svd-athens.gif | Bin {assets => docs/assets}/svd-dog.gif | Bin {assets => docs/assets}/svd-pearl-girl.gif | Bin {assets => docs/assets}/svd-rocket.gif | Bin {assets => docs/assets}/svd-starry-night.gif | Bin {assets => docs/assets}/svd-xpbliss.gif | Bin {assets => docs/assets}/wishbone.jpg | Bin {assets => docs/assets}/wishbone_big.jpg | Bin {assets => docs/assets}/wishbone_headshot.jpg | Bin .../assets}/wishbone_headshot_badscale.jpg | Bin .../assets}/wishbone_headshot_details.jpg | Bin docs/docs/CLI/colorize.md | 4 + docs/docs/CLI/describe.md | 4 + docs/docs/CLI/edit.md | 4 + docs/docs/CLI/imagine.md | 3 + docs/docs/CLI/upscale.md | 4 + docs/docs/CLI/videogen.md | 4 + docs/docs/Python/ControlInput.md | 2 + docs/docs/Python/ImaginePrompt.md | 2 + docs/docs/Python/LazyLoadingImage.md | 2 + docs/docs/Python/WeightedPrompt.md | 2 + docs/docs/Python/colorize-img.md | 2 + docs/docs/Python/generate-video.md | 2 + docs/docs/Python/imagine-image-files.md | 3 + docs/docs/Python/imagine.md | 2 + docs/index.md | 332 ++++++++++++++++++ imaginairy/api/colorize.py | 15 +- imaginairy/api/generate.py | 39 ++ imaginairy/api/video_sample.py | 23 +- imaginairy/schema.py | 103 +++++- mkdocs.yml | 56 +++ requirements-dev.in | 3 + requirements-dev.txt | 81 ++++- 127 files changed, 766 insertions(+), 83 deletions(-) rename {assets => docs/assets}/000019_786355545_PLMS50_PS7.5_a_scenic_landscape.jpg (100%) rename {assets => docs/assets}/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg (100%) rename {assets => docs/assets}/000040_527733581_PLMS40_PS7.5_leaves.jpg (100%) rename {assets => docs/assets}/000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg (100%) rename {assets => docs/assets}/000066_801493266_PLMS40_PS7.5_gold_coins.jpg (100%) rename {assets => docs/assets}/000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg (100%) rename {assets => docs/assets}/000078_260972468_PLMS40_PS7.5_portrait_photo_of_a_freckled_woman.jpg (100%) rename {assets => docs/assets}/000105_33084057_DDIM40_PS7.5_portrait_of_a_smiling_lady._oil_painting._.jpg (100%) rename {assets => docs/assets}/000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg (100%) rename {assets => docs/assets}/000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png (100%) rename {assets => docs/assets}/000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png (100%) rename {assets => docs/assets}/000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg (100%) rename {assets => docs/assets}/000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg (100%) rename {assets => docs/assets}/000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg (100%) rename {assets => docs/assets}/000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg (100%) rename {assets => docs/assets}/000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg (100%) rename {assets => docs/assets}/000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg (100%) rename {assets => docs/assets}/009719_942389026_kdpmpp2m15_PS7.5_a_flower.gif (100%) rename {assets => docs/assets}/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg (100%) rename {assets => docs/assets}/014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg (100%) rename {assets => docs/assets}/026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg (100%) rename {assets => docs/assets}/026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg (100%) rename {assets => docs/assets}/026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg (100%) rename {assets => docs/assets}/026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg (100%) rename {assets => docs/assets}/026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg (100%) rename {assets => docs/assets}/026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg (100%) create mode 100644 docs/assets/028374_1_ddim50_PS7.5_wide_shot_of_sun_setting_on_a_green_valley_[generated].jpg rename {assets => docs/assets}/bird-normal-generated.jpg (100%) rename {assets => docs/assets}/bird-normal.jpg (100%) rename {assets => docs/assets}/bowl_of_fruit_strawberries.jpg (100%) rename {assets => docs/assets}/desert_360.jpg (100%) rename {assets => docs/assets}/dog-hed-boundary-dalmation.jpg (100%) rename {assets => docs/assets}/dog-hed-boundary.jpg (100%) rename {assets => docs/assets}/dog_red.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-openjourney-v1.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-openjourney-v2.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-sd14.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-sd15.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-sd20.jpg (100%) rename {assets => docs/assets}/fairytale-treehouse-sd21.jpg (100%) rename {assets => docs/assets}/fancy-living-depth-generated.jpg (100%) rename {assets => docs/assets}/fancy-living-depth.jpg (100%) rename {assets => docs/assets}/fancy-living.jpg (100%) rename {assets => docs/assets}/flower-make-the-flower-out-of-paper-origami.gif (100%) rename {assets => docs/assets}/freckled_woman_cyborg.jpg (100%) rename {assets => docs/assets}/gg-bridge-suprise.gif (100%) rename {assets => docs/assets}/gg-bridge.jpg (100%) rename {assets => docs/assets}/girl-pearl-clown-compare.gif (100%) rename {assets => docs/assets}/girl_with_a_pearl_earring.jpg (100%) rename {assets => docs/assets}/girl_with_a_pearl_earring_clown_makeup.jpg (100%) rename {assets => docs/assets}/girl_with_a_pearl_earring_suprise.gif (100%) rename {assets => docs/assets}/indiana-pose-polar-bear.jpg (100%) rename {assets => docs/assets}/indiana-pose.jpg (100%) rename {assets => docs/assets}/indiana.jpg (100%) rename {assets => docs/assets}/lena-canny-generated.jpg (100%) rename {assets => docs/assets}/lena-canny.jpg (100%) rename {assets => docs/assets}/lena.png (100%) rename {assets => docs/assets}/luke-suprise.gif (100%) rename {assets => docs/assets}/luke.jpg (100%) rename {assets => docs/assets}/make-it-night-time.gif (100%) rename {assets => docs/assets}/mask_examples/bowl001.jpg (100%) rename {assets => docs/assets}/mask_examples/bowl002.jpg (100%) rename {assets => docs/assets}/mask_examples/bowl003.jpg (100%) rename {assets => docs/assets}/mask_examples/bowl004.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl000.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl001.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl002.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl003.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl004.jpg (100%) rename {assets => docs/assets}/mask_examples/pearl_doctor.png (100%) rename {assets => docs/assets}/mask_examples/pearl_firefighter.png (100%) rename {assets => docs/assets}/mask_examples/pearl_pres.png (100%) rename {assets => docs/assets}/mask_examples/pearl_robot.png (100%) rename {assets => docs/assets}/mona-lisa-headshot-anim.gif (100%) rename {assets => docs/assets}/mona-lisa-headshot-photo.jpg (100%) rename {assets => docs/assets}/mona-lisa-suprise.gif (100%) rename {assets => docs/assets}/mona-lisa.jpg (100%) rename {assets => docs/assets}/pearl-gray.jpg (100%) rename {assets => docs/assets}/pearl-recolor-a.jpg (100%) rename {assets => docs/assets}/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg (100%) rename {assets => docs/assets}/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg (100%) rename {assets => docs/assets}/pearl_depth_1.jpg (100%) rename {assets => docs/assets}/pearl_depth_2.jpg (100%) rename {assets => docs/assets}/pearl_depth_3.jpg (100%) rename {assets => docs/assets}/pearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg (100%) rename {assets => docs/assets}/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg (100%) rename {assets => docs/assets}/rocket-wide.png (100%) rename {assets => docs/assets}/scenic_landscape_winter.jpg (100%) rename {assets => docs/assets}/shire-suprise.gif (100%) rename {assets => docs/assets}/shire.jpg (100%) rename {assets => docs/assets}/spock-suprise.gif (100%) rename {assets => docs/assets}/spock.jpg (100%) rename {assets => docs/assets}/svd-athens.gif (100%) rename {assets => docs/assets}/svd-dog.gif (100%) rename {assets => docs/assets}/svd-pearl-girl.gif (100%) rename {assets => docs/assets}/svd-rocket.gif (100%) rename {assets => docs/assets}/svd-starry-night.gif (100%) rename {assets => docs/assets}/svd-xpbliss.gif (100%) rename {assets => docs/assets}/wishbone.jpg (100%) rename {assets => docs/assets}/wishbone_big.jpg (100%) rename {assets => docs/assets}/wishbone_headshot.jpg (100%) rename {assets => docs/assets}/wishbone_headshot_badscale.jpg (100%) rename {assets => docs/assets}/wishbone_headshot_details.jpg (100%) create mode 100644 docs/docs/CLI/colorize.md create mode 100644 docs/docs/CLI/describe.md create mode 100644 docs/docs/CLI/edit.md create mode 100644 docs/docs/CLI/imagine.md create mode 100644 docs/docs/CLI/upscale.md create mode 100644 docs/docs/CLI/videogen.md create mode 100644 docs/docs/Python/ControlInput.md create mode 100644 docs/docs/Python/ImaginePrompt.md create mode 100644 docs/docs/Python/LazyLoadingImage.md create mode 100644 docs/docs/Python/WeightedPrompt.md create mode 100644 docs/docs/Python/colorize-img.md create mode 100644 docs/docs/Python/generate-video.md create mode 100644 docs/docs/Python/imagine-image-files.md create mode 100644 docs/docs/Python/imagine.md create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/Makefile b/Makefile index f83e419..b0b5cbe 100644 --- a/Makefile +++ b/Makefile @@ -91,6 +91,11 @@ require_pyenv: echo -e "\033[0;32m ✔️ pyenv-virtualenv installed\033[0m";\ fi +.PHONY: docs + +docs: + mkdocs serve + update-stablestudio: @echo "Updating stablestudio" cd ../imaginAIry-StableStudio && \ diff --git a/README.md b/README.md index 8e1f1a3..f5a326f 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,12 @@ AI imagined images. Pythonic generation of stable diffusion images **and videos* ``` ## Stable Video Diffusion

- - - - - - + + + + + +

### Rushed release of Stable Diffusion Video! @@ -60,12 +60,12 @@ Options: ### Images

- - - - - - + + + + + +

### Whats New @@ -124,9 +124,9 @@ imagine --control-image assets/indiana.jpg --control-mode openpose --caption-te ```

- - - + + +

#### Canny Edge Control @@ -136,9 +136,9 @@ imagine --control-image assets/lena.png --control-mode canny "photo of a woman ```

- - - + + +

#### HED Boundary Control @@ -148,9 +148,9 @@ imagine --control-image dog.jpg --control-mode hed "photo of a dalmation" ```

- - - + + +

#### Depth Map Control @@ -160,9 +160,9 @@ imagine --control-image fancy-living.jpg --control-mode depth "a modern living ```

- - - + + +

#### Normal Map Control @@ -172,9 +172,9 @@ imagine --control-image bird.jpg --control-mode normal "a bird" ```

- - - + + +

#### Image Shuffle Control @@ -185,9 +185,9 @@ imagine --control-image pearl-girl.jpg --control-mode shuffle "a clown" ``` The middle image is the "shuffled" input image

- - - + + +

#### Editing Instructions Control @@ -198,9 +198,9 @@ imagine --control-image pearl-girl.jpg --control-mode edit --init-image-strengt ```

- - - + + +

#### Add Details Control (upscaling/super-resolution) @@ -211,8 +211,8 @@ imagine --control-image "assets/wishbone.jpg" --control-mode details "sharp focu ```

- - + +

@@ -226,24 +226,24 @@ allow the tool to generate one for you. aimg colorize pearl-girl.jpg --caption "photo of a woman" ```

- - - + + +

### Instruction based image edits [by InstructPix2Pix](https://github.com/timothybrooks/instruct-pix2pix) #### (Broken as of 14.0.0) Just tell imaginairy how to edit the image and it will do it for you!

- - - - - - - - - + + + + + + + + +

@@ -276,12 +276,12 @@ Want just quickly have some fun? Try `edit-demo` to apply some pre-defined edits >> aimg edit-demo pearl_girl.jpg ```

- - - - - - + + + + + +

@@ -309,11 +309,11 @@ When writing strength modifiers keep in mind that pixel values are between 0 and --fix-faces \ "a modern female president" "a female robot" "a female doctor" "a female firefighter" ``` -➡️ - - - - +➡️ + + + + ```bash >> imagine \ @@ -324,11 +324,11 @@ When writing strength modifiers keep in mind that pixel values are between 0 and --init-image-strength .1 \ "a bowl of kittens" "a bowl of gold coins" "a bowl of popcorn" "a bowl of spaghetti" ``` -➡️ - - - - +➡️ + + + + ### Face Enhancement [by CodeFormer](https://github.com/sczhou/CodeFormer) @@ -365,16 +365,16 @@ big_img = upscale_image(i) >> imagine "gold coins" "a lush forest" "piles of old books" leaves --tile ``` - - + +
- - + + #### 360 degree images ```bash imagine --tile-x -w 1024 -h 512 "360 degree equirectangular panorama photograph of the desert" --upscale ``` - + ### Image-to-Image Use depth maps for amazing "translations" of existing images. @@ -384,8 +384,8 @@ Use depth maps for amazing "translations" of existing images. ```

➡️ - - + +

@@ -402,9 +402,9 @@ Example: ### Work with different generation models

- - - + + +

@@ -433,9 +433,9 @@ You can use `{}` to randomly pull values from lists. A list of values separated `imagine "a {lime|blue|silver|aqua} colored dog" -r 4 --seed 0` (note that it generates a dog of each color without repetition) - - - + + + `imagine "a {_color_} dog" -r 4 --seed 0` will generate four, different colored dogs. The colors will be pulled from an included phraselist of colors. diff --git a/assets/000019_786355545_PLMS50_PS7.5_a_scenic_landscape.jpg b/docs/assets/000019_786355545_PLMS50_PS7.5_a_scenic_landscape.jpg similarity index 100% rename from assets/000019_786355545_PLMS50_PS7.5_a_scenic_landscape.jpg rename to docs/assets/000019_786355545_PLMS50_PS7.5_a_scenic_landscape.jpg diff --git a/assets/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg b/docs/assets/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg similarity index 100% rename from assets/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg rename to docs/assets/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg diff --git a/assets/000040_527733581_PLMS40_PS7.5_leaves.jpg b/docs/assets/000040_527733581_PLMS40_PS7.5_leaves.jpg similarity index 100% rename from assets/000040_527733581_PLMS40_PS7.5_leaves.jpg rename to docs/assets/000040_527733581_PLMS40_PS7.5_leaves.jpg diff --git a/assets/000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg b/docs/assets/000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg similarity index 100% rename from assets/000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg rename to docs/assets/000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg diff --git a/assets/000066_801493266_PLMS40_PS7.5_gold_coins.jpg b/docs/assets/000066_801493266_PLMS40_PS7.5_gold_coins.jpg similarity index 100% rename from assets/000066_801493266_PLMS40_PS7.5_gold_coins.jpg rename to docs/assets/000066_801493266_PLMS40_PS7.5_gold_coins.jpg diff --git a/assets/000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg b/docs/assets/000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg similarity index 100% rename from assets/000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg rename to docs/assets/000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg diff --git a/assets/000078_260972468_PLMS40_PS7.5_portrait_photo_of_a_freckled_woman.jpg b/docs/assets/000078_260972468_PLMS40_PS7.5_portrait_photo_of_a_freckled_woman.jpg similarity index 100% rename from assets/000078_260972468_PLMS40_PS7.5_portrait_photo_of_a_freckled_woman.jpg rename to docs/assets/000078_260972468_PLMS40_PS7.5_portrait_photo_of_a_freckled_woman.jpg diff --git a/assets/000105_33084057_DDIM40_PS7.5_portrait_of_a_smiling_lady._oil_painting._.jpg b/docs/assets/000105_33084057_DDIM40_PS7.5_portrait_of_a_smiling_lady._oil_painting._.jpg similarity index 100% rename from assets/000105_33084057_DDIM40_PS7.5_portrait_of_a_smiling_lady._oil_painting._.jpg rename to docs/assets/000105_33084057_DDIM40_PS7.5_portrait_of_a_smiling_lady._oil_painting._.jpg diff --git a/assets/000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg b/docs/assets/000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg similarity index 100% rename from assets/000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg rename to docs/assets/000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg diff --git a/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png b/docs/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png similarity index 100% rename from assets/000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png rename to docs/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png diff --git a/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png b/docs/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png similarity index 100% rename from assets/000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png rename to docs/assets/000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png diff --git a/assets/000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg b/docs/assets/000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg similarity index 100% rename from assets/000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg rename to docs/assets/000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg diff --git a/assets/000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg b/docs/assets/000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg similarity index 100% rename from assets/000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg rename to docs/assets/000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg diff --git a/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg b/docs/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg similarity index 100% rename from assets/000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg rename to docs/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg diff --git a/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg b/docs/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg similarity index 100% rename from assets/000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg rename to docs/assets/000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg diff --git a/assets/000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg b/docs/assets/000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg similarity index 100% rename from assets/000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg rename to docs/assets/000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg diff --git a/assets/000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg b/docs/assets/000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg similarity index 100% rename from assets/000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg rename to docs/assets/000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg diff --git a/assets/009719_942389026_kdpmpp2m15_PS7.5_a_flower.gif b/docs/assets/009719_942389026_kdpmpp2m15_PS7.5_a_flower.gif similarity index 100% rename from assets/009719_942389026_kdpmpp2m15_PS7.5_a_flower.gif rename to docs/assets/009719_942389026_kdpmpp2m15_PS7.5_a_flower.gif diff --git a/assets/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg b/docs/assets/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg similarity index 100% rename from assets/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg rename to docs/assets/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg diff --git a/assets/014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg b/docs/assets/014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg similarity index 100% rename from assets/014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg rename to docs/assets/014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg diff --git a/assets/026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg b/docs/assets/026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg similarity index 100% rename from assets/026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg rename to docs/assets/026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg diff --git a/assets/026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg b/docs/assets/026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg similarity index 100% rename from assets/026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg rename to docs/assets/026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg diff --git a/assets/026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg b/docs/assets/026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg similarity index 100% rename from assets/026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg rename to docs/assets/026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg diff --git a/assets/026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg b/docs/assets/026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg similarity index 100% rename from assets/026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg rename to docs/assets/026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg diff --git a/assets/026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg b/docs/assets/026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg similarity index 100% rename from assets/026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg rename to docs/assets/026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg diff --git a/assets/026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg b/docs/assets/026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg similarity index 100% rename from assets/026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg rename to docs/assets/026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg diff --git a/docs/assets/028374_1_ddim50_PS7.5_wide_shot_of_sun_setting_on_a_green_valley_[generated].jpg b/docs/assets/028374_1_ddim50_PS7.5_wide_shot_of_sun_setting_on_a_green_valley_[generated].jpg new file mode 100644 index 0000000000000000000000000000000000000000..accea896aae02a6a459da219f8412297cf5578db GIT binary patch literal 115439 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 z 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

+|;zfmkQ$;erk-?j0Ww!I@a;68Ci{# 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 literal 0 HcmV?d00001 diff --git a/assets/bird-normal-generated.jpg b/docs/assets/bird-normal-generated.jpg similarity index 100% rename from assets/bird-normal-generated.jpg rename to docs/assets/bird-normal-generated.jpg diff --git a/assets/bird-normal.jpg b/docs/assets/bird-normal.jpg similarity index 100% rename from assets/bird-normal.jpg rename to docs/assets/bird-normal.jpg diff --git a/assets/bowl_of_fruit_strawberries.jpg b/docs/assets/bowl_of_fruit_strawberries.jpg similarity index 100% rename from assets/bowl_of_fruit_strawberries.jpg rename to docs/assets/bowl_of_fruit_strawberries.jpg diff --git a/assets/desert_360.jpg b/docs/assets/desert_360.jpg similarity index 100% rename from assets/desert_360.jpg rename to docs/assets/desert_360.jpg diff --git a/assets/dog-hed-boundary-dalmation.jpg b/docs/assets/dog-hed-boundary-dalmation.jpg similarity index 100% rename from assets/dog-hed-boundary-dalmation.jpg rename to docs/assets/dog-hed-boundary-dalmation.jpg diff --git a/assets/dog-hed-boundary.jpg b/docs/assets/dog-hed-boundary.jpg similarity index 100% rename from assets/dog-hed-boundary.jpg rename to docs/assets/dog-hed-boundary.jpg diff --git a/assets/dog_red.jpg b/docs/assets/dog_red.jpg similarity index 100% rename from assets/dog_red.jpg rename to docs/assets/dog_red.jpg diff --git a/assets/fairytale-treehouse-openjourney-v1.jpg b/docs/assets/fairytale-treehouse-openjourney-v1.jpg similarity index 100% rename from assets/fairytale-treehouse-openjourney-v1.jpg rename to docs/assets/fairytale-treehouse-openjourney-v1.jpg diff --git a/assets/fairytale-treehouse-openjourney-v2.jpg b/docs/assets/fairytale-treehouse-openjourney-v2.jpg similarity index 100% rename from assets/fairytale-treehouse-openjourney-v2.jpg rename to docs/assets/fairytale-treehouse-openjourney-v2.jpg diff --git a/assets/fairytale-treehouse-sd14.jpg b/docs/assets/fairytale-treehouse-sd14.jpg similarity index 100% rename from assets/fairytale-treehouse-sd14.jpg rename to docs/assets/fairytale-treehouse-sd14.jpg diff --git a/assets/fairytale-treehouse-sd15.jpg b/docs/assets/fairytale-treehouse-sd15.jpg similarity index 100% rename from assets/fairytale-treehouse-sd15.jpg rename to docs/assets/fairytale-treehouse-sd15.jpg diff --git a/assets/fairytale-treehouse-sd20.jpg b/docs/assets/fairytale-treehouse-sd20.jpg similarity index 100% rename from assets/fairytale-treehouse-sd20.jpg rename to docs/assets/fairytale-treehouse-sd20.jpg diff --git a/assets/fairytale-treehouse-sd21.jpg b/docs/assets/fairytale-treehouse-sd21.jpg similarity index 100% rename from assets/fairytale-treehouse-sd21.jpg rename to docs/assets/fairytale-treehouse-sd21.jpg diff --git a/assets/fancy-living-depth-generated.jpg b/docs/assets/fancy-living-depth-generated.jpg similarity index 100% rename from assets/fancy-living-depth-generated.jpg rename to docs/assets/fancy-living-depth-generated.jpg diff --git a/assets/fancy-living-depth.jpg b/docs/assets/fancy-living-depth.jpg similarity index 100% rename from assets/fancy-living-depth.jpg rename to docs/assets/fancy-living-depth.jpg diff --git a/assets/fancy-living.jpg b/docs/assets/fancy-living.jpg similarity index 100% rename from assets/fancy-living.jpg rename to docs/assets/fancy-living.jpg diff --git a/assets/flower-make-the-flower-out-of-paper-origami.gif b/docs/assets/flower-make-the-flower-out-of-paper-origami.gif similarity index 100% rename from assets/flower-make-the-flower-out-of-paper-origami.gif rename to docs/assets/flower-make-the-flower-out-of-paper-origami.gif diff --git a/assets/freckled_woman_cyborg.jpg b/docs/assets/freckled_woman_cyborg.jpg similarity index 100% rename from assets/freckled_woman_cyborg.jpg rename to docs/assets/freckled_woman_cyborg.jpg diff --git a/assets/gg-bridge-suprise.gif b/docs/assets/gg-bridge-suprise.gif similarity index 100% rename from assets/gg-bridge-suprise.gif rename to docs/assets/gg-bridge-suprise.gif diff --git a/assets/gg-bridge.jpg b/docs/assets/gg-bridge.jpg similarity index 100% rename from assets/gg-bridge.jpg rename to docs/assets/gg-bridge.jpg diff --git a/assets/girl-pearl-clown-compare.gif b/docs/assets/girl-pearl-clown-compare.gif similarity index 100% rename from assets/girl-pearl-clown-compare.gif rename to docs/assets/girl-pearl-clown-compare.gif diff --git a/assets/girl_with_a_pearl_earring.jpg b/docs/assets/girl_with_a_pearl_earring.jpg similarity index 100% rename from assets/girl_with_a_pearl_earring.jpg rename to docs/assets/girl_with_a_pearl_earring.jpg diff --git a/assets/girl_with_a_pearl_earring_clown_makeup.jpg b/docs/assets/girl_with_a_pearl_earring_clown_makeup.jpg similarity index 100% rename from assets/girl_with_a_pearl_earring_clown_makeup.jpg rename to docs/assets/girl_with_a_pearl_earring_clown_makeup.jpg diff --git a/assets/girl_with_a_pearl_earring_suprise.gif b/docs/assets/girl_with_a_pearl_earring_suprise.gif similarity index 100% rename from assets/girl_with_a_pearl_earring_suprise.gif rename to docs/assets/girl_with_a_pearl_earring_suprise.gif diff --git a/assets/indiana-pose-polar-bear.jpg b/docs/assets/indiana-pose-polar-bear.jpg similarity index 100% rename from assets/indiana-pose-polar-bear.jpg rename to docs/assets/indiana-pose-polar-bear.jpg diff --git a/assets/indiana-pose.jpg b/docs/assets/indiana-pose.jpg similarity index 100% rename from assets/indiana-pose.jpg rename to docs/assets/indiana-pose.jpg diff --git a/assets/indiana.jpg b/docs/assets/indiana.jpg similarity index 100% rename from assets/indiana.jpg rename to docs/assets/indiana.jpg diff --git a/assets/lena-canny-generated.jpg b/docs/assets/lena-canny-generated.jpg similarity index 100% rename from assets/lena-canny-generated.jpg rename to docs/assets/lena-canny-generated.jpg diff --git a/assets/lena-canny.jpg b/docs/assets/lena-canny.jpg similarity index 100% rename from assets/lena-canny.jpg rename to docs/assets/lena-canny.jpg diff --git a/assets/lena.png b/docs/assets/lena.png similarity index 100% rename from assets/lena.png rename to docs/assets/lena.png diff --git a/assets/luke-suprise.gif b/docs/assets/luke-suprise.gif similarity index 100% rename from assets/luke-suprise.gif rename to docs/assets/luke-suprise.gif diff --git a/assets/luke.jpg b/docs/assets/luke.jpg similarity index 100% rename from assets/luke.jpg rename to docs/assets/luke.jpg diff --git a/assets/make-it-night-time.gif b/docs/assets/make-it-night-time.gif similarity index 100% rename from assets/make-it-night-time.gif rename to docs/assets/make-it-night-time.gif diff --git a/assets/mask_examples/bowl001.jpg b/docs/assets/mask_examples/bowl001.jpg similarity index 100% rename from assets/mask_examples/bowl001.jpg rename to docs/assets/mask_examples/bowl001.jpg diff --git a/assets/mask_examples/bowl002.jpg b/docs/assets/mask_examples/bowl002.jpg similarity index 100% rename from assets/mask_examples/bowl002.jpg rename to docs/assets/mask_examples/bowl002.jpg diff --git a/assets/mask_examples/bowl003.jpg b/docs/assets/mask_examples/bowl003.jpg similarity index 100% rename from assets/mask_examples/bowl003.jpg rename to docs/assets/mask_examples/bowl003.jpg diff --git a/assets/mask_examples/bowl004.jpg b/docs/assets/mask_examples/bowl004.jpg similarity index 100% rename from assets/mask_examples/bowl004.jpg rename to docs/assets/mask_examples/bowl004.jpg diff --git a/assets/mask_examples/pearl000.jpg b/docs/assets/mask_examples/pearl000.jpg similarity index 100% rename from assets/mask_examples/pearl000.jpg rename to docs/assets/mask_examples/pearl000.jpg diff --git a/assets/mask_examples/pearl001.jpg b/docs/assets/mask_examples/pearl001.jpg similarity index 100% rename from assets/mask_examples/pearl001.jpg rename to docs/assets/mask_examples/pearl001.jpg diff --git a/assets/mask_examples/pearl002.jpg b/docs/assets/mask_examples/pearl002.jpg similarity index 100% rename from assets/mask_examples/pearl002.jpg rename to docs/assets/mask_examples/pearl002.jpg diff --git a/assets/mask_examples/pearl003.jpg b/docs/assets/mask_examples/pearl003.jpg similarity index 100% rename from assets/mask_examples/pearl003.jpg rename to docs/assets/mask_examples/pearl003.jpg diff --git a/assets/mask_examples/pearl004.jpg b/docs/assets/mask_examples/pearl004.jpg similarity index 100% rename from assets/mask_examples/pearl004.jpg rename to docs/assets/mask_examples/pearl004.jpg diff --git a/assets/mask_examples/pearl_doctor.png b/docs/assets/mask_examples/pearl_doctor.png similarity index 100% rename from assets/mask_examples/pearl_doctor.png rename to docs/assets/mask_examples/pearl_doctor.png diff --git a/assets/mask_examples/pearl_firefighter.png b/docs/assets/mask_examples/pearl_firefighter.png similarity index 100% rename from assets/mask_examples/pearl_firefighter.png rename to docs/assets/mask_examples/pearl_firefighter.png diff --git a/assets/mask_examples/pearl_pres.png b/docs/assets/mask_examples/pearl_pres.png similarity index 100% rename from assets/mask_examples/pearl_pres.png rename to docs/assets/mask_examples/pearl_pres.png diff --git a/assets/mask_examples/pearl_robot.png b/docs/assets/mask_examples/pearl_robot.png similarity index 100% rename from assets/mask_examples/pearl_robot.png rename to docs/assets/mask_examples/pearl_robot.png diff --git a/assets/mona-lisa-headshot-anim.gif b/docs/assets/mona-lisa-headshot-anim.gif similarity index 100% rename from assets/mona-lisa-headshot-anim.gif rename to docs/assets/mona-lisa-headshot-anim.gif diff --git a/assets/mona-lisa-headshot-photo.jpg b/docs/assets/mona-lisa-headshot-photo.jpg similarity index 100% rename from assets/mona-lisa-headshot-photo.jpg rename to docs/assets/mona-lisa-headshot-photo.jpg diff --git a/assets/mona-lisa-suprise.gif b/docs/assets/mona-lisa-suprise.gif similarity index 100% rename from assets/mona-lisa-suprise.gif rename to docs/assets/mona-lisa-suprise.gif diff --git a/assets/mona-lisa.jpg b/docs/assets/mona-lisa.jpg similarity index 100% rename from assets/mona-lisa.jpg rename to docs/assets/mona-lisa.jpg diff --git a/assets/pearl-gray.jpg b/docs/assets/pearl-gray.jpg similarity index 100% rename from assets/pearl-gray.jpg rename to docs/assets/pearl-gray.jpg diff --git a/assets/pearl-recolor-a.jpg b/docs/assets/pearl-recolor-a.jpg similarity index 100% rename from assets/pearl-recolor-a.jpg rename to docs/assets/pearl-recolor-a.jpg diff --git a/assets/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg b/docs/assets/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg similarity index 100% rename from assets/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg rename to docs/assets/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg diff --git a/assets/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg b/docs/assets/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg similarity index 100% rename from assets/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg rename to docs/assets/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg diff --git a/assets/pearl_depth_1.jpg b/docs/assets/pearl_depth_1.jpg similarity index 100% rename from assets/pearl_depth_1.jpg rename to docs/assets/pearl_depth_1.jpg diff --git a/assets/pearl_depth_2.jpg b/docs/assets/pearl_depth_2.jpg similarity index 100% rename from assets/pearl_depth_2.jpg rename to docs/assets/pearl_depth_2.jpg diff --git a/assets/pearl_depth_3.jpg b/docs/assets/pearl_depth_3.jpg similarity index 100% rename from assets/pearl_depth_3.jpg rename to docs/assets/pearl_depth_3.jpg diff --git a/assets/pearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg b/docs/assets/pearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg similarity index 100% rename from assets/pearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg rename to docs/assets/pearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg diff --git a/assets/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg b/docs/assets/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg similarity index 100% rename from assets/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg rename to docs/assets/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg diff --git a/assets/rocket-wide.png b/docs/assets/rocket-wide.png similarity index 100% rename from assets/rocket-wide.png rename to docs/assets/rocket-wide.png diff --git a/assets/scenic_landscape_winter.jpg b/docs/assets/scenic_landscape_winter.jpg similarity index 100% rename from assets/scenic_landscape_winter.jpg rename to docs/assets/scenic_landscape_winter.jpg diff --git a/assets/shire-suprise.gif b/docs/assets/shire-suprise.gif similarity index 100% rename from assets/shire-suprise.gif rename to docs/assets/shire-suprise.gif diff --git a/assets/shire.jpg b/docs/assets/shire.jpg similarity index 100% rename from assets/shire.jpg rename to docs/assets/shire.jpg diff --git a/assets/spock-suprise.gif b/docs/assets/spock-suprise.gif similarity index 100% rename from assets/spock-suprise.gif rename to docs/assets/spock-suprise.gif diff --git a/assets/spock.jpg b/docs/assets/spock.jpg similarity index 100% rename from assets/spock.jpg rename to docs/assets/spock.jpg diff --git a/assets/svd-athens.gif b/docs/assets/svd-athens.gif similarity index 100% rename from assets/svd-athens.gif rename to docs/assets/svd-athens.gif diff --git a/assets/svd-dog.gif b/docs/assets/svd-dog.gif similarity index 100% rename from assets/svd-dog.gif rename to docs/assets/svd-dog.gif diff --git a/assets/svd-pearl-girl.gif b/docs/assets/svd-pearl-girl.gif similarity index 100% rename from assets/svd-pearl-girl.gif rename to docs/assets/svd-pearl-girl.gif diff --git a/assets/svd-rocket.gif b/docs/assets/svd-rocket.gif similarity index 100% rename from assets/svd-rocket.gif rename to docs/assets/svd-rocket.gif diff --git a/assets/svd-starry-night.gif b/docs/assets/svd-starry-night.gif similarity index 100% rename from assets/svd-starry-night.gif rename to docs/assets/svd-starry-night.gif diff --git a/assets/svd-xpbliss.gif b/docs/assets/svd-xpbliss.gif similarity index 100% rename from assets/svd-xpbliss.gif rename to docs/assets/svd-xpbliss.gif diff --git a/assets/wishbone.jpg b/docs/assets/wishbone.jpg similarity index 100% rename from assets/wishbone.jpg rename to docs/assets/wishbone.jpg diff --git a/assets/wishbone_big.jpg b/docs/assets/wishbone_big.jpg similarity index 100% rename from assets/wishbone_big.jpg rename to docs/assets/wishbone_big.jpg diff --git a/assets/wishbone_headshot.jpg b/docs/assets/wishbone_headshot.jpg similarity index 100% rename from assets/wishbone_headshot.jpg rename to docs/assets/wishbone_headshot.jpg diff --git a/assets/wishbone_headshot_badscale.jpg b/docs/assets/wishbone_headshot_badscale.jpg similarity index 100% rename from assets/wishbone_headshot_badscale.jpg rename to docs/assets/wishbone_headshot_badscale.jpg diff --git a/assets/wishbone_headshot_details.jpg b/docs/assets/wishbone_headshot_details.jpg similarity index 100% rename from assets/wishbone_headshot_details.jpg rename to docs/assets/wishbone_headshot_details.jpg diff --git a/docs/docs/CLI/colorize.md b/docs/docs/CLI/colorize.md new file mode 100644 index 0000000..82448d0 --- /dev/null +++ b/docs/docs/CLI/colorize.md @@ -0,0 +1,4 @@ +::: mkdocs-click + :module: imaginairy.cli.colorize + :command: colorize_cmd + :prog_name: aimg colorize \ No newline at end of file diff --git a/docs/docs/CLI/describe.md b/docs/docs/CLI/describe.md new file mode 100644 index 0000000..3d517d0 --- /dev/null +++ b/docs/docs/CLI/describe.md @@ -0,0 +1,4 @@ +::: mkdocs-click + :module: imaginairy.cli.describe + :command: describe_cmd + :prog_name: aimg describe \ No newline at end of file diff --git a/docs/docs/CLI/edit.md b/docs/docs/CLI/edit.md new file mode 100644 index 0000000..66074fe --- /dev/null +++ b/docs/docs/CLI/edit.md @@ -0,0 +1,4 @@ +::: mkdocs-click + :module: imaginairy.cli.edit + :command: edit_cmd + :prog_name: aimg edit \ No newline at end of file diff --git a/docs/docs/CLI/imagine.md b/docs/docs/CLI/imagine.md new file mode 100644 index 0000000..02c76a0 --- /dev/null +++ b/docs/docs/CLI/imagine.md @@ -0,0 +1,3 @@ +::: mkdocs-click + :module: imaginairy.cli.imagine + :command: imagine_cmd \ No newline at end of file diff --git a/docs/docs/CLI/upscale.md b/docs/docs/CLI/upscale.md new file mode 100644 index 0000000..bbce413 --- /dev/null +++ b/docs/docs/CLI/upscale.md @@ -0,0 +1,4 @@ +::: mkdocs-click + :module: imaginairy.cli.upscale + :command: upscale_cmd + :prog_name: aimg upscale \ No newline at end of file diff --git a/docs/docs/CLI/videogen.md b/docs/docs/CLI/videogen.md new file mode 100644 index 0000000..9f1960b --- /dev/null +++ b/docs/docs/CLI/videogen.md @@ -0,0 +1,4 @@ +::: mkdocs-click + :module: imaginairy.cli.videogen + :command: videogen_cmd + :prog_name: aimg videogen \ No newline at end of file diff --git a/docs/docs/Python/ControlInput.md b/docs/docs/Python/ControlInput.md new file mode 100644 index 0000000..19a400b --- /dev/null +++ b/docs/docs/Python/ControlInput.md @@ -0,0 +1,2 @@ + +::: imaginairy.schema.ControlInput diff --git a/docs/docs/Python/ImaginePrompt.md b/docs/docs/Python/ImaginePrompt.md new file mode 100644 index 0000000..1c52a1b --- /dev/null +++ b/docs/docs/Python/ImaginePrompt.md @@ -0,0 +1,2 @@ + +::: imaginairy.schema.ImaginePrompt diff --git a/docs/docs/Python/LazyLoadingImage.md b/docs/docs/Python/LazyLoadingImage.md new file mode 100644 index 0000000..f60c449 --- /dev/null +++ b/docs/docs/Python/LazyLoadingImage.md @@ -0,0 +1,2 @@ + +::: imaginairy.schema.LazyLoadingImage diff --git a/docs/docs/Python/WeightedPrompt.md b/docs/docs/Python/WeightedPrompt.md new file mode 100644 index 0000000..2c4deff --- /dev/null +++ b/docs/docs/Python/WeightedPrompt.md @@ -0,0 +1,2 @@ + +::: imaginairy.schema.WeightedPrompt diff --git a/docs/docs/Python/colorize-img.md b/docs/docs/Python/colorize-img.md new file mode 100644 index 0000000..714a347 --- /dev/null +++ b/docs/docs/Python/colorize-img.md @@ -0,0 +1,2 @@ + +::: imaginairy.api.colorize.colorize_img diff --git a/docs/docs/Python/generate-video.md b/docs/docs/Python/generate-video.md new file mode 100644 index 0000000..c5de849 --- /dev/null +++ b/docs/docs/Python/generate-video.md @@ -0,0 +1,2 @@ + +::: imaginairy.api.video_sample.generate_video diff --git a/docs/docs/Python/imagine-image-files.md b/docs/docs/Python/imagine-image-files.md new file mode 100644 index 0000000..71fffae --- /dev/null +++ b/docs/docs/Python/imagine-image-files.md @@ -0,0 +1,3 @@ + + +::: imaginairy.api.generate.imagine_image_files diff --git a/docs/docs/Python/imagine.md b/docs/docs/Python/imagine.md new file mode 100644 index 0000000..c13f638 --- /dev/null +++ b/docs/docs/Python/imagine.md @@ -0,0 +1,2 @@ + +::: imaginairy.api.generate.imagine diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..880f053 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,332 @@ + +#ImaginAIry 🤖🧠 +**Pythonic AI generation of images and videos** + +[![Downloads](https://pepy.tech/badge/imaginairy)](https://pepy.tech/project/imaginairy) +[![PyPI Version](https://img.shields.io/pypi/v/imaginairy.svg)](https://pypi.org/project/imaginairy/) +[![MIT License](https://img.shields.io/badge/license-MIT-green)](https://github.com/brycedrennan/imaginAIry/blob/master/LICENSE/) +[![Discord Community](https://flat.badgen.net/discord/members/FdD7ut3YjW)](https://discord.gg/FdD7ut3YjW) + +

+ + + + + + +

+ +## Features + +- [Image Generation](#image-generation): Create with SDXL, Openjourney, OpenDalle, and many others. + - [Generation Control](#image-generation-control): Exert detailed control over the generation process. +- [Image Editing](#editing-instructions-control): Edit images with instructions. +- [Image Upscaling](#add-details-control-upscalingsuper-resolution): Add details to images. +- [Video Generation](#video-generation): Turn images into videos. +- **Image Captioning**: +--- + +## Installation + +```bash +# on macOS, make sure rust is installed first +# be sure to use Python 3.10, Python 3.11 is not supported at the moment +pip install imaginairy + +``` + +--- + + +## Image Generation + +=== "CLI" + ```bash + aimg imagine --seed 1 --model sdxl --size hd "wide shot of sun setting on a green valley" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt + + prompt = ImaginePrompt( + prompt="wide shot of sun setting on a green valley", + seed=1, + model_weights="sdxl", + size="hd" + ) + + result = next(imagine(prompts=prompt)) + result.img.save("sun_set_green_valley.png") + ``` + + + + +--- + +## Image Generation Control +Guide the generation process by providing body poses, depth maps, canny edges, hed boundaries, normal maps, or even QR codes. + +#### Body Pose Control + +=== "CLI" + ```bash + imagine --control-image assets/indiana.jpg --control-mode openpose --caption-text openpose "photo of a polar bear" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/indiana.jpg") + control_mode = ControlInput(mode="openpose", image=image) + prompt = ImaginePrompt(prompt="photo of a polar bear", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/indiana-pose-polar-bear.jpg") + ``` + +

+ + + +

+ +#### Canny Edge Control +=== "CLI" + + ```bash + imagine --control-image assets/lena.png --control-mode canny "photo of a woman with a hat looking at the camera" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/lena.png") + control_mode = ControlInput(mode="canny", image=image) + prompt = ImaginePrompt(prompt="photo of a woman with a hat looking at the camera", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/lena-canny-generated.jpg") + ``` + + +

+ + + +

+ +#### HED Boundary Control + +=== "CLI" + ```bash + imagine --control-image dog.jpg --control-mode hed "photo of a dalmation" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg") + control_mode = ControlInput(mode="hed", image=image) + prompt = ImaginePrompt(prompt="photo of a dalmation", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/dog-hed-boundary-dalmation.jpg") + ``` + +

+ + + +

+ +#### Depth Map Control +=== "CLI" + ```bash + imagine --control-image fancy-living.jpg --control-mode depth "a modern living room" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/fancy-living.jpg") + control_mode = ControlInput(mode="depth", image=image) + prompt = ImaginePrompt(prompt="a modern living room", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/fancy-living-depth-generated.jpg") + ``` + +

+ + + +

+ +#### Normal Map Control +=== "CLI" + ```bash + imagine --control-image bird.jpg --control-mode normal "a bird" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg") + control_mode = ControlInput(mode="normal", image=image) + prompt = ImaginePrompt(prompt="a bird", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/bird-normal-generated.jpg") + ``` + +

+ + + +

+ +#### Image Shuffle Control + +Generates the image based on elements of the control image. Kind of similar to style transfer. +=== "CLI" + ```bash + imagine --control-image pearl-girl.jpg --control-mode shuffle "a clown" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/girl_with_a_pearl_earring.jpg") + control_mode = ControlInput(mode="shuffle", image=image) + prompt = ImaginePrompt(prompt="a clown", control_inputs=[control_mode], seed=1) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/pearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg") + ``` + +The middle image is the "shuffled" input image +

+ + + +

+ +#### Editing Instructions Control + +Similar to instructPix2Pix (below) but works with any SD 1.5 based model. +=== "CLI" + ```bash + imagine --control-image pearl-girl.jpg --control-mode edit --init-image-strength 0.01 --steps 30 --negative-prompt "" --model openjourney-v2 "make it anime" "make it at the beach" + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/girl_with_a_pearl_earring.jpg") + control_mode = ControlInput(mode="edit", image=image) + + prompts = [ImaginePrompt(prompt="make it anime", control_inputs=[control_mode], init_image_strength=0.01, steps=30, negative_prompt="", model_weights="openjourney-v2"), + ImaginePrompt(prompt="make it at the beach", control_inputs=[control_mode], init_image_strength=0.01, steps=30, negative_prompt="", model_weights="openjourney-v2")] + + imagine_iterator = imagine(prompts=prompts) + + result = next(imagine_iterator) + result.img.save("assets/pearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg") + + result = next(imagine_iterator) + result.img.save("assets/pearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg") + ``` + +

+ + + +

+ +#### Add Details Control (upscaling/super-resolution) + +Replaces existing details in an image. Good to use with --init-image-strength 0.2 + +=== "CLI" + ```bash + imagine --control-image "assets/wishbone.jpg" --control-mode details "sharp focus, high-resolution" --init-image-strength 0.2 --steps 30 --size 2048x2048 + ``` + +=== "Python" + ``` py + from imaginairy.api.generate import imagine + from imaginairy.schema import ImaginePrompt, ControlInput, LazyLoadingImage + + image = LazyLoadingImage(filepath="assets/wishbone_headshot_badscale.jpg") + control_mode = ControlInput(mode="details", image=image) + prompt = ImaginePrompt(prompt="sharp focus, high-resolution", control_inputs=[control_mode], init_image_strength=0.2) + + result = next(imagine(prompts=prompt)) + result.img.save("assets/wishbone_headshot_details.jpg") + ``` + +

+ + +

+ + +## Image (re)Colorization (using brightness control) +Colorize black and white images or re-color existing images. + +The generated colors will be applied back to the original image. You can either provide a caption or +allow the tool to generate one for you. + +=== "CLI" + ```bash + aimg colorize pearl-girl.jpg --caption "photo of a woman" + ``` +=== "Python" + ``` py + from imaginairy.api.colorize import colorize_img + from PIL import Image, ImageEnhance, ImageStat + + init_image = Image.open("assets/girl_with_a_pearl_earring.jpg") + image = colorize_img(img=init_image, caption="photo of a woman") + image.save("assets/pearl-colorized.jpg") + ``` + +

+ + + +

+ + +## Video Generation + +=== "CLI" + ```bash + aimg videogen --start-image assets/rocket-wide.png + ``` + +=== "Python" + ``` py + from imaginairy.api.video_sample import generate_video + + generate_video(input_path="assets/rocket-wide.png") + + ``` +portrait photo of a freckled woman \ No newline at end of file diff --git a/imaginairy/api/colorize.py b/imaginairy/api/colorize.py index 554d6cf..2dbfbcd 100644 --- a/imaginairy/api/colorize.py +++ b/imaginairy/api/colorize.py @@ -1,4 +1,4 @@ -"""Functions for colorizing black and white images""" +"""Functions for colorizing images""" import logging @@ -12,6 +12,19 @@ logger = logging.getLogger(__name__) def colorize_img(img, max_width=1024, max_height=1024, caption=None): + """ + Colorizes black and white images or re-colors existing images. Optionally adds a caption. + + Args: + img (Image): The image to be colorized. + max_width (int, optional): The maximum width of the output image, defaults to 1024. + max_height (int, optional): The maximum height of the output image, defaults to 1024. + caption (str, optional): A caption for the image. If None, a caption is generated and modified. + + Returns: + Image: The colorized version of the input image. + + """ if not caption: caption = generate_caption(img, min_length=10) caption = caption.replace("black and white", "color") diff --git a/imaginairy/api/generate.py b/imaginairy/api/generate.py index bb72d9c..472ee45 100755 --- a/imaginairy/api/generate.py +++ b/imaginairy/api/generate.py @@ -34,6 +34,27 @@ def imagine_image_files( return_filename_type: str = "generated", videogen: bool = False, ): + """ + Generates and saves image files based on given prompts, with options for animations and videos. + + Args: + prompts (list[ImaginePrompt] | ImaginePrompt): A prompt or list of prompts for image generation. + outdir (str): Directory path where the generated images and other files will be saved. + precision (str, optional): Precision mode for image generation, defaults to 'autocast'. + record_step_images (bool, optional): If True, saves step-by-step images of the generation process, defaults to False. + output_file_extension (str, optional): File extension for output images, must be 'jpg' or 'png', defaults to 'jpg'. + print_caption (bool, optional): If True, prints captions on the generated images, defaults to False. + make_gif (bool, optional): If True, creates a GIF from the generation steps, defaults to False. + make_compare_gif (bool, optional): If True, creates a comparison GIF with initial and generated images, defaults to False. + return_filename_type (str, optional): Type of filenames to return, defaults to 'generated'. + videogen (bool, optional): If True, generates a video from the generated images, defaults to False. + + Returns: + list[str]: A list of filenames of the generated images. + + Raises: + ValueError: If the output file extension is not 'jpg' or 'png'. + """ from PIL import ImageDraw from imaginairy.api.video_sample import generate_video @@ -157,6 +178,24 @@ def imagine( add_caption: bool = False, unsafe_retry_count: int = 1, ): + """ + Generates images based on the provided prompts using the ImaginAIry API. + + Args: + prompts (list[ImaginePrompt] | str | ImaginePrompt): A prompt or list of prompts for image generation. + Can be a string, a single ImaginePrompt instance, or a list of ImaginePrompt instances. + precision (str, optional): The precision mode for image generation, defaults to 'autocast'. + debug_img_callback (Callable, optional): Callback function for debugging images, defaults to None. + progress_img_callback (Callable, optional): Callback function called at intervals with progress images, defaults to None. + progress_img_interval_steps (int, optional): Number of steps between each progress image callback, defaults to 3. + progress_img_interval_min_s (float, optional): Minimum seconds between each progress image callback, defaults to 0.1. + half_mode: If set, determines whether to use half precision mode for image generation, defaults to None. + add_caption (bool, optional): Flag to add captions to the generated images, defaults to False. + unsafe_retry_count (int, optional): Number of retries for generating an image if it is deemed unsafe, defaults to 1. + + Yields: + The generated image(s) based on the provided prompts. + """ import torch.nn from imaginairy.api.generate_refiners import generate_single_image diff --git a/imaginairy/api/video_sample.py b/imaginairy/api/video_sample.py index 128a36f..6a63c0f 100644 --- a/imaginairy/api/video_sample.py +++ b/imaginairy/api/video_sample.py @@ -48,8 +48,27 @@ def generate_video( repetitions=1, ): """ - Simple script to generate a single sample conditioned on an image `input_path` or multiple images, one for each - image file in folder `input_path`. If you run out of VRAM, try decreasing `decoding_t`. + Generates a video from a single image or multiple images, conditioned on the provided input_path. + + Args: + input_path (str): Path to an image file or a directory containing image files. + output_folder (str | None, optional): Directory where the generated video will be saved. + Defaults to "outputs/video/" if None. + num_frames (int, optional): Number of frames in the generated video. Defaults to 6. + num_steps (int, optional): Number of steps for the generation process. Defaults to 30. + model_name (str, optional): Name of the model to use for generation. Defaults to "svd_xt". + fps_id (int, optional): Frame rate identifier used in generation. Defaults to 6. + output_fps (int, optional): Frame rate of the output video. Defaults to 6. + motion_bucket_id (int, optional): Identifier for motion bucket. Defaults to 127. + cond_aug (float, optional): Conditional augmentation value. Defaults to 0.02. + seed (Optional[int], optional): Random seed for generation. If None, a random seed is chosen. + decoding_t (int, optional): Number of frames decoded at a time, affecting VRAM usage. + Reduce if necessary. Defaults to 1. + device (Optional[str], optional): Device to run the generation on. Defaults to the detected device. + repetitions (int, optional): Number of times to repeat the video generation process. Defaults to 1. + + Returns: + None: The function saves the generated video(s) to the specified output folder. """ device = default(device, get_device) diff --git a/imaginairy/schema.py b/imaginairy/schema.py index b5ccbf3..f31d299 100644 --- a/imaginairy/schema.py +++ b/imaginairy/schema.py @@ -40,7 +40,29 @@ class InvalidUrlError(ValueError): class LazyLoadingImage: - """Image file encoded as base64 string.""" + """ + A class representing an image that can be lazily loaded from various sources. + + This class supports loading an image from a filepath, URL, a PIL Image object, + or a base64 encoded string. The image is only loaded into memory when it's + accessed, not at the time of object creation. If multiple sources are provided, + an error is raised. The class also provides functionality to convert the image + to a base64 string and to access it as a PIL Image object. + + Attributes: + _lazy_filepath (str): Path to the image file, if provided. + _lazy_url (str): URL of the image, if provided. + _img (Image.Image): PIL Image object, if provided. + + Methods: + _load_img: Lazily loads the image from the specified source. + as_base64: Returns the image encoded as a base64 string. + as_pillow: Returns the image as a PIL Image object. + save_image_as_base64: Static method to convert a PIL Image to a base64 string. + load_image_from_base64: Static method to load an image from a base64 string. + __get_pydantic_core_schema__: Class method for Pydantic schema generation. + + """ def __init__( self, @@ -205,6 +227,35 @@ class LazyLoadingImage: class ControlInput(BaseModel): + """ + A Pydantic model representing the input control parameters for an operation, + typically involving image processing. + + This model includes parameters such as the operation mode, the image to be processed, + an alternative raw image, and a strength parameter. It validates these parameters to + ensure they meet specific criteria, such as the mode being one of the predefined valid modes + and ensuring that both 'image' and 'image_raw' are not provided simultaneously. + + Attributes: + mode (str): The operation mode, which must be one of the predefined valid modes. + image (LazyLoadingImage, optional): An instance of LazyLoadingImage to be processed. + Defaults to None. + image_raw (LazyLoadingImage, optional): An alternative raw image instance of + LazyLoadingImage. Defaults to None. + strength (float): A float value representing the strength of the operation, must be + between 0 and 1000 (inclusive). Defaults to 1. + + Methods: + image_raw_validate: Validates that either 'image' or 'image_raw' is provided, + but not both. + mode_validate: Validates that the 'mode' attribute is one of the predefined valid + modes in the configuration. + + Raises: + ValueError: Raised if both 'image' and 'image_raw' are specified, or if the + 'mode' is not a valid mode. + """ + mode: str image: LazyLoadingImage | None = None image_raw: LazyLoadingImage | None = None @@ -238,6 +289,23 @@ class ControlInput(BaseModel): class WeightedPrompt(BaseModel): + """ + Represents a prompt with an associated weight. + + This class is used to define a text prompt with a corresponding numerical weight, + indicating the significance or influence of the prompt in a given context, such as + in image generation or text processing tasks. + + Attributes: + text (str): The textual content of the prompt. + weight (float): A numerical weight associated with the prompt. Defaults to 1. + The weight must be greater than or equal to 0. + + Methods: + __repr__: Returns a string representation of the WeightedPrompt instance, + formatted as 'weight*(text)'. + """ + text: str weight: float = Field(1, ge=0) @@ -256,6 +324,39 @@ InpaintMethod = Literal["finetune", "control"] class ImaginePrompt(BaseModel, protected_namespaces=()): + """ + The ImaginePrompt class is used for configuring and generating image prompts. + + Attributes: + prompt (str | WeightedPrompt | list[WeightedPrompt] | list[str] | None, optional): Primary prompt for the image generation. + negative_prompt (str | WeightedPrompt | list[WeightedPrompt] | list[str] | None, optional): Prompt specifying what to avoid in the image. + prompt_strength (float, optional): Strength of the influence of the prompt on the output. + init_image (LazyLoadingImage, optional): Initial image to base the generation on. + init_image_strength (float, optional): Strength of the influence of the initial image. + control_inputs (List[ControlInput], optional): Additional control inputs for image generation. + mask_prompt (str, optional): Mask prompt for selective area generation. + mask_image (LazyLoadingImage, optional): Image used for masking. + mask_mode (MaskMode | str): Mode of masking operation. + mask_modify_original (bool): Flag to modify the original image with mask. + outpaint (str, optional): Outpainting string for extending image boundaries. + model_weights (str): Weights configuration for the generation model. + solver_type (str): Type of solver used for image generation. + seed (int, optional): Seed for random number generator. + steps (int, optional): Number of steps for the generation process. + size (int | str | tuple[int, int], optional): Size of the generated image. + upscale (bool): Flag to enable upscaling of the generated image. + fix_faces (bool): Flag to apply face fixing in the generation. + fix_faces_fidelity (float, optional): Fidelity of face fixing. + conditioning (str, optional): Additional conditioning string. + tile_mode (str): Mode of tiling for the image. + allow_compose_phase (bool): Flag to allow composition phase in generation. + is_intermediate (bool): Flag for intermediate image processing. + collect_progress_latents (bool): Flag to collect progress latents. + caption_text (str): Caption text for the image. + composition_strength (float, optional): Strength of the composition effect. + inpaint_method (InpaintMethod): Method used for inpainting. + """ + model_config = ConfigDict(extra="forbid", validate_assignment=True) prompt: List[WeightedPrompt] = Field(default=None, validate_default=True) # type: ignore diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..096be06 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,56 @@ +site_name: ImaginAIry +theme: + name: material + features: + - content.tabs.link + - content.code.copy + palette: + primary: cyan + +markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - mkdocs-click + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + - pymdownx.superfences + - pymdownx.tabbed: + slugify: !!python/object/apply:pymdownx.slugs.slugify + kwds: + case: lower + alternate_style: true + - attr_list + - md_in_html + +plugins: + - search + - mkdocstrings: + default_handler: python + handlers: + python: + rendering: + show_source: true + +nav: + - Home: index.md + - Docs: + - CLI: + - Create Image: docs/CLI/imagine.md + - Create Video: docs/CLI/videogen.md + - Edit Image: docs/CLI/edit.md + - Upscale Image: docs/CLI/upscale.md + - Colorize Image: docs/CLI/colorize.md + - Describe Image: docs/CLI/describe.md + - Python: + - imagine(): docs/Python/imagine.md + - imagine_image_files(): docs/Python/imagine-image-files.md + - generate_video(): docs/Python/generate-video.md + - colorize_img(): docs/Python/colorize-img.md + - ImaginePrompt: docs/Python/ImaginePrompt.md + - ControlInput: docs/Python/ControlInput.md + - LazyLoadingImage: docs/Python/LazyLoadingImage.md + - WeightedPrompt: docs/Python/WeightedPrompt.md + diff --git a/requirements-dev.in b/requirements-dev.in index 663ee3d..eeb96ca 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,5 +1,8 @@ coverage httpx +mkdocs-material +mkdocs-click +mkdocstrings[python] mypy ruff pytest diff --git a/requirements-dev.txt b/requirements-dev.txt index c11221b..60ca636 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -12,6 +12,8 @@ anyio==4.2.0 # via # httpx # starlette +babel==2.14.0 + # via mkdocs-material certifi==2023.11.17 # via # httpcore @@ -24,11 +26,18 @@ click==8.1.7 # click-help-colors # click-shell # imaginAIry (setup.py) + # mkdocs + # mkdocs-click + # mkdocstrings # uvicorn click-help-colors==0.9.4 # via imaginAIry (setup.py) click-shell==2.1 # via imaginAIry (setup.py) +colorama==0.4.6 + # via + # griffe + # mkdocs-material contourpy==1.2.0 # via matplotlib coverage==7.4.0 @@ -65,6 +74,10 @@ ftfy==6.1.3 # via # imaginAIry (setup.py) # open-clip-torch +ghp-import==2.1.0 + # via mkdocs +griffe==0.38.1 + # via mkdocstrings-python h11==0.14.0 # via # httpcore @@ -94,19 +107,55 @@ iniconfig==2.0.0 jaxtyping==0.2.25 # via imaginAIry (setup.py) jinja2==3.1.2 - # via torch + # via + # mkdocs + # mkdocs-material + # mkdocstrings + # torch kiwisolver==1.4.5 # via matplotlib kornia==0.7.1 # via imaginAIry (setup.py) llvmlite==0.41.1 # via numba +markdown==3.5.1 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-click + # mkdocs-material + # mkdocstrings + # pymdown-extensions markupsafe==2.1.3 - # via jinja2 + # via + # jinja2 + # mkdocs + # mkdocstrings matplotlib==3.7.4 # via # -c tests/constraints.txt # filterpy +mergedeep==1.3.4 + # via mkdocs +mkdocs==1.5.3 + # via + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings +mkdocs-autorefs==0.5.0 + # via mkdocstrings +mkdocs-click==0.8.1 + # via -r requirements-dev.in +mkdocs-material==9.5.3 + # via -r requirements-dev.in +mkdocs-material-extensions==1.3.1 + # via mkdocs-material +mkdocstrings[python]==0.24.0 + # via + # -r requirements-dev.in + # mkdocstrings-python +mkdocstrings-python==1.7.5 + # via mkdocstrings mpmath==1.3.0 # via sympy mypy==1.8.0 @@ -146,9 +195,14 @@ packaging==23.2 # huggingface-hub # kornia # matplotlib + # mkdocs # pytest # pytest-sugar # transformers +paginate==0.5.6 + # via mkdocs-material +pathspec==0.12.1 + # via mkdocs pillow==10.2.0 # via # diffusers @@ -157,6 +211,10 @@ pillow==10.2.0 # imaginAIry (setup.py) # matplotlib # torchvision +platformdirs==4.1.0 + # via + # mkdocs + # mkdocstrings pluggy==1.3.0 # via pytest protobuf==4.25.1 @@ -171,6 +229,12 @@ pydantic==2.5.3 # imaginAIry (setup.py) pydantic-core==2.14.6 # via pydantic +pygments==2.17.2 + # via mkdocs-material +pymdown-extensions==10.7 + # via + # mkdocs-material + # mkdocstrings pyparsing==3.1.1 # via matplotlib pytest==7.4.4 @@ -186,17 +250,25 @@ pytest-randomly==3.15.0 pytest-sugar==0.9.7 # via -r requirements-dev.in python-dateutil==2.8.2 - # via matplotlib + # via + # ghp-import + # matplotlib pyyaml==6.0.1 # via # huggingface-hub + # mkdocs # omegaconf + # pymdown-extensions + # pyyaml-env-tag # responses # timm # transformers +pyyaml-env-tag==0.1 + # via mkdocs regex==2023.12.25 # via # diffusers + # mkdocs-material # open-clip-torch # transformers requests==2.31.0 @@ -204,6 +276,7 @@ requests==2.31.0 # diffusers # huggingface-hub # imaginAIry (setup.py) + # mkdocs-material # responses # torchvision # transformers @@ -303,6 +376,8 @@ urllib3==2.1.0 # types-requests uvicorn==0.25.0 # via imaginAIry (setup.py) +watchdog==3.0.0 + # via mkdocs wcwidth==0.2.12 # via ftfy wheel==0.42.0