
    h)                     X    S SK r S SKrS SK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)numpy_helper   )
face_alignc                   .    \ rS rSrSS jrS rSS jrSrg)		INSwapper   Nc                 P   Xl         X l        [        R                  " U R                   5      nUR                  n[
        R                  " UR                  S   5      U l        SU l	        SU l
        U R                  c&  [        R                  " U R                   S 5      U l        U R                  R                  5       n/ U l        U H(  nU R                  R                  UR                   5        M*     U R                  R#                  5       n/ nU H  n	UR                  U	R                   5        M      Xl        ['        U R$                  5      S:X  d   eUS   R(                  n
US   nUR(                  nXl        [-        SU R*                  5        [/        USS S S S2   5      U l        g )	N        g     o@   r   zinswapper-shape:r      )
model_filesessiononnxloadgraphr   to_arrayinitializeremap
input_mean	input_stdonnxruntimeInferenceSession
get_inputsinput_namesappendnameget_outputsoutput_nameslenshapeinput_shapeprinttuple
input_size)selfr   r   modelr   inputsinpoutputsr   outoutput_shape	input_cfgr"   s                Y/var/www/fran/franai/venv/lib/python3.13/site-packages/insightface/model_zoo/inswapper.py__init__INSwapper.__init__   sV   $		$//* ))%*;*;B*?@	<<&77NDL((*C##CHH- ,,**,C) (4$$%q(((qz''1I	oo& $"2"23Aa 02 67    c                     XR                   -
  U R                  -  nU R                  R                  U R                  U R
                  S   XR
                  S   U05      S   nU$ )Nr   r   )r   r   r   runr   r   )r&   imglatentpreds       r.   forwardINSwapper.forward)   s]    __$6|| 1 1D4D4DQ4GN^N^_`Naci3jklmnr1   c                 v
   [         R                  " XR                  U R                  S   5      u  pV[        R
                  R                  USU R                  -  U R                  U R                  U R                  U R                  4SS9nUR                  R                  S5      n[        R                  " XR                  5      nU[        R                  R                  U5      -  nU R                   R#                  U R$                  U R&                  S   XpR&                  S   U05      S   n	U	R)                  S5      S   n
[        R*                  " SU
-  SS5      R-                  [        R.                  5      S S 2S S 2S S S	24   nU(       d  X4$ UnUR-                  [        R0                  5      UR-                  [        R0                  5      -
  n[        R2                  " U5      R5                  S
S9nSUS S
2S S 24'   SUSS 2S S 24'   SUS S 2S S
24'   SUS S 2SS 24'   [        R6                  " U5      n[        R8                  " UR:                  S   UR:                  S   4S[        R0                  S9n[        R<                  " XUR:                  S   UR:                  S   4SS9n[        R<                  " XUR:                  S   UR:                  S   4SS9n[        R<                  " XUR:                  S   UR:                  S   4SS9nSXS:  '   SnSXU:  '   SXU:  '   Un[        R>                  " US:H  5      u  nn[        R@                  " U5      [        RB                  " U5      -
  n[        R@                  " U5      [        RB                  " U5      -
  n[E        [        RF                  " UU-  5      5      n[A        US-  S5      n[        RH                  " UU4[        R.                  5      n[        RJ                  " UUSS9n[        RH                  " S[        R.                  5      n[        RL                  " UUSS9n[A        US-  S5      nUU4n[O        S U 5       5      n[        RP                  " UUS5      nSnUU4n[O        S U 5       5      n[        RP                  " UUS5      nUS-  nUS-  n[        R                  " UUR:                  S   UR:                  S   S/5      nUU-  SU-
  UR-                  [        R0                  5      -  -   nUR-                  [        R.                  5      nU$ )Nr   g      ?T)swapRB)r   r
   r   )r   r      r      r
   r   )axis)dtyper   )borderValue   
   )
iterations)r   r      c              3   2   #    U  H  nS U-  S-   v   M     g7fr   r   N .0is     r.   	<genexpr> INSwapper.get.<locals>.<genexpr>\        9[ac!e[   c              3   2   #    U  H  nS U-  S-   v   M     g7frF   rG   rH   s     r.   rK   rL   `   rM   rN   ))r   
norm_crop2kpsr%   cv2dnnblobFromImager   r   normed_embeddingreshapenpdotr   linalgnormr   r3   r   r   	transposeclipastypeuint8float32absmeaninvertAffineTransformfullr!   
warpAffinewheremaxminintsqrtoneserodedilater$   GaussianBlur)r&   r4   target_facesource_face
paste_backaimgMblobr5   r6   img_fakebgr_fake
target_img	fake_diffIM	img_whitefthreshimg_maskmask_h_indsmask_w_indsmask_hmask_w	mask_sizekkernelkernel_size	blur_sizefake_mergeds                               r.   getINSwapper.get.   st   ''__dooa>PQww$$T3+?'+&Ybf % h--55f=		*"))..((|| 1 1D4D4DQ4GO_O_`aObdj3klmno>>),Q/773>1c299"((CAa"HM;J 

3dkk"**6MMIy)..A.6IIbqbdO Ibc!eIadO Iae**1-BAtzz!} =s"**UI~~hZ5E5Ea5H*JZJZ[\J]4^lopHyz7G7G7JJL\L\]^L_6`nqrIyz7G7G7JJL\L\]^L_6`nqrI&)Il#G+,I'(,/I() H')xx#'>$KVVK(266++>>FVVK(266++>>FBGGF6M23IIrM2&A WWaU288,Fyy&a@HWWU288,F

9VCIIrM1%A a&K9[99I'')Q?HAa&K9[99I((IqAIOHIzz(X^^A->x~~a?PQR,STH"X-8z?P?PQSQ[Q[?\0\\K%,,RXX6Kr1   )	r   r   r   r"   r%   r   r   r   r   )NN)T)__name__
__module____qualname____firstlineno__r/   r7   r   __static_attributes__rG   r1   r.   r   r      s    88
:r1   r   )
timenumpyrW   r   rR   r   r   utilsr   r   rG   r1   r.   <module>r      s&       
   
\ \r1   