§
    ù²Åj	  ã                   ó>  — d dl Z d dlZd dlZd dlZd dlZ e j        d¦  «        d„ ¦   «         Zdd„Z ed¦  «        d„ ¦   «         Z	 ed¦  «        d„ ¦   «         Z
 ed	¦  «        d
„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Zej                             d¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         ZdS )é    Nc                  óD   — t           j                             ddd¦  «        S )NÚtorchvisionÚIMPLÚMeta)ÚtorchÚlibraryÚLibrary© ó    úPC:\Projects\Historical\venv\Lib\site-packages\torchvision/_meta_registrations.pyÚget_meta_libr      s   € åŒ=× Ò  °¸Ñ?Ô?Ð?r   Údefaultc                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 óÞ   •— t           j                             ¦   «         rMt          ¦   «                              t          t          t          j        j         ‰¦  «        ‰¦  «        | ¦  «         | S ©N)r   Ú	extensionÚ_has_opsr   ÚimplÚgetattrr   Úops)ÚfnÚop_nameÚoverload_names    €€r   Úwrapperzregister_meta.<locals>.wrapper   sU   ø€ ÝÔ ×)Ò)Ñ+Ô+ð 	eÝ‰NŒN×Ò¥­µ´	Ô0EÀwÑ(OÔ(OÐQ^Ñ _Ô _ÐacÑdÔdÐdØˆ	r   r
   )r   r   r   s   `` r   Úregister_metar      s)   øø€ ðð ð ð ð ð ð
 €Nr   Ú	roi_alignc                 ó4  ‡ ‡— t          j        ‰                     d¦  «        dk    d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                     d¦  «        }‰                      d¦  «        }‰                      ||||f¦  «        S )Né   é   c                  ó   — dS ©Nz$rois must have shape as Tensor[K, 5]r
   r
   r   r   ú<lambda>z meta_roi_align.<locals>.<lambda>   ó   € Ð,R€ r   c                  ó(   •— d‰ j         › d‰j         › �S ©NzMExpected tensor for input to have the same type as tensor for rois; but type ú does not equal ©Údtype©ÚinputÚroiss   €€r   r"   z meta_roi_align.<locals>.<lambda>   ó0   ø€ ðBØœðBð BØ59´ZðBð Bð r   r   )r   Ú_checkÚsizer(   Ú	new_empty)	r*   r+   Úspatial_scaleÚpooled_heightÚpooled_widthÚsampling_ratioÚalignedÚnum_roisÚchannelss	   ``       r   Úmeta_roi_alignr7      s�   øø€ å	„L�—’˜1‘” Ò"Ð$RÐ$RÑSÔSÐSÝ	„LØŒ�t”zÒ!ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �yŠy˜‰|Œ|€HØ�zŠz˜!‰}Œ}€HØ�?Š?˜H h°¸|ÐLÑMÔMÐMr   Ú_roi_align_backwardc                 ó†   ‡ ‡— t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      ||||f¦  «        S )Nc                  ó(   •— d‰ j         › d‰j         › �S ©NzLExpected tensor for grad to have the same type as tensor for rois; but type r&   r'   ©Úgradr+   s   €€r   r"   z)meta_roi_align_backward.<locals>.<lambda>.   ó0   ø€ ðAØœ
ðAð AØ48´JðAð Að r   ©r   r-   r(   r/   )r=   r+   r0   r1   r2   Ú
batch_sizer6   ÚheightÚwidthr3   r4   s   ``         r   Úmeta_roi_align_backwardrC   (   ó\   øø€ õ 
„LØŒ
�d”jÒ ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �>Š>˜: x°¸Ð?Ñ@Ô@Ð@r   Úps_roi_alignc                 óÄ  ‡ ‡— t          j        ‰                     d¦  «        dk    d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      d¦  «        }t          j        |||z  z  dk    d¦  «         ‰                     d¦  «        }||||z  z  ||f}‰                      |¦  «        t          j        |t           j        d¬¦  «        fS )	Nr   r   c                  ó   — dS r!   r
   r
   r   r   r"   z#meta_ps_roi_align.<locals>.<lambda>8   r#   r   c                  ó(   •— d‰ j         › d‰j         › �S r%   r'   r)   s   €€r   r"   z#meta_ps_roi_align.<locals>.<lambda>;   r,   r   r   úCinput channels must be a multiple of pooling height * pooling widthÚmeta)r(   Údevice©r   r-   r.   r(   r/   ÚemptyÚint32)	r*   r+   r0   r1   r2   r3   r6   r5   Úout_sizes	   ``       r   Úmeta_ps_roi_alignrP   6   sñ   øø€ å	„L�—’˜1‘” Ò"Ð$RÐ$RÑSÔSÐSÝ	„LØŒ�t”zÒ!ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �zŠz˜!‰}Œ}€HÝ	„LØ�M LÑ0Ñ1°QÒ6ØMñô ð ð
 �yŠy˜‰|Œ|€HØ˜( }°|Ñ'CÑDÀmÐUaÐb€HØ�?Š?˜8Ñ$Ô$¥e¤k°(Å%Ä+ÐV\Ð&]Ñ&]Ô&]Ð]Ð]r   Ú_ps_roi_align_backwardc                 ó†   ‡ ‡— t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      |||	|
f¦  «        S )Nc                  ó(   •— d‰ j         › d‰j         › �S r;   r'   r<   s   €€r   r"   z,meta_ps_roi_align_backward.<locals>.<lambda>[   r>   r   r?   )r=   r+   Úchannel_mappingr0   r1   r2   r3   r@   r6   rA   rB   s   ``         r   Úmeta_ps_roi_align_backwardrU   K   s\   øø€ õ 
„LØŒ
�d”jÒ ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �>Š>˜: x°¸Ð?Ñ@Ô@Ð@r   Úroi_poolc                 óz  ‡ ‡— t          j        ‰                     d¦  «        dk    d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                     d¦  «        }‰                      d¦  «        }||||f}‰                      |¦  «        t          j        |dt           j        ¬¦  «        fS )Nr   r   c                  ó   — dS r!   r
   r
   r   r   r"   zmeta_roi_pool.<locals>.<lambda>e   r#   r   c                  ó(   •— d‰ j         › d‰j         › �S r%   r'   r)   s   €€r   r"   zmeta_roi_pool.<locals>.<lambda>h   r,   r   r   rJ   ©rK   r(   rL   )r*   r+   r0   r1   r2   r5   r6   rO   s   ``      r   Úmeta_roi_poolr[   c   s¼   øø€ å	„L�—’˜1‘” Ò"Ð$RÐ$RÑSÔSÐSÝ	„LØŒ�t”zÒ!ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �yŠy˜‰|Œ|€HØ�zŠz˜!‰}Œ}€HØ˜( M°<Ð@€HØ�?Š?˜8Ñ$Ô$¥e¤k°(À6ÕQVÔQ\Ð&]Ñ&]Ô&]Ð]Ð]r   Ú_roi_pool_backwardc
                 ó†   ‡ ‡— t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      ||||	f¦  «        S )Nc                  ó(   •— d‰ j         › d‰j         › �S r;   r'   r<   s   €€r   r"   z(meta_roi_pool_backward.<locals>.<lambda>y   r>   r   r?   )
r=   r+   Úargmaxr0   r1   r2   r@   r6   rA   rB   s
   ``        r   Úmeta_roi_pool_backwardr`   s   rD   r   Úps_roi_poolc                 óÄ  ‡ ‡— t          j        ‰                     d¦  «        dk    d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      d¦  «        }t          j        |||z  z  dk    d¦  «         ‰                     d¦  «        }||||z  z  ||f}‰                      |¦  «        t          j        |dt           j        ¬¦  «        fS )	Nr   r   c                  ó   — dS r!   r
   r
   r   r   r"   z"meta_ps_roi_pool.<locals>.<lambda>ƒ   r#   r   c                  ó(   •— d‰ j         › d‰j         › �S r%   r'   r)   s   €€r   r"   z"meta_ps_roi_pool.<locals>.<lambda>†   r,   r   r   rI   rJ   rZ   rL   )r*   r+   r0   r1   r2   r6   r5   rO   s   ``      r   Úmeta_ps_roi_poolre   �   sò   øø€ å	„L�—’˜1‘” Ò"Ð$RÐ$RÑSÔSÐSÝ	„LØŒ�t”zÒ!ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �zŠz˜!‰}Œ}€HÝ	„LØ�M LÑ0Ñ1°QÒ6ØMñô ð ð �yŠy˜‰|Œ|€HØ˜( }°|Ñ'CÑDÀmÐUaÐb€HØ�?Š?˜8Ñ$Ô$¥e¤k°(À6ÕQVÔQ\Ð&]Ñ&]Ô&]Ð]Ð]r   Ú_ps_roi_pool_backwardc
                 ó†   ‡ ‡— t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      ||||	f¦  «        S )Nc                  ó(   •— d‰ j         › d‰j         › �S r;   r'   r<   s   €€r   r"   z+meta_ps_roi_pool_backward.<locals>.<lambda>›   r>   r   r?   )
r=   r+   rT   r0   r1   r2   r@   r6   rA   rB   s
   ``        r   Úmeta_ps_roi_pool_backwardri   •   rD   r   ztorchvision::nmsc                 óH  ‡ ‡— t          j        ‰                      ¦   «         dk    ˆ fd„¦  «         t          j        ‰                      d¦  «        dk    ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         t           j                             ¦   «         }|                     ¦   «         }‰                      |t           j        ¬	¦  «        S )
Né   c                  ó4   •— d‰                       ¦   «         › d�S )Nz!boxes should be a 2d tensor, got ÚD©Údim©Údetss   €r   r"   zmeta_nms.<locals>.<lambda>¥   s   ø€ Ð*[ÈdÏhÊhÉjÌjÐ*[Ð*[Ð*[€ r   r   é   c                  ó4   •— d‰                       d¦  «        › �S )Nz1boxes should have 4 elements in dimension 1, got r   ©r.   rp   s   €r   r"   zmeta_nms.<locals>.<lambda>¦   s    ø€ Ð,nÐ`d×`iÒ`iÐjkÑ`lÔ`lÐ,nÐ,n€ r   c                  ó2   •— d‰                       ¦   «         › �S )Nz"scores should be a 1d tensor, got rn   )Úscoress   €r   r"   zmeta_nms.<locals>.<lambda>§   s   ø€ Ð,_ÐQW×Q[ÒQ[ÑQ]ÔQ]Ð,_Ð,_€ r   r   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )NzIboxes and scores should have same number of elements in dimension 0, got r   z and rt   )rq   rv   s   €€r   r"   zmeta_nms.<locals>.<lambda>ª   s8   ø€ ÐÐ\`×\eÒ\eÐfgÑ\hÔ\hÐÐÐou×ozÒozÐ{|Ño}Ôo}ÐÐ€ r   r'   )	r   r-   ro   r.   Ú_custom_opsÚget_ctxÚcreate_unbacked_symintr/   Úlong)rq   rv   Úiou_thresholdÚctxÚnum_to_keeps   ``   r   Úmeta_nmsr   £   sþ   øø€ å	„L�—’‘”˜q’Ð"[Ð"[Ð"[Ð"[Ñ\Ô\Ð\Ý	„L�—’˜1‘” Ò"Ð$nÐ$nÐ$nÐ$nÑoÔoÐoÝ	„L�—’‘” Ò"Ð$_Ð$_Ð$_Ð$_Ñ`Ô`Ð`Ý	„LØ�	Š	�!‰Œ˜Ÿš A™œÒ&ØÐÐÐÐñô ð õ Ô
×
#Ò
#Ñ
%Ô
%€CØ×,Ò,Ñ.Ô.€KØ�>Š>˜+­U¬Zˆ>Ñ8Ô8Ð8r   Údeform_conv2dc                 óŒ   — |j         dd …         \  }}|j         d         }| j         d         }|                      ||||f¦  «        S )Néþÿÿÿr   )Úshaper/   )r*   ÚweightÚoffsetÚmaskÚbiasÚstride_hÚstride_wÚpad_hÚpad_wÚdil_hÚdil_wÚn_weight_grpsÚn_offset_grpsÚuse_maskÚ
out_heightÚ	out_widthÚout_channelsr@   s                     r   Úmeta_deform_conv2dr”   ±   sJ   € ð$ #œL¨¨¨Ô-Ñ€J�	Ø”< ”?€LØ”˜Q”€JØ�?Š?˜J¨°jÀ)ÐLÑMÔMÐMr   Ú_deform_conv2d_backwardc                 ó  — |                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|||||fS r   )r/   rƒ   )r=   r*   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   Ú
dilation_hÚ
dilation_wÚgroupsÚoffset_groupsr�   Ú
grad_inputÚgrad_weightÚgrad_offsetÚ	grad_maskÚ	grad_biass                       r   Úmeta_deform_conv2d_backwardr    É   sx   € ð& —’ ¤Ñ-Ô-€JØ×"Ò" 6¤<Ñ0Ô0€KØ×"Ò" 6¤<Ñ0Ô0€KØ—’˜tœzÑ*Ô*€IØ—’˜tœzÑ*Ô*€IØ�{ K°¸IÐEÐEr   )r   )Ú	functoolsr   Útorch._custom_opsÚtorch.libraryÚtorchvision.extensionr   Ú	lru_cacher   r   r7   rC   rP   rU   r[   r`   re   ri   r   Úregister_faker   r”   r    r
   r   r   ú<module>r§      sX  ðØ Ð Ð Ð à €€€Ø Ð Ð Ð Ø Ð Ð Ð ð Ð Ð Ð ð €Ô�TÑÔð@ð @ñ Ôð@ðð ð ð ð €ˆ{ÑÔðNð Nñ ÔðNð €Ð$Ñ%Ô%ð
Að 
Añ &Ô%ð
Að €ˆ~ÑÔð^ð ^ñ Ôð^ð( €Ð'Ñ(Ô(ðAð Añ )Ô(ðAð. €ˆzÑÔð^ð ^ñ Ôð^ð €Ð#Ñ$Ô$ð
Að 
Añ %Ô$ð
Að €ˆ}ÑÔð^ð ^ñ Ôð^ð& €Ð&Ñ'Ô'ð
Að 
Añ (Ô'ð
Að „×ÒÐ/Ñ0Ô0ð
9ð 
9ñ 1Ô0ð
9ð €ˆÑÔðNð Nñ  ÔðNð. €Ð(Ñ)Ô)ðFð Fñ *Ô)ðFð Fð Fr   