huge update to CLI.md

way too many updates to list them all, including:
- render keys for keyboard-shortcuts
- quote commands and "unhide" parameter-values (like `<int>`, `<string>`
- fix codeblocks
- quote commands
- quote filenames
- use admonitions
- ....
This commit is contained in:
mauwii 2022-10-11 05:50:32 +02:00
parent bd98dd2307
commit e078025f00
No known key found for this signature in database
GPG Key ID: D923DB04ADB3F5AB

View File

@ -60,7 +60,7 @@ invoke> q
![invoke-py-demo](../assets/dream-py-demo.png) ![invoke-py-demo](../assets/dream-py-demo.png)
The `invoke>` prompt's arguments are pretty much identical to those used in the The `invoke>` prompt's arguments are pretty much identical to those used in the
Discord bot, except you don't need to type "!invoke" (it doesn't hurt if you do). Discord bot, except you don't need to type `!invoke` (it doesn't hurt if you do).
A significant change is that creation of individual images is now the default A significant change is that creation of individual images is now the default
unless `--grid` (`-g`) is given. A full list is given in unless `--grid` (`-g`) is given. A full list is given in
[List of prompt arguments](#list-of-prompt-arguments). [List of prompt arguments](#list-of-prompt-arguments).
@ -75,8 +75,7 @@ the location of the model weight files.
These command-line arguments can be passed to `invoke.py` when you first run it These command-line arguments can be passed to `invoke.py` when you first run it
from the Windows, Mac or Linux command line. Some set defaults that can be from the Windows, Mac or Linux command line. Some set defaults that can be
overridden on a per-prompt basis (see [List of prompt arguments] overridden on a per-prompt basis (see [List of prompt arguments](#list-of-prompt-arguments). Others
(#list-of-prompt-arguments). Others
| Argument <img width="240" align="right"/> | Shortcut <img width="100" align="right"/> | Default <img width="320" align="right"/> | Description | | Argument <img width="240" align="right"/> | Shortcut <img width="100" align="right"/> | Default <img width="320" align="right"/> | Description |
| ----------------------------------------- | ----------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | ----------------------------------------- | ----------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
@ -105,161 +104,173 @@ overridden on a per-prompt basis (see [List of prompt arguments]
These arguments are deprecated but still work: These arguments are deprecated but still work:
| Argument | Shortcut | Default | Description | | Argument | Shortcut | Default | Description |
|--------------------|------------|---------------------|--------------| |--------------------|------------|---------------------|--------------|
| --weights <path> | | None | Pth to weights file; use `--model stable-diffusion-1.4` instead | | `--weights <path>` | | `None` | Pth to weights file; use `--model stable-diffusion-1.4` instead |
| --laion400m | -l | False | Use older LAION400m weights; use `--model=laion400m` instead | | `--laion400m` | `-l` | `False` | Use older LAION400m weights; use `--model=laion400m` instead |
**A note on path names:** On Windows systems, you may run into !!! note
problems when passing the invoke script standard backslashed path
names because the Python interpreter treats "\" as an escape. On Windows systems, you may run into
You can either double your slashes (ick): C:\\\\path\\\\to\\\\my\\\\file, or problems when passing the invoke script standard backslashed path
use Linux/Mac style forward slashes (better): C:/path/to/my/file. names because the Python interpreter treats "\" as an escape.
You can either double your slashes (ick): `C:\\path\\to\\my\\file`, or
use Linux/Mac style forward slashes (better): `C:/path/to/my/file`.
## List of prompt arguments ## List of prompt arguments
After the invoke.py script initializes, it will present you with a After the invoke.py script initializes, it will present you with a
**invoke>** prompt. Here you can enter information to generate images `invoke>` prompt. Here you can enter information to generate images
from text (txt2img), to embellish an existing image or sketch from text ([txt2img](#txt2img)), to embellish an existing image or sketch
(img2img), or to selectively alter chosen regions of the image ([img2img](#img2img)), or to selectively alter chosen regions of the image
(inpainting). ([inpainting](#inpainting)).
### This is an example of txt2img: ### txt2img
~~~~ !!! example
invoke> waterfall and rainbow -W640 -H480
~~~~
This will create the requested image with the dimensions 640 (width) ```bash
and 480 (height). invoke> waterfall and rainbow -W640 -H480
```
This will create the requested image with the dimensions 640 (width)
and 480 (height).
Here are the invoke> command that apply to txt2img: Here are the invoke> command that apply to txt2img:
| Argument | Shortcut | Default | Description | | Argument <img width="680" align="right"/> | Shortcut <img width="420" align="right"/> | Default <img width="480" align="right"/> | Description |
|--------------------|------------|---------------------|--------------| |--------------------|------------|---------------------|--------------|
| "my prompt" | | | Text prompt to use. The quotation marks are optional. | | `"my prompt"` | | | Text prompt to use. The quotation marks are optional. |
| --width <int> | -W<int> | 512 | Width of generated image | | `--width <int>` | `-W<int>` | `512` | Width of generated image |
| --height <int> | -H<int> | 512 | Height of generated image | | `--height <int>` | `-H<int>` | `512` | Height of generated image |
| --iterations <int> | -n<int> | 1 | How many images to generate from this prompt | | `--iterations <int>` | `-n<int>` | `1` | How many images to generate from this prompt |
| --steps <int> | -s<int> | 50 | How many steps of refinement to apply | | `--steps <int>` | `-s<int>` | `50` | How many steps of refinement to apply |
| --cfg_scale <float>| -C<float> | 7.5 | How hard to try to match the prompt to the generated image; any number greater than 1.0 works, but the useful range is roughly 5.0 to 20.0 | | `--cfg_scale <float>`| `-C<float>` | `7.5` | How hard to try to match the prompt to the generated image; any number greater than 1.0 works, but the useful range is roughly 5.0 to 20.0 |
| --seed <int> | -S<int> | None | Set the random seed for the next series of images. This can be used to recreate an image generated previously.| | `--seed <int>` | `-S<int>` | `None` | Set the random seed for the next series of images. This can be used to recreate an image generated previously.|
| --sampler <sampler>| -A<sampler>| k_lms | Sampler to use. Use -h to get list of available samplers. | | `--sampler <sampler>`| `-A<sampler>`| `k_lms` | Sampler to use. Use -h to get list of available samplers. |
| --hires_fix | | | Larger images often have duplication artefacts. This option suppresses duplicates by generating the image at low res, and then using img2img to increase the resolution | | `--hires_fix` | | | Larger images often have duplication artefacts. This option suppresses duplicates by generating the image at low res, and then using img2img to increase the resolution |
| --grid | -g | False | Turn on grid mode to return a single image combining all the images generated by this prompt | | `--grid` | `-g` | `False` | Turn on grid mode to return a single image combining all the images generated by this prompt |
| --individual | -i | True | Turn off grid mode (deprecated; leave off --grid instead) | | `--individual` | `-i` | `True` | Turn off grid mode (deprecated; leave off `--grid` instead) |
| --outdir <path> | -o<path> | outputs/img_samples | Temporarily change the location of these images | | `--outdir <path>` | `-o<path>` | `outputs/img_samples` | Temporarily change the location of these images |
| --seamless | | False | Activate seamless tiling for interesting effects | | `--seamless` | | `False` | Activate seamless tiling for interesting effects |
| --log_tokenization | -t | False | Display a color-coded list of the parsed tokens derived from the prompt | | `--log_tokenization` | `-t` | `False` | Display a color-coded list of the parsed tokens derived from the prompt |
| --skip_normalization| -x | False | Weighted subprompts will not be normalized. See [Weighted Prompts](./OTHER.md#weighted-prompts) | | `--skip_normalization`| `-x` | `False` | Weighted subprompts will not be normalized. See [Weighted Prompts](./OTHER.md#weighted-prompts) |
| --upscale <int> <float> | -U <int> <float> | -U 1 0.75| Upscale image by magnification factor (2, 4), and set strength of upscaling (0.0-1.0). If strength not set, will default to 0.75. | | `--upscale <int> <float>` | `-U <int> <float>` | `-U 1 0.75`| Upscale image by magnification factor (2, 4), and set strength of upscaling (0.0-1.0). If strength not set, will default to 0.75. |
| --gfpgan_strength <float> | -G <float> | -G0 | Fix faces using the GFPGAN algorithm; argument indicates how hard the algorithm should try (0.0-1.0) | | `--gfpgan_strength <float>` | `-G <float>` | `-G0` | Fix faces using the GFPGAN algorithm; argument indicates how hard the algorithm should try (0.0-1.0) |
| --save_original | -save_orig| False | When upscaling or fixing faces, this will cause the original image to be saved rather than replaced. | | `--save_original` | `-save_orig`| `False` | When upscaling or fixing faces, this will cause the original image to be saved rather than replaced. |
| --variation <float> |-v<float>| 0.0 | Add a bit of noise (0.0=none, 1.0=high) to the image in order to generate a series of variations. Usually used in combination with -S<seed> and -n<int> to generate a series a riffs on a starting image. See [Variations](./VARIATIONS.md). | | `--variation <float>` |`-v<float>`| `0.0` | Add a bit of noise (0.0=none, 1.0=high) to the image in order to generate a series of variations. Usually used in combination with `-S<seed>` and `-n<int>` to generate a series a riffs on a starting image. See [Variations](./VARIATIONS.md). |
| --with_variations <pattern> | -V<pattern>| None | Combine two or more variations. See [Variations](./VARIATIONS.md) for now to use this. | | `--with_variations <pattern>` | `-V<pattern>`| `None` | Combine two or more variations. See [Variations](./VARIATIONS.md) for now to use this. |
Note that the width and height of the image must be multiples of !!! note
64. You can provide different values, but they will be rounded down to
the nearest multiple of 64.
The width and height of the image must be multiples of
64. You can provide different values, but they will be rounded down to
the nearest multiple of 64.
### This is an example of img2img: ### img2img
~~~~ !!! example
invoke> waterfall and rainbow -I./vacation-photo.png -W640 -H480 --fit
~~~~
This will modify the indicated vacation photograph by making it more ```bash
like the prompt. Results will vary greatly depending on what is in the invoke> waterfall and rainbow -I./vacation-photo.png -W640 -H480 --fit
image. We also ask to --fit the image into a box no bigger than ```
640x480. Otherwise the image size will be identical to the provided
photo and you may run out of memory if it is large. This will modify the indicated vacation photograph by making it more
like the prompt. Results will vary greatly depending on what is in the
image. We also ask to `--fit` the image into a box no bigger than
640x480. Otherwise the image size will be identical to the provided
photo and you may run out of memory if it is large.
In addition to the command-line options recognized by txt2img, img2img In addition to the command-line options recognized by txt2img, img2img
accepts additional options: accepts additional options:
| Argument | Shortcut | Default | Description | | Argument <img width="160" align="right"/> | Shortcut | Default | Description |
|--------------------|------------|---------------------|--------------| |----------------------|-------------|-----------------|--------------|
| --init_img <path> | -I<path> | None | Path to the initialization image | | `--init_img <path>` | `-I<path>` | `None` | Path to the initialization image |
| --fit | -F | False | Scale the image to fit into the specified -H and -W dimensions | | `--fit` | `-F` | `False` | Scale the image to fit into the specified -H and -W dimensions |
| --strength <float> | -s<float> | 0.75 | How hard to try to match the prompt to the initial image. Ranges from 0.0-0.99, with higher values replacing the initial image completely.| | `--strength <float>` | `-s<float>` | `0.75` | How hard to try to match the prompt to the initial image. Ranges from 0.0-0.99, with higher values replacing the initial image completely.|
### This is an example of inpainting: ### inpainting
~~~~ !!! example
invoke> waterfall and rainbow -I./vacation-photo.png -M./vacation-mask.png -W640 -H480 --fit
~~~~
This will do the same thing as img2img, but image alterations will ```bash
only occur within transparent areas defined by the mask file specified invoke> waterfall and rainbow -I./vacation-photo.png -M./vacation-mask.png -W640 -H480 --fit
by -M. You may also supply just a single initial image with the areas ```
to overpaint made transparent, but you must be careful not to destroy
the pixels underneath when you create the transparent areas. See This will do the same thing as img2img, but image alterations will
[Inpainting](./INPAINTING.md) for details. only occur within transparent areas defined by the mask file specified
by `-M`. You may also supply just a single initial image with the areas
to overpaint made transparent, but you must be careful not to destroy
the pixels underneath when you create the transparent areas. See
[Inpainting](./INPAINTING.md) for details.
inpainting accepts all the arguments used for txt2img and img2img, as inpainting accepts all the arguments used for txt2img and img2img, as
well as the --mask (-M) argument: well as the --mask (-M) argument:
| Argument | Shortcut | Default | Description | | Argument <img width="100" align="right"/> | Shortcut | Default | Description |
|--------------------|------------|---------------------|--------------| |--------------------|------------|---------------------|--------------|
| --init_mask <path> | -M<path> | None |Path to an image the same size as the initial_image, with areas for inpainting made transparent.| | `--init_mask <path>` | `-M<path>` | `None` |Path to an image the same size as the initial_image, with areas for inpainting made transparent.|
## Convenience commands
# Convenience commands
In addition to the standard image generation arguments, there are a In addition to the standard image generation arguments, there are a
series of convenience commands that begin with !: series of convenience commands that begin with !:
## !fix ### `!fix`
This command runs a post-processor on a previously-generated image. It This command runs a post-processor on a previously-generated image. It
takes a PNG filename or path and applies your choice of the -U, -G, or takes a PNG filename or path and applies your choice of the `-U`, `-G`, or
--embiggen switches in order to fix faces or upscale. If you provide a `--embiggen` switches in order to fix faces or upscale. If you provide a
filename, the script will look for it in the current output filename, the script will look for it in the current output
directory. Otherwise you can provide a full or partial path to the directory. Otherwise you can provide a full or partial path to the
desired file. desired file.
Some examples: Some examples:
Upscale to 4X its original size and fix faces using codeformer: !!! example ""
~~~
invoke> !fix 0000045.4829112.png -G1 -U4 -ft codeformer
~~~
Use the GFPGAN algorithm to fix faces, then upscale to 3X using --embiggen: Upscale to 4X its original size and fix faces using codeformer:
~~~ ```bash
invoke> !fix 0000045.4829112.png -G0.8 -ft gfpgan invoke> !fix 0000045.4829112.png -G1 -U4 -ft codeformer
>> fixing outputs/img-samples/0000045.4829112.png ```
>> retrieved seed 4829112 and prompt "boy enjoying a banana split"
>> GFPGAN - Restoring Faces for image seed:4829112
Outputs:
[1] outputs/img-samples/000017.4829112.gfpgan-00.png: !fix "outputs/img-samples/0000045.4829112.png" -s 50 -S -W 512 -H 512 -C 7.5 -A k_lms -G 0.8
invoke> !fix 000017.4829112.gfpgan-00.png --embiggen 3 !!! example ""
...lots of text...
Outputs:
[2] outputs/img-samples/000018.2273800735.embiggen-00.png: !fix "outputs/img-samples/000017.243781548.gfpgan-00.png" -s 50 -S 2273800735 -W 512 -H 512 -C 7.5 -A k_lms --embiggen 3.0 0.75 0.25
~~~
## !fetch Use the GFPGAN algorithm to fix faces, then upscale to 3X using --embiggen:
```bash
invoke> !fix 0000045.4829112.png -G0.8 -ft gfpgan
>> fixing outputs/img-samples/0000045.4829112.png
>> retrieved seed 4829112 and prompt "boy enjoying a banana split"
>> GFPGAN - Restoring Faces for image seed:4829112
Outputs:
[1] outputs/img-samples/000017.4829112.gfpgan-00.png: !fix "outputs/img-samples/0000045.4829112.png" -s 50 -S -W 512 -H 512 -C 7.5 -A k_lms -G 0.8
invoke> !fix 000017.4829112.gfpgan-00.png --embiggen 3
...lots of text...
Outputs:
[2] outputs/img-samples/000018.2273800735.embiggen-00.png: !fix "outputs/img-samples/000017.243781548.gfpgan-00.png" -s 50 -S 2273800735 -W 512 -H 512 -C 7.5 -A k_lms --embiggen 3.0 0.75 0.25
```
### `!fetch`
This command retrieves the generation parameters from a previously This command retrieves the generation parameters from a previously
generated image and either loads them into the command line. You may generated image and either loads them into the command line. You may
provide either the name of a file in the current output directory, or provide either the name of a file in the current output directory, or
a full file path. a full file path.
~~~ ```bash
invoke> !fetch 0000015.8929913.png invoke> !fetch 0000015.8929913.png
# the script returns the next line, ready for editing and running: # the script returns the next line, ready for editing and running:
invoke> a fantastic alien landscape -W 576 -H 512 -s 60 -A plms -C 7.5 invoke> a fantastic alien landscape -W 576 -H 512 -s 60 -A plms -C 7.5
~~~ ```
Note that this command may behave unexpectedly if given a PNG file that Note that this command may behave unexpectedly if given a PNG file that
was not generated by InvokeAI. was not generated by InvokeAI.
## !history ### `!history`
The invoke script keeps track of all the commands you issue during a The invoke script keeps track of all the commands you issue during a
session, allowing you to re-run them. On Mac and Linux systems, it session, allowing you to re-run them. On Mac and Linux systems, it
@ -268,10 +279,10 @@ the most recent 1000 commands issued.
The `!history` command will return a numbered list of all the commands The `!history` command will return a numbered list of all the commands
issued during the session (Windows), or the most recent 1000 commands issued during the session (Windows), or the most recent 1000 commands
(Mac|Linux). You can then repeat a command by using the command !NNN, (Mac|Linux). You can then repeat a command by using the command `!NNN`,
where "NNN" is the history line number. For example: where "NNN" is the history line number. For example:
~~~ ```bash
invoke> !history invoke> !history
... ...
[14] happy woman sitting under tree wearing broad hat and flowing garment [14] happy woman sitting under tree wearing broad hat and flowing garment
@ -282,58 +293,58 @@ invoke> !history
... ...
invoke> !20 invoke> !20
invoke> watercolor of beautiful woman sitting under tree wearing broad hat and flowing garment -v0.2 -n6 -S2878767194 invoke> watercolor of beautiful woman sitting under tree wearing broad hat and flowing garment -v0.2 -n6 -S2878767194
~~~ ```
## !search <search string> ### `!search <search string>`
This is similar to !history but it only returns lines that contain This is similar to !history but it only returns lines that contain
`search string`. For example: `search string`. For example:
~~~ ```bash
invoke> !search surreal invoke> !search surreal
[21] surrealist painting of beautiful woman sitting under tree wearing broad hat and flowing garment -v0.2 -n6 -S2878767194 [21] surrealist painting of beautiful woman sitting under tree wearing broad hat and flowing garment -v0.2 -n6 -S2878767194
~~~ ```
## !clear ### `!clear`
This clears the search history from memory and disk. Be advised that This clears the search history from memory and disk. Be advised that
this operation is irreversible and does not issue any warnings! this operation is irreversible and does not issue any warnings!
# Command-line editing and completion ## Command-line editing and completion
The command-line offers convenient history tracking, editing, and The command-line offers convenient history tracking, editing, and
command completion. command completion.
- To scroll through previous commands and potentially edit/reuse them, use the up and down cursor keys. - To scroll through previous commands and potentially edit/reuse them, use the ++up++ and ++down++ keys.
- To edit the current command, use the left and right cursor keys to position the cursor, and then backspace, delete or insert characters. - To edit the current command, use the ++left++ and ++right++ keys to position the cursor, and then ++backspace++, ++delete++ or insert characters.
- To move to the very beginning of the command, type CTRL-A (or command-A on the Mac) - To move to the very beginning of the command, type ++ctrl+a++ (or ++command+a++ on the Mac)
- To move to the end of the command, type CTRL-E. - To move to the end of the command, type ++ctrl+e++.
- To cut a section of the command, position the cursor where you want to start cutting and type CTRL-K. - To cut a section of the command, position the cursor where you want to start cutting and type ++ctrl+k++
- To paste a cut section back in, position the cursor where you want to paste, and type CTRL-Y - To paste a cut section back in, position the cursor where you want to paste, and type ++ctrl+y++
Windows users can get similar, but more limited, functionality if they Windows users can get similar, but more limited, functionality if they
launch invoke.py with the "winpty" program and have the `pyreadline3` launch `invoke.py` with the `winpty` program and have the `pyreadline3`
library installed: library installed:
~~~ ```batch
> winpty python scripts\invoke.py > winpty python scripts\invoke.py
~~~ ```
On the Mac and Linux platforms, when you exit invoke.py, the last 1000 On the Mac and Linux platforms, when you exit invoke.py, the last 1000
lines of your command-line history will be saved. When you restart lines of your command-line history will be saved. When you restart
invoke.py, you can access the saved history using the up-arrow key. `invoke.py`, you can access the saved history using the ++up++ key.
In addition, limited command-line completion is installed. In various In addition, limited command-line completion is installed. In various
contexts, you can start typing your command and press tab. A list of contexts, you can start typing your command and press ++tab++. A list of
potential completions will be presented to you. You can then type a potential completions will be presented to you. You can then type a
little more, hit tab again, and eventually autocomplete what you want. little more, hit ++tab++ again, and eventually autocomplete what you want.
When specifying file paths using the one-letter shortcuts, the CLI When specifying file paths using the one-letter shortcuts, the CLI
will attempt to complete pathnames for you. This is most handy for the will attempt to complete pathnames for you. This is most handy for the
-I (init image) and -M (init mask) paths. To initiate completion, start `-I` (init image) and `-M` (init mask) paths. To initiate completion, start
the path with a slash ("/") or "./". For example: the path with a slash (`/`) or `./`. For example:
~~~ ```bash
invoke> zebra with a mustache -I./test-pictures<TAB> invoke> zebra with a mustache -I./test-pictures<TAB>
-I./test-pictures/Lincoln-and-Parrot.png -I./test-pictures/zebra.jpg -I./test-pictures/madonna.png -I./test-pictures/Lincoln-and-Parrot.png -I./test-pictures/zebra.jpg -I./test-pictures/madonna.png
-I./test-pictures/bad-sketch.png -I./test-pictures/man_with_eagle/ -I./test-pictures/bad-sketch.png -I./test-pictures/man_with_eagle/