def __init__(
        self,
        classifier: "CLASSIFIER_NEURALNETWORK_TYPE",
        th: int | None = None,
        es: int = 0,
        max_iter: int = 100,
        targeted: bool = False,
        verbose: bool = True,
        verbose_es: bool = False,
    ) -> None:
        """
        Create a :class:`.PixelThreshold` instance.

        :param classifier: A trained classifier.
        :param th: threshold value of the Pixel/ Threshold attack. th=None indicates finding a minimum threshold.
        :param es: Indicates whether the attack uses CMAES (0) or DE (1) as Evolutionary Strategy.
        :param max_iter: Sets the Maximum iterations to run the Evolutionary Strategies for optimisation.
        :param targeted: Indicates whether the attack is targeted (True) or untargeted (False).
        :param verbose: Print verbose messages of ES and show progress bars.
        """
        super().__init__(estimator=classifier)

        self._project = True
        self.type_attack = -1
        self.th = th  # pylint: disable=invalid-name
        self.es = es  # pylint: disable=invalid-name
        self.max_iter = max_iter
        self._targeted = targeted
        self.verbose = verbose
        self.verbose_es = verbose_es
        self.rescale = False
        PixelThreshold._check_params(self)

        if self.estimator.channels_first:
            self.img_rows = self.estimator.input_shape[-2]
            self.img_cols = self.estimator.input_shape[-1]
            self.img_channels = self.estimator.input_shape[-3]
        else:
            self.img_rows = self.estimator.input_shape[-3]
            self.img_cols = self.estimator.input_shape[-2]
            self.img_channels = self.estimator.input_shape[-1]

        Create a :class:`.PixelThreshold` instance.

        :param classifier: A trained classifier.
        :param th: threshold value of the Pixel/ Threshold attack. th=None indicates finding a minimum threshold.
        :param es: Indicates whether the attack uses CMAES (0) or DE (1) as Evolutionary Strategy.
        :param max_iter: Sets the Maximum iterations to run the Evolutionary Strategies for optimisation.
        :param targeted: Indicates whether the attack is targeted (True) or untargeted (False).
        :param verbose: Print verbose messages of ES and show progress bars.
        
art/attacks/evasion/pixel_threshold.py