    def __init__(self, difpy_obj, similarity='duplicates', rotate=True, same_dim=True, show_progress=True, processes=os.cpu_count(), chunksize=None, **kwargs):
        '''
        Parameters
        ----------
        difPy_obj : difPy.dif.build
            difPy object containing the build image repository
        similarity : 'duplicates', 'similar', float (optional)
            Image comparison similarity threshold (mse) (default is 'duplicates', 0)
        rotate : bool (optional)
            Rotates images on comparison (default is True)
        same_dim : bool (optional)
            Only searches for duplicate/similar images that have the same dimensions (width x height in pixels) (default is True)
        show_progress : bool (optional)
            Show the difPy progress bar in console (default is True)
        processes : int (optional)
            Number of worker processes for multiprocessing (default is os.cpu_count()) (see https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool)
        chunksize : int (optional)
            This parameter is only relevant when working with large image datasets (> 5k images). Sets the batch size at which the job is simultaneously processed when multiprocessing. (see https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.imap_unordered)

        '''
        # Validate input parameters
        self.__difpy_obj = difpy_obj
        self.__similarity = _validate_param._similarity(similarity)
        self.__rotate = _validate_param._rotate(rotate)
        self.__same_dim = _validate_param._same_dim(same_dim, self.__similarity)
        self.__show_progress = _validate_param._show_progress(show_progress)
        self.__processes = _validate_param._processes(processes)
        self.__chunksize = _validate_param._chunksize(chunksize)
        self.__in_folder = self.__difpy_obj.stats['process']['build']['parameters']['in_folder']
        _validate_param._kwargs(kwargs)

        # Initialize multiprocessing
        _initialize_multiprocessing()

        if self.__show_progress:
            print("Initializing search...", end='\r')
        self.result, self.lower_quality, self.stats = self._main()
        return
Parameters
----------
difPy_obj : difPy.dif.build
difPy object containing the build image repository
similarity : 'duplicates', 'similar', float (optional)
Image comparison similarity threshold (mse) (default is 'duplicates', 0)
rotate : bool (optional)
Rotates images on comparison (default is True)
same_dim : bool (optional)
Only searches for duplicate/similar images that have the same dimensions (width x height in pixels) (default is True)
show_progress : bool (optional)
Show the difPy progress bar in console (default is True)
processes : int (optional)
Number of worker processes for multiprocessing (default is os.cpu_count()) (see https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool)
chunksize : int (optional)
This parameter is only relevant when working with large image datasets (> 5k images). Sets the batch size at which the job is simultaneously processed when multiprocessing. (see https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.imap_unordered)
difPy/dif.py