          argument_list.append({"opts": ("-i", "--input-dir"),
                                "action": DirOrFileFullPaths,
                                "filetypes": "video",
                                "dest": "input_dir",
                                "default": "input",
                                "help": "Input directory or video. Either a "
                                        "directory containing the image files "
                                        "you wish to process or path to a "
                                        "video file. Defaults to 'input'"})
          argument_list.append({"opts": ("-o", "--output-dir"),
                                "action": DirFullPaths,
                                "dest": "output_dir",
                                "default": "output",
                                "help": "Output directory. This is where the "
 
</s> remove                               "default": "output",
                              "help": "Output directory. This is where the "
                                      "converted files will be stored. "
                                      "Defaults to 'output'"})
 </s> add                               "required": True,
                              "help": "Output directory. This is where the converted files will "
                                      "be saved."}) </s> remove                               "default": "models",
                              "help": "Model directory. A directory "
                                      "containing the trained model you wish "
                                      "to process. Defaults to 'models'"})
 </s> add                               "required": True,
                              "help": "Model directory. A directory containing the trained model "
                                      "you wish to process."}) </s> remove                               "default": "input_b",
                              "help": "Input directory. A directory "
                                      "containing training images for face B. "
                                      "Defaults to 'input'"})
 </s> add                               "required": True,
                              "help": "Input directory. A directory containing training images "
                                      "for face B."}) </s> remove                               "default": "input_a",
                              "help": "Input directory. A directory "
                                      "containing training images for face A. "
                                      "Defaults to 'input'"})
 </s> add                               "required": True,
                              "help": "Input directory. A directory containing training images "
                                      "for face A."}) </s> remove                               "default": "models",
                              "help": "Model directory. This is where the "
                                      "training data will be stored. "
                                      "Defaults to 'model'"})
 </s> add                               "required": True,
                              "help": "Model directory. This is where the training data will be "
                                      "stored."})
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
          argument_list.append({"opts": ("-i", "--input-dir"),
                                "action": DirOrFileFullPaths,
                                "filetypes": "video",
                                "dest": "input_dir",
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
                              "required": True,
                              "help": "Input directory or video. Either a directory containing "
                                      "the image files you wish to process or path to a video "
                                      "file."})
          argument_list.append({"opts": ("-o", "--output-dir"),
                                "action": DirFullPaths,
                                "dest": "output_dir",
                                "default": "output",
                                "help": "Output directory. This is where the "
keep keep keep keep replace replace replace replace replace keep keep keep keep keep
 Convert refactor (#703)

* Separate predict and implement pool

* Add check and raise error to multithreading

Box functions to config. Add crop box option.

* All masks to mask module. Refactor convert masks

Predicted mask passed from model. Cli update

* Intesect box with mask and fixes

* Use raw NN output for convert

Use raw mask for face adjustments. Split adjustments to pre and post warp

* Separate out adjustments. Add unmask sharpen

* Set sensible defaults. Pre PR Testing

* Fix queue sizes. Move masked.py to lib

* Fix Skip Frames. Fix GUI Config popup

* Sensible queue limits. Add a less resource intensive single processing mode

* Fix predicted mask. Amend smooth box defaults

* Deterministic ordering for video output

* Video to Video convert implemented

* Fixups

- Remove defaults from folders across all stages
- Move match-hist and aca into color adjustments selectable
- Handle crashes properly for pooled processes
- Fix output directory does not exist error when creating a new output folder
- Force output to frames if input is not a video

* Add Color Transfer adjustment method

Wrap info text in GUI plugin configure popup

* Refactor image adjustments. Easier to create plugins

Start implementing config options for video encoding

* Add video encoding config options

Allow video encoding for frames input (must pass in a reference video)
Move video and image output writers to plugins

* Image writers config options

Move scaling to cli
Move draw_transparent to images config
Add config options for cv2 writer
Add Pillow image writer

* Add gif filetype to Pillow. Fix draw transparent for Pillow

* Add Animated GIF writer

standardize opencv/pillow defaults

* [speedup] Pre-encode supported writers in the convert pool (opencv, pillow)

Move scaling to convert pool
Remove dfaker mask

* Fix default writer

* Bugfixes

* Better custom argparse formatting 
lib/cli.py