
    j                    z    d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z
d dlZd dlmZmZ d dlmZ 	 	 	 dddZdS )    )annotationsN)Callable)Path)Any)LOGGERYAML)check_requirementsmodel torch.nn.Module
output_dir
Path | strcalibration_datasettorch.utils.data.DataLoadertransform_fnCallable[[Any], np.ndarray]
model_namestrmetadatadict | Noneprefixreturnc                   t           j                            d          }dt           j        d<   	 ddlm} n'# t
          $ r t          dd           ddlm} Y nw xY wddlm}	 dd	l	m
}
 t          j        d
| d           t          |          }|                    dd            |
|           } |	||dddd          }|                    | |||          }|                    |||           | ddfD ]B}t          |          }|                                r|                    ||j        z             Cdh}ddh}|                                D ]<}|                                r&|j        |vr|j        |vr|                                 =|t1          j        |dz  |           |!t           j                            dd           n|t           j        d<   t7          |          S )a  Convert a YOLO model to Axelera format.

    Args:
        model (torch.nn.Module): Source YOLO model for quantization.
        output_dir (Path | str): Directory to save the exported Axelera model.
        calibration_dataset (torch.utils.data.DataLoader): Calibration dataloader for quantization.
        transform_fn (Callable[[Any], np.ndarray]): Calibration preprocessing transform function.
        model_name (str, optional): Name for the compiled model. Defaults to "model".
        metadata (dict | None, optional): Optional metadata to save as YAML. Defaults to None.
        prefix (str, optional): Prefix for log messages. Defaults to "".

    Returns:
        (str): Path to exported Axelera model directory.
    &PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATIONpythonr   )compilerzaxelera-devkit==1.6.0zV--extra-index-url https://software.axelera.ai/artifactory/api/pypi/axelera-pypi/simple)cmds)CompilerConfig)extract_ultralytics_metadata
z) starting export with Axelera compiler...T)parentsexist_okg      ?   batch)model_metadatar   resources_usedaipu_cores_usedmulticore_modeoutput_axm_format)r
   r   configr   )r
   r*   r   z.axmzcompiler_config_final.tomlzmetadata.yamlN)osenvirongetaxelerar   ImportErrorr	   axelera.compilerr   &axelera.compiler.config.model_specificr   r   infor   mkdirquantizecompileexistsreplacenameiterdiris_filesuffixunlinkr   savepopr   )r
   r   r   r   r   r   r   prev_protobufr   r   r   axelera_model_metadatar*   qmodelartifactartifact_pathkeep_suffixes
keep_namesfs                      c/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/ultralytics/utils/export/axelera.pytorch2axelerarH      s   . JNN#KLLM;CBJ78%$$$$$$$ % % %#i	
 	
 	
 	
 	%$$$$$$$% 0/////SSSSSS
KFVFFFGGGj!!JTD11199%@@^-  F /!	   F 6&ZHHH"(((*FG C CX!! 	C!!*}/A"ABBB HM.@J!!  99;; 	18=88QV:=U=UHHJJJ	*.999 

?FFFF?L
;<z??s   7 !AA)r
   Nr   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
__future__r   r+   collections.abcr   pathlibr   typingr   numpynptorchultralytics.utilsr   r   ultralytics.utils.checksr	   rH        rG   <module>rT      s    # " " " " " 				 $ $ $ $ $ $                  * * * * * * * * 7 7 7 7 7 7  P P P P P P PrS   