                                "backend": "nvidia",
                                "help": "Don't run extraction in parallel. Will run detection first "
                                        "then alignment (2 passes). Useful if VRAM is at a "
                                        "premium."})
          argument_list.append({"opts": ("-sz", "--size"),
                                "type": int,
                                "action": Slider,
                                "min_max": (128, 512),
                                "default": 256,
                                "rounding": 64,
                                "group": "output",
                                "help": "The output size of extracted faces. Make sure that the "
                                        "model you intend to train supports your required size. "
                                        "This will only need to be changed for hi-res models."})
          argument_list.append({"opts": ("-s", "--skip-existing"),
                                "action": "store_true",
                                "dest": "skip_existing",
                                "default": False,
                                "help": "Skips frames that have already been extracted and exist in "
 
</s> remove         argument_list.append({"opts": ("-dl", "--debug-landmarks"),
                              "action": "store_true",
                              "dest": "debug_landmarks",
                              "default": False,
                              "help": "Draw landmarks on the ouput faces for debugging purposes."})
        argument_list.append({"opts": ("-ae", "--align-eyes"),
                              "action": "store_true",
                              "dest": "align_eyes",
                              "default": False,
                              "help": "Perform extra alignment to ensure left/right eyes are at "
                                      "the same height"})
 </s> add         argument_list.append({"opts": ("-een", "--extract-every-n"),
                              "type": int,
                              "action": Slider,
                              "dest": "extract_every_n",
                              "min_max": (1, 100),
                              "default": 1,
                              "rounding": 1,
                              "group": "output",
                              "help": "Extract every 'nth' frame. This option will skip frames "
                                      "when extracting faces. For example a value of 1 will "
                                      "extract faces from every frame, a value of 10 will extract "
                                      "faces from every 10th frame."})
        argument_list.append({"opts": ("-sz", "--size"),
                              "type": int,
                              "action": Slider,
                              "min_max": (128, 512),
                              "default": 256,
                              "rounding": 64,
                              "group": "output",
                              "help": "The output size of extracted faces. Make sure that the "
                                      "model you intend to train supports your required size. "
                                      "This will only need to be changed for hi-res models."}) </s> remove         argument_list.append({"opts": ("-ps", "--preview-scale"),
                              "type": int,
                              "action": Slider,
                              "dest": "preview_scale",
                              "min_max": (25, 200),
                              "group": "training",
                              "rounding": 25,
                              "default": 50,
                              "help": "Percentage amount to scale the preview by."})
 </s> add         argument_list.append({"opts": ("-msg", "--memory-saving-gradients"),
                              "action": "store_true",
                              "dest": "memory_saving_gradients",
                              "group": "VRAM Savings",
                              "default": False,
                              "backend": "nvidia",
                              "help": "Trades off VRAM usage against computation time. Can fit "
                                      "larger models into memory at a cost of slower training "
                                      "speed. 50%%-150%% batch size increase for 20%%-50%% longer "
                                      "training time. NB: Launch time will be significantly "
                                      "delayed. Switching sides using ping-pong training will "
                                      "take longer."})
        argument_list.append({"opts": ("-o", "--optimizer-savings"),
                              "dest": "optimizer_savings",
                              "action": "store_true",
                              "default": False,
                              "group": "VRAM Savings",
                              "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."})
        argument_list.append({"opts": ("-pp", "--ping-pong"),
                              "action": "store_true",
                              "dest": "pingpong",
                              "group": "VRAM Savings",
                              "default": False,
                              "backend": "nvidia",
                              "help": "Enable ping pong training. Trains one side at a time, "
                                      "switching sides at each save iteration. Training will "
                                      "take 2 to 4 times longer, with about a 30%%-50%% reduction "
                                      "in VRAM useage. NB: Preview won't show until both sides "
                                      "have been trained once."})
                                "backend": "nvidia",
                                "help": "Don't run extraction in parallel. Will run detection first "
                                        "then alignment (2 passes). Useful if VRAM is at a "
                                        "premium."})










          argument_list.append({"opts": ("-s", "--skip-existing"),
                                "action": "store_true",
                                "dest": "skip_existing",
                                "default": False,
                                "help": "Skips frames that have already been extracted and exist in "
keep keep keep keep replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 GUI Update


- Launch in fullscreen
- Expand Control Helper. Clean up config popup
- Standardize and overhaul GUI for CliOpts 
lib/cli.py