
    h                         S SK r S SKJr  S SKrS SKrSSK7  SSK7  SSK7  SSK	J
r
  SSKJr  SSKJr  S/r " S	 S
\R                   5      r " S S5      rS rS rS rS rg)    N   )*)	Attribute)	INSwapper   )download_onnx	get_modelc                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )PickableInferenceSession   c                 4   > [         TU ]  " U40 UD6  Xl        g N)super__init__
model_path)selfr   kwargs	__class__s      Y/var/www/fran/franai/venv/lib/python3.13/site-packages/insightface/model_zoo/model_zoo.pyr   !PickableInferenceSession.__init__   s    .v.$    c                     SU R                   0$ Nr   r   )r   s    r   __getstate__%PickableInferenceSession.__getstate__   s    doo..r   c                 0    US   nU R                  U5        g r   )r   )r   valuesr   s      r   __setstate__%PickableInferenceSession.__setstate__   s    L)
j!r   r   )	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s    %/" "r   r   c                        \ rS rSrS rS rSrg)ModelRouter#   c                     Xl         g r   	onnx_file)r   r,   s     r   r   ModelRouter.__init__$   s    "r   c                    [        U R                  40 UD6n[        SUR                   SUR                   35        UR                  5       nUS   nUR                  nUR                  5       n[        U5      S:  a  [        U R                  US9$ US   S:X  a  US   S:X  a  [        U R                  US9$ US   S	:X  a  US   S	:X  a  [        U R                  US9$ [        U5      S:X  a&  US   S
:X  a  US   S
:X  a  [        U R                  US9$ US   US   :X  a)  US   S:  a   US   S-  S:X  a  [        U R                  US9$ g )NzApplied providers: z, with options: r      )
model_filesessionr         `      p      )r   r,   print
_providers_provider_options
get_inputsshapeget_outputslen
RetinaFaceLandmarkr   r   ArcFaceONNX)r   r   r1   inputs	input_cfginput_shapeoutputss          r   r	   ModelRouter.get_model'   sJ   *4>>DVD#G$6$6#77GHaHaGbcd##%1I	oo%%'w<?II^S [^S%8t~~wGG^RKNB$6HH[!^A 3A8KHH^[^+A0CTUWYHY[\H\$..'JJ r   r+   N)r!   r"   r#   r$   r   r	   r%    r   r   r(   r(   #   s    #r   r(   c                     [         R                  R                  U 5      (       d  g [        R                  " SU -  5      n[	        U5      S:X  a  g [        U5      nUS   $ )Nz	%s/*.onnxr   )ospathexistsglobr>   sorted)dir_pathpathss     r   find_onnx_filerQ   =   sL    77>>(##IIkH,-E
5zQ5ME9r   c                  
    SS/$ )NCUDAExecutionProviderCPUExecutionProviderrG   rG   r   r   get_default_providersrU   F   s    #%;<<r   c                      g r   rG   rG   r   r   get_default_provider_optionsrW   I   s    r   c                    UR                  SS5      n[        R                  R                  U5      n[        R
                  " US5      nUR                  SS5      nUR                  SS5      nU R                  S5      (       d/  [        R                  R                  X05      n[        U5      nUc  g OU n[        R                  " U5      (       d  U(       a  [        SXrUS9n[        R                  " U5      (       d
   S	U-  5       e[        R                  " U5      (       d
   S
U-  5       e[        U5      nUR                  S[        5       5      n	UR                  S[        5       5      n
UR                  XS9nU$ )Nrootz~/.insightfacemodelsdownloadFdownload_zipz.onnx)rY   r\   zmodel_file %s should existzmodel_file %s should be a file	providersprovider_options)r]   r^   )getrJ   rK   
expanduserospjoinendswithrQ   rL   r   isfiler(   rU   rW   r	   )namer   rY   
model_rootallow_downloadr\   	model_dirr0   routerr]   r^   models               r   r	   r	   L   sC   ::f./D77d#D$)JZZ
E2N::ne4L==!!GGLL2	#I.
  
::j!!n"8ZQ]^
::j!!J#?
#JJ!::j!!N#CJ#NN!$F

;(=(?@Izz"46R6TUyTELr   )rJ   os.pathrK   ra   rM   onnxruntimearcface_onnx
retinafacelandmark	attributer   	inswapperr   utilsr   __all__InferenceSessionr   r(   rQ   rU   rW   r	   rG   r   r   <module>ru      s\    
           !-"{;; " 4=r   