[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71039":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":16,"starSnapshotCount":16,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},71039,"imaginAIry","brycedrennan\u002FimaginAIry","brycedrennan","Pythonic AI generation of images and videos","",null,"Python",8153,473,51,22,0,1,5,65.03,"MIT License",false,"master",true,[],"2026-06-12 04:00:58","# ImaginAIry 🤖🧠\n\n[![Downloads](https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1rOvQNs0Cmn_yU1bKWjCOHzGVDgZkaTtO?usp=sharing)\n[![Downloads](https:\u002F\u002Fpepy.tech\u002Fbadge\u002Fimaginairy)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fimaginairy)\n[![image](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fimaginairy.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fimaginairy\u002F)\n[![image](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green)](https:\u002F\u002Fgithub.com\u002Fbrycedrennan\u002FimaginAIry\u002Fblob\u002Fmaster\u002FLICENSE\u002F)\n[![Discord](https:\u002F\u002Fflat.badgen.net\u002Fdiscord\u002Fmembers\u002FFdD7ut3YjW)](https:\u002F\u002Fdiscord.gg\u002FFdD7ut3YjW)\n\nAI imagined images. Pythonic generation of stable diffusion images **and videos** *!.\n\n\"just works\" on Linux and macOS(M1) (and sometimes windows).\n\n\n```bash\n# on macOS, make sure rust is installed first\n# be sure to use Python 3.10, Python 3.11 is not supported at the moment\n>> pip install imaginairy\n>> imagine \"a scenic landscape\" \"a photo of a dog\" \"photo of a fruit bowl\" \"portrait photo of a freckled woman\" \"a bluejay\"\n# Make an AI video\n>> aimg videogen --start-image rocket.png\n```\n## Stable Video Diffusion\n\u003Cp float=\"left\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-rocket.gif\" height=\"190\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-athens.gif\" height=\"190\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-pearl-girl.gif\" height=\"190\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-starry-night.gif\" height=\"190\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-dog.gif\" height=\"190\">\n\u003Cimg src=\"docs\u002Fassets\u002Fsvd-xpbliss.gif\" height=\"190\">\n\u003C\u002Fp>\n\n### Rushed release of Stable Diffusion Video!\nWorks with Nvidia GPUs.  Does not work on Mac or CPU.\n\nOn Windows you'll need to install torch 2.0 first via https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F\n```text\nUsage: aimg videogen [OPTIONS]\n\n  AI generate a video from an image\n\n  Example:\n\n      aimg videogen --start-image assets\u002Frocket-wide.png\n\nOptions:\n  --start-image TEXT       Input path for image file.\n  --num-frames INTEGER     Number of frames.\n  --num-steps INTEGER      Number of steps.\n  --model TEXT             Model to use. One of: svd, svd_xt, svd_image_decoder, svd_xt_image_decoder\n  --fps INTEGER            FPS for the AI to target when generating video\n  --output-fps INTEGER     FPS for the output video\n  --motion-amount INTEGER  How much motion to generate. value between 0 and 255.\n  -r, --repeats INTEGER    How many times to repeat the renders.   [default: 1]\n  --cond-aug FLOAT         Conditional augmentation.\n  --seed INTEGER           Seed for random number generator.\n  --decoding_t INTEGER     Number of frames decoded at a time.\n  --output_folder TEXT     Output folder.\n  --help                   Show this message and exit.\n```\n\n### Images\n\u003Cp float=\"left\">\n\u003Cimg src=\"docs\u002Fassets\u002F026882_1_ddim50_PS7.5_a_scenic_landscape_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F026884_1_ddim50_PS7.5_photo_of_a_dog_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F026890_1_ddim50_PS7.5_photo_of_a_bowl_of_fruit._still_life_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F026885_1_ddim50_PS7.5_girl_with_a_pearl_earring_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F026891_1_ddim50_PS7.5_close-up_photo_of_a_bluejay_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F026893_1_ddim50_PS7.5_macro_photo_of_a_flower_[generated].jpg\" height=\"256\">\n\u003C\u002Fp>\n\n### Whats New\n[See full Changelog here](.\u002Fdocs\u002Fchangelog.md)\n\n\n**14.3.0**\n- feature: integrates [spandrel](https:\u002F\u002Fgithub.com\u002FchaiNNer-org\u002Fspandrel) for upscaling \n- fix: allow loading sdxl models from local paths. \n\n**14.2.0**\n- 🎉 feature: add image prompt support via `--image-prompt` and `--image-prompt-strength`\n\n**14.1.1**\n- tests: add installation tests for windows, mac, and conda\n- fix: dependency issues\n\n**14.1.0**\n- 🎉 feature: make video generation smooth by adding frame interpolation\n- feature: SDXL weights in the compvis format can now be used\n- feature: allow video generation at any size specified by user\n- feature: video generations output in \"bounce\" format\n- feature: choose video output format: mp4, webp, or gif\n- feature: fix random seed handling in video generation\n- docs: auto-publish docs on push to master\n- build: remove imageio dependency\n- build: vendorize facexlib so we don't install its unneeded dependencies\n\n\n**14.0.4**\n- docs: add a documentation website at https:\u002F\u002Fbrycedrennan.github.io\u002FimaginAIry\u002F\n- build: remove fairscale dependency\n- fix: video generation was broken\n\n**14.0.3**\n- fix: several critical bugs with package\n- tests: add a wheel smoketest to detect these issues in the future\n\n**14.0.0**\n- 🎉 video generation using [Stable Video Diffusion](https:\u002F\u002Fgithub.com\u002FStability-AI\u002Fgenerative-models)\n  - add `--videogen` to any image generation to create a short video from the generated image\n  - or use `aimg videogen` to generate a video from an image\n- 🎉 SDXL (Stable Diffusion Extra Large) models are now supported.\n  - try `--model opendalle` or `--model sdxl`\n  - inpainting and controlnets are not yet supported for SDXL\n- 🎉 imaginairy is now backed by the [refiners library](https:\u002F\u002Fgithub.com\u002Ffinegrain-ai\u002Frefiners)\n  - This was a huge rewrite which is why some features are not yet supported.  On the plus side, refiners supports\ncutting edge features (SDXL, image prompts, etc) which will be added to imaginairy soon.\n  - [self-attention guidance](https:\u002F\u002Fgithub.com\u002FSusungHong\u002FSelf-Attention-Guidance) which makes details of images more accurate\n- 🎉 feature: larger image generations now work MUCH better and stay faithful to the same image as it looks at a smaller size. \nFor example `--size 720p --seed 1` and `--size 1080p --seed 1` will produce the same image for SD15\n- 🎉 feature: loading diffusers based models now supported. Example `--model https:\u002F\u002Fhuggingface.co\u002Fainz\u002Fdiseny-pixar --model-architecture sd15`\n- 🎉 feature: qrcode controlnet!\n\n\n### Run API server and StableStudio web interface (alpha)\nGenerate images via API or web interface.  Much smaller featureset compared to the command line tool.\n```bash\n>> aimg server\n```\nVisit http:\u002F\u002Flocalhost:8000\u002F and http:\u002F\u002Flocalhost:8000\u002Fdocs\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FStability-AI\u002FStableStudio\u002Fblob\u002Fa65d4877ad7d309627808a169818f1add8c278ae\u002Fmisc\u002FGenerateScreenshot.png?raw=true\" width=\"512\">\n\n### Image Structure Control [by ControlNet](https:\u002F\u002Fgithub.com\u002Flllyasviel\u002FControlNet)\n#### (Not supported for SDXL yet)\nGenerate images guided by body poses, depth maps, canny edges, hed boundaries, or normal maps.\n\n**Openpose Control**\n\n```bash\nimagine --control-image assets\u002Findiana.jpg  --control-mode openpose --caption-text openpose \"photo of a polar bear\"\n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Findiana.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Findiana-pose.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Findiana-pose-polar-bear.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Canny Edge Control\n\n```bash\nimagine --control-image assets\u002Flena.png  --control-mode canny \"photo of a woman with a hat looking at the camera\"\n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Flena.png\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Flena-canny.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Flena-canny-generated.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### HED Boundary Control\n\n```bash\nimagine --control-image dog.jpg  --control-mode hed  \"photo of a dalmation\"\n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002F000032_337692011_PLMS40_PS7.5_a_photo_of_a_dog.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fdog-hed-boundary.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fdog-hed-boundary-dalmation.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Depth Map Control\n\n```bash\nimagine --control-image fancy-living.jpg  --control-mode depth  \"a modern living room\"\n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffancy-living.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffancy-living-depth.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffancy-living-depth-generated.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Normal Map Control\n\n```bash\nimagine --control-image bird.jpg  --control-mode normal  \"a bird\"\n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002F013986_1_kdpmpp2m59_PS7.5_a_bluejay_[generated].jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fbird-normal.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fbird-normal-generated.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Image Shuffle Control\n\nGenerates the image based on elements of the control image. Kind of similar to style transfer.\n```bash\nimagine --control-image pearl-girl.jpg  --control-mode shuffle  \"a clown\"\n```\nThe middle image is the \"shuffled\" input image\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fgirl_with_a_pearl_earring.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl_shuffle_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl_shuffle_clown_019331_1_kdpmpp2m15_PS7.5_img2img-0.0_a_clown.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Editing Instructions Control\n\nSimilar to instructPix2Pix (below) but works with any SD 1.5 based model.\n```bash\nimagine --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\" \n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fgirl_with_a_pearl_earring.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl_anime_019537_521829407_kdpmpp2m30_PS9.0_img2img-0.01_make_it_anime.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl_beach_019561_862735879_kdpmpp2m30_PS7.0_img2img-0.01_make_it_at_the_beach.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n#### Add Details Control (upscaling\u002Fsuper-resolution)\n\nReplaces existing details in an image. Good to use with --init-image-strength 0.2\n```bash\nimagine --control-image \"assets\u002Fwishbone.jpg\" --control-mode details \"sharp focus, high-resolution\" --init-image-strength 0.2 --steps 30 -w 2048 -h 2048 \n```\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fwishbone_headshot_badscale.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fwishbone_headshot_details.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n\n### Image (re)Colorization (using brightness control)\nColorize black and white images or re-color existing images.\n\nThe generated colors will be applied back to the original image. You can either provide a caption or \nallow the tool to generate one for you.\n\n```bash\naimg colorize pearl-girl.jpg --caption \"photo of a woman\"\n```\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fgirl_with_a_pearl_earring.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl-gray.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fpearl-recolor-a.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n###  Instruction based image edits [by InstructPix2Pix](https:\u002F\u002Fgithub.com\u002Ftimothybrooks\u002Finstruct-pix2pix)\n#### (Broken as of 14.0.0)\nJust tell imaginairy how to edit the image and it will do it for you!\n\u003Cp float=\"left\">\n\u003Cimg src=\"docs\u002Fassets\u002Fscenic_landscape_winter.jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fdog_red.jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fbowl_of_fruit_strawberries.jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Ffreckled_woman_cyborg.jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002F014214_51293814_kdpmpp2m30_PS10.0_img2img-1.0_make_the_bird_wear_a_cowboy_hat_[generated].jpg\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fflower-make-the-flower-out-of-paper-origami.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fgirl-pearl-clown-compare.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmona-lisa-headshot-anim.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmake-it-night-time.gif\" height=\"256\">\n\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>Click to see shell commands\u003C\u002Fsummary>\nUse prompt strength to control how strong the edit is. For extra control you can combine with prompt-based masking.\n\n```bash\n# enter imaginairy shell\n>> aimg\n🤖🧠> edit scenic_landscape.jpg -p \"make it winter\" --prompt-strength 20\n🤖🧠> edit dog.jpg -p \"make the dog red\" --prompt-strength 5\n🤖🧠> edit bowl_of_fruit.jpg -p \"replace the fruit with strawberries\"\n🤖🧠> edit freckled_woman.jpg -p \"make her a cyborg\" --prompt-strength 13\n🤖🧠> edit bluebird.jpg -p \"make the bird wear a cowboy hat\" --prompt-strength 10\n🤖🧠> edit flower.jpg -p \"make the flower out of paper origami\" --arg-schedule prompt-strength[1:11:0.3]  --steps 25 --compilation-anim gif\n\n# create a comparison gif\n🤖🧠> edit pearl_girl.jpg -p \"make her wear clown makeup\" --compare-gif\n# create an animation showing the edit with increasing prompt strengths\n🤖🧠> edit mona-lisa.jpg -p \"make it a color professional photo headshot\" --negative-prompt \"old, ugly, blurry\" --arg-schedule \"prompt-strength[2:8:0.5]\" --compilation-anim gif\n🤖🧠> edit gg-bridge.jpg -p \"make it night time\" --prompt-strength 15  --steps 30 --arg-schedule prompt-strength[1:15:1] --compilation-anim gif\n```\n\u003C\u002Fdetails>\n\n\n\n### Quick Image Edit Demo\nWant just quickly have some fun? Try `edit-demo` to apply some pre-defined edits.\n```bash\n>> aimg edit-demo pearl_girl.jpg\n```\n\u003Cp float=\"left\">\n\u003Cimg src=\"docs\u002Fassets\u002Fgirl_with_a_pearl_earring_suprise.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmona-lisa-suprise.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fluke-suprise.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fspock-suprise.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fgg-bridge-suprise.gif\" height=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fshire-suprise.gif\" height=\"256\">\n\u003C\u002Fp>\n\n\n### Prompt Based Masking  [by clipseg](https:\u002F\u002Fgithub.com\u002Ftimojl\u002Fclipseg)\nSpecify advanced text based masks using boolean logic and strength modifiers. \nMask syntax:\n  - mask descriptions must be lowercase\n  - keywords (`AND`, `OR`, `NOT`) must be uppercase\n  - parentheses are supported \n  - mask modifiers may be appended to any mask or group of masks.  Example: `(dog OR cat){+5}` means that we'll\nselect any dog or cat and then expand the size of the mask area by 5 pixels.  Valid mask modifiers:\n    - `{+n}` - expand mask by n pixels\n    - `{-n}` - shrink mask by n pixels\n    - `{*n}` - multiply mask strength. will expand mask to areas that weakly matched the mask description\n    - `{\u002Fn}` - divide mask strength. will reduce mask to areas that most strongly matched the mask description. probably not useful\n\nWhen writing strength modifiers keep in mind that pixel values are between 0 and 1.\n\n```bash\n>> imagine \\\n    --init-image pearl_earring.jpg \\\n    --mask-prompt \"face AND NOT (bandana OR hair OR blue fabric){*6}\" \\\n    --mask-mode keep \\\n    --init-image-strength .2 \\\n    --fix-faces \\\n    \"a modern female president\" \"a female robot\" \"a female doctor\" \"a female firefighter\"\n```\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fpearl000.jpg\" height=\"200\">➡️ \n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fpearl_pres.png\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fpearl_robot.png\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fpearl_doctor.png\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fpearl_firefighter.png\" height=\"200\">\n\n```bash\n>> imagine \\\n    --init-image fruit-bowl.jpg \\\n    --mask-prompt \"fruit OR fruit stem{*6}\" \\\n    --mask-mode replace \\\n    --mask-modify-original \\\n    --init-image-strength .1 \\\n    \"a bowl of kittens\" \"a bowl of gold coins\" \"a bowl of popcorn\" \"a bowl of spaghetti\"\n```\n\u003Cimg src=\"docs\u002Fassets\u002F000056_293284644_PLMS40_PS7.5_photo_of_a_bowl_of_fruit.jpg\" height=\"200\">➡️ \n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fbowl004.jpg\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fbowl001.jpg\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fbowl002.jpg\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002Fmask_examples\u002Fbowl003.jpg\" height=\"200\">\n\n\n### Face Enhancement [by CodeFormer](https:\u002F\u002Fgithub.com\u002Fsczhou\u002FCodeFormer)\n\n```bash\n>> imagine \"a couple smiling\" --steps 40 --seed 1 --fix-faces\n```\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbrycedrennan\u002FimaginAIry\u002Fraw\u002Fmaster\u002Fassets\u002F000178_1_PLMS40_PS7.5_a_couple_smiling_nofix.png\" height=\"256\"> ➡️ \n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbrycedrennan\u002FimaginAIry\u002Fraw\u002Fmaster\u002Fassets\u002F000178_1_PLMS40_PS7.5_a_couple_smiling_fixed.png\" height=\"256\"> \n\n\n## Image Upscaling\nUpscale images easily.\n\n=== \"CLI\"\n    ```bash\n    aimg upscale assets\u002F000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg --upscale-model real-hat\n    ```\n\n=== \"Python\"\n    ```py\n    from imaginairy.api.upscale import upscale\n\n    img = upscale(img=\"assets\u002F000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg\")\n    img.save(\"colorful_smoke.upscaled.jpg\")\n\n    ```\n\u003Cimg src=\"docs\u002Fassets\u002F000206_856637805_PLMS40_PS7.5_colorful_smoke.jpg\" width=\"25%\" height=\"auto\"> ➡️ \n\u003Cimg src=\"docs\u002Fassets\u002F000206_856637805_PLMS40_PS7.5_colorful_smoke_upscaled.jpg\" width=\"50%\" height=\"auto\">\n\nUpscaling uses [Spandrel](https:\u002F\u002Fgithub.com\u002FchaiNNer-org\u002Fspandrel) to make it easy to use different upscaling models.\nYou can view different integrated models by running `aimg upscale --list-models`, and then use it with `--upscale-model \u003Cmodel-name>`.\nAlso accepts url's if you want to upscale an image with a different model. Control the new file format\u002Flocation with --format.\n\n```python\nfrom imaginairy.enhancers.upscale_realesrgan import upscale_image\nfrom PIL import Image\nimg = Image.open(\"my-image.jpg\")\nbig_img = upscale_image(i)\n```\n\n\n\n### Tiled Images\n```bash\n>> imagine  \"gold coins\" \"a lush forest\" \"piles of old books\" leaves --tile\n```\n\n\u003Cimg src=\"docs\u002Fassets\u002F000066_801493266_PLMS40_PS7.5_gold_coins.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000066_801493266_PLMS40_PS7.5_gold_coins.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000066_801493266_PLMS40_PS7.5_gold_coins.jpg\" height=\"128\">\n\u003Cimg src=\"docs\u002Fassets\u002F000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000118_597948545_PLMS40_PS7.5_a_lush_forest.jpg\" height=\"128\">\n\u003Cbr>\n\u003Cimg src=\"docs\u002Fassets\u002F000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000075_961095192_PLMS40_PS7.5_piles_of_old_books.jpg\" height=\"128\">\n\u003Cimg src=\"docs\u002Fassets\u002F000040_527733581_PLMS40_PS7.5_leaves.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000040_527733581_PLMS40_PS7.5_leaves.jpg\" height=\"128\">\u003Cimg src=\"docs\u002Fassets\u002F000040_527733581_PLMS40_PS7.5_leaves.jpg\" height=\"128\">\n#### 360 degree images\n```bash\nimagine --tile-x -w 1024 -h 512 \"360 degree equirectangular panorama photograph of the desert\"  --upscale\n```\n\u003Cimg src=\"docs\u002Fassets\u002Fdesert_360.jpg\" height=\"128\">\n\n### Image-to-Image\nUse depth maps for amazing \"translations\" of existing images.\n\n```bash\n>> imagine --init-image girl_with_a_pearl_earring_large.jpg --init-image-strength 0.05  \"professional headshot photo of a woman with a pearl earring\" -r 4 -w 1024 -h 1024 --steps 50\n```\n\u003Cp float=\"left\">\n\u003Cimg src=\"tests\u002Fdata\u002Fgirl_with_a_pearl_earring.jpg\" width=\"256\"> ➡️ \n\u003Cimg src=\"docs\u002Fassets\u002Fpearl_depth_1.jpg\" width=\"256\">\n\u003Cimg src=\"docs\u002Fassets\u002Fpearl_depth_2.jpg\" width=\"256\">\n\u003C\u002Fp>\n\n\n### Outpainting\n\nGiven a starting image, one can generate it's \"surroundings\".\n\nExample:\n`imagine --init-image pearl-earring.jpg --init-image-strength 0 --outpaint all250,up0,down600 \"woman standing\"`\n\n\u003Cimg src=\"tests\u002Fdata\u002Fgirl_with_a_pearl_earring.jpg\" height=\"256\"> ➡️ \n\u003Cimg src=\"tests\u002Fexpected_output\u002Ftest_outpainting_outpaint_.png\" height=\"256\">\n\n### Work with different generation models\n\n\u003Cp float=\"left\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffairytale-treehouse-sd15.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffairytale-treehouse-openjourney-v1.jpg\" height=\"256\">\n    \u003Cimg src=\"docs\u002Fassets\u002Ffairytale-treehouse-openjourney-v2.jpg\" height=\"256\">\n\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>Click to see shell command\u003C\u002Fsummary>\n\n```bash\nimagine \"valley, fairytale treehouse village covered, , matte painting, highly detailed, dynamic lighting, cinematic, realism, realistic, photo real, sunset, detailed, high contrast, denoised, centered, michael whelan\" --steps 60 --seed 1 --arg-schedule model[sd14,sd15,sd20,sd21,openjourney-v1,openjourney-v2] --arg-schedule \"caption-text[sd14,sd15,sd20,sd21,openjourney-v1,openjourney-v2]\"\n```\n\u003C\u002Fdetails>\n\n### Prompt Expansion\nYou can use `{}` to randomly pull values from lists.  A list of values separated by `|` \n and enclosed in `{ }` will be randomly drawn from in a non-repeating fashion. Values that are surrounded by `_ _` will \n pull from a phrase list of the same name.   Folders containing .txt phraselist files may be specified via\n`--prompt_library_path`. The option may be specified multiple times.  Built-in categories:\n    \n      3d-term, adj-architecture, adj-beauty, adj-detailed, adj-emotion, adj-general, adj-horror, animal, art-scene, art-movement, \n      art-site, artist, artist-botanical, artist-surreal, aspect-ratio, bird, body-of-water, body-pose, camera-brand,\n      camera-model, color, cosmic-galaxy, cosmic-nebula, cosmic-star, cosmic-term, desktop-background, dinosaur, eyecolor, f-stop, \n      fantasy-creature, fantasy-setting, fish, flower, focal-length, food, fruit, games, gen-modifier, hair, hd,\n      iso-stop, landscape-type, national-park, nationality, neg-weight, noun-beauty, noun-fantasy, noun-general, \n      noun-horror, occupation, painting-style, photo-term, pop-culture, pop-location, punk-style, quantity, rpg-item, scenario-desc, \n      skin-color, spaceship, style, tree-species, trippy, world-heritage-site\n\n   Examples:\n\n   `imagine \"a {lime|blue|silver|aqua} colored dog\" -r 4 --seed 0` (note that it generates a dog of each color without repetition)\n\n\u003Cimg src=\"docs\u002Fassets\u002F000184_0_plms40_PS7.5_a_silver_colored_dog_[generated].jpg\" height=\"200\">\u003Cimg src=\"docs\u002Fassets\u002F000186_0_plms40_PS7.5_a_aqua_colored_dog_[generated].jpg\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002F000210_0_plms40_PS7.5_a_lime_colored_dog_[generated].jpg\" height=\"200\">\n\u003Cimg src=\"docs\u002Fassets\u002F000211_0_plms40_PS7.5_a_blue_colored_dog_[generated].jpg\" height=\"200\">\n\n   `imagine \"a {_color_} dog\" -r 4 --seed 0` will generate four, different colored dogs. The colors will be pulled from an included \n   phraselist of colors.\n    \n   `imagine \"a {_spaceship_|_fruit_|hot air balloon}. low-poly\" -r 4 --seed 0` will generate images of spaceships or fruits or a hot air balloon\n\n\u003Cdetails>\n\u003Csummary>Python example\u003C\u002Fsummary>\n\n```python\nfrom imaginairy.enhancers.prompt_expansion import expand_prompts\n\nmy_prompt = \"a giant {_animal_}\"\n\nexpanded_prompts = expand_prompts(n=10, prompt_text=my_prompt, prompt_library_paths=[\".\u002Fprompts\"])\n```\n\u003C\u002Fdetails>\n\n   Credit to [noodle-soup-prompts](https:\u002F\u002Fgithub.com\u002FWASasquatch\u002Fnoodle-soup-prompts\u002F) where most, but not all, of the wordlists originate.\n\n### Generate image captions (via [BLIP](https:\u002F\u002Fgithub.com\u002Fsalesforce\u002FBLIP))\n```bash\n>> aimg describe assets\u002Fmask_examples\u002Fbowl001.jpg\na bowl full of gold bars sitting on a table\n```\n\n### Example Use Cases\n\n```bash\n>> aimg\n# Generate endless 8k art\n🤖🧠> imagine -w 1920 -h 1080 --upscale \"{_art-scene_}. {_painting-style_} by {_artist_}\" -r 1000 --steps 30 --model sd21v\n\n# generate endless desktop backgrounds \n🤖🧠> imagine --tile \"{_desktop-background_}\" -r 100\n\n# convert a folder of images to pencil sketches\n🤖🧠> edit other\u002Fimages\u002F*.jpg -p \"make it a pencil sketch\"\n\n# upscale a folder of images\n🤖🧠> upscale my-images\u002F*.jpg\n\n# generate kitchen remodel ideas\n🤖🧠> imagine --control-image kitchen.jpg -w 1024 -h 1024 \"{_interior-style_} kitchen\" --control-mode depth -r 100 --init-image 0.01 --upscale --steps 35 --caption-text \"{prompt}\"\n```\n\n### Additional Features\n - Generate images either in code or from command line.\n - It just works. Proper requirements are installed. Model weights are automatically downloaded. No huggingface account needed. \n    (if you have the right hardware... and aren't on windows)\n - Noisy logs are gone (which was surprisingly hard to accomplish)\n - WeightedPrompts let you smash together separate prompts (cat-dog)\n - Prompt metadata saved into image file metadata\n - Have AI generate captions for images `aimg describe \u003Cfilename-or-url>`\n - Interactive prompt: just run `aimg`\n \n## How To\n\nFor full command line instructions run `aimg --help`\n\n```python\nfrom imaginairy import imagine, imagine_image_files, ImaginePrompt, WeightedPrompt, LazyLoadingImage\n\nurl = \"https:\u002F\u002Fupload.wikimedia.org\u002Fwikipedia\u002Fcommons\u002Fthumb\u002F6\u002F6c\u002FThomas_Cole_-_Architect%E2%80%99s_Dream_-_Google_Art_Project.jpg\u002F540px-Thomas_Cole_-_Architect%E2%80%99s_Dream_-_Google_Art_Project.jpg\"\nprompts = [\n    ImaginePrompt(\"a scenic landscape\", seed=1, upscale=True),\n    ImaginePrompt(\"a bowl of fruit\"),\n    ImaginePrompt([\n        WeightedPrompt(\"cat\", weight=1),\n        WeightedPrompt(\"dog\", weight=1),\n    ]),\n    ImaginePrompt(\n        \"a spacious building\", \n        init_image=LazyLoadingImage(url=url)\n    ),\n    ImaginePrompt(\n        \"a bowl of strawberries\", \n        init_image=LazyLoadingImage(filepath=\"mypath\u002Fto\u002Fbowl_of_fruit.jpg\"),\n        mask_prompt=\"fruit OR stem{*2}\",  # amplify the stem mask x2\n        mask_mode=\"replace\",\n        mask_modify_original=True,\n    ),\n    ImaginePrompt(\"strawberries\", tile_mode=True),\n]\nfor result in imagine(prompts):\n    # do something\n    result.save(\"my_image.jpg\")\n\n# or\n\nimagine_image_files(prompts, outdir=\".\u002Fmy-art\")\n\n```\n\n## Requirements\n- ~10 gb space for models to download\n- A CUDA supported graphics card with >= 11gb VRAM (and CUDA installed) or an M1 processor.\n- Python installed. Preferably Python 3.10.  (not conda)\n- For macOS [rust](https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall) and setuptools-rust must be installed to compile the `tokenizer` library.\nThey can be installed via: `curl --proto '=https' --tlsv1.2 -sSf https:\u002F\u002Fsh.rustup.rs | sh` and `pip install setuptools-rust`\n    \n\n## Running in Docker\nSee example Dockerfile (works on machine where you can pass the gpu into the container)\n```bash\ndocker build . -t imaginairy\n# you really want to map the cache or you end up wasting a lot of time and space redownloading the model weights\ndocker run -it --gpus all -v $HOME\u002F.cache\u002Fhuggingface:\u002Froot\u002F.cache\u002Fhuggingface -v $HOME\u002F.cache\u002Ftorch:\u002Froot\u002F.cache\u002Ftorch -v `pwd`\u002Foutputs:\u002Foutputs imaginairy \u002Fbin\u002Fbash\n```\n\n## Running on Google Colab\n[Example Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1rOvQNs0Cmn_yU1bKWjCOHzGVDgZkaTtO?usp=sharing)\n\n## Q&A\n\n#### Q: How do I change the cache directory for where models are stored?\n\nA: Set the `HUGGINGFACE_HUB_CACHE` environment variable. \n\n#### Q: How do I free up disk space?\n\nA: The AI models are cached in `~\u002F.cache\u002F` (or `HUGGINGFACE_HUB_CACHE`). To delete the cache remove the following folders:\n - ~\u002F.cache\u002Fimaginairy\n - ~\u002F.cache\u002Fclip\n - ~\u002F.cache\u002Ftorch\n - ~\u002F.cache\u002Fhuggingface\n\n\n\n## Not Supported\n - exploratory features that don't work well\n\n\n","imaginAIry 是一个基于Python的AI图像和视频生成工具。它利用稳定扩散模型来创建高质量的图像和流畅的视频内容，支持从单张图片生成连续动画的功能，并且提供了丰富的参数设置选项以满足不同需求。该项目易于安装和使用，在Linux、macOS（M1芯片）上运行良好，同时对Windows系统也提供了一定程度的支持。imaginAIry非常适合那些希望探索AI艺术创作潜力或需要为项目快速生成视觉素材的研究人员、开发者以及创意工作者。",2,"2026-06-11 03:35:37","high_star"]