def __init__(self, device: str = None, size: Tuple = (224, 224), min_area: float = 60*60, 
                nms: bool = True, replace_small: bool = True, top_k: int = 10, 
                filter_bb: bool = True, min_area_replace: float = 60*60, **kwargs):
        """_summary_

        Args:
            device (str): the device to run the model on. Required to be set.
            size (Tuple, optional): the final image size to go to the model. Defaults to (224, 224).
            min_area (float, optional): the min area (pixels) that a box must meet to be kept. 
                areas lower than this are removed. Defaults to 60*60.
            nms (bool, optional): perform nms or not. Defaults to True.
            replace_small (bool, optional): boxes smaller than min_area_replace are replaced with
                        boxes centered on the same position but larger size. Defaults to True.
            top_k (int, optional): keep this many boxes after all processin (max). Defaults to 10.
            filter_bb (bool, optional): perform filtering on the proposed boxes. Defaults to True.
            min_area_replace (float, optional): boxes with areas smaller than this are replaced with larger ones. Defaults to 60*60.
        """
        self.scores = []

        # this is the resized size 
        self.size = size
        
        if not device:
            raise InternalError("`device` is required for loading CLIP models!")
        self.device = device

        self.min_area = min_area
        self.min_area_replace = min_area_replace
        self.nms = nms
        self.replace_small = replace_small
        self.top_k = top_k
        self.filter_bb = filter_bb
        self.new_size = (100,100)
        # consider changins
        self.iou_thresh = 0.6
        self.kwargs = kwargs
        self.n_postfilter = None

        # this one happens at the first stage before processing the bboxes
        self.top_k_scores = 100

        self._get_model_specific_parameters()
        self._load_and_cache_model()
_summary_

        Args:
            device (str): the device to run the model on. Required to be set.
            size (Tuple, optional): the final image size to go to the model. Defaults to (224, 224).
            min_area (float, optional): the min area (pixels) that a box must meet to be kept. 
                areas lower than this are removed. Defaults to 60*60.
            nms (bool, optional): perform nms or not. Defaults to True.
            replace_small (bool, optional): boxes smaller than min_area_replace are replaced with
                        boxes centered on the same position but larger size. Defaults to True.
            top_k (int, optional): keep this many boxes after all processin (max). Defaults to 10.
            filter_bb (bool, optional): perform filtering on the proposed boxes. Defaults to True.
            min_area_replace (float, optional): boxes with areas smaller than this are replaced with larger ones. Defaults to 60*60.
        
src/marqo/s2_inference/processing/image.py