                      "\nL|'cv2-dnn': A CPU only extractor, is the least reliable, but uses least "
                      "resources and runs fast on CPU. Use this if not using a GPU and time is "
                      "important."
                      "\nL|'mtcnn': Fast on GPU, slow on CPU. Uses fewer resources than other GPU "
                      "detectors but can often return more false positives."
                      "\nL|'s3fd': Fast on GPU, slow on CPU. Can detect more faces and fewer false "
                      "positives than other GPU detectors, but is a lot more resource intensive."})
          argument_list.append({
              "opts": ("-A", "--aligner"),
              "action": Radio,
              "type": str.lower,
              "choices": PluginLoader.get_available_extractors("align"),
 
</s> remove             "default": "fan",
            "help": "R|Aligner to use. NB: Unless stated, all aligners will run on CPU for AMD "
                    "GPUs."
 </s> add             "default": default_aligner,
            "help": "R|Aligner to use." </s> remove                     "\nL|'fan': Face Alignment Network. Best aligner. GPU heavy, slow when not "
                    "running on GPU"
                    "\nL|'fan-amd': Face Alignment Network. Uses Keras backend to support AMD "
                    "Cards. Best aligner. GPU heavy, slow when not running on GPU"})
 </s> add                     "\nL|'" + fan + "': Face Alignment Network. Best aligner. GPU "
                    "heavy, slow when not running on GPU"}) </s> remove                               "help": "[Nvidia only] To save VRAM some optimizer gradient "
                                      "calculations can be performed on the CPU rather than the "
                                      "GPU. This allows you to increase batchsize at a training "
                                      "speed/system RAM cost."})
 </s> add                               "backend": "nvidia",
                              "help": "To save VRAM some optimizer gradient calculations can be "
                                      "performed on the CPU rather than the GPU. This allows you "
                                      "to increase batchsize at a training speed/system RAM "
                                      "cost."}) </s> remove                                       "then alignment (2 passes). Useful if VRAM is at a premium. "
                                      "Only has an effect if both the aligner and detector use "
                                      "the GPU, otherwise this is automatically off. NB: AMD "
                                      "cards do not support parallel processing, so if both "
                                      "aligner and detector use an AMD GPU this will "
                                      "automatically be enabled."})
 </s> add                                       "then alignment (2 passes). Useful if VRAM is at a "
                                      "premium."})
                    "detectors but can often return more false positives. NB: Runs on CPU for AMD "
                    "cards."
                    "\nL|'" + s3fd + "': Fast on GPU, slow on CPU. Can detect more faces and "
                    "fewer false positives than other GPU detectors, but is a lot more resource "
                    "intensive."})
                      "\nL|'cv2-dnn': A CPU only extractor, is the least reliable, but uses least "
                      "resources and runs fast on CPU. Use this if not using a GPU and time is "
                      "important."
                      "\nL|'mtcnn': Fast on GPU, slow on CPU. Uses fewer resources than other GPU "
                    "detectors but can often return more false positives. NB: Runs on CPU for AMD "
                    "cards."
                    "\nL|'" + s3fd + "': Fast on GPU, slow on CPU. Can detect more faces and "
                    "fewer false positives than other GPU detectors, but is a lot more resource "
                    "intensive."})
                    "detectors but can often return more false positives. NB: Runs on CPU for AMD "
                    "cards."
                    "\nL|'" + s3fd + "': Fast on GPU, slow on CPU. Can detect more faces and "
                    "fewer false positives than other GPU detectors, but is a lot more resource "
                    "intensive."})
                    "detectors but can often return more false positives. NB: Runs on CPU for AMD "
                    "cards."
                    "\nL|'" + s3fd + "': Fast on GPU, slow on CPU. Can detect more faces and "
                    "fewer false positives than other GPU detectors, but is a lot more resource "
                    "intensive."})
          argument_list.append({
              "opts": ("-A", "--aligner"),
              "action": Radio,
              "type": str.lower,
              "choices": PluginLoader.get_available_extractors("align"),
keep keep keep keep replace replace replace keep keep keep keep keep
 More seamless AMD Integration

- utils.py: Set FS backend if .faceswap config file doesn't exist
- setup.py: set .faceswap config on setup
- Dynamically load options for AMD/CPU/NVIDIA backends 
lib/cli.py