
    jk	                    H    d dl mZ d dlmZ d dlZd dlmZmZ 	 	 	 	 dddZdS )    )annotations)PathN)LOGGERYAMLF modeltorch.nn.Moduleimtorch.Tensor
output_dir
Path | strhalfboolmetadatadict | Nonedevicetorch.device | Noneprefixstrreturnc           	        ddl m}  |dd            |d           ddl}ddl}	t	          j        d| d	|j         d
|	j         d           t          |          }t          |dz  	                                |dz  	                                |dz  	                                          }
t          |dz  	                                |dz  	                                |dz  	                                |dz  	                                |dz  	                                          }|
                    dd           ||j        nd} |	j        | fd|i|
|||d ddddg|                                R D ]%}t          |                              d           &|rt          j        |d z  |           t#          |          S )!aG  Export a PyTorch model to NCNN format using PNNX.

    Args:
        model (torch.nn.Module): The PyTorch model to export.
        im (torch.Tensor): Example input tensor for tracing.
        output_dir (Path | str): Directory to save the exported NCNN model.
        half (bool): Whether to enable FP16 export.
        metadata (dict | None): Optional metadata saved as ``metadata.yaml``.
        device (torch.device | None): Device the model lives on.
        prefix (str): Prefix for log messages.

    Returns:
        (str): Path to the exported ``_ncnn_model`` directory.
    r   )check_requirementsncnnz	--no-deps)cmdspnnxN
z starting export with NCNN z
 and PNNX z...zmodel.ncnn.paramzmodel.ncnn.binzmodel_ncnn.py)	ncnnparamncnnbinncnnpyzmodel.ptzmodel.pnnx.paramzmodel.pnnx.binzmodel_pnnx.pyzmodel.pnnx.onnx)ptpath	pnnxparampnnxbinpnnxpypnnxonnxT)parentsexist_okcpuinputs)fp16r   z	debug.binzdebug.paramz
debug2.binzdebug2.param)
missing_okzmetadata.yaml)ultralytics.utils.checksr   r   r   r   info__version__r   dictas_posixmkdirtypeexportvaluesunlinkr   saver   )r   r
   r   r   r   r   r   r   r   r   	ncnn_args	pnnx_argsdevice_typef_debugs                 `/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/ultralytics/utils/export/ncnn.py
torch2ncnnr;      s1   . <;;;;;vK0000vKKKKKK
KiVii8HiiTXTdiiijjjj!!J 22<<>>..88::_,6688  I
 Z'1133 22<<>>..88::_,668800::<<  I TD111!'!3&++KDKZZbZIZZkZZZZZnbyO_O_OaOabb . .W---- :	*.999z??    )FNNr   )r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   )	
__future__r   pathlibr   torchultralytics.utilsr   r   r;    r<   r:   <module>rB      s}    # " " " " "        * * * * * * * *  "&7 7 7 7 7 7 7r<   