ó
    EñiU  ã            	       óô   • S SK r S SKrS SKrS SKJr  S SKJr  SrSr	\r
\" SSS5      S 5       rS	 rS
 rS\4S jr\" SSSSSSS5      S 5       r\" SSSSSSS5      S 5       r\" SSSSS5      S 5       rS rg)é    N)Úsymbolic_opset11)Ú
parse_argsé   é   ÚvÚfc                 ó  • [         R                  " XS5      n[         R                  " U [         R                  " XS5      S5      nU R                  S[        R                  " [
        R                  /[        R                  S9S9nU R                  S[        R                  " U/[        R                  S9S9nU R                  SU R                  SU[        R                  R                  R                  S9U R                  SU[        R                  R                  R                  S9UU5      n[         R                  " U [         R                  " XSU R                  S[        R                  " S	/[        R                  S9S95      S5      $ )
Nr   ÚConstant©Údtype©Úvalue_tÚNonMaxSuppressionÚCast©Úto_ié   é   )Úopset11Ú	unsqueezeÚopÚtorchÚtensorÚsysÚmaxsizeÚlongÚfloatÚonnxÚTensorProtoDataTypeÚFLOATÚsqueezeÚselect)ÚgÚboxesÚscoresÚiou_thresholdÚmax_output_per_classÚnms_outs         Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/ops/_register_onnx_ops.pyÚsymbolic_multi_label_nmsr*      s-  € ä×Ò˜a¨Ó*€EÜ×Ò˜q¤'×"3Ò"3°A¸qÓ"AÀ1ÓE€FØŸ4™4 
´E·L²LÄ#Ç+Á+ÀÔV[×V`ÑV`Ñ4a˜4ÐbÐØ—D‘D˜¬U¯\ª\¸=¸/ÔQV×Q\ÑQ\Ñ-]�DÐ^€Mð �d‰dØØ	�‰ˆV�U¤§¡×!?Ñ!?×!EÑ!EˆÐFØ	�‰ˆV�V¤%§*¡*×"@Ñ"@×"FÑ"FˆÐGØØó€Gô �?Š?Ø	Œ7�>Š>˜! a¨¯©¨jÄ%Ç,Â,ÐPQÈsÔZ_×ZdÑZdÑBe¨Ð)fÓgÐijóð ó    c                 ó$  • [         R                  " U [         R                  " XSU R                  S[        R
                  " S/[        R                  S9S95      S5      nU R                  SU[        R                  R                  R                  S9$ )Nr   r
   r   r   r   r   r   )
r   r!   r"   r   r   r   r   r   r   ÚINT64)r#   ÚroisÚindicess      r)   Ú$_process_batch_indices_for_roi_alignr0   !   sm   € Ü�oŠoØ	Œ7�>Š>˜! 1 a§d¡d¨:¼u¿|º|ÈQÈCÔW\×WaÑWaÑ?b dÐ&cÓdÐfgó€Gð �4‰4�˜¤e§j¡j×&DÑ&D×&JÑ&Jˆ4ÐKÐKr+   c                 ó”   • [         R                  " XSU R                  S[        R                  " / SQ[        R
                  S9S95      $ )Nr   r
   )r   r   é   é   r   r   )r   r"   r   r   r   r   )r#   r.   s     r)   Ú_process_rois_for_roi_alignr4   (   s4   € Ü�>Š>˜! 1 a§d¡d¨:¼u¿|º|ÊLÔ`e×`jÑ`jÑ?k dÐ&lÓmÐmr+   Úsampling_ratioc                 óB   • US:  a  [         R                  " S5        SnU$ )Nr   z€ONNX export for RoIAlign with a non-zero sampling_ratio is not supported. The model will be exported with a sampling_ratio of 0.)ÚwarningsÚwarn)r#   r5   s     r)   Ú%_process_sampling_ratio_for_roi_alignr9   ,   s)   € Ø˜ÓÜ�ŠðEô	
ð ˆØÐr+   Úic                 óª   • [        X5      n[        X5      nU(       a  [        R                  " S5        [	        X5      nU R                  SUUUUUUUS9$ )NzyROIAlign with aligned=True is only supported in opset >= 16. Please export with opset 16 or higher, or use aligned=False.ÚRoiAlign)Úspatial_scale_fÚoutput_height_iÚoutput_width_iÚsampling_ratio_i)r0   r4   r7   r8   r9   r   )	r#   Úinputr.   Úspatial_scaleÚpooled_heightÚpooled_widthr5   ÚalignedÚbatch_indicess	            r)   Úroi_align_opset11rG   6   se   € ä8¸ÓA€MÜ& qÓ/€DÞÜ�ŠðKô	
ô ;¸1ÓM€NØ�4‰4ØØØØØ%Ø%Ø#Ø'ð ð 	ð 	r+   c                 óˆ   • [        X5      n[        X5      nU(       a  SOSn	[        X5      nU R                  SUUUU	UUUUS9	$ )NÚ
half_pixelÚoutput_half_pixelr<   )Ú coordinate_transformation_mode_sr=   r>   r?   r@   )r0   r4   r9   r   )
r#   rA   r.   rB   rC   rD   r5   rE   rF   Úcoordinate_transformation_modes
             r)   Úroi_align_opset16rM   L   s\   € ä8¸ÓA€MÜ& qÓ/€DÞ5<¡\ÐBUÐ"Ü:¸1ÓM€NØ�4‰4ØØØØØ)GØ%Ø%Ø#Ø'ð ð 
ð 
r+   c                 ó0   • U R                  SXXE4US9nUS 4$ )NÚ
MaxRoiPool)Úpooled_shape_ir=   )r   )r#   rA   r.   rB   rC   rD   Úroi_pools          r)   rQ   rQ   _   s.   € à�t‰tØ�e°=Ð2OÐanð ð €Hð �Tˆ>Ðr+   c                  óL  • [         R                  R                  S[        [        5        [         R                  R                  S[
        [        5        [         R                  R                  S[        [        5        [         R                  R                  S[        [        5        g )Nztorchvision::nmsztorchvision::roi_alignztorchvision::roi_pool)	r   r   Úregister_custom_op_symbolicr*   Ú_ONNX_OPSET_VERSION_11rG   rM   Ú_ONNX_OPSET_VERSION_16rQ   © r+   r)   Ú_register_custom_oprW   g   se   € Ü	‡J�J×*Ñ*Ð+=Ô?WÔYoÔpÜ	‡J�J×*Ñ*Ð+CÔEVÔXnÔoÜ	‡J�J×*Ñ*Ð+CÔEVÔXnÔoÜ	‡J�J×*Ñ*Ð+BÄHÔNdÕer+   )r   r7   r   Ú
torch.onnxr   r   Útorch.onnx.symbolic_helperr   rT   rU   ÚBASE_ONNX_OPSET_VERSIONr*   r0   r4   Úintr9   rG   rM   rQ   rW   rV   r+   r)   Ú<module>r\      sÌ   ðÛ 
Û ã Ý 2Ý 1àÐ ØÐ Ø0Ð ñ ˆC��cÓñó ðò&Lònð¸Sô ñ ˆC��c˜3  S¨#Ó.ñó /ðñ* ˆC��c˜3  S¨#Ó.ñó /ðñ$ ˆC��c˜3 Ó$ñó %ðófr+   