
    ڧg.              
       j   d dl mZmZmZmZ d dlZd dlmZmZ ddee         dedefdZ	dee         defd	Z
deeee         f         fd
Z	 ddej        deee                  deee         ee         f         fdZdedefdZdedefdZdej        dej        deej        ej        f         fdZdS )    )ListOptionalTupleUnionN)nnTensortensorsdimreturnc                 b    t          |           dk    r| d         S t          j        | |          S )zg
    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     R/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchvision/ops/_utils.py_catr      s1     7||qqz9Wc"""    boxesc           	      $   t          d | D             d          }g }t          |           D ]9\  }}|                    t          j        |d d d df         |                     :t          |d          }t          j        ||gd          }|S )Nc                     g | ]}|S  r   ).0bs     r   
<listcomp>z/convert_boxes_to_roi_format.<locals>.<listcomp>   s    ***q***r   r   r
   r   )r   	enumerateappendr   	full_liker   )r   concat_boxestempir   idsroiss          r   convert_boxes_to_roi_formatr$      s    **E***222LD%   2 21EOAaaa!eHa001111
t


C9c<(a000DKr   c                 Z   t          | t          t          f          r2| D ].}t          j        |                    d          dk    d           /n\t          | t          j                  r-t          j        |                     d          dk    d           nt          j        dd           d S )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MQ1$&v   	 
E5<	(	( _ejjmmq(*abbbbe]^^^
Fr   modelnorm_classesc                    |sMt           j        j        j        t           j        t           j        t           j        j        j        t           j        g}|D ]/}t          |t           j
                  st          d| d          0t          |          }g }g }|                                 D ]}t          |                                d           r4|                    d |                    d          D                        Xt#          ||          r2|                    d |                                D                        |                    d |                                D                        ||fS )NzClass z  is not a subclass of nn.Module.c              3   (   K   | ]}|j         	|V  d S Nrequires_gradr   ps     r   	<genexpr>z-split_normalization_params.<locals>.<genexpr>@   s)      __aq_______r   F)recursec              3   (   K   | ]}|j         	|V  d S r3   r4   r6   s     r   r8   z-split_normalization_params.<locals>.<genexpr>B   s)      QQQQqQQQQQQr   c              3   (   K   | ]}|j         	|V  d S r3   r4   r6   s     r   r8   z-split_normalization_params.<locals>.<genexpr>D   s)      RRa!/RRRRRRRr   )r   modules	batchnorm
_BatchNorm	LayerNorm	GroupNorminstancenorm_InstanceNormLocalResponseNorm
issubclassModule
ValueErrorr*   nextchildrenextend
parametersr(   )r/   r0   tclassesnorm_paramsother_paramsmodules          r   split_normalization_paramsrP   )   s     
J +LLJ#1 
  K K!RY'' 	KIaIIIJJJ	K L!!GKL--// S S!!4(( 	S__6+<+<U+<+K+K_______(( 	SQQ&*;*;*=*=QQQQQQQRR6+<+<+>+>RRRRRRR$$r   rK   c                     |                                  r5| j        t          j        t          j        fv r| n|                                 S | j        t          j        t          j        fv r| n|                                 S r3   )	is_floating_pointdtyper   float32float64floatint32int64intrK   s    r   _upcastr[   H   se     GGu}===qq17799LGU[999qqquuwwFr   c                 l    | j         t          j        t          j        fvr|                                 S | S r3   )rS   r   rT   rU   rV   rZ   s    r   _upcast_non_floatr]   P   s+    wu}em444wwyyHr   boxes1boxes2c                    |                      d          \  }}}}|                     d          \  }}}}	t          j        ||          }
t          j        ||          }t          j        ||          }t          j        ||	          }t          j        |          }||k    ||
k    z  }||         |
|         z
  ||         ||         z
  z  ||<   ||z
  ||z
  z  ||z
  |	|z
  z  z   |z
  }||fS )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_unionru   W   s    
 ]]r]**NBB2..Cc3 Ib#EIb#EIb#EIb#Er""GEMeem,D4[5;.5;t3LMGDM2g"r'"cCiC#I%>>HFF?r   )r   r3   )typingr   r   r   r   r   r   r   rY   r   r$   r.   rE   typerP   r[   r]   ru   r   r   r   <module>rx      s   / / / / / / / / / / / /         # #$v, #S # # # # #tF|     
vtF|';!< 
 
 
 
 <@% %9%$,T$Z$8%
4<f%&% % % %>Gv G& G G G G F    LL 5<%&     r   