§
    ù²Åj˜  ã            
       ó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     úGC:\Projects\Historical\venv\Lib\site-packages\torchvision/ops/_utils.pyÚ_catr      s1   € õ ˆ7�|„|�qÒÐØ�qŒzÐÝŒ9�W˜cÑ"Ô"Ð"ó    Ú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Ô2€LØ€DÝ˜%Ñ Ô ð 2ð 2‰ˆˆ1Ø�Š•E”O A a a a¨¨!¨ e¤H¨aÑ0Ô0Ñ1Ô1Ð1Ð1Ý
ˆt˜Ð
Ñ
Ô
€CÝŒ9�c˜<Ð(¨aÐ0Ñ0Ô0€DØ€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ñô ð ð ð	õ 
�E�5œ<Ñ	(Ô	(ð _ÝŒ�e—j’j ‘m”m qÒ(Ð*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)   è è € Ð_Ð_ aÈqÌÐ_ Ð_Ð_Ð_Ð_Ð_Ð_r   F)Úrecursec              3   ó(   K  — | ]}|j         ¯	|V — Œd S r3   r4   r6   s     r   r8   z-split_normalization_params.<locals>.<genexpr>B   s)   è è € ÐQÐQ QÀÄÐQ˜qÐ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ÐR aÀ!Ä/Ð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ˆÝ˜!�RœYÑ'Ô'ð 	KÝÐI aÐ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ÐR¨6×+<Ò+<Ñ+>Ô+>Ð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¬}Ð=Ð=Ð=ˆqˆqÀ1Ç7Â7Á9Ä9ÐLà”G¥¤­U¬[Ð9Ð9Ð9ˆqˆq¸q¿uºu¹w¼wÐ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+   € à„w•u”}¥e¤mÐ4Ð4Ð4Ø�wŠw‰yŒyÐØ€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 )Néÿÿÿÿr   )Ú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�]Ñ*Ô*�N€BˆˆB�ØŸš¨2˜Ñ.Ô.Ñ€Cˆˆc�3õ ŒI�b˜#ÑÔ€EÝŒI�b˜#ÑÔ€EÝŒI�b˜#ÑÔ€EÝŒI�b˜#ÑÔ€EåÔ˜rÑ"Ô"€GØ�EŠM˜e ešmÑ,€DØ˜4”[ 5¨¤;Ñ.°5¸´;ÀÀtÄÑ3LÑM€GˆD�MØ�2‰g˜"˜r™'Ñ" c¨C¡i°C¸#±IÑ%>Ñ>ÀÑH€Fà�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ð #°ð #ð #ð #ð #ð t¨F¤|ð ¸ð ð ð ð ð
  v¨t°F¬|Ð';Ô!<ð 
ð 
ð 
ð 
ð <@ð%ð %ØŒ9ð%Ø$,¨T°$¬ZÔ$8ð%à
ˆ4�Œ<˜˜fœÐ%Ô&ð%ð %ð %ð %ð>Gˆvð G˜&ð Gð Gð Gð Gð˜ð  Fð ð ð ð ðØŒLðàŒLðð ˆ5Œ<˜œÐ%Ô&ðð ð ð ð ð r   