
    ^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)devicezProviding `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II%%auQxq1.ERXX%VEOOE6E ::j,a%(SYZDK1W  

9%--e4E!HeAh'(IEMM.K		
J %GD!776?D;;eJ&7889D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fbnn-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                  rt        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                          nt        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     =Qqwwy=   znumber of parameters: c              3   <   K   | ]  }|j                           y wrC   rD   rF   s     r0   rI   zmain.<locals>.<genexpr>k   s     Oa	OrJ   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     'ba	'brJ   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1779"UrJ   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   yH93H:>?-/0D9/EFG
KK/$t*./{{f				DKK()	i[) \\% F)2BJJ%& 99xz!D	dIINN4
KKF#FE2F1IE=%*:*:*<==L
KK(78O5>>3L3L3NOO
KK12G1HIJ  ]ENN14E4O4O4Z4Z4\ ]]
KK23I2JKL$''b5>>!;L;T;T;_;_;a'b$b!
KK9:W9XYZ""Ue6G6G6R6R6T"UU
KK45M4NOP{{ZZ%eT
&&z'':5&I&"8"8NNH##BQ'&&r*
 	'}56e	HHV$T^^TZZRXYM)K"|			2)t_e,7B\7QRtq'l*RR	JJLOOF!$$V,M	 k]+HLL;HNN;KLM##M*G<(D]+FL)E%.?

|:V\VbVbUc d#kk], 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LLDTZZLPZ[a[g[gZhij7k8 
IIK!%%'M((((T>48K I}}i. 	As 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:   