
    h!              
       h   S SK JrJr  S SKrS SKJrJr  SS\\   S\S\4S jjrS\\   S\4S	 jr	S\\\\   4   4S
 jr
 SS\R                  S\\\      S\\\   \\   4   4S jjrS\S\4S jrS\S\4S jrS\R
                  S\R
                  S\\R
                  \R
                  4   4S jrg)    )OptionalUnionN)nnTensortensorsdimreturnc                 V    [        U 5      S:X  a  U S   $ [        R                  " X5      $ )z_
Efficient version of torch.cat that avoids a copy if there is only a single element in a list
   r   )lentorchcat)r   r   s     N/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/ops/_utils.py_catr      s)     7|qqz99W""    boxesc           	         [        U  Vs/ s H  oPM     snSS9n/ n[        U 5       H4  u  pAUR                  [        R                  " US S 2S S24   U5      5        M6     [        USS9n[        R
                  " XR/SS9nU$ s  snf )Nr   r   r   )r   	enumerateappendr   	full_liker   )r   bconcat_boxestempiidsroiss          r   convert_boxes_to_roi_formatr      s    E*EqE*2LD% EOOAa!eHa01 !
t
C99c(a0DK +s   Bc                 `   [        U [        [        45      (       a3  U  H,  n[        R                  " UR                  S5      S:H  S5        M.     g [        U [        R                  5      (       a*  [        R                  " U R                  S5      S:H  S5        g [        R                  " SS5        g )Nr      zNThe shape of the tensor in the boxes list is not correct as List[Tensor[L, 4]]   z5The boxes tensor shape is not correct as Tensor[K, 5]Fz>boxes is expected to be a Tensor[L, 5] or a List[Tensor[K, 4]])
isinstancelisttupler   _assertsizer   )r   _tensors     r   check_roi_boxes_shaper(      s    %$''GMMQ1$&v  	 
E5<<	(	(ejjmq(*ab  	e]^
r   modelnorm_classesc                    U(       du  [         R                  R                  R                  [         R                  [         R
                  [         R                  R                  R                  [         R                  /nU H1  n[        U[         R                  5      (       a  M$  [        SU S35      e   [        U5      n/ n/ nU R                  5        H  n[        UR                  5       S 5      (       a'  UR                  S UR!                  SS9 5       5        MI  [#        Xc5      (       a(  UR                  S UR!                  5        5       5        M  UR                  S UR!                  5        5       5        M     XE4$ )NzClass z  is not a subclass of nn.Module.c              3   J   #    U  H  oR                   (       d  M  Uv   M     g 7fNrequires_grad.0ps     r   	<genexpr>-split_normalization_params.<locals>.<genexpr>@   s     _+Ka+K   #	#F)recursec              3   J   #    U  H  oR                   (       d  M  Uv   M     g 7fr-   r.   r0   s     r   r3   r4   B   s     Q*=Qqq*=r5   c              3   J   #    U  H  oR                   (       d  M  Uv   M     g 7fr-   r.   r0   s     r   r3   r4   D   s     R+>a//+>r5   )r   modules	batchnorm
_BatchNorm	LayerNorm	GroupNorminstancenorm_InstanceNormLocalResponseNorm
issubclassModule
ValueErrorr$   nextchildrenextend
parametersr"   )r)   r*   tclassesnorm_paramsother_paramsmodules          r   split_normalization_paramsrM   )   s)    JJ  ++LLLLJJ##11  
 !RYY''vaS(HIJJ  L!GKL--/!4((_6+<+<U+<+K__((Q&*;*;*=QQR6+<+<+>RR " $$r   rH   c                 ,   U R                  5       (       a@  U R                  [        R                  [        R                  4;   a  U $ U R                  5       $ U R                  [        R                  [        R                  4;   a  U $ U R                  5       $ r-   )	is_floating_pointdtyper   float32float64floatint32int64intrH   s    r   _upcastrX   H   sc    GGu}}==qL1779LGGU[[99qFquuwFr   c                     U R                   [        R                  [        R                  4;  a  U R	                  5       $ U $ r-   )rP   r   rQ   rR   rS   rW   s    r   _upcast_non_floatrZ   P   s,    wwu}}emm44wwyHr   boxes1boxes2c                    U R                  SS9u  p#pEUR                  SS9u  pgp[        R                  " X&5      n
[        R                  " X75      n[        R                  " XH5      n[        R                  " XY5      n[        R                  " U5      nX:  X:  -  nX   X   -
  X   X   -
  -  X'   XB-
  XS-
  -  X-
  X-
  -  -   U-
  nUU4$ )Nr   )unbindr   maxmin
zeros_like)r[   r\   x1y1x2y2x1gy1gx2gy2gxkis1ykis1xkis2ykis2intsctkmaskunionks                    r   _loss_inter_unionrr   W   s    
 ]]r]*NBB2.Cc IIbEIIbEIIbEIIbEr"GMem,D[5;.5;3LMGMg"'"ciCI%>>HFF?r   )r   r-   )typingr   r   r   r   r   r#   rV   r   r   r(   rB   typer$   rM   rX   rZ   rr    r   r   <module>rv      s   "  #$v, #S # #tF|  
vtF|';!< 
 <@%99%$,T$Z$8%
4<f%&%>Gv G& G F LLLL 5<<%&r   