  
  
  class Align(Aligner):
      """ Perform transformation to align and get landmarks """
      def __init__(self, **kwargs):
          git_model_id = 1
          model_filename = "cnn-facial-landmark_v1.pb"
          super().__init__(git_model_id=git_model_id, model_filename=model_filename, **kwargs)
  
          self.name = "cv2-DNN Aligner"
 
</s> remove     def __init__(self, **kwargs):
 </s> add     def __init__(self, **kwargs) -> None: </s> remove from ._base import Aligner, logger
 </s> add from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align.detected_face import DetectedFace </s> remove from ._base import Aligner, logger
 </s> add from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align import DetectedFace </s> remove     def __init__(self, git_model_id=None, model_filename=None,
                 configfile=None, instance=0, normalize_method=None, re_feed=0, **kwargs):
 </s> add     def __init__(self,
                 git_model_id: Optional[int] = None,
                 model_filename: Optional[str] = None,
                 configfile: Optional[str] = None,
                 instance: int = 0,
                 normalize_method: Optional[Literal["none", "clahe", "hist", "mean"]] = None,
                 re_feed: int = 0, **kwargs) -> None: </s> remove     @staticmethod
    def _normalize_clahe(face):
        """ Perform Contrast Limited Adaptive Histogram Equalization """
 </s> add     @classmethod
    def _normalize_clahe(cls, face: np.ndarray) -> np.ndarray:
        """ Perform Contrast Limited Adaptive Histogram Equalization

        Parameters
        ----------
        faces: :class:`numpy.ndarray`
            The faces to normalize

        Returns
        -------
        :class:`numpy.ndarray`
            The normalized faces
        """
    def __init__(self, **kwargs) -> None:
  
  
  class Align(Aligner):
      """ Perform transformation to align and get landmarks """
    def __init__(self, **kwargs) -> None:
          git_model_id = 1
          model_filename = "cnn-facial-landmark_v1.pb"
          super().__init__(git_model_id=git_model_id, model_filename=model_filename, **kwargs)
  
          self.name = "cv2-DNN Aligner"
keep keep keep keep replace keep keep keep keep keep
 Extract updates:
  - Default CPU detector to MTCNN
  - add basic Aligner false positive filters
  - Typing: align + plugins
  - Use specific AlignerBatch class for alignment
  - 
plugins/extract/align/cv2_dnn.py