              info="Use reflect padding rather than zero padding. Only enable this option if the "
                   "model you are training has a distinct line appearing around the edge of the "
                   "swap area.")
          self.add_item(
              section=section, title="dssim_loss", datatype=bool, default=True,
              info="Use DSSIM for Loss rather than Mean Absolute Error\n"
                   "May increase overall quality.")
          self.add_item(
              section=section, title="penalized_mask_loss", datatype=bool, default=True,
              info="If using a mask, This penalizes the loss for the masked area, to give higher "
                   "priority to the face area. \nShould increase overall quality and speed up "
                   "training. This should probably be left at True")
          logger.debug("Set global config")
  
      def load_module(self, filename, module_path, plugin_type):
          """ Load the defaults module and add defaults """
          logger.debug("Adding defaults: (filename: %s, module_path: %s, plugin_type: %s",
                       filename, module_path, plugin_type)
 
</s> remove             section=section, title="icnr_init", datatype=bool, default=False,
            info="Use ICNR Kernel Initializer for upscaling.\nThis can help reduce the "
                 "'checkerboard effect' when upscaling the image.")
        self.add_item(
            section=section, title="conv_aware_init", datatype=bool, default=False,
            info="Use Convolution Aware Initialization for convolutional layers\nThis can help "
                 "eradicate the vanishing and exploding gradient problem as well as lead to "
                 "higher accuracy, lower loss and faster convergence."
                 "\nNB This can use more VRAM when creating a new model so you may want to lower "
                 "the batch size for the first run. The batch size can be raised again when "
                 "reloading the model."
                 "\nNB: Building the model will likely take several minutes as the caluclations "
                 "for this initialization technique are expensive.")
        self.add_item(
            section=section, title="subpixel_upscaling", datatype=bool, default=False,
            info="Use subpixel upscaling rather than pixel shuffler.\n"
                 "Might increase speed at cost of VRAM")
        self.add_item(
            section=section, title="reflect_padding", datatype=bool, default=False,
            info="Use reflect padding rather than zero padding. Only enable this option if the "
                 "model you are training has a distinct line appearing around the edge of the "
                 "swap area.")
 </s> add             section=section, title="learning_rate", datatype=float, default=5e-5,
            min_max=(1e-6, 1e-4), rounding=6, fixed=False,
            info="Learning rate - how fast your network will learn (how large are "
                 "the modifications to the model weights after one batch of training). "
                 "Values that are too large might result in model crashes and the "
                 "inability of the model to find the best solution. "
                 "Values that are too small might be unable to escape from dead-ends "
                 "and find the best global minimum.") </s> remove         argument_list.append({"opts": ("-m", "--model-dir"),
 </s> add         argument_list.append({"opts": ("-tib", "--timelapse-input-B"), </s> remove         argument_list.append({"opts": ("-tia", "--timelapse-input-A"),
                              "action": DirFullPaths,
                              "dest": "timelapse_input_a",
                              "default": None,
                              "help": "For if you want a timelapse: "
                                      "The input folder for the timelapse. "
                                      "This folder should contain faces of A "
                                      "which will be converted for the "
                                      "timelapse. You must supply a "
                                      "--timelapse-output and a "
                                      "--timelapse-input-B parameter."})
        argument_list.append({"opts": ("-tib", "--timelapse-input-B"),
                              "action": DirFullPaths,
                              "dest": "timelapse_input_b",
                              "default": None,
                              "help": "For if you want a timelapse: "
                                      "The input folder for the timelapse. "
                                      "This folder should contain faces of B "
                                      "which will be converted for the "
                                      "timelapse. You must supply a "
                                      "--timelapse-output and a "
                                      "--timelapse-input-A parameter."})
        argument_list.append({"opts": ("-to", "--timelapse-output"),
                              "action": DirFullPaths,
                              "dest": "timelapse_output",
                              "default": None,
                              "help": "The output folder for the timelapse. "
                                      "If the input folders are supplied but "
                                      "no output folder, it will default to "
                                      "your model folder /timelapse/"})
 </s> add  </s> remove                               "dest": "model_dir",
                              "required": True,
                              "help": "Model directory. This is where the training data will be "
                                      "stored."})
 </s> add                               "dest": "timelapse_input_b",
                              "default": None,
                              "help": "For if you want a timelapse: "
                                      "The input folder for the timelapse. "
                                      "This folder should contain faces of B "
                                      "which will be converted for the "
                                      "timelapse. You must supply a "
                                      "--timelapse-output and a "
                                      "--timelapse-input-A parameter."})
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
              info="Use reflect padding rather than zero padding. Only enable this option if the "
                   "model you are training has a distinct line appearing around the edge of the "
                   "swap area.")
          self.add_item(
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
            section=section, title="coverage", datatype=float, default=68.75,
            min_max=(62.5, 100.0), rounding=2, fixed=True,
            info="How much of the extracted image to train on. A lower coverage will limit the model's "
                 "scope to a zoomed-in central area while higher amounts can include the entire face. "
                 "A trade-off exists between lower amounts given a bit more detail versus higher amounts "
                 "avoiding noticeable swap transitions. Sensible values to use are:"
                 "\n\t62.5%% spans from eyebrow to eyebrow."
                 "\n\t75.0%% spans from temple to temple."
                 "\n\t87.5%% spans from ear to ear."
                 "\n\t100.0%% is a mugshot.")
  
      def load_module(self, filename, module_path, plugin_type):
          """ Load the defaults module and add defaults """
          logger.debug("Adding defaults: (filename: %s, module_path: %s, plugin_type: %s",
                       filename, module_path, plugin_type)
keep keep keep keep replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 documentation, pep8, style, clarity updates  - Prep for Segmentation (#812)

* documentation, pep8, style, clarity updates

* Update cli.py

* Update _config.py

remove extra mask and coverage

mask type as dropdown

* Update training_data.py

move coverage / LR to global
cut down on loss description

style change
losses working in PR

* simpler logging

* legacy update 
plugins/train/_config.py