+
    G-jk  ã                   ó|  € R t ^ RIt^ RIt^ RIt^ RIHt R tRR R llt]R8X  d–   ]! 4       t	]! ]	P                  ]	P                  ]	P                  ]	P                  ]	P                  ]	P                  ]	P                   ]	P"                  ]	P$                  ]	P&                  ]	P(                  ]	P*                  R7       R# R# )	z@Provide entry point to preprocess ONNX model especially for QNN.N)Úqnnc            	     óN  € \         P                  ! RR7      p V P                  RRRRR7       V P                  RR	RR
R7       V P                  RRRR7       V P                  RRRR7       V P                  RRR7       V P                  RR\        RR7       V P                  RRRR7       V P                  RRRR7       V P                  RRRRR 7       V P                  R!RRR"R 7       V P                  R#^R$\        RR%R&7       V P                  R'RR(R7       V P                  4       # ))zParse cmdline arguments.z#Arguments for QNN model preprocess.)Údescriptionz--input_model_pathz-iTzPath to the input ONNX model.)ÚrequiredÚhelpz--output_model_pathz-ozPath to the output ONNX model.z--save_as_external_dataÚ
store_truez;Whether the output model would be saved with external data.)Úactionr   z--all_tensors_to_one_filezgWhether to save all external data in one file or save each tensor to a file named with the tensor name.z--external_data_locationzbFilename of the external file where all tensors are saved. The path is relative to the model path.)r   z--external_data_size_thresholdé   zQTensors with data size larger than this threshold are converted to external data.)ÚdefaultÚtyper   z!--external_data_convert_attributezKWhether to save all tensors, including attribute tensors, to external data.z--fuse_layernormzLWhether to fuse matched sequences into LayerNormalization nodes if possible.z--inputs_to_make_channel_lastÚ+Nz=List of graph input names to be transposed into channel-last.)Únargsr
   r   z--outputs_to_make_channel_lastz>List of graph output names to be transposed into channel-last.z--dynamic_input_shapesÚappendzdModel input name and desired static shape in comma seprated format, for example: 'input' 1,3,256,256)r   r   r   r
   r   z --exclude_initializer_from_inputzBWhether to exclude initializer from input if model.ir_version >= 4)ÚargparseÚArgumentParserÚadd_argumentÚintÚstrÚ
parse_args)Úparsers    Úq/Volumes/fast/ai/experiments/nudenet-smoke/.venv/lib/python3.14/site-packages/onnxruntime/tools/qnn/preprocess.pyÚ_parse_argumentsr      s‘  € ä×$Ò$Ð1VÔW€Fà
×ÑÐ,¨d¸TÐHgÐÔhØ
×ÑÐ-¨t¸dÐIiÐÔjð ×ÑØ!ØØJð ô ð
 ×ÑØ#ØØvð ô ð
 ×ÑØ"Øqð ô ð ×ÑØ(ØÜØ`ð	 ô ð ×ÑØ+ØØZð ô ð ×ÑØØØ[ð ô ð ×ÑØ'ØØØLð	 ô ð ×ÑØ(ØØØMð	 ô ð ×ÑØ ØØÜØØsð ô ð ×ÑØ*ØØQð ô ð ×ÑÓÐó    c                óÎ  € V ^8„  d   QhR\         \        P                  ,          \        P                  ,          R\         \        P                  ,          R\
        R\
        R\
        R\         R,          R\        R	\
        R
\        \         ,          R,          R\        \         ,          R,          R\        \        \         \         3,          ,          R,          R\
        R\
        /# )é   Úmodel_inputÚmodel_outputÚfuse_layernormÚsave_as_external_dataÚall_tensors_to_one_fileÚexternal_data_locationNÚexternal_data_size_thresholdÚexternal_data_convert_attributeÚinputs_to_make_channel_lastÚoutputs_to_make_channel_lastÚdynamic_input_shapesÚexclude_initializer_from_inputÚreturn)	r   ÚpathlibÚPathÚonnxÚ
ModelProtoÚboolr   ÚlistÚtuple)Úformats   "r   Ú__annotate__r0   \   sÍ   € ÷ 7ñ 7Ü”w—|‘|Õ#¤d§o¡oÕ5ð7äœŸ™Õ$ð7ô ð7ô  ð	7ô
 "ð7ô   $�Jð7ô #&ð7ô &*ð7ô "&¤c¥¨TÕ!1ð7ô #'¤s¥)¨dÕ"2ð7ô œu¤S¬# X�Õ/°$Õ6ð7ô %)ð7ô 
ñ7r   c                óF   € \         P                  ! V VVVVVVVVV	V
VR7      # )aØ  Preprocess ONNX model for QNN.

Args:
    model_input: A path or ONNX ModelProto specifiying the model to be preprocessed.
    model_output: A path specifying where the preprocessed model to be saved.
    fuse_layernorm: A bool specifying whether to fuse the matched sequence into a single LayerNormalization node.
        Defaults to False.
    save_as_external_data: A bool specifying whether to save model with external data. Defaults to False.
    all_tensors_to_one_file: A bool specifying whether to save all external data in one file or save each tensor to
        a file named with the tensor name. This argument is effective only when `save_as_external_data` is True.
        Defaults to False.
    external_data_location: A str specifying where to save the external data. The path is relative to the model
        path. This argument is effective only when `save_as_external_data` is True. Defaults to the model name.
    external_data_size_threshold: An int specifying the threshold of data size for tensors be saved as external
        data. This argument is effective only when `save_as_external_data` is True. Defaults to 1024.
    external_data_convert_attribute: A bool specifying whether to save all tensors including attributes as external
        data. This argument is effective only when `save_as_external_data` is True. Defaults to False.
    inputs_to_make_channel_last: A list of strs specifying graph input names to be transposed into channel-last.
        Defaults to None.
    outputs_to_make_channel_last: A list of strs specifying graph output names to be transposed into channel-last.
        Defaults to None.
    dynamic_input_shapes: A list of tuples specifying model input name to and its static shape in comma seprated
        format, for example: [('input', '1,3,256,256')]. Defaults to None.
    exclude_initializer_from_input: A bool specifying whether to exclude initializer from input. Defaults to False.

Returns:
    A bool indicating whether the model is modified.
©
r   r   r   r    r!   r"   r#   r$   r%   r&   )r   Úqnn_preprocess_model)r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   s   &&&&&&&&&&&&r   r3   r3   \   s<   € ôT ×#Ò#ØØØ%Ø3Ø 7Ø5Ø%AØ(GØ$?Ø%AØ1Ø'Eôð r   Ú__main__r2   )
FFFNr	   FNNNF)Ú__doc__r   r(   r*   Ú,onnxruntime.quantization.execution_providersr   r   r3   Ú__name__ÚargsÚinput_model_pathÚoutput_model_pathr   r   r   r    r!   r"   r#   r$   r%   r&   © r   r   Ú<module>r<      s¯   ðñ Gã Û ã å <òI÷X7ðt ˆzÔÙÓ€DÙØ×ÑØ×ÑØ×*Ñ*Ø"×8Ñ8Ø $× <Ñ <Ø#×:Ñ:Ø%)×%FÑ%FØ(,×(LÑ(LØ$(×$DÑ$DØ%)×%FÑ%FØ!×6Ñ6Ø'+×'JÑ'J÷ñ r   