              action=Radio,
              type=str.lower,
              default=default_detector,
              choices=PluginLoader.get_available_extractors("detect"),
              group="Plugins",
              help="R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces and "
                   "fewer false positives than other GPU detectors, but is a lot more resource "
                   "intensive."))
          argument_list.append(dict(
              opts=("-A", "--aligner"),
              action=Radio,
              type=str.lower,
              default=default_aligner,
 
</s> remove             group="Plugins",
            help="R|Aligner to use."
                 "\nL|cv2-dnn: A CPU only landmark detector. Faster, less resource intensive, "
                 "but less accurate. Only use this if not using a GPU and time is important."
                 "\nL|fan: Best aligner. Fast on GPU, slow on CPU."))
 </s> add             group=_("Plugins"),
            help=_("R|Aligner to use."
                   "\nL|cv2-dnn: A CPU only landmark detector. Faster, less resource intensive, "
                   "but less accurate. Only use this if not using a GPU and time is important."
                   "\nL|fan: Best aligner. Fast on GPU, slow on CPU."))) </s> remove             group="plugins",
            help="R|The plugin to use to output the converted images. The writers are "
                 "configurable in '/config/convert.ini' or 'Settings > Configure Convert "
                 "Plugins:'"
                 "\nL|ffmpeg: [video] Writes out the convert straight to video. When the input "
                 "is a series of images then the '-ref' (--reference-video) parameter must be "
                 "set."
                 "\nL|gif: [animated image] Create an animated gif."
                 "\nL|opencv: [images] The fastest image writer, but less options and formats "
                 "than other plugins."
                 "\nL|pillow: [images] Slower than opencv, but has more options and supports "
                 "more formats."))
 </s> add             group=_("Plugins"),
            help=_("R|The plugin to use to output the converted images. The writers are "
                   "configurable in '/config/convert.ini' or 'Settings > Configure Convert "
                   "Plugins:'"
                   "\nL|ffmpeg: [video] Writes out the convert straight to video. When the input "
                   "is a series of images then the '-ref' (--reference-video) parameter must be "
                   "set."
                   "\nL|gif: [animated image] Create an animated gif."
                   "\nL|opencv: [images] The fastest image writer, but less options and formats "
                   "than other plugins."
                   "\nL|pillow: [images] Slower than opencv, but has more options and supports "
                   "more formats."))) </s> remove             group="Plugins",
            help="R|Additional Masker(s) to use. The masks generated here will all take up GPU "
                 "RAM. You can select none, one or multiple masks, but the extraction may take "
                 "longer the more you select. NB: The Extended and Components (landmark based) "
                 "masks are automatically generated on extraction."
                 "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                 "faces clear of obstructions. Profile faces and obstructions may result in "
                 "sub-par performance."
                 "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                 "frontal faces. The mask model has been specifically trained to recognize "
                 "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                 "sub-par performance."
                 "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                 "faces. The mask model has been trained by community members and will need "
                 "testing for further description. Profile faces may result in sub-par "
                 "performance."
                 "\nThe auto generated masks are as follows:"
                 "\nL|components: Mask designed to provide facial segmentation based on the "
                 "positioning of landmark locations. A convex hull is constructed around the "
                 "exterior of the landmarks to create a mask."
                 "\nL|extended: Mask designed to provide facial segmentation based on the "
                 "positioning of landmark locations. A convex hull is constructed around the "
                 "exterior of the landmarks and the mask is extended upwards onto the "
                 "forehead."
                 "\n(eg: `-M unet-dfl vgg-clear`, `--masker vgg-obstructed`)"))
 </s> add             group=_("Plugins"),
            help=_("R|Additional Masker(s) to use. The masks generated here will all take up GPU "
                   "RAM. You can select none, one or multiple masks, but the extraction may take "
                   "longer the more you select. NB: The Extended and Components (landmark based) "
                   "masks are automatically generated on extraction."
                   "\nL|vgg-clear: Mask designed to provide smart segmentation of mostly frontal "
                   "faces clear of obstructions. Profile faces and obstructions may result in "
                   "sub-par performance."
                   "\nL|vgg-obstructed: Mask designed to provide smart segmentation of mostly "
                   "frontal faces. The mask model has been specifically trained to recognize "
                   "some facial obstructions (hands and eyeglasses). Profile faces may result in "
                   "sub-par performance."
                   "\nL|unet-dfl: Mask designed to provide smart segmentation of mostly frontal "
                   "faces. The mask model has been trained by community members and will need "
                   "testing for further description. Profile faces may result in sub-par "
                   "performance."
                   "\nThe auto generated masks are as follows:"
                   "\nL|components: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks to create a mask."
                   "\nL|extended: Mask designed to provide facial segmentation based on the "
                   "positioning of landmark locations. A convex hull is constructed around the "
                   "exterior of the landmarks and the mask is extended upwards onto the "
                   "forehead."
                   "\n(eg: `-M unet-dfl vgg-clear`, `--masker vgg-obstructed`)"))) </s> remove             group="settings",
            help="The maximum number of parallel processes for performing conversion. "
                 "Converting images is system RAM heavy so it is possible to run out of memory "
                 "if you have a lot of processes and not enough RAM to accommodate them all. "
                 "Setting this to 0 will use the maximum available. No matter what you set "
                 "this to, it will never attempt to use more processes than are available on "
                 "your system. If singleprocess is enabled this setting will be ignored."))
 </s> add             group=_("settings"),
            help=_("The maximum number of parallel processes for performing conversion. "
                   "Converting images is system RAM heavy so it is possible to run out of memory "
                   "if you have a lot of processes and not enough RAM to accommodate them all. "
                   "Setting this to 0 will use the maximum available. No matter what you set "
                   "this to, it will never attempt to use more processes than are available on "
                   "your system. If singleprocess is enabled this setting will be ignored."))) </s> remove             group="model",
            help="R|Select which trainer to use. Trainers can be configured from the Settings "
                 "menu or the config folder."
                 "\nL|original: The original model created by /u/deepfakes."
                 "\nL|dfaker: 64px in/128px out model from dfaker. Enable 'warp-to-landmarks' "
                 "for full dfaker method."
                 "\nL|dfl-h128: 128px in/out model from deepfacelab"
                 "\nL|dfl-sae: Adaptable model from deepfacelab"
                 "\nL|dlight: A lightweight, high resolution DFaker variant."
                 "\nL|iae: A model that uses intermediate layers to try to get better details"
                 "\nL|lightweight: A lightweight model for low-end cards. Don't expect great "
                 "results. Can train as low as 1.6GB with batch size 8."
                 "\nL|realface: A high detail, dual density model based on DFaker, with "
                 "customizable in/out resolution. The autoencoders are unbalanced so B>A swaps "
                 "won't work so well. By andenixa et al. Very configurable."
                 "\nL|unbalanced: 128px in/out model from andenixa. The autoencoders are "
                 "unbalanced so B>A swaps won't work so well. Very configurable."
                 "\nL|villain: 128px in/out model from villainguy. Very resource hungry (You "
                 "will require a GPU with a fair amount of VRAM). Good for details, but more "
                 "susceptible to color differences."))
 </s> add             group=_("model"),
            help=_("R|Select which trainer to use. Trainers can be configured from the Settings "
                   "menu or the config folder."
                   "\nL|original: The original model created by /u/deepfakes."
                   "\nL|dfaker: 64px in/128px out model from dfaker. Enable 'warp-to-landmarks' "
                   "for full dfaker method."
                   "\nL|dfl-h128: 128px in/out model from deepfacelab"
                   "\nL|dfl-sae: Adaptable model from deepfacelab"
                   "\nL|dlight: A lightweight, high resolution DFaker variant."
                   "\nL|iae: A model that uses intermediate layers to try to get better details"
                   "\nL|lightweight: A lightweight model for low-end cards. Don't expect great "
                   "results. Can train as low as 1.6GB with batch size 8."
                   "\nL|realface: A high detail, dual density model based on DFaker, with "
                   "customizable in/out resolution. The autoencoders are unbalanced so B>A swaps "
                   "won't work so well. By andenixa et al. Very configurable."
                   "\nL|unbalanced: 128px in/out model from andenixa. The autoencoders are "
                   "unbalanced so B>A swaps won't work so well. Very configurable."
                   "\nL|villain: 128px in/out model from villainguy. Very resource hungry (You "
                   "will require a GPU with a fair amount of VRAM). Good for details, but more "
                   "susceptible to color differences.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
              action=Radio,
              type=str.lower,
              default=default_detector,
              choices=PluginLoader.get_available_extractors("detect"),
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
            group=_("Plugins"),
            help=_("R|Detector to use. Some of these have configurable settings in "
                   "'/config/extract.ini' or 'Settings > Configure Extract 'Plugins':"
                   "\nL|cv2-dnn: A CPU only extractor which is the least reliable and least "
                   "resource intensive. Use this if not using a GPU and time is important."
                   "\nL|mtcnn: Good detector. Fast on CPU, faster on GPU. Uses fewer resources "
                   "than other GPU detectors but can often return more false positives."
                   "\nL|s3fd: Best detector. Slow on CPU, faster on GPU. Can detect more faces "
                   "and fewer false positives than other GPU detectors, but is a lot more "
                   "resource intensive.")))
          argument_list.append(dict(
              opts=("-A", "--aligner"),
              action=Radio,
              type=str.lower,
              default=default_aligner,
keep keep keep keep replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Add Locale support for cli arguments 
lib/cli/args.py