Ë
    þÍ: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"                  j%                  d«      d„ «       Z ed«      d„ «       Z ed«      d„ «       Zy)é    Nc                  óD   — t         j                  j                  ddd«      S )NÚtorchvisionÚIMPLÚMeta)ÚtorchÚlibraryÚLibrary© ó    út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/_meta_registrations.pyÚget_meta_libr      s   € ä�=‰=× Ñ  °¸Ó?Ð?r   c                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 óÐ   •— t         j                  j                  «       rFt        «       j	                  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   sF   ø€ Ü× Ñ ×)Ñ)Ô+Ü‹N×Ñ¤¬´·	±	×0EÑ0EÀwÓ(OÐQ^Ó _ÐacÔdØˆ	r   r
   )r   r   r   s   `` r   Úregister_metar      s   ù€ õð
 €Nr   Ú	roi_alignc                 ó(  ‡ ‡— t        j                  ‰j                  d«      dk(  d„ «       t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰j                  d«      }‰ j                  d«      }‰ j	                  ||||f«      S )Né   é   c                   ó   — y©Nz$rois must have shape as Tensor[K, 5]r
   r
   r   r   ú<lambda>z meta_roi_align.<locals>.<lambda>   ó   � 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>   ó'   ø€ ðØŸ™�}Ð$4°T·Z±Z°Lð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_alignr6      st   ù€ ä	‡L�L�—‘˜1“ Ñ"Ñ$RÔSÜ	‡L�LØ�‰�t—z‘zÑ!ô	
ôð �y‰y˜‹|€HØ�z‰z˜!‹}€HØ�?‰?˜H h°¸|ÐLÓMÐMr   Ú_roi_align_backwardc                 ó’   ‡ ‡— t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  ||||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>.   ó'   ø€ ðØŸ
™
�|Ð#3°D·J±J°<ðAð r   ©r   r,   r'   r.   )r<   r*   r/   r0   r1   Ú
batch_sizer5   ÚheightÚwidthr2   r3   s   ``         r   Úmeta_roi_align_backwardrB   (   ó@   ù€ ô 
‡L�LØ�
‰
�d—j‘jÑ ô	
ôð �>‰>˜: x°¸Ð?Ó@Ð@r   Úps_roi_alignc                 óÂ  ‡ ‡— t        j                  ‰j                  d«      dk(  d„ «       t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  d«      }t        j                  |||z  z  dk(  d«       ‰j                  d«      }||||z  z  ||f}‰ j	                  |«      t        j
                  |t         j                  d¬«      fS )	Nr   r   c                   ó   — y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*   r/   r0   r1   r2   r5   r4   Úout_sizes	   ``       r   Úmeta_ps_roi_alignrO   6   s¾   ù€ ä	‡L�L�—‘˜1“ Ñ"Ñ$RÔSÜ	‡L�LØ�‰�t—z‘zÑ!ô	
ôð �z‰z˜!‹}€HÜ	‡L�LØ�M LÑ0Ñ1°QÑ6ØMôð
 �y‰y˜‹|€HØ˜( }°|Ñ'CÑDÀmÐUaÐb€HØ�?‰?˜8Ó$¤e§k¡k°(Ä%Ç+Á+ÐV\Ô&]Ð]Ð]r   Ú_ps_roi_align_backwardc                 ó’   ‡ ‡— t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  |||	|
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_mappingr/   r0   r1   r2   r?   r5   r@   rA   s   ``         r   Úmeta_ps_roi_align_backwardrT   K   s@   ù€ ô 
‡L�LØ�
‰
�d—j‘jÑ ô	
ôð �>‰>˜: x°¸Ð?Ó@Ð@r   Úroi_poolc                 óx  ‡ ‡— t        j                  ‰j                  d«      dk(  d„ «       t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰j                  d«      }‰ j                  d«      }||||f}‰ j	                  |«      t        j
                  |dt         j                  ¬«      fS )Nr   r   c                   ó   — y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   rI   ©rJ   r'   rK   )r)   r*   r/   r0   r1   r4   r5   rN   s   ``      r   Úmeta_roi_poolrZ   c   s’   ù€ ä	‡L�L�—‘˜1“ Ñ"Ñ$RÔSÜ	‡L�LØ�‰�t—z‘zÑ!ô	
ôð �y‰y˜‹|€HØ�z‰z˜!‹}€HØ˜( M°<Ð@€HØ�?‰?˜8Ó$¤e§k¡k°(À6ÔQV×Q\ÑQ\Ô&]Ð]Ð]r   Ú_roi_pool_backwardc
                 ó’   ‡ ‡— t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  ||||	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*   Úargmaxr/   r0   r1   r?   r5   r@   rA   s
   ``        r   Úmeta_roi_pool_backwardr_   s   rC   r   Úps_roi_poolc                 óÂ  ‡ ‡— t        j                  ‰j                  d«      dk(  d„ «       t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  d«      }t        j                  |||z  z  dk(  d«       ‰j                  d«      }||||z  z  ||f}‰ j	                  |«      t        j
                  |dt         j                  ¬«      fS )	Nr   r   c                   ó   — y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   rH   rI   rY   rK   )r)   r*   r/   r0   r1   r5   r4   rN   s   ``      r   Úmeta_ps_roi_poolrd   �   sÀ   ù€ ä	‡L�L�—‘˜1“ Ñ"Ñ$RÔSÜ	‡L�LØ�‰�t—z‘zÑ!ô	
ôð �z‰z˜!‹}€HÜ	‡L�LØ�M LÑ0Ñ1°QÑ6ØMôð �y‰y˜‹|€HØ˜( }°|Ñ'CÑDÀmÐUaÐb€HØ�?‰?˜8Ó$¤e§k¡k°(À6ÔQV×Q\ÑQ\Ô&]Ð]Ð]r   Ú_ps_roi_pool_backwardc
                 ó’   ‡ ‡— t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰ j                  ||||	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*   rS   r/   r0   r1   r?   r5   r@   rA   s
   ``        r   Úmeta_ps_roi_pool_backwardrh   •   rC   r   ztorchvision::nmsc                 ó  ‡ ‡— t        j                  ‰ j                  «       dk(  ˆ fd„«       t        j                  ‰ j                  d«      dk(  ˆ fd„«       t        j                  ‰j                  «       dk(  ˆfd„«       t        j                  ‰ j                  d«      ‰j                  d«      k(  ˆ ˆfd„«       t         j                  j                  «       }|j                  «       }‰ j                  |t         j                  ¬	«      S )
Né   c                  ó,   •— d‰ j                  «       › d�S )Nz!boxes should be a 2d tensor, got ÚD©Údim©Údetss   €r   r!   zmeta_nms.<locals>.<lambda>¥   s   ø€ Ð,MÈdÏhÉhËjÈ\ÐYZÐ*[€ r   r   é   c                  ó,   •— d‰ j                  d«      › �S )Nz1boxes should have 4 elements in dimension 1, got r   ©r-   ro   s   €r   r!   zmeta_nms.<locals>.<lambda>¦   s   ø€ Ð._Ð`d×`iÑ`iÐjkÓ`lÐ_mÐ,n€ r   c                  ó*   •— d‰ j                  «       › �S )Nz"scores should be a 1d tensor, got rm   )Úscoress   €r   r!   zmeta_nms.<locals>.<lambda>§   s   ø€ Ð.PÐQW×Q[ÑQ[ÓQ]ÐP^Ð,_€ r   r   c                  óP   •— d‰ j                  d«      › d‰j                  d«      › �S )NzIboxes and scores should have same number of elements in dimension 0, got r   z and rs   )rp   ru   s   €€r   r!   zmeta_nms.<locals>.<lambda>ª   s2   ø€ Ð[Ð\`×\eÑ\eÐfgÓ\hÐ[iÐinÐou×ozÑozÐ{|Óo}Ðn~Ð€ r   r&   )	r   r,   rn   r-   Ú_custom_opsÚget_ctxÚcreate_unbacked_symintr.   Úlong)rp   ru   Úiou_thresholdÚctxÚnum_to_keeps   ``   r   Úmeta_nmsr~   £   s´   ù€ ä	‡L�L�—‘“˜q‘Ó"[Ô\Ü	‡L�L�—‘˜1“ Ñ"Ó$nÔoÜ	‡L�L�—‘“ Ñ"Ó$_Ô`Ü	‡L�LØ�	‰	�!‹˜Ÿ™ A›Ñ&Üôô ×
Ñ
×
#Ñ
#Ó
%€CØ×,Ñ,Ó.€KØ�>‰>˜+¬U¯Z©Zˆ>Ó8Ð8r   Údeform_conv2dc                 óŒ   — |j                   dd  \  }}|j                   d   }| j                   d   }| j                  ||||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“   ±   sK   € ð$ #ŸL™L¨¨Ð-Ñ€J�	Ø—<‘< ‘?€LØ—‘˜Q‘€JØ�?‰?˜J¨°jÀ)ÐLÓMÐMr   Ú_deform_conv2d_backwardc                 ó  — |j                  |j                  «      }|j                  |j                  «      }|j                  |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Ÿ   É   ss   € ð& —‘ §¡Ó-€JØ×"Ñ" 6§<¡<Ó0€KØ×"Ñ" 6§<¡<Ó0€KØ—‘˜tŸz™zÓ*€IØ—‘˜tŸz™zÓ*€IØ�{ K°¸IÐEÐEr   )Údefault)Ú	functoolsr   Útorch._custom_opsÚtorch.libraryÚtorchvision.extensionr   Ú	lru_cacher   r   r6   rB   rO   rT   rZ   r_   rd   rh   r   Úregister_faker~   r“   rŸ   r
   r   r   ú<module>r§      su  ðÛ ã Û Û ó ð €×Ñ�TÓñ@ó ð@óñ ˆ{ÓñNó ðNñ Ð$Ó%ñ
Aó &ð
Añ ˆ~Óñ^ó ð^ñ( Ð'Ó(ñAó )ðAñ. ˆzÓñ^ó ð^ñ Ð#Ó$ñ
Aó %ð
Añ ˆ}Óñ^ó ð^ñ& Ð&Ó'ñ
Aó (ð
Að ‡�×ÑÐ/Ó0ñ
9ó 1ð
9ñ ˆÓñNó  ðNñ. Ð(Ó)ñFó *ñFr   