
    #
3j*                     \    S SK r S SKJrJrJr  S SKrS SKrS SK	J
r
  S SKJ
r   " S S5      rg)    N)DictListTuple)Imagec                       \ rS rSrSrS\S\R                  4S jrS\	S\
\\\4   S\
\\\4   S	\
\\4   S
\\\R                  4   4
S jrS\	S
\\	   4S jr\S 5       r\S 5       r\S 5       r\S 5       rSrg)BaseSession
   zJThis is a base class for managing a session with a machine learning model.
model_name	sess_optsc           	         Xl         SU;   a*  [        US   [        5      (       a  UR                  S5      nOc[        R
                  " 5       nUS:X  a  S[        R                  " 5       ;   a  SS/nO*USS S:X  a  S[        R                  " 5       ;   a  SS/nOS/n[        R                  " [        U R                  R                  " U0 UD65      UUS9U l        g	)
z0Initialize an instance of the BaseSession class.	providersGPUCUDAExecutionProviderCPUExecutionProviderr      ROCMExecutionProvider)sess_optionsr   N)r
   
isinstancelistpoport
get_deviceget_available_providersInferenceSessionstr	__class__download_modelsinner_session)selfr
   r   argskwargsr   device_types          M/home/wildlama/miniconda3/lib/python3.13/site-packages/rembg/sessions/base.py__init__BaseSession.__init__   s    $& Z{0CT%J%J

;/I..*Ku$+s/J/J/LL46LM	Aa E)+s/J/J/LL46LM	34	 11..??@"
    imgmeanstdsizereturnc                    UR                  S5      R                  U[        R                  R                  5      n[
        R                  " U5      nU[        [
        R                  " U5      S5      -  n[
        R                  " UR                  S   UR                  S   S45      n	US S 2S S 2S4   US   -
  US   -  U	S S 2S S 2S4'   US S 2S S 2S4   US   -
  US   -  U	S S 2S S 2S4'   US S 2S S 2S4   US   -
  US   -  U	S S 2S S 2S4'   U	R                  S5      n	U R                  R                  5       S   R                  [
        R                  " U	S5      R                  [
        R                   5      0$ )NRGBgư>r      r      )r/   r   r.   )convertresizer   
ResamplingLANCZOSnparraymaxzerosshape	transposer   
get_inputsnameexpand_dimsastypefloat32)
r   r'   r(   r)   r*   r    r!   imim_arytmpImgs
             r#   	normalizeBaseSession.normalize(   sJ    [[&&tU-=-=-E-EF"#bffVnd336<<?FLLOQ?@!!Q'?T!W4A>q!Qw!!Q'?T!W4A>q!Qw!!Q'?T!W4A>q!Qw!!), ))+A.T2>>&!,VBJJ
 	
r&   c                     [         eNNotImplementedError)r   r'   r    r!   s       r#   predictBaseSession.predictC   s    !!r&   c                 4    [         R                  " SS 5      S L$ )NMODEL_CHECKSUM_DISABLED)osgetenvclsr    r!   s      r#   checksum_disabledBaseSession.checksum_disabledF   s    yy2D9EEr&   c                     [         R                  R                  [         R                  " S[         R                  R	                  [         R                  " SS5      S5      5      5      $ )N
U2NET_HOMEXDG_DATA_HOME~z.u2net)rL   path
expanduserrM   joinrN   s      r#   
u2net_homeBaseSession.u2net_homeJ   sD    ww!!IIbggll299_c+JHU
 	
r&   c                     [         erE   rF   rN   s      r#   r   BaseSession.download_modelsR       !!r&   c                     [         erE   rF   rN   s      r#   r;   BaseSession.nameV   r]   r&   )r   r
   N)__name__
__module____qualname____firstlineno____doc__r   r   SessionOptionsr$   PILImager   floatintr   r4   ndarrayrB   r   rH   classmethodrP   rY   r   r;   __static_attributes__ r&   r#   r   r   
   s    T
3 
33E3E 
6

 E5%'(
 5%&'	

 CHo
 
c2::o	
6"8 "h " F F 
 
 " " " "r&   r   )rL   typingr   r   r   numpyr4   onnxruntimer   PILr   	PIL.Imagerf   r   rl   r&   r#   <module>rr      s&    	 $ $    'N" N"r&   