              "opts": ("-M", "--mask-type"),
              "action": Radio,
              "type": str.lower,
              "dest": "mask_type",
              "choices": get_available_masks() + ["predicted"],
              "group": "plugins",
              "default": "predicted",
              "help": "R|Mask to use to replace faces. Blending of the masks can be adjusted in "
                      "'/config/convert.ini' or 'Settings > Configure Convert Plugins':"
                      "\nL|components: An improved face hull mask using a facehull of 8 facial "
                      "parts."
                      "\nL|dfl_full: An improved face hull mask using a facehull of 3 facial parts."
                      "\nL|extended: Based on components mask. Extends the eyebrow points to "
                      "further up the forehead. May perform badly on difficult angles."
                      "\nL|facehull: Face cutout based on landmarks."
                      "\nL|predicted: The predicted mask generated from the model. If the model was "
                      "not trained with a mask then this will fallback to "
                      "'{}'".format(get_default_mask()) +
                      "\nL|none: Don't use a mask."})
          argument_list.append({
              "opts": ("-sc", "--scaling"),
              "action": Radio,
              "type": str.lower,
              "choices": PluginLoader.get_available_convert_plugins("scaling", True),
 
</s> remove             "type": str.lower,
 </s> add  </s> remove             "help": "R|Masker to use. NB - masks generated here can be used for training, and "
                    "converting with the 'predicted' mask. Availability of all masks specified "
                    "here for convert is coming soon."
 </s> add             "help": "R|Masker to use." </s> remove     "radius": {
        "default": 3.0,
        "info": "Radius dictates how much blending should occur.\nThis figure is set as a "
                "percentage of the mask diameter to give the radius in pixels. Eg: for a mask "
                "with diameter 200px, a percentage of 6% would give a final radius of 3px.\n"
                "Higher percentage means more blending.",
        "datatype": float,
 </s> add     "kernel_size": {
        "default": 3,
        "info": "The kernel size dictates how much blending should occur.\n"
                "The size is the diameter of the kernel in pixels (calculated from a 128px mask). "
                " This value should be odd, if an even number is passed in then it will be "
                "rounded to the next odd number. Higher sizes means more blending.",
        "datatype": int,
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
              "opts": ("-M", "--mask-type"),
              "action": Radio,
              "type": str.lower,
              "dest": "mask_type",
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
            "type": str.lower,
            "choices": PluginLoader.get_available_extractors("mask",
                                                             add_none=True) + ["predicted"],
            "default": "extended",
            "group": "Plugins",
            "help": "R|Masker to use. NB: The mask you require must exist within the alignments "
                    "file. You can add additional masks with the Mask Tool."
                    "\nL|none: Don't use a mask."
                    "\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."
                    "\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."})
          argument_list.append({
              "opts": ("-sc", "--scaling"),
              "action": Radio,
              "type": str.lower,
              "choices": PluginLoader.get_available_convert_plugins("scaling", True),
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Smart Masks to Convert (#957)

- scripts.convert - Use Smart Masks for Convert
    * Make on-the-fly conversion an explicit option

- Move BlurMask to lib.faces_detect

- tools.preview - Fix for smart masks
    * Subclass from tk.Tk
    * Options to lib.gui.control_helper
    *variable cleanup

- lib.logger - Demote more tensorflow deprecation messages

- Documentation:
    * lib.faces_detect.BlurMask
    * plugins.convert.mask
    * lib.convert
    * scripts.convert
    * scripts.fsmedia
    * tools.preview 
lib/cli.py