
    ij                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl	m
c mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ dd	d
dZdZd ddZh dZh dZd1dZd1dZd1dZd Zd Z	 	 	 	 	 	 	 d2dZ 	 	 	 	 d3dZ!	 	 	 d4dZ"d Z#d Z$d Z%d d d e$e%dZ&d  Z'd! Z(d" Z)	 d5d#Z*	 d6d$Z+ ejX                         d%        Z-	 	 	 	 	 	 	 d7d&Z.d' Z/d( Z0d) Z1e/e0d* d+ d,Z2d- Z3d. Z4	 d8d/Z5d1d0Z6y)9    N)backend)cast)convert_to_tensor)
get_device)to_torch_dtype)	draw_seedbilinearznearest-exactbicubic)r	   nearestr
   )lanczos3lanczos5   )r   r	   >   wrapmirrorr   reflectconstant>   cubiclinearr
   r	   r   r   tricubic	trilinearc                    t        |       } t        j                  |      }| j                  dvrt	        d| j
                         |dk(  rdnd}| j
                  |   dvrt	        d| j
                         | j
                  |   dk(  rT| j                  |	      \  }}}d
|z  d|z  z   d|z  z   j                  | j                        } | j                  |	      } | S | j                         } | S )N      yInvalid images rank: expected rank 3 (single image) or rank 4 (batch of images). Received input with shape: images.shape=channels_first)r   r   zaInvalid channel size: expected 3 (RGB) or 1 (Grayscale). Received input with shape: images.shape=r   dimgŏ1w-!?gbX9?gv/?)r   r   standardize_data_formatndim
ValueErrorshapeunbindtodtype	unsqueezeclone)imagesdata_formatchannel_axisrgbs         r/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/torch/image.pyrgb_to_grayscaler1   1   s
   v&F11+>K{{& "LL>+
 	

 %(882bL||L!/77=||nF
 	
 ||L!Q&--L-11a1*uqy(519488F!!l!3 M M    c                    t        |       } | j                  }t        j                  |      }|dk(  rdnd}t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             t        j                  |      j                  }t        j                  t        j                  |       |k  d|       } t        j                  | g d|      \  }}}t        j                  ||      }t        j                  ||      }t        j                  ||      }d	 }t        j                    ||||      |
      } | S )Nchannels_lastr   r   r   r   CInvalid images dtype: expected float dtype. Received: images.dtype=        r   r   r   c                 z   t        j                  t        j                  | |      |      }t        j                  t        j                  | |      |      }||z
  }t        j                  |dkD  |d      }t        j                  |dkD  |d      }t        j                  |dkD  ||z  d      }dd|z  z  }	t        j                  ||k(  |	|| z
  z  dz   |	| |z
  z  dz         }
t        j                  || k(  |	||z
  z  |
      }
t        j                  |dkD  |
d      |
dk  j	                  |
j
                        z   }
|
||fS )Nr         ?r6         @gUUUUUU?gUUUUUU?)torchmaximumminimumwherer&   r'   )r-   r.   r/   valuer=   range_
safe_value
safe_range
saturationnormhues              r0   rgb_planes_to_hsv_planesz,rgb_to_hsv.<locals>.rgb_planes_to_hsv_planesd   s%   emmAq115--a 3Q7[[E37
[[!VS9
[[FZ,?E
cJ&'kkQJAENY&AENY&

 kk%1*da!enc:kk&1*c3/39..2KKJ%%r2   axis)r   r'   r   r!   lenr$   r#   is_float_dtypestandardize_dtyper;   finfoepsr>   abssplitsqueezestack)	r*   r+   r'   channels_axisrM   redgreenbluerF   s	            r0   
rgb_to_hsvrV   L   sF   v&FLLE11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
 ++e

 
 C[[6*S0#v>F{{69mDC
--]
+CMM%/E==}-D&( [[ eT2F Mr2   c                 <   t        |       } | j                  }t        j                  |      }|dk(  rdnd}t	        | j
                        dvrt        d| j
                         t        j                  |      s!t        dt        j                  |             t        j                  | g d|      \  }}}t        j                  ||      }t        j                  ||      }t        j                  ||      }d }t        j                   ||||      |	      } | S )
Nr4   r   r   r   r   r5   r7   c                    t        j                  | d      dz  }t        j                  t        j                  |dz
        dz
  dd      }t        j                  dt        j                  |dz
        z
  dd      }t        j                  dt        j                  |dz
        z
  dd      }d|z
  }||||z  z   z  }||||z  z   z  }	||||z  z   z  }
||	|
fS )Nr9   r:         @r6          @      @)r;   	remaindercliprN   )rE   rC   r?   dhdrdgdbone_minus_srS   rT   rU   s              r0   hsv_planes_to_rgb_planesz,hsv_to_rgb.<locals>.hsv_planes_to_rgb_planes   s    __S#&,ZZ		"s(+c13<ZZeiiS113<ZZeiiS113<J&{Z"_45zB67j2o56E4r2   rG   )r   r'   r   r!   rI   r$   r#   rJ   rK   r;   rO   rP   rQ   )r*   r+   r'   rR   rE   rC   r?   rc   s           r0   
hsv_to_rgbrd   ~   s   v&FLLE11+>K%8BbM
6<<&"LL>+
 	

 !!%(&&-&?&?&F%GI
 	
 #[[MJCU
--]
+Cz=9JMM%/E
  [[ j%8}F Mr2   c                     d}| j                   dk  r| j                  d      } d}| j                  }d}||vrd}|d   }| j                  |      } | |||fS )NFr   r   r   T)r"   r(   r'   r&   )image
req_dtypesneed_squeeze	out_dtype	need_cast	req_dtypes         r0   _cast_squeeze_inrl      sh    LzzA~A&II
"	qM	#)\944r2   c                    |r| j                  d      } |ru|t        j                  t        j                  t        j                  t        j
                  t        j                  fv rt        j                  |       } | j                  |      } | S )Nr   r   )	rP   r;   uint8int8int16int32int64roundr&   )rf   rj   rh   ri   s       r0   _cast_squeeze_outrt      sk    !$KKJJKKKKKK
 
 KK&E#Lr2   c	           
      2   t        j                  |      }|t        v rt        d| d      |t        vrt        dt         d|       |dk7  rt        d|       |r|rt        d      t        |      dk(  st        d	|       t        |      }t        |       } | j                  d
vrt        d| j                         t        | t        j                  t        j                  g      \  } }	}
}|dk(  r| j                  d      } |r| j                  }|d   |d   }}|\  }}t        t!        ||z        |z        }t#        t%        ||      d      }t        t!        ||z        |z        }t#        t%        ||      d      }t        t!        ||z
        dz        }t        t!        ||z
        dz        }| d d d d |||z   |||z   f   } n|r| j                  }|d   |d   }}|\  }}t        t!        ||z        |z        }t#        ||      }t        t!        ||z        |z        }t#        ||      }t        t!        ||z
        dz        }t        t!        ||z
        dz        }| j                  d   }| j                  d   }|dkD  r}t        j&                  t        j(                  ||||f| j*                  | j,                        |z  | t        j(                  ||||f| j*                  | j,                        |z  gd      }n| }|dkD  r|t        j&                  t        j(                  ||||f| j*                  | j,                        |z  |t        j(                  ||||f| j*                  | j,                        |z  gd      }|} |r|dvrd}|dv rdnd }t/        j0                  | |t        |   ||      }|dk(  r&|t        j2                  k(  r|j5                  dd      }|dk(  r|j                  d      }t7        ||	|
|      }|S )NzeResizing with Lanczos interpolation is not supported by the PyTorch backend. Received: interpolation=.<Invalid value for argument `interpolation`. Expected of one . Received: interpolation=r   z\Invalid value for argument `fill_mode`. Only `'constant'` is supported. Received: fill_mode=zIOnly one of `pad_to_aspect_ratio` & `crop_to_aspect_ratio` can be `True`.   zPArgument `size` must be a tuple of two elements (height, width). Received: size=r   r   r4   r   r   r   ry   r   r   r   r'   devicerG   r   )r	   r
   F)sizemodealign_corners	antialiasr
      )minmaxr   ry   r   r   )rj   rh   ri   )r   r!   UNSUPPORTED_INTERPOLATIONSr#   RESIZE_INTERPOLATIONSrI   tupler   r"   r$   rl   r;   float32float64permuteintfloatr   r   catonesr'   r}   Finterpolatern   clamprt   )r*   r~   interpolationr   crop_to_aspect_ratiopad_to_aspect_ratio	fill_mode
fill_valuer+   rj   rh   ri   r$   heightwidthtarget_heighttarget_widthcrop_height
crop_widthcrop_box_hstartcrop_box_wstart
pad_height	pad_widthimg_box_hstartimg_box_wstart
batch_sizechannels
padded_imgr   resizeds                                 r0   resizer      s    11+>K22''4oQ8
 	

 11J$%%?P
 	
 J11:=
 	
 3
 	
 t9>//3f6
 	
 ;Dv&F{{& "LL>+
 	

 2B.2.FI|Y o%-b	59&*#|% 56EF#fk2A6v45EF
UJ/3
eF[$89A=>eEJ$67!;<o;;o
::<
 
b	59&*#|u}45DE
,
f|34}DE	y)	U:#67!;<U9u#459:\\!_
<<?AJJ#X~uE$ll%}}
 !! JJ#X~uE$ll%}}
 !! !J&  JAJJ#Xv~F$ll%}}
 !! JJ#Xv~F$ll%}}
 !! !J$  ]*AA
 	*.EEE4Mmm"=1#G 	!i5;;&>--A3-/o%//,/!	G Nr2   c                    t        j                  |      }|t        j                         vr,t	        dt        t        j                                d|       |t        vrt	        dt         d|       t        |       } t        |      }| j                  dvrt	        d| j                         |j                  dvrt	        d|j                         d	}| j                  d
k(  r| j                  d      } d}|j                  dk(  r|j                  d      }|dk(  r| j                  d      } | j                  d   }t        j                  | j                  dd  D cg c].  }t        j                  ||j                  |j                         0 c}ddi}	t        j"                  |	D 
cg c]  }
t        j                  |
d       c}
d      }t        j$                  ||ddddf      }|d d df   j'                         }|d d df   j'                         }|d d df   j'                         }|d d df   j'                         }||d d df<   ||d d df<   ||d d df<   ||d d df<   t        j(                  j*                  j-                  |g ddd      }t        j.                  ||d
d
f      }|d d dddf   j'                         }t        j(                  j*                  j-                  |g d      }d|d d dddf<   t        j0                  d||      }t        j2                  |dd      }|t        j.                  |g |j                  ddd      z  }t        j4                  t7        t9        |             D cg c]  }t;        | |   ||   t        |   ||      ! c}      }|dk(  r|j                  d       }|r|j=                  d      }|S c c}w c c}
w c c}w )!Nrw   rx   8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=r   r   )r   ry   zInvalid transform rank: expected rank 1 (single transform) or rank 2 (batch of transforms). Received input with shape: transform.shape=Fr   r   r   Tr   r   r   r|   indexingijr   ry   r      )r   r   r   r   r   )padr   r?   )r   zBhwij, Bjk -> Bhwik)sourcedestination)r$   orderr   r   rz   )r   r!   AFFINE_TRANSFORM_INTERPOLATIONSkeysr#   setAFFINE_TRANSFORM_FILL_MODESr   r"   r$   r(   r   r;   meshgridaranger'   r}   concatenatetiler)   nn
functionalr   reshapeeinsummoveaxisrQ   rangerI   map_coordinatesrP   )r*   	transformr   r   r   r+   rh   r   r~   r   xindicesa0a2b1b2offsetcoordinatesiaffineds                       r0   affine_transformr   a  s    11+>K;@@BBJ2779:; <*O-
 	

 33F*++A)N
 	

 v&F!),I{{& "LL>+
 	

 ~~V#(/1
 	
 L{{a!!a!(~~''A'.	&&-aJ ~~ QR(

 LLY__Y=M=MN


 H -56	#6BG jj:q!Q":;G 
1a4			 B	1a4			 B	1a4			 B	1a4			 BIadOIadOIadOIadO ##''|*A ( I i*a);<Iq!A#qy!'')FXX  $$V$>FIa1ai ,,4gyIK..RQGK5==/G/Gq/G!/GQ/GHHK kk 3v;'		
  q	A5mD#%		
G &&//,///a/(Nk

 	7<		
s   "3O$/O)$O.c           	      6   t        j                  |      }t        |       } t        j                  | j                        }t        ||      }t        ||      }|t
        j                         vr,t        dt        t
        j                                d|       | j                  dvrt        d| j                         |j                  dd  dk7  s|j                         dvrt        d	|j                         |j                  dd  dk7  s|j                         dvrt        d
|j                         |j                  |j                  k7  r%t        d|j                   d|j                         d}| j                  dk(  r| j                  d      } d}|j                  dk(  r|j                  d      }|j                  dk(  r|j                  d      }|dk(  r| j                  d      } | j                  \  }}	}
}t        ||      }|j                         dk(  r|j                  d      }|j                  d   dk(  r|dkD  r|j                  |d      }t!        j"                  t!        j$                  |
t'        |      | j(                        t!        j$                  |	t'        |      | j(                        d      \  }}t!        j*                  ||	|
|gt'        |      | j(                        }t-        |      D ]  }||   \  }}}}}}}}||z  ||z  z   dz   }||z  ||z  z   |z   |z  }||z  ||z  z   |z   |z  }t!        j.                  |j1                         |j1                         gd      }g }t-        |      D ]G  }| |d d d d |f   }t3        ||t
        |   d|      } |j5                  | j7                  |	|
             I t!        j.                  |d      ||<    |dk(  r|j                  d      }|r|j9                  d      }|S )Nr'   rw   rx   r   r   r{   )r   ry   )ry   r   zfInvalid start_points shape: expected (4,2) for a single image or (N,4,2) for a batch. Received shape: zdInvalid end_points shape: expected (4,2) for a single image or (N,4,2) for a batch. Received shape: zRstart_points and end_points must have the same shape. Received start_points.shape=z, end_points.shape=Fr   r   r   Try   r   r   r   r|   xyr   r9   r   r   r   rz   )r   r!   r   rK   r'   r   r   r#   r   r"   r$   r    r(   r   compute_homography_matrixrepeatr;   r   r   r   r}   emptyr   rQ   flattenr   appendr   rP   )!r*   start_points
end_pointsr   r   r+   r'   rh   r   r   r   r   
transformsgrid_xgrid_youtputr   r   a1r   a3a4a5a6a7denomx_iny_incoordsmapped_channelschannelchannel_imgmapped_channels!                                    r0   perspective_transformr     sH    11+>Kv&F%%fll3E$\?L":U;J;@@BBJ2779:; <*O-
 	
 {{& "LL>+
 	
 "#&(L,<,<,>f,L88D8J8J7KM
 	
 &*..*:&*H88B8H8H7IK
 	
 Z---,,8,>,>+? @  * 0 013
 	
 L{{a!!a!(A#--!-4!))a)0
&&-*0,,'Jx*<DJ~~1))!,
aJN&&z15
^^U."7NV>%#8ONFF [[	VUH-U#}}F : 9)3A&BBBBVb6k)C/Vb6k)B.%7Vb6k)B.%7dllndlln=1EX 		JG Aq'!12K,5mD$%N "">#9#9&%#HI		J KKR8q	%9( &&-A&Mr2   c                 
   t        |       } t        |      }t        j                  | j                  |j                  t              }t        j                  |d      }t        | |      } t        ||      }| d d ddf   | d d ddf   }}| d d ddf   | d d ddf   }}| d d ddf   | d d ddf   }	}| d d ddf   | d d ddf   }}
|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}|d d ddf   |d d ddf   }}t        j                  t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      | |z  | |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      |	 |z  |	 |z  gd      t        j                  ||t        j                  |      t        j                  |      t        j                  |      t        j                  |      |
 |z  |
 |z  gd      t        j                  t        j                  |      t        j                  |      t        j                  |      ||t        j                  |      | |z  | |z  gd      gd      }t        j                  ||||||	|
|gd      j                  d      }t        ||      }t        ||      }t        j                  j                  ||      }|j                  dd      }t        ||      }|S )	Nr   r   r   ry   r   r   r      )r   r   result_typer'   r   r   r;   rQ   	ones_like
zeros_liker(   linalgsolver   )r   r   r'   compute_dtypestart_x1start_y1start_x2start_y2start_x3start_y3start_x4start_y4end_x1end_y1end_x2end_y2end_x3end_y3end_x4end_y4coefficient_matrixtarget_vectorhomography_matrixs                          r0   r   r   9  sP   $\2L":.J 2 2J4D4DeLE''y9Me,Lj%(J%aAg.Q1W0EhH%aAg.Q1W0EhH%aAg.Q1W0EhH%aAg.Q1W0EhH1a(*Q1W*=FF1a(*Q1W*=FF1a(*Q1W*=FF1a(*Q1W*=FFKKOOF+$$V,$$V,$$V,I&I&	  KK$$V,$$V,$$V,OOF+I&I&	  KKOOF+$$V,$$V,$$V,I&I&	  KK$$V,$$V,$$V,OOF+I&I&	  KKOOF+$$V,$$V,$$V,I&I&	  KK$$V,$$V,$$V,OOF+I&I&	  KKOOF+$$V,$$V,$$V,I&I&	  KK$$V,$$V,$$V,OOF+I&I&	 yi	
T Wl\ KK		
  im  0-@6M**+=}M)11"a8.6r2   c                 N    |dz
  }t        j                  | |z   d|z  z  |z
        S )Nr   ry   )r;   rN   )indexr~   ss      r0   _mirror_index_fixerr    s,    qA99eaiAE*Q.//r2   c                 `    t        j                  t        d| z  dz   d|z  dz         dz
  d      S )Nry   r   )r;   floor_divider  r	  r~   s     r0   _reflect_index_fixerr    s6    AIM1t8a<81<a r2   c                 6    t        j                  | d|dz
        S Nr   r   r;   r]   r  s     r0   <lambda>r    s    EJJua$B r2   c                 6    t        j                  | d|dz
        S r  r  r  s     r0   r  r    s    5::eQq#A r2   c                     | |z  S N r  s     r0   r  r    s
     r2   )r   r   r   r   r   c                 Z    t        j                  |       st        j                  |       syy)NTF)r;   is_floating_point
is_complex)as    r0   _is_integerr    s#    ""1%e.>.>q.Ar2   c                     t        |       r| nt        j                  |       } | j                  t        j                        }|dfgS Nr   )r  r;   rs   r&   rq   )
coordinater	  s     r0   _nearest_indices_and_weightsr     s<    !*-
5;;z3J  MM%++&EAJ<r2   c                     t        j                  |       }| |z
  }d|z
  }|j                  t         j                        }||f|dz   |fgS r  )r;   floorr&   rq   )r  lowerupper_weightlower_weightr	  s        r0   _linear_indices_and_weightsr&    sO    KK
#E%L|#LHHU[[!EL!EAI|#<==r2   c                 R   t        |       }|D cg c]  }t        |       }}t        |      t        |j                        k7  r$t        d|j                   dt        |             t        |d   j                        dk  r,t        |      }|f|d   j                  z   }	t        d|	       t	        |t
        t        f      rt        |      rt        |      }t        |      t        |j                        k7  r-t        dt        |       dt        |j                               t        j                  |      }
|
,t        dt        t        j                                d	|       |dk(  rt        }n|dk(  rt        }nt        d
      |dk(  rd }nd }g }t        ||j                        D ]P  \  }} ||      }g }|D ]+  \  }} |
||      } |||      }|j!                  |||f       - |j!                  |       R g }t#        j$                  | D ]  }t        | \  }}}t'        d |D              r||   }n>t)        j*                  t,        j.                  |      }t1        j2                  |||   |      }|j!                  t)        j*                  t,        j4                  |      |z          t)        j*                  t,        j6                  |      }t        |      r"t        |      r|nt1        j8                  |      }|j;                  |j<                        S c c}w )NzaFirst dim of `coordinates` must be the same as the rank of `inputs`. Received inputs with shape: z and coordinate leading dim of r   r   zOInvalid coordinates rank: expected at least rank 2. Received input with shape: z;coordinates must be a sequence of length inputs.shape, but z != z8Invalid value for argument `fill_mode`. Expected one of r   z+map_coordinates currently requires order<=1r   c                     d| k  | |k  z  S )Nr   r  r  s     r0   is_validz!map_coordinates.<locals>.is_valid+  s    J54<00r2   c                      y)NTr  r  s     r0   r)  z!map_coordinates.<locals>.is_valid0  s    r2   c              3   $   K   | ]  }|d u  
 yw)TNr  ).0valids     r0   	<genexpr>z"map_coordinates.<locals>.<genexpr>@  s     5u}5s   )r   rI   r$   r#   
isinstancer   r   r  _INDEX_FIXERSgetr   r   r   r&  NotImplementedErrorzipr   	itertoolsproductall	functoolsreduceoperatorand_r;   r>   muladdrs   r&   r'   )inputsr   r   r   r   	input_arrccoordinate_arrsr    r$   index_fixer
interp_funr)  valid_1d_interpolationsr  r~   interp_nodesvalid_interpr	  weightfixed_indexr-  outputsitemsr   
validitiesweightscontribution	all_validresults                                 r0   r   r     s#    "&)I5@A(+AOA
?s9??33++4??*; <!/235
 	
 ?1##$q(/"+111++0'3
 	
 *sEl+I0F_

;3y//I; S%9$:<
 	

  ##I.KF=%%'())?	{L
 	

 z1
	!0
!"OPPJ	1
	 !A 5
D!*-) 	>ME6%eT2KUD)EeV <=	> 	 &&|45 G""$;< 
O'*E{$W5*55$W-L!((
CI ;;9W-zL 	y''g>MN
O hllG4F9&v.EKK4G99Y__%%Y Bs   L$c           	      z   d }t        |       } t        |      }t        |      }| j                  }t        | j                        dvrt	        d| j                         d}| j
                  dk(  r| j                  d      } d}|d	k(  r| j                  ddd
d      } | j                  d
   } ||||      }|j                  |d
|d   |d
         }t        j                  j                  j                  | |d
t        |d   dz        |      }	|d	k(  r|	j                  dddd
      }	|r|	j                  d      }	|	S )Nc                 d    fdfd} || |      }|j                  dd| d   | d         }|S )Nc                     t        j                  | |j                        | dz
  dz  z
  }t        j                  d||z  dz  z        }|t        j                  |      z  S )Nr|   r   ry         )r;   r   r}   expsum)r~   sigmar   kernel1dr'   s       r0   _get_gaussian_kernel1dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel1dS  s^    Tu||D!8q.!  yyUq(8!89Heii111r2   c                 l     | d   |d         } | d   |d         }t        j                  ||      S r  )r;   outer)r~   rU  
kernel1d_x
kernel1d_yrW  s       r0   _get_gaussian_kernel2dzNgaussian_blur.<locals>._create_gaussian_kernel.<locals>._get_gaussian_kernel2d[  s<    /QqBJ/QqBJ;;z:66r2   r   r   )view)kernel_sizerU  r'   r\  kernelrW  s     `  @r0   _create_gaussian_kernelz.gaussian_blur.<locals>._create_gaussian_kernelR  s<    	2	7
 (U;Q;q>;q>Br2   r   r   Fr   r   r   Tr4   r   ry   )stridepaddinggroups)r   r'   rI   r$   r#   r"   r(   r   expandr;   r   r   conv2dr   rP   )
r*   r^  rU  r+   r`  r'   rh   num_channelsr_  blurred_imagess
             r0   gaussian_blurrh  O  sW   & v&F#K0Ke$ELLE
6<<&"LL>+
 	
 L{{a!!a!(o%1a+<<?L$[%?F]]<KNKNKFXX((//KNa'( 0 N o%'//1a;'//A/6r2   c                     t        |       \  }}t               }|dk(  ry t        j                  t                     }|j	                  t        ||z                |S )Nmeta)r}   )r   r   r;   	Generatormanual_seedr   )seed
first_seedsecond_seedr}   	generators        r0   _torch_seed_generatorrq    sP    'oJ\Fz|4I#j;678r2   c                    t        j                  |      }|t        j                         vr,t	        dt        t        j                                d|       |t        vrt	        dt         d|       t        | j                        dvrt	        d| j                         t        |       } t        |      }t        |      }| j                  }t        d|z        dz  t        d|z        dz  f}	d	}
| j                  d
k(  r| j                  d      } d}
|dk(  r| j                  \  }}}}d}n| j                  \  }}}}d}t               dk(  rt        |      nd }t!        j"                  dd|||f||| j$                        |z  }t!        j"                  dd|||f||| j$                        |z  }t'        |j                  |      |	||f|      }t'        |j                  |      |	||f|      }|j)                         }|j)                         }t!        j*                  t!        j,                  |      t!        j,                  |      d      \  }}|j                  d      j/                  | j$                        |j                  d      j/                  | j$                        }}|||z  z   }|||z  z   }t!        j0                  |       }|dk(  ret3        |      D ]V  }t!        j4                  t3        |      D cg c]'  }t7        | |d|f   ||   ||   gt        |   ||      ) c}      |d|f<   X nlt3        |      D ]^  }t!        j4                  t3        |      D cg c]'  }t7        | ||df   ||   ||   gt        |   ||      ) c}      |d d |d d d d f<   ` |
r|j)                  d      }|j/                  |      }|S c c}w c c}w )Nrw   rx   r   r   r   r      r   Fr   r   r   Tr4   r   rj  r6   r9   )r~   rp  r'   r}   )r^  rU  r+   r   r   .r   )r   r!   r   r   r#   r   r   rI   r$   r   r'   r   r"   r(   r   rq  r;   normalr}   rh  rP   r   r   r&   r   r   rQ   r   )r*   alpharU  r   r   r   rm  r+   input_dtyper^  rh   r   r   r   r   r,   rp  dxdyr   ydistorted_xdistorted_ytransformed_imagesr   r/   s                             r0   elastic_transformr}    s    11+>K;@@BBJ2779:; <*O-
 	

 33F*++A)N
 	
 6<<&"LL>+
 	
 v&Fe$Ee$E,,Kq5y>A%s1u9~'9:KL{{a!!a!(o%.4ll+
FE8.4ll+
Hfe/9|v/E%d+4Ife,==	
 	  	fe,==	
 	  

&en	
B 

&en	
B 
B	B>>UU\\&1DDAq ;;q>V]]+Q[[^->->v}}-MqAebj.Kebj.K))&1o%x 	A). #:.	  $q#qy)$QQ8=mL"+#-	*sAv&	 x 	A-2[[ #:.	  $q!Sy)$QQ8=mL"+#-	.q!Qz*	 /77:+..{;=		s   ?,O
$,O
c                     t        j                  t        j                  d| j                        dt        j                  |       z
        S )Nr   r   r   )r;   r<   tensorr'   rN   r   s    r0   _fill_triangle_kernelr     s/    ==aqww7UYYq\9IJJr2   c                     d| z  dz
  | z  | z  dz   }t        j                  | dk\  d| z  dz   | z  dz
  | z  dz   |      }t        j                  | dk\  d|      S )Ng      ?g      @r9   rR  r[   rZ   r6   )r;   r>   )r   outs     r0   _fill_keys_cubic_kernelr  $  sg    !GcMQ!
#c
)C
++a3h$(S.A!5!;q @3 F
LC;;qCxc**r2   c                    | t        j                  t        j                  |z        z  t        j                  t        j                  |z  | z        z  }t        j                  |dkD  t        j
                  |t        j                  |dk7  t        j                  dz  |dz  z  d            d      }t        j                  || kD  d|      S )NgMbP?r   ry   r   r6   )r;   sinnppir>   divide)radiusr   ry  r  s       r0   _fill_lanczos_kernelr  *  s    25519%%		"%%!)f2D(EEA
++	D%,,q%++a1fbeeQhAoq"IJAC ;;q6z3,,r2   c                     t        d|       S )NrY   r  r  s    r0   r  r  5      .sA6 r2   c                     t        d|       S )N      @r  r  s    r0   r  r  6  r  r2   )r   r   r   r   c                    t        t        j                  |j                  |j                              }d|z  }|r@t	        j
                  |t	        j                  d|j                  |j                              nd}t	        j                  |||j                        dz   |z  ||z  z
  dz
  }	t	        j                  |	t        j                  d d f   t	        j                  | ||	j                        d d t        j                  f   z
        |z  }
 ||
      }t	        j                  |dd      }t	        j                  t	        j                  |      dt        t        j                  t        j                         j"                        z  kD  t	        j$                  |t	        j                  |dk7  |d            d      }| dz
  }t	        j                  t	        j&                  |	d	k\  |	|k        t        j                  d d f   |d      S )
Nr9   r|   g      ?r   T)r    keepdimsg     @@r   rR  )r   r   r   r'   r;   r<   r  r}   r   rN   newaxisrT  r>   r   r  rL   r   rM   r  logical_and)
input_sizeoutput_sizescaletranslationr_  r   r'   	inv_scalekernel_scalesample_fr   rK  total_weight_suminput_size_minus_0_5s                 r0   _compute_weight_matr  :  s    7..u{{K<M<MNOEeI 	 	LLIOOI<L<LM	

   
ky7G7G	H3	N
	
	
!	" 	  			U]]A%&ll:U8??K5== 	
 	  QiGyya$?kk		"#fuRXXbjj5I5M5M/N&NNU[[!1Q!68H!L	
 	
G &+;;(d*H8L,LMMM1	
 		 r2   c                    t        |       } | j                  }t        |      dk(  r| S t        j                  | j
                        rt        | d      }d}	nt        j                  |       }d}	t        |      D ]z  \  }
}|| j                  z  }||   ||   }}t        t        ||||
   ||
   ||      |j
                        }t        j                  |||fdf      }t        j                  |d|      }| |	rft        j                  t        j                  |      t        j                   |       t        j"                  |             }t        || j
                        }|S )Nr   r   TF)r   )dimsr   )r   r$   rI   r   is_int_dtyper'   r   r;   r)   	enumerater"   r  	tensordotr   r]   rs   r   r   )r   output_shapespatial_dimsr  r  r_  r   input_shaper   use_roundingr   dmnws                  r0   _scale_and_translater  i  s5    	!A''K
<AAGG$a#Q,' 
/1J1~|A11eAhA	 LL	
 1$>A.
/ EKK/1uyy|Lfagg&Mr2   c           	      P   |t         vrt        dt          d|       |dv rd}n|dv rd}t        |       } t        |      }t        |      }t        |   }t	        j
                  |j                  |j                        }t        ||      }t        ||      }t        | ||||||      S )Nz5Invalid value for argument `method`. Expected of one z. Received: method=)r   r	   r   triangler   )r   r
   r   r   )	SCALE_AND_TRANSLATE_METHODSr#   r   _kernelsr   r   r'   r   r  )	r*   r  r  r  r  methodr   r_  r'   s	            r0   scale_and_translater    s     00C*++>vhH
 	
 @@	3	3v&Fe$E#K0KfF[->->?EE{E*K r2   c                    t        |       } |dk(  r| j                  dddd      }n| }|j                  d   }| j                  }t	        j
                  g dg dg dg| j                  |      }t	        j
                  g d	g d
g dg| j                  |      }|j                  dddd      j                  |ddd      }|j                  dddd      j                  |ddd      }t        j                  ||d|      }	t        j                  ||d|      }
t	        j                  |
|	gd      }|dk(  r|j                  ddddd      }|S )Nr4   r   r   r   ry   )r   r   r   )r{   r   ry   r|   )r   r{   r   )r   r   r   )r   ry   r   )rb  rc  r   r   r   )r   r   r$   r}   r;   r  r'   r]  r   r   re  rQ   )r*   r+   images_nchwr   r}   sobel_xsobel_ykernel_xkernel_yedges_xedges_yedgess               r0   sobel_edgesr    s@   v&F o%nnQ1a0  #H]]F ll	Z,llG
 ll	y),llG ||Aq!Q'..xAqAH||Aq!Q'..xAqAH hh{HaIGhh{HaIG KK'*3Eo%aAq!,Lr2   r  )r	   FFFr   r6   N)r	   r   r   N)r	   r   N)r   r6   ))r   r   )r9   r9   N)g      4@r  r	   r   r6   NN)T)7r7  r4  r9  numpyr  r;   torch._dynamo_dynamodynamotorch.nn.functionalr   r   r   	keras.srcr   keras.src.backend.torch.corer   r   r   r   keras.src.random.seed_generatorr   r   r   r   r   r  r1   rV   rd   rl   rt   r   r   r   r   r  r  r0  r  r   r&  r   rh  disablerq  r}  r  r  r  r  r  r  r  r  r  r2   r0   <module>r     s            - : 3 7 5  
 
 #  	 6/d%P5 * Vx i` iXTn0 CA,!#> BEP&h ?C=@   
	CLK+- $$66	,^J "J'r2   