Ë
    ëÓ^j´  ã                   óØ   — d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ  e«       Zddefd„Z d„ Z!d„ Z"y)z4CLI orchestrator for ONNX and TensorRT model export.é    N)ÚImage)ÚComposeÚResizeÚToDtypeÚToImage)Ú	Normalize)Úexport_onnx)Útrtexec)Úbuild_model)Úget_rank)Ú
get_logger)Úget_shaÚget_versionÚnum_channelsc                 ó’  — | €y|dk(  rRt         j                  j                  dd|d   |d   dft         j                  ¬«      }t	        j
                  |d¬«      }nVt        j                  |||d   |d   |¬«      }|S |dk7  rt        d	«      ‚t	        j                  | «      j                  d«      }t        t        |d   |d   f«      t        «       t        t        j                  d
¬«      t!        «       g«      } ||d «      \  }}	|j#                  |«      }t        j$                  t'        |«      D �	cg c]  }	|‘Œ c}	«      }|S c c}	w )Né   r   é   é   )ÚdtypeÚRGB)Úmode)Údevicez�Providing `infer_dir` is only supported for RGB models (num_channels=3). For non-RGB models, omit `infer_dir` to use a synthetic dummy input.T)Úscale)ÚnpÚrandomÚrandintÚuint8r   Ú	fromarrayÚtorchÚrandÚ
ValueErrorÚopenÚconvertr   r   r   r   Úfloat32r   ÚtoÚstackÚrange)
Ú	infer_dirÚshapeÚ
batch_sizer   r   ÚdummyÚimageÚinpsÚ
transformsÚ_s
             ú]/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/rfdetr/export/main.pyÚmake_infer_imager1      s/  € ØÐØ˜1ÒÜ—I‘I×%Ñ% a¨¨u°Q©x¸¸q¹À1Ð.EÌRÏXÉXÐ%ÓVˆEÜ—O‘O E°Ô6‰Eô —:‘:˜j¨,¸¸a¹À%ÈÁ(ÐSYÔZˆDØˆKà˜1ÒÜðWóð ô —
‘
˜9Ó%×-Ñ-¨eÓ4ˆää�E˜!‘H˜e A™hÐ'Ó(Ü‹IÜ”E—M‘M¨Ô.Ü‹Kð		
ó€Jñ ˜ Ó%�G€Dˆ!Ø�7‰7�6‹?€Dä�;‰;¤e¨JÓ&7Ö8 šÒ8Ó9€DØ€Kùò 9s   Ä2	Ec                 óx   — | j                  «       D ]'  }t        |t        j                  «      sŒt	        d«      ‚ y )Nz1BatchNorm2d found in the model. Please remove it.)ÚmodulesÚ
isinstanceÚnnÚBatchNorm2dr!   )ÚmodelÚmodules     r0   Úno_batch_normr9   E   s3   € Ø—-‘-“/ò RˆÜ�fœbŸn™nÕ-ÜÐPÓQÐQñRó    c                 ó¶  — t        «       }|dk7  rt        j                  d|› �«       n&t        «       }t        j                  d|xs d› �«       t        j                  dt	        | «      › �«       | j
                  dk(  rd}n:| j
                  dk(  rd}n(t        t        | j
                  «      «      }d	|› �| _        t        j
                  d«      }|t        j                  d
<   | j                  t        «       z   }t        j                  |«       t        j                  j                  |«       t        j                  |«       t!        | «      }t#        |t$        «      r|d   n|}t'        d„ |j)                  «       D «       «      }t        j                  d|› �«       t'        d„ |j*                  j)                  «       D «       «      }	t        j                  d|	› �«       t'        d„ |j*                  d   j,                  j)                  «       D «       «      }
t        j                  d|
› �«       t'        d„ |j*                  d   j.                  j)                  «       D «       «      }t        j                  d|› �«       t'        d„ |j0                  j)                  «       D «       «      }t        j                  d|› �«       | j2                  r£t        j4                  | j2                  dd¬«      }|j7                  |d   d¬«      }|j8                  s|j:                  r1t        j=                  d|j8                  d d |j:                  d d «       t        j                  d| j2                  › �«       | j>                  rtA        |«       |jC                  |«       tE        | jF                  | jH                  | jJ                  |«      }dg}| jL                  rdg}n| jN                  rg d¢}nd d!g}tQ        | d"d«      r||z   D �ci c]  }|dd#i“Œ	 }}nd }|jS                  «       jC                  d«       |jC                  d«      }t        jT                  «       5  | jL                  r, ||«      }t        jW                  d$|jH                  › �«       �n0| jN                  rã ||«      }|d%   }|d&   }|d'   }t#        |t        jX                  «      r=t        jW                  d(|jH                  › d)|jH                  › d*|jH                  › �«       n¶t        jW                  d(|jH                  › d)|jH                  › �«       t        jW                  d+|d,   jH                  › d-|d.   jH                  › d/|d0   jH                  › �«       nA ||«      }|d%   }|d&   }t        jW                  d(|jH                  › d)|jH                  › �«       d d d «       |j[                  «        |j[                  «       }t]        | j^                  |||||| jL                  | j`                  | jb                  tQ        | d1d «      ¬2«
      }|}| jd                  rtg        || «      }|}y c c}w # 1 sw Y   Œ“xY w)3NÚunknownzRunning from git repository: zRunning RF-DETR version: zExport config: ÚcudaÚ0ÚcpuÚ zcuda:ÚCUDA_VISIBLE_DEVICESr   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N©Únumel©Ú.0Úps     r0   ú	<genexpr>zmain.<locals>.<genexpr>i   s   è ø€ Ò= Q�q—w‘w—yÑ=ùó   ‚znumber of parameters: c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrC   rD   rF   s     r0   rI   zmain.<locals>.<genexpr>k   s   è ø€ ÒO¨a §¡§	ÑOùrJ   znumber of backbone parameters: c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrC   rD   rF   s     r0   rI   zmain.<locals>.<genexpr>m   s   è ø€ Ò ]¨q §¡§Ñ ]ùrJ   z number of projector parameters: c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrC   rD   rF   s     r0   rI   zmain.<locals>.<genexpr>o   s   è ø€ Ò'b°a¨¯©¯	Ñ'bùrJ   z'number of backbone encoder parameters: c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrC   rD   rF   s     r0   rI   zmain.<locals>.<genexpr>q   s   è ø€ Ò"U° 1§7¡7§9Ñ"UùrJ   z"number of transformer parameters: F)Úmap_locationÚweights_onlyr7   )Ústrictz6load_state_dict strict=False: missing=%s unexpected=%sé   zload checkpoints ÚinputÚfeatures)ÚdetsÚlabelsÚmasksrU   rV   Údynamic_batchÚbatchz PyTorch inference output shape: Ú
pred_boxesÚpred_logitsÚ
pred_masksz)PyTorch inference output shapes - Boxes: z
, Labels: z	, Masks: zMask spatial_features: Úspatial_featuresz, query_features: Úquery_featuresz, bias: ÚbiasÚvariant_name)Úbackbone_onlyÚverboseÚopset_versionr`   )4r   ÚloggerÚinfor   Úvarsr   ÚstrÚintr   ÚosÚenvironÚseedr   Úmanual_seedr   r   r   r4   ÚtupleÚsumÚ
parametersÚbackboneÚ	projectorÚencoderÚtransformerÚresumeÚloadÚload_state_dictÚmissing_keysÚunexpected_keysÚwarningÚ
layer_normr9   r%   r1   r(   r)   r*   ra   Úsegmentation_headÚgetattrÚevalÚno_gradÚdebugÚTensorr?   r	   Ú
output_dirrb   rc   Útensorrtr
   )ÚargsÚgit_infoÚversionÚ	device_idr   rk   Úresultr7   Ún_parametersÚn_backbone_parametersÚn_projector_parametersÚn_backbone_encoder_parametersÚn_transformer_parametersÚ
checkpointÚinput_tensorsÚinput_namesÚoutput_namesÚnameÚdynamic_axesrT   ÚoutputsrU   rV   rW   Úoutput_fileÚ	onnx_pathr/   s                              r0   Úmainr–   K   s‰  € Ü‹y€HØ�9ÒÜ�‰Ð3°H°:Ð>Õ?ä“-ˆÜ�‰Ð/°Ò0D¸9Ð/EÐFÔGÜ
‡K�K�/¤$ t£* Ð.Ô/à‡{�{�fÒØ‰	Ø	�‰˜Ò	Ø‰	äœ˜DŸK™KÓ(Ó)ˆ	Ø˜i˜[Ð)ˆŒô �\‰\˜%Ó €FØ)2„B‡J�JÐ%Ñ&ð �9‰9”x“zÑ!€DÜ	×Ñ�dÔÜ‡I�I‡N�N�4ÔÜ
‡K�K�Ôä˜Ó€FÜ# F¬EÔ2ˆF�1ŠI¸€EÜÑ=¨%×*:Ñ*:Ó*<Ô=Ó=€LÜ
‡K�KÐ(¨¨Ð7Ô8ÜÑO°5·>±>×3LÑ3LÓ3NÔOÓOÐÜ
‡K�KÐ1Ð2GÐ1HÐIÔJÜ Ñ ]°E·N±NÀ1Ñ4E×4OÑ4O×4ZÑ4ZÓ4\Ô ]Ó]ÐÜ
‡K�KÐ2Ð3IÐ2JÐKÔLÜ$'Ñ'b¸5¿>¹>È!Ñ;L×;TÑ;T×;_Ñ;_Ó;aÔ'bÓ$bÐ!Ü
‡K�KÐ9Ð:WÐ9XÐYÔZÜ"Ñ"U°e×6GÑ6G×6RÑ6RÓ6TÔ"UÓUÐÜ
‡K�KÐ4Ð5MÐ4NÐOÔPØ‡{‚{ä—Z‘Z §¡¸%ÈeÔTˆ
Ø×&Ñ& z°'Ñ':À5Ð&ÓIˆØ×Ò &×"8Ò"8Ü�N‰NØHØ×#Ñ# B QÐ'Ø×&Ñ& r¨Ð*ôô
 	�‰Ð'¨¯© }Ð5Ô6à‡‚Ü�eÔà	‡H�HˆVÔä$ T§^¡^°T·Z±ZÀÇÁÐRXÓY€MØ�)€KØ×ÒØ"�|‰Ø	×	Ò	Ú2‰à Ð)ˆÜˆt�_ eÔ,Ø7BÀ\Ñ7QÖR¨t˜˜q '˜lÑ*ÐRˆÑRàˆà	‡J�JƒL‡O�O�FÔØ!×$Ñ$ VÓ,€MÜ	�‰‹ñ kØ×ÒÙ˜]Ó+ˆHÜ�L‰LÐ;¸H¿N¹NÐ;KÐLÖMØ×#Ò#Ù˜MÓ*ˆGØ˜<Ñ(ˆDØ˜]Ñ+ˆFØ˜LÑ)ˆEÜ˜%¤§¡Ô.Ü—‘Ø?ÀÇ
Á
¸|È:ÐV\×VbÑVbÐUcð dØ#Ÿk™k˜]ð,õô —‘ÐHÈÏÉÈÐT^Ð_e×_kÑ_kÐ^lÐmÔnÜ—‘Ø-ØÐ/Ñ0×6Ñ6Ð7ð 8'Ø',Ð-=Ñ'>×'DÑ'DÐ&Eð FØ" 6™]×0Ñ0Ð1ð3õñ ˜MÓ*ˆGØ˜<Ñ(ˆDØ˜]Ñ+ˆFÜ�L‰LÐDÀTÇZÁZÀLÐPZÐ[a×[gÑ[gÐZhÐiÔj÷7kð8 
‡I�I„KØ!×%Ñ%Ó'€MäØ�‰ØØØØØØ×(Ñ(Ø—‘Ø×(Ñ(Ü˜T >°4Ó8ô€Kð €Ià‡}‚}Ü˜i¨Ó.ˆð 	�Aùòs S÷kð kús   Ï?Y
ÑE)YÙY)r=   r   )#Ú__doc__ri   r   Únumpyr   r   Útorch.nnr5   ÚPILr   Útorchvision.transforms.v2r   r   r   r   Úrfdetr.datasets.transformsr   Úrfdetr.export._onnx.exporterr	   Úrfdetr.export._tensorrtr
   Úrfdetr.modelsr   Úrfdetr.utilities.distributedr   Úrfdetr.utilities.loggerr   Úrfdetr.utilities.packager   r   rd   rh   r1   r9   r–   © r:   r0   ú<module>r¤      sX   ðñ ;ã 	Û ã Û Ý Ý ß GÓ Gå 0Ý 4Ý +Ý %Ý 1Ý .ß 9á	‹€ñ#ÐPSó #òLRó{r:   