Ë
    èÓ^jU  ã            	       óò   — d dl Z d dlZd dlZd dlmZ d dlmZ dZdZ	eZ
 eddd«      d„ «       Zd	„ Zd
„ Zdefd„Z eddddddd«      d„ «       Z eddddddd«      d„ «       Z eddddd«      d„ «       Zd„ Zy)é    N)Úsymbolic_opset11)Ú
parse_argsé   é   ÚvÚfc                 ó>  — t        j                  | |d«      }t        j                  | t        j                  | |d«      d«      }| j                  dt        j                  t
        j                  gt        j                  ¬«      ¬«      }| j                  dt        j                  |gt        j                  ¬«      ¬«      }| j                  d| j                  d|t        j                  j                  j                  ¬«      | j                  d|t        j                  j                  j                  ¬«      ||«      }t        j                  | t        j                  | |d| j                  dt        j                  d	gt        j                  ¬«      ¬«      «      d«      S )
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         úm/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torchvision/ops/_register_onnx_ops.pyÚsymbolic_multi_label_nmsr*      s3  € ä×Ñ˜a ¨Ó*€EÜ×Ñ˜q¤'×"3Ñ"3°A°v¸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�>‰>˜!˜W a¨¯©¨jÄ%Ç,Á,ÐPQÈsÔZ_×ZdÑZdÔBe¨Ó)fÓgÐijóð ó    c                 ó2  — t        j                  | t        j                  | |d| j                  dt	        j
                  dgt        j                  ¬«      ¬«      «      d«      }| j                  d|t        j                  j                  j                  ¬«      S )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   !   so   € Ü�o‰oØ	Œ7�>‰>˜!˜T 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                 óž   — t        j                  | |d| j                  dt        j                  g d¢t        j
                  ¬«      ¬«      «      S )Nr   r
   )r   r   é   é   r   r   )r   r"   r   r   r   r   )r#   r.   s     r)   Ú_process_rois_for_roi_alignr4   (   s6   € Ü�>‰>˜!˜T 1 a§d¡d¨:¼u¿|¹|ÊLÔ`e×`jÑ`jÔ?k dÓ&lÓmÐmr+   Úsampling_ratioc                 ó>   — |dk  rt        j                  d«       d}|S )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           
      óª   — t        | |«      }t        | |«      }|rt        j                  d«       t	        | |«      }| j                  d|||||||¬«      S )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   sk   € ä8¸¸DÓA€MÜ& q¨$Ó/€DÙÜ�‰ðKô	
ô ;¸1¸nÓM€NØ�4‰4ØØØØØ%Ø%Ø#Ø'ð ó 	ð 	r+   c                 óŠ   — t        | |«      }t        | |«      }|rdnd}	t        | |«      }| j                  d||||	||||¬«	      S )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   sb   € ä8¸¸DÓA€MÜ& q¨$Ó/€DÙ5<¡\ÐBUÐ"Ü:¸1¸nÓM€NØ�4‰4ØØØØØ)GØ%Ø%Ø#Ø'ð ó 
ð 
r+   c                 ó:   — | j                  d||||f|¬«      }|d fS )NÚ
MaxRoiPool)Úpooled_shape_ir=   )r   )r#   rA   r.   rB   rC   rD   Úroi_pools          r)   rQ   rQ   _   s2   € à�t‰tØ�e˜T°=À,Ð2OÐanð ó €Hð �Tˆ>Ðr+   c                  óL  — t         j                  j                  dt        t        «       t         j                  j                  dt
        t        «       t         j                  j                  dt        t        «       t         j                  j                  dt        t        «       y )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+   