U
    !?h8	                     @   s\   d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ	 ddl
mZ G dd deZdS )    N)List)Image   )BaseSessionc                   @   s<   e Zd ZdZeee dddZedd Zedd Z	d	S )

DisSessionz?
    This class represents a session for object detection.
    )imgreturnc           	   	   O   s   | j d| |ddd}|d dddddddf }t|}t|}|| ||  }t|}tj|d 	ddd	}|
|jtjj}|gS )
aI  
        Use a pre-trained model to predict the object in the given image.

        Parameters:
            img (PILImage): The input image.
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.

        Returns:
            List[PILImage]: A list of predicted mask images.
        N)g
ףp=
?gv/?gCl?)      ?r	   r	   )   r
   r      Zuint8L)mode)Zinner_sessionrun	normalizenpmaxminZsqueezer   Z	fromarrayZastyperesizesizeZ
ResamplingZLANCZOS)	selfr   argskwargsZort_outspredmamimask r   J/var/www/html/venv/lib/python3.8/site-packages/rembg/sessions/dis_anime.pypredict   s     


zDisSession.predictc                 O   sT   | j || d}tjd| j||r(dnd|| j||dd tj| j|||S )z
        Download the pre-trained models.

        Parameters:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.

        Returns:
            str: The path of the downloaded model file.
        z.onnxzNhttps://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-anime.onnxNz$md5:6f184e756bb3bd901c8849220a83e38eT)fnamepathZprogressbar)namepoochretrieveZchecksum_disabledZ
u2net_homeosr    join)clsr   r   r   r   r   r   download_models/   s    

zDisSession.download_modelsc                 O   s   dS )z
        Get the name of the pre-trained model.

        Parameters:
            *args: Variable length argument list.
            **kwargs: Arbitrary keyword arguments.

        Returns:
            str: The name of the pre-trained model.
        zisnet-animer   )r&   r   r   r   r   r   r!   J   s    zDisSession.nameN)
__name__
__module____qualname____doc__PILImager   r   classmethodr'   r!   r   r   r   r   r      s   
r   )r$   typingr   numpyr   r"   ZPILr   Z	PIL.Imager,   baser   r   r   r   r   r   <module>   s   