Ë
    èÓ^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j"                  j%                  d«      d„ «       Z e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© ó    új/var/www/ramen.bs-engineer-server.com/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_alignr7      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*   r0   r1   r2   Ú
batch_sizer6   ÚheightÚwidthr3   r4   s   ``         r   Úmeta_roi_align_backwardrC   (   ó@   ù€ ô 
‡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*   r0   r1   r2   r3   r6   r5   Úout_sizes	   ``       r   Úmeta_ps_roi_alignrP   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_mappingr0   r1   r2   r3   r@   r6   rA   rB   s   ``         r   Úmeta_ps_roi_align_backwardrU   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   rJ   ©rK   r'   rL   )r)   r*   r0   r1   r2   r5   r6   rO   s   ``      r   Úmeta_roi_poolr[   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*   Úargmaxr0   r1   r2   r@   r6   rA   rB   s
   ``        r   Úmeta_roi_pool_backwardr`   s   rD   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   rI   rJ   rZ   rL   )r)   r*   r0   r1   r2   r6   r5   rO   s   ``      r   Úmeta_ps_roi_poolre   �   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*   rT   r0   r1   r2   r@   r6   rA   rB   s
   ``        r   Úmeta_ps_roi_pool_backwardri   •   rD   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>¥   ó   ø€ Ð,MÈdÏhÉhËjÈ\ÐYZÐ*[€ r   r   é   c                  ó,   •— d‰ j                  d«      › �S ©Nz1boxes should have 4 elements in dimension 1, got r   ©r.   rq   s   €r   r!   zmeta_nms.<locals>.<lambda>¦   ó   ø€ Ð._Ð`d×`iÑ`iÐjkÓ`lÐ_mÐ,n€ r   c                  ó*   •— d‰ j                  «       › �S ©Nz"scores should be a 1d tensor, got ro   ©Úscoress   €r   r!   zmeta_nms.<locals>.<lambda>§   ó   ø€ Ð.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 rw   ©rr   r|   s   €€r   r!   zmeta_nms.<locals>.<lambda>ª   ó2   ø€ Ð[Ð\`×\eÑ\eÐfgÓ\hÐ[iÐinÐou×ozÑozÐ{|Óo}Ðn~Ð€ r   r&   ©	r   r-   rp   r.   Ú_custom_opsÚget_ctxÚcreate_unbacked_symintr/   Úlong©rr   r|   Úiou_thresholdÚctxÚnum_to_keeps   ``   r   Úmeta_nmsr‹   £   ó´   ù€ ä	‡L�L�—‘“˜q‘Ó"[Ô\Ü	‡L�L�—‘˜1“ Ñ"Ó$nÔoÜ	‡L�L�—‘“ Ñ"Ó$_Ô`Ü	‡L�LØ�	‰	�!‹˜Ÿ™ A›Ñ&Üôô ×
Ñ
×
#Ñ
#Ó
%€CØ×,Ñ,Ó.€KØ�>‰>˜+¬U¯Z©Zˆ>Ó8Ð8r   ztorchvision::qnmsc                 ó  ‡ ‡— 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 )
Nrk   c                  ó,   •— d‰ j                  «       › d�S rm   ro   rq   s   €r   r!   zmeta_qnms.<locals>.<lambda>³   rs   r   r   rt   c                  ó,   •— d‰ j                  d«      › �S rv   rw   rq   s   €r   r!   zmeta_qnms.<locals>.<lambda>´   rx   r   c                  ó*   •— d‰ j                  «       › �S rz   ro   r{   s   €r   r!   zmeta_qnms.<locals>.<lambda>µ   r}   r   r   c                  óP   •— d‰ j                  d«      › d‰j                  d«      › �S r   rw   r€   s   €€r   r!   zmeta_qnms.<locals>.<lambda>¸   r�   r   r&   r‚   r‡   s   ``   r   Ú	meta_qnmsr’   ±   rŒ   r   Ú
qroi_alignc                 ó(  ‡ ‡— t        j                  ‰j                  d«      dk(  d„ «       t        j                  ‰ j                  ‰j                  k(  ˆ ˆfd„«       ‰j                  d«      }‰ j                  d«      }‰ j	                  ||||f«      S )Nr   r   c                   ó   — yr    r
   r
   r   r   r!   z!meta_qroi_align.<locals>.<lambda>Í   r"   r   c                  ó<   •— d‰ j                   › d‰j                   › �S r$   r&   r(   s   €€r   r!   z!meta_qroi_align.<locals>.<lambda>Ð   r+   r   r   r,   )r)   r*   Úinput_scaleÚinput_zero_pointÚ
rois_scaleÚrois_zero_pointr0   r1   r2   r3   r4   r5   r6   s   ``           r   Úmeta_qroi_alignr›   ¿   sv   ù€ ô 
‡L�L�—‘˜1“ Ñ"Ñ$RÔSÜ	‡L�LØ�‰�t—z‘zÑ!ô	
ôð �y‰y˜‹|€HØ�z‰z˜!‹}€HØ�?‰?˜H h°¸|ÐLÓMÐMr   Ú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   r7   rC   rP   rU   r[   r`   re   ri   r   Úregister_faker‹   r’   r›   r°   r¼   r
   r   r   ú<module>rÄ      s´  ðÛ ã Û Û ó ð €×Ñ�TÓñ@ó ð@óñ ˆ{ÓñNó ðNñ Ð$Ó%ñ
Aó &ð
Añ ˆ~Óñ^ó ð^ñ( Ð'Ó(ñAó )ðAñ. ˆzÓñ^ó ð^ñ Ð#Ó$ñ
Aó %ð
Añ ˆ}Óñ^ó ð^ñ& Ð&Ó'ñ
Aó (ð
Að ‡�×ÑÐ/Ó0ñ
9ó 1ð
9ð ‡�×ÑÐ0Ó1ñ
9ó 2ð
9ñ ˆ|ÓñNó ðNñ4 ˆÓñNó  ðNñ. Ð(Ó)ñFó *ñFr   