
    &Vf6                         d dl Z d dlZd dlZd dlZd dlmZ i ZdZddZ	 	 	 	 	 	 	 ddZ	d ddZ
h dZ	 	 	 	 ddZd Zd Zd d d eedZd Zd Zd Z	 ddZdS )    Nconvert_to_tensor)lanczos3lanczos5channel_lastc                    	 dd l }n#  t          d          xY wt          |           } |dk    rY| j        dk    r|                     d          } n8| j        dk    r|                     d          } nt          d| j                   |j        j        	                    | 	          }|dk    r[t          | j                  dk    r|                    d
          }n-t          | j                  dk    r|                    d          }|S )Nr   zsThe torchvision package is necessary to use `rgb_to_grayscale` with the torch backend. Please install torchvision. channels_last   r            r   r   r   r   wInvalid input rank: expected rank 3 (single image) or rank 4 (batch of images). Received input with shape: image.shape=)imgr   r   r   r   r   r   r   )torchvisionImportErrorr   ndimpermute
ValueErrorshape
transforms
functionalrgb_to_grayscalelen)imagedata_formatr   grayscale_images       Z/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/torch/image.pyr   r      s=   

+
 
 	

 e$$Eo%%:??MM,//EEZ1__MM),,EE-${- -  
 ",7HH I  O o%%u{q  -55lCCOO""-55i@@Os    bilinearFconstant        r	   c	                 	   	 dd l }	ddlm}
 t                              |
j        |
j        |
j        d           n#  t          d          xY w|t          v rt          d| d          |t          vrt          dt           d|           |d	k    rt          d
|           |r|rt          d          t          |          dk    st          d|           t          |          }t          |           } |dk    rY| j        dk    r|                     d          } n8| j        dk    r|                     d          } nt          d| j                   |r| j        }|d         |d         }}|\  }}t#          t%          ||z            |z            }t'          ||          }t#          t%          ||z            |z            }t'          ||          }t#          t%          ||z
            dz            }t#          t%          ||z
            dz            }t          | j                  dk    r| d d d d |||z   |||z   f         } n| 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            }t          | j                  dk    rZ| j        d         }| j        d         }t+          j        ||||z   ||z   f| j                  |z  }| |d d d d |||z   |||z   f<   nH| j        d         }t+          j        |||z   ||z   f| j                  |z  }| |d d |||z   |||z   f<   |} |	j        j                            | |t          |         |          }|dk    r[t          | j                  dk    r|                    d          }n-t          | j                  dk    r|                    d          }|S )Nr   )InterpolationMode)r"   nearestbicubiczhThe torchvision package is necessary to use `resize` with the torch backend. Please install torchvision.zeResizing 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`.r   zPArgument `size` must be a tuple of two elements (height, width). Received: size=r	   r
   r   r   r   r   r   )dtype)r   sizeinterpolation	antialiasr   r   )r   torchvision.transformsr&   RESIZE_INTERPOLATIONSupdateBILINEARNEAREST_EXACTBICUBICr   UNSUPPORTED_INTERPOLATIONSr   r   tupler   r   r   r   intfloatminmaxtorchonesr.   r   r   resize)r   r/   r0   r1   crop_to_aspect_ratiopad_to_aspect_ratio	fill_mode
fill_valuer   r   imr   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_imgresizeds                               r!   r@   r@   1   s   
BBBBBB$$K+: 	
 	
 	
 	

9
 
 	
 2228'48 8 8
 
 	

 111P$P P@MP P
 
 	
 J=1:= =
 
 	
  
3 

 
 	
 t99>>6/36 6
 
 	
 ;;De$$Eo%%:??MM,//EEZ1__MM),,EE-${- -    Db	59&*#|% 566EFF&+..v455EFF

++
eF[$899A=>>eEJ$677!;<<u{q  /K"??/J">>@EE /K"??/J">>@EE
 
 -b	59&*#|u}455DEE
,,
f|344}DEE	y))	U:#677!;<<U9u#4559::u{q  QJ{1~H
" "V+!E)	  +   	 "  &!88%!779  {1~H
zF2I4EF+   	  	 &!88%!779
 $/66+M:	 7  G o%%u{q  ool33GG""ooi00GNs	   7: Ar   )r'   r"   >   wrapmirrorr'   reflectr#   c                 P    t                                           vr9t          dt          t                                                      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                     d           d}j        dk    r                    d          |dk    r 	                    d            j        d         }t          j        fd j        dd          D             ddi}t          j        d |D             d          }	t          j        |	|ddddf          }	d d df                                         }
d d df                                         }d d df                                         }d d df                                         }|d d df<   |d d df<   |
d d df<   |d d df<   t          j        j                            g ddd          t          j        |d
d
f          d d dddf                                         }t          j        j                            |g d          }dd d dddf<   t          j        d|	          t          j        dd          t          j        |g |j        dddR           z  t          j         fd t-          t/                               D                       }|dk    r|	                    d!          }|r|                    d          }|S )"Nr*   r+   z8Invalid value for argument `fill_mode`. Expected of one . Received: fill_mode=)r   r
   zwInvalid image rank: expected rank 3 (single image) or rank 4 (batch of images). Received input with shape: image.shape=)r   r   zInvalid transform rank: expected rank 1 (single transform) or rank 2 (batch of transforms). Received input with shape: transform.shape=Fr   r   dimTr   channels_firstr   c                 R    g | ]#}t          j        |j        j                   $S ))r.   device)r>   aranger.   r_   ).0r/   	transforms     r!   
<listcomp>z$affine_transform.<locals>.<listcomp>  s?     

 

 

 LY_Y=MNNN

 

 

    indexingijc                 :    g | ]}t          j        |d           S )r-   r[   )r>   	unsqueeze)ra   xs     r!   rc   z$affine_transform.<locals>.<listcomp>  s'    666	#	#	#666rd   r-   r   r
      )r   r   r   r   r#   )padmodevalue)rk   zBhwij, Bjk -> Bhwik)sourcedestination)ar   c           	      f    g | ]-}t          |         |         t                              .S ))orderrC   rD   )map_coordinatesAFFINE_TRANSFORM_INTERPOLATIONS)ra   icoordinatesrC   rD   r   r0   s     r!   rc   z$affine_transform.<locals>.<listcomp>-  sV     		
 		
 		
  aA5mD#%  		
 		
 		
rd   r   )rt   keysr   setAFFINE_TRANSFORM_FILL_MODESr   r   r   rh   r   r>   meshgridconcatenatetileclonennr   rk   reshapeeinsummoveaxisstackranger   squeeze)r   rb   r0   rC   rD   r   need_squeezerR   rz   indicesa0a2b1b2offsetaffinedrv   s   `````           @r!   affine_transformr      s    ;@@BBBB-27799::- -*- -
 
 	

 333N*N NBKN N
 
 	

 e$$E!),,Iz) ;) )
 
 	

 ~V##1(1 1
 
 	
 LzQA&&~''A'..	&&&l++QJ ~

 

 

 

ABB

 

 


  H 66X666B  G j:q!Q":;;G 
111a4			 	 B	111a4			 	 B	111a4			 	 B	111a4			 	 BIaaadOIaaadOIaaadOIaaadO #''|||*A (  I i*a);<<Iqqq!A#qy!''))FX $$V$>>FIaaa1ai ,4gyIIK.RQGGGK5=61I6<1I1IA1Iq1I1IJJJJK k		
 		
 		
 		
 		
 		
 		
 		
 3u::&&		
 		
 		
 G &&&//,// )//a/((Nrd   c                 L    |dz
  }t          j        | |z   d|z  z  |z
            S )Nr   r   )r>   abs)indexr/   ss      r!   _mirror_index_fixerr   @  s-    qA9eaiAE*Q.///rd   c                 f    t          j        t          d| z  dz   d|z  dz             dz
  d          S )Nr   r   )r>   floor_divider   r   r/   s     r!   _reflect_index_fixerr   F  s;    AIM1t8a<881<a  rd   c                 4    t          j        | d|dz
            S Nr   r   r>   clipr   s     r!   <lambda>r   N  s    EJua$B$B rd   c                 4    t          j        | d|dz
            S r   r   r   s     r!   r   r   O  s    5:eQq#A#A rd   c                     | |z  S )N r   s     r!   r   r   P  s
     rd   )r#   r'   rV   rW   rX   c                 Z    t          j        |           st          j        |           sdS dS )NTF)r>   is_floating_point
is_complex)rp   s    r!   _is_integerr   V  s1    "1%% e.>q.A.A t5rd   c                     t          |           r| nt          j        |           } |                     t          j                  }|dfgS Nr   )r   r>   roundtoint32)
coordinater   s     r!   _nearest_indices_and_weightsr   \  sF    !*--J

5;z3J3J  MM%+&&EAJ<rd   c                     t          j        |           }| |z
  }d|z
  }|                    t           j                  }||f|dz   |fgS r   )r>   floorr   r   )r   lowerupper_weightlower_weightr   s        r!   _linear_indices_and_weightsr   d  sQ    K
##E%L|#LHHU[!!EL!EAI|#<==rd   c                    t          |           }d |D             }t          |t          t          f          rt	          |          rt          |          }t          |          t          |j                  k    r4t          dt          |           dt          |j                             t          	                    |          }|9t          dt          t                                                     d|           |dk    rt          }n|dk    rt          }nt          d          |d	k    rd
 }	nd }	g }
t          ||j                  D ]_\  }} ||          }g }|D ]5\  }} |||          } |	||          }|                    |||f           6|
                    |           `g }t#          j        |
 D ]}t          | \  }}}t'          d |D                       r	||         }n;t)          j        t,          j        |          }t1          j        |||         |          }|                    t)          j        t,          j        |          |z             t)          j        t,          j        |          }t	          |          r%t	          |          r|nt1          j        |          }|                    |j                  S )Nc                 ,    g | ]}t          |          S r   r   )ra   cs     r!   rc   z#map_coordinates.<locals>.<listcomp>p  s!    AAA(++AAArd   z:coordinates must be a sequence of length input.shape, but z != z8Invalid value for argument `fill_mode`. Expected one of rZ   r   r   z+map_coordinates currently requires order<=1r#   c                     d| k    | |k     z  S )Nr   r   r   s     r!   is_validz!map_coordinates.<locals>.is_valid  s    J54<00rd   c                     dS )NTr   r   s     r!   r   z!map_coordinates.<locals>.is_valid  s    4rd   c              3      K   | ]}|d u V  	dS )TNr   )ra   valids     r!   	<genexpr>z"map_coordinates.<locals>.<genexpr>  s&      55u}555555rd   )r   
isinstancer:   r;   r   r   r   r   _INDEX_FIXERSgetrx   rw   r   r   NotImplementedErrorzipappend	itertoolsproductall	functoolsreduceoperatorand_r>   wheremuladdr   r   r.   )inputrv   rr   rC   rD   	input_arrcoordinate_arrsindex_fixer
interp_funr   valid_1d_interpolationsr   r/   interp_nodesvalid_interpr   weightfixed_indexr   outputsitemsr   
validitiesweightscontribution	all_validresults                              r!   rs   rs   l  s-    "%((IAA[AAAO*sEl++ %I0F0F %__

;3y////<;< <%(%9%9< <
 
 	

  ##I..KL=%%''((L L@IL L
 
 	

 zz1

	!0

!"OPPPJ	1 	1 	1 	1
	 	 	 !AA 5 5
D!z*--) 	> 	>ME6%+eT22KHUD))EeV <====&&|4444G"$;< 
O 
O'*E{$W55*55555 	$W-LL!(
CCI ;9W-z L 	y'g>>MNNNNhlG44F9 H&v..GEK4G4G99Y_%%%rd   )r   )r"   FFFr#   r$   r	   )r"   r#   r   r	   )r#   r$   )r   r   r   r>   keras.src.backend.torch.corer   r3   r8   r   r@   rt   ry   r   r   r   r   r   r   r   rs   r   rd   r!   <module>r      s             : : : : : :     F T T T Tp # #     h h h hV0 0 0   CBAA,,!#     > > > AD@& @& @& @& @& @&rd   