
    h(                        S SK r S SKrS SKrS SKrS SKr\ R                  " S5      S 5       rSS jr\" S5      S 5       r	\" S5      S 5       r
\" S5      S	 5       r\" S
5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\R"                  R%                  S5      S 5       r\" S5      S 5       r\" S5      S 5       rg)    Nc                  D    [         R                  R                  SSS5      $ )NtorchvisionIMPLMeta)torchlibraryLibrary     W/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/_meta_registrations.pyget_meta_libr      s    ==  ??r   c                    ^ ^ U U4S jnU$ )Nc                    > [         R                  R                  5       (       aF  [        5       R	                  [        [        [        R                  R                   T5      T5      U 5        U $ N)r   	extension_has_opsr   implgetattrr   ops)fnop_nameoverload_names    r   wrapperregister_meta.<locals>.wrapper   sI      ))++N		0E0Ew(OQ^ _acd	r   r
   )r   r   r   s   `` r   register_metar      s    
 Nr   	roi_alignc                 *  ^ ^ [         R                  " TR                  S5      S:H  S 5        [         R                  " T R                  TR                  :H  U U4S j5        TR                  S5      nT R                  S5      nT R	                  XxX445      $ )N      c                      gNz$rois must have shape as Tensor[K, 5]r
   r
   r   r   <lambda> meta_roi_align.<locals>.<lambda>       ,Rr   c                  <   > ST R                    STR                    3$ NzMExpected tensor for input to have the same type as tensor for rois; but type  does not equal dtypeinputroiss   r   r"   r#      "    }$4TZZL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_alignr8      sp    	LL1"$RS	LLtzz!	
 yy|Hzz!}H??HLMMr   _roi_align_backwardc                    ^ ^ [         R                  " T R                  TR                  :H  U U4S j5        T R                  XVXx45      $ )Nc                  <   > ST R                    STR                    3$ NzLExpected tensor for grad to have the same type as tensor for rois; but type r'   r(   gradr,   s   r   r"   )meta_roi_align_backward.<locals>.<lambda>.   "    

|#3DJJ<Ar   r   r.   r)   r0   )r>   r,   r1   r2   r3   
batch_sizer7   heightwidthr4   r5   s   ``         r   meta_roi_align_backwardrE   (   <     
LL

djj 	
 >>:?@@r   ps_roi_alignc                   ^ ^ [         R                  " TR                  S5      S:H  S 5        [         R                  " T R                  TR                  :H  U U4S j5        T R                  S5      n[         R                  " XcU-  -  S:H  S5        TR                  S5      nXvX4-  -  X44nT R	                  U5      [         R
                  " U[         R                  SS94$ )	Nr   r   c                      gr!   r
   r
   r   r   r"   #meta_ps_roi_align.<locals>.<lambda>8   r$   r   c                  <   > ST R                    STR                    3$ r&   r(   r*   s   r   r"   rJ   ;   r-   r   r   Cinput channels must be a multiple of pooling height * pooling widthmeta)r)   devicer   r.   r/   r)   r0   emptyint32)	r+   r,   r1   r2   r3   r4   r7   r6   out_sizes	   ``       r   meta_ps_roi_alignrS   6   s    	LL1"$RS	LLtzz!	
 zz!}H	LLL01Q6M
 yy|H}'CDmbH??8$ekk(%++V\&]]]r   _ps_roi_align_backwardc                    ^ ^ [         R                  " T R                  TR                  :H  U U4S j5        T R                  XxX45      $ )Nc                  <   > ST R                    STR                    3$ r<   r(   r=   s   r   r"   ,meta_ps_roi_align_backward.<locals>.<lambda>[   r@   r   rA   )r>   r,   channel_mappingr1   r2   r3   r4   rB   r7   rC   rD   s   ``         r   meta_ps_roi_align_backwardrY   K   s<     
LL

djj 	
 >>:?@@r   roi_poolc                 v  ^ ^ [         R                  " TR                  S5      S:H  S 5        [         R                  " T R                  TR                  :H  U U4S j5        TR                  S5      nT R                  S5      nXVX44nT R	                  U5      [         R
                  " US[         R                  S94$ )Nr   r   c                      gr!   r
   r
   r   r   r"   meta_roi_pool.<locals>.<lambda>e   r$   r   c                  <   > ST R                    STR                    3$ r&   r(   r*   s   r   r"   r]   h   r-   r   r   rM   rN   r)   rO   )r+   r,   r1   r2   r3   r6   r7   rR   s   ``      r   meta_roi_poolr`   c   s    	LL1"$RS	LLtzz!	
 yy|Hzz!}HM@H??8$ekk(6QVQ\Q\&]]]r   _roi_pool_backwardc
                    ^ ^ [         R                  " T R                  TR                  :H  U U4S j5        T R                  XgX45      $ )Nc                  <   > ST R                    STR                    3$ r<   r(   r=   s   r   r"   (meta_roi_pool_backward.<locals>.<lambda>y   r@   r   rA   )
r>   r,   argmaxr1   r2   r3   rB   r7   rC   rD   s
   ``        r   meta_roi_pool_backwardrf   s   rF   r   ps_roi_poolc                   ^ ^ [         R                  " TR                  S5      S:H  S 5        [         R                  " T R                  TR                  :H  U U4S j5        T R                  S5      n[         R                  " XSU-  -  S:H  S5        TR                  S5      nXeX4-  -  X44nT R	                  U5      [         R
                  " US[         R                  S94$ )	Nr   r   c                      gr!   r
   r
   r   r   r"   "meta_ps_roi_pool.<locals>.<lambda>   r$   r   c                  <   > ST R                    STR                    3$ r&   r(   r*   s   r   r"   rj      r-   r   r   rL   rM   r_   rO   )r+   r,   r1   r2   r3   r7   r6   rR   s   ``      r   meta_ps_roi_poolrl      s    	LL1"$RS	LLtzz!	
 zz!}H	LLL01Q6M yy|H}'CDmbH??8$ekk(6QVQ\Q\&]]]r   _ps_roi_pool_backwardc
                    ^ ^ [         R                  " T R                  TR                  :H  U U4S j5        T R                  XgX45      $ )Nc                  <   > ST R                    STR                    3$ r<   r(   r=   s   r   r"   +meta_ps_roi_pool_backward.<locals>.<lambda>   r@   r   rA   )
r>   r,   rX   r1   r2   r3   rB   r7   rC   rD   s
   ``        r   meta_ps_roi_pool_backwardrq      rF   r   ztorchvision::nmsc                 "  ^ ^ [         R                  " T R                  5       S:H  U 4S j5        [         R                  " T R                  S5      S:H  U 4S j5        [         R                  " TR                  5       S:H  U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        [         R                  R                  5       nUR                  5       nT R                  U[         R                  S	9$ )
N   c                  ,   > ST R                  5        S3$ )Nz!boxes should be a 2d tensor, got Ddimdetss   r   r"   meta_nms.<locals>.<lambda>   s    ,Mdhhj\YZ*[r   r      c                  ,   > ST R                  S5       3$ )Nz1boxes should have 4 elements in dimension 1, got r   r/   rx   s   r   r"   rz      s    ._`d`i`ijk`l_m,nr   c                  *   > ST R                  5        3$ )Nz"scores should be a 1d tensor, got rv   )scoress   r   r"   rz      s    .PQWQ[Q[Q]P^,_r   r   c                  P   > ST R                  S5       STR                  S5       3$ )NzIboxes and scores should have same number of elements in dimension 0, got r   z and r}   )ry   r   s   r   r"   rz      s0    [\`\e\efg\h[iinouozoz{|o}n~r   r(   )	r   r.   rw   r/   _custom_opsget_ctxcreate_unbacked_symintr0   long)ry   r   iou_thresholdctxnum_to_keeps   ``   r   meta_nmsr      s    	LLq"[\	LL1"$no	LL"$_`	LL		!A& 


#
#
%C,,.K>>+UZZ>88r   deform_conv2dc                     UR                   SS  u  pUR                   S   nU R                   S   nU R                  UUX45      $ )Nr   )shaper0   )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_channelsrB   s                     r   meta_deform_conv2dr      sG    $ #LL-J<<?LQJ??JjLMMr   _deform_conv2d_backwardc                    UR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUUUUU4$ r   )r0   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<<0K""6<<0Ktzz*Itzz*I{KIEEr   )default)	functoolsr   torch._custom_opstorch.librarytorchvision.extensionr   	lru_cacher   r   r8   rE   rS   rY   r`   rf   rl   rq   r   register_faker   r   r   r
   r   r   <module>r      ss        T@ @ {N N $%
A &
A ~^ ^( '(A )A. z^ ^ #$
A %
A }^ ^& &'
A (
A /0
9 1
9 N  N. ()F *Fr   