Ë
    Fêñi¢  ã                  ón   — d dl mZ d dlZd dl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  G d„ d	e«      Zy)
é    )ÚannotationsN)ÚPath)ÚLOGGER)Úcheck_requirementsé   )ÚBaseBackendc                  ó    — e Zd ZdZdd„Zdd„Zy)Ú
MNNBackendzêMNN (Mobile Neural Network) inference backend.

    Loads and runs inference with MNN models (.mnn files) using the Alibaba MNN framework. Optimized for mobile and edge
    deployment with configurable thread count and precision.
    c                óô  — t        j                  d|› d�«       t        d«       ddl}ddt	        j
                  «       dz   d	z  d
œ}|j                  j                  |f«      }|j                  j                  |g g |d¬«      | _	        |j                  | _
        | j                  j                  «       }d|v r)	 | j                  t        j                  |d   «      «       yy# t        j                  $ r Y yw xY w)z�Load an Alibaba MNN model from a .mnn file.

        Args:
            weight (str | Path): Path to the .mnn model file.
        zLoading z for MNN inference...ÚMNNr   NÚlowÚCPUr   é   )Ú	precisionÚbackendÚ	numThreadT)Úruntime_managerÚ	rearrangeÚbizCode)r   Úinfor   r   ÚosÚ	cpu_countÚnnÚcreate_runtime_managerÚload_module_from_fileÚnetÚexprÚget_infoÚapply_metadataÚjsonÚloadsÚJSONDecodeError)ÚselfÚweightr   ÚconfigÚrtr   s         ú]/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/nn/backends/mnn.pyÚ
load_modelzMNNBackend.load_model   sâ   € ô 	�‰�h˜v˜hÐ&;Ð<Ô=Ü˜5Ô!Ûà$°ÄbÇlÁlÃnÐWXÑFXÐ]^ÑE^Ñ_ˆØ�V‰V×*Ñ*¨F¨9Ó5ˆØ—6‘6×/Ñ/°¸¸BÐPRÐ^bÐ/ÓcˆŒØ—H‘HˆŒ	ð �x‰x× Ñ Ó"ˆØ˜ÑðØ×#Ñ#¤D§J¡J¨t°I©Ó$?Õ@ð øô ×'Ñ'ò Ùðús   Â8'C! Ã!C7Ã6C7c                ó  — | j                   j                  |j                  «       |j                  «      }| j                  j                  |g«      }|D �cg c]   }|j                  «       j                  «       ‘Œ" c}S c c}w )zçRun inference using the MNN runtime.

        Args:
            im (torch.Tensor): Input image tensor in BCHW format, normalized to [0, 1].

        Returns:
            (list): Model predictions as a list of numpy arrays.
        )r   ÚconstÚdata_ptrÚshaper   Ú	onForwardÚreadÚcopy)r#   ÚimÚ	input_varÚ
output_varÚxs        r'   ÚforwardzMNNBackend.forward/   sX   € ð —I‘I—O‘O B§K¡K£M°2·8±8Ó<ˆ	Ø—X‘X×'Ñ'¨¨Ó4ˆ
à)3Ö4 A�—‘“—‘•Ò4Ð4ùÒ4s   Á%A=N)r$   z
str | PathÚreturnÚNone)r0   ztorch.Tensorr5   Úlist)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r4   © ó    r'   r
   r
      s   „ ñóô.5r=   r
   )Ú
__future__r   r    r   Úpathlibr   ÚtorchÚultralytics.utilsr   Úultralytics.utils.checksr   Úbaser   r
   r<   r=   r'   ú<module>rD      s+   ðõ #ã Û 	Ý ã å $Ý 7å ô*5�õ *5r=   