                       self.config["threshold_2"],
                       self.config["threshold_3"]]
          kwargs = {"minsize": self.config["minsize"],
                    "threshold": threshold,
                    "factor": self.config["scalefactor"]}
  
          if kwargs["minsize"] < 10:
              valid = False
          elif not all(0.0 < threshold <= 1.0 for threshold in kwargs['threshold']):
              valid = False
 
</s> remove             kwargs = {"minsize": 20,  # minimum size of face
                      "threshold": [0.6, 0.7, 0.7],  # three steps threshold
                      "factor": 0.709}               # scale factor
 </s> add             kwargs = {} </s> remove     def validate_kwargs(self):
 </s> add     def _validate_kwargs(self) -> Dict[str, Union[int, float, List[float]]]: </s> remove         self.kwargs = self.validate_kwargs()
 </s> add         self.kwargs = self._validate_kwargs()
                  "factor": self.config["scalefactor"],
                  "input_size": self.input_size}
                       self.config["threshold_2"],
                       self.config["threshold_3"]]
          kwargs = {"minsize": self.config["minsize"],
                    "threshold": threshold,
                  "factor": self.config["scalefactor"],
                  "input_size": self.input_size}
  
          if kwargs["minsize"] < 10:
              valid = False
          elif not all(0.0 < threshold <= 1.0 for threshold in kwargs['threshold']):
              valid = False
keep keep keep keep replace keep keep keep keep keep
 Add CPU option to BiSeNet and MTCNN
  - Add CPU option to KSession
  - MTCNN optimizations
  - Update docs for bisenet + mtcnn 
plugins/extract/detect/mtcnn.py