U
    !?h	                     @   sV   d dl Z d dlmZmZmZ d dlZd dlZd dl	m
Z
 d dlm
Z G dd dZdS )    N)DictListTuple)Imagec                   @   s   e Zd ZdZdeejdddZee	e
e
e
f e	e
e
e
f e	eef eeejf dddZeee d	d
dZedd Zedd Zedd Zedd ZdS )BaseSessionzJThis is a base class for managing a session with a machine learning model.N)
model_name	sess_optsc                 O   sj   || _ g | _t }|r8|D ]}||kr| j| qn| j| tjt| jj	||| j|d| _
dS )z0Initialize an instance of the BaseSession class.)	providersZsess_optionsN)r   r	   ortZget_available_providersappendextendZInferenceSessionstr	__class__download_modelsinner_session)selfr   r   r	   argskwargsZ
_providersprovider r   E/var/www/html/venv/lib/python3.8/site-packages/rembg/sessions/base.py__init__   s    	zBaseSession.__init__)imgmeanstdsizereturnc           
      O   s   | d|tjj}t|}|t| }t|j	d |j	d df}	|d d d d df |d  |d  |	d d d d df< |d d d d df |d  |d  |	d d d d df< |d d d d df |d  |d  |	d d d d df< |	
d}	| j d jt|	dtjiS )NRGBr            )r    r   r   )convertresizer   Z
ResamplingZLANCZOSnparraymaxZzerosshapeZ	transposer   
get_inputsnameZexpand_dimsZastypeZfloat32)
r   r   r   r   r   r   r   ZimZim_aryZtmpImgr   r   r   	normalize(   s    	
888
zBaseSession.normalize)r   r   c                 O   s   t d S NNotImplementedError)r   r   r   r   r   r   r   predictC   s    zBaseSession.predictc                 O   s   t dd d k	S )NZMODEL_CHECKSUM_DISABLED)osgetenvclsr   r   r   r   r   checksum_disabledF   s    zBaseSession.checksum_disabledc                 O   s&   t jt dt jt dddS )NZ
U2NET_HOMEXDG_DATA_HOME~z.u2net)r.   path
expanduserr/   joinr0   r   r   r   
u2net_homeJ   s     zBaseSession.u2net_homec                 O   s   t d S r*   r+   r0   r   r   r   r   R   s    zBaseSession.download_modelsc                 O   s   t d S r*   r+   r0   r   r   r   r(   V   s    zBaseSession.name)N)__name__
__module____qualname____doc__r   r
   ZSessionOptionsr   PILImager   floatintr   r#   Zndarrayr)   r   r-   classmethodr2   r8   r   r(   r   r   r   r   r   
   s*    



r   )r.   typingr   r   r   numpyr#   Zonnxruntimer
   ZPILr   Z	PIL.Imager=   r   r   r   r   r   <module>   s   