
    %h\                         d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlZd dl	m
Z
 dddgd    fdZdd	gfd
Zd Z G d d      Z G d de      ZddZd Zd Zy)    N)
transforms)Image)   r   rgbgrayc                 .   |j                         dk(  rt        j                  |       }nD|j                         dk(  r%t        j                  | t        j                        }nt	        d       y |r&t        j
                  ||t        j                        }|j                         dk(  rHt        j                  t        j                  |t        j                              j                  d      }|S t        j                  |      j                  d      }|S )Nr   r   z=Select the color_type to return, either to RGB or gray image.)interpolationRGBL)lowercv2imreadIMREAD_GRAYSCALEprintresizeINTER_LINEARr   	fromarraycvtColorCOLOR_BGR2RGBconvert)pathsize
color_typeimages       '/var/www/html/mariraj/BiRefNet/utils.pypath_to_imager      s    U"

4 				v	%

4!5!56MN

5$c6F6FGU"UC4E4E FGOOPUV L &..s3L    zmodule.z
_orig_mod.c                     t        | j                               D ]H  \  }}d}|D ]%  }||d  j                  |      s|t        |      z  }' | j	                  |      | ||d  <   J | S Nr   )listitems
startswithlenpop)
state_dictunwanted_prefixeskvprefix_lengthunwanted_prefixs         r   check_state_dictr+      s    Z%%'( :10 	6O ++O<_!55	6 )3q(9
1]^$%: r   c                 &    d}d|z
  | z  |dz  z   }|S )NgMbP?       )gtsepsilonnew_gtss      r   generate_smoothed_gtr3   '   s"    Gy#ogai'GNr   c                        e Zd ZddZd Zd Zy)Loggerc                 `   t        j                  d      | _        t        j                  |d      | _        t        j
                         | _        | j                  j                  t        j                  d             | j                  j                  t        j                  d             | j                  j                  | j                         | j                  j                  | j                         | j                  j                  t         j                         d| j                  _        y )NBiRefNetwz%%(asctime)s %(levelname)s %(message)sF)logging	getLoggerloggerFileHandlerfile_handlerStreamHandlerstdout_handlersetFormatter	Formatter
addHandlersetLevelINFO	propagate)selfr   s     r   __init__zLogger.__init__.   s    ''
3#//c:%335(():):;b)cd&&w'8'89`'abt001t223W\\* %r   c                 :    | j                   j                  |       y N)r;   info)rF   txts     r   rJ   zLogger.info9   s    r   c                 l    | j                   j                          | j                  j                          y rI   )r=   closer?   rF   s    r   rM   zLogger.close<   s&    !!!#r   N)zlog.txt)__name__
__module____qualname__rG   rJ   rM   r/   r   r   r5   r5   -   s    	&$r   r5   c                   $    e Zd ZdZd Zd ZddZy)AverageMeterz1Computes and stores the average and current valuec                 $    | j                          y rI   )resetrN   s    r   rG   zAverageMeter.__init__C   s    

r   c                 <    d| _         d| _        d| _        d| _        y )Ng        )valavgsumcountrN   s    r   rU   zAverageMeter.resetF   s    
r   c                     || _         | xj                  ||z  z  c_        | xj                  |z  c_        | j                  | j                  z  | _        y rI   )rW   rY   rZ   rX   )rF   rW   ns      r   updatezAverageMeter.updateL   s<    C!G

a
88djj(r   N)r-   )rO   rP   rQ   __doc__rG   rU   r]   r/   r   r   rS   rS   A   s    ;)r   rS   c                 l    t        j                  | t        j                  j	                  ||             y rI   )torchsaveosr   join)stater   filenames      r   save_checkpointrf   S   s    	JJubggll423r   c                     | j                         j                         }|j                  d      }t        j                         } ||      }|j                  |       y r   )cpuclonesqueezer   
ToPILImagera   )tenor_imr   im
tensor2pils       r   save_tensor_imgro   W   sE    				B	AB&&(J	BBGGDMr   c                    t        j                  |        t         j                  j                  |        t        j
                  j                  |        t        j                  |        dt         j                  j                  _	        y )NT)
r`   manual_seedcudamanual_seed_allnprandomseedbackendscudnndeterministic)rv   s    r   set_seedrz   _   sP    	d	JJt$IINN4
KK)-ENN&r   )z
latest.pth)r9   rb   r`   torchvisionr   numpyrt   ru   r   PILr   r   r+   r3   r5   objectrS   rf   ro   rz   r/   r   r   <module>r      sk     	  "   
  *ufoa6H $ 5>|3L $ $()6 )$4.r   