
    /j                    v    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dS )
    )annotationsN)Path)LOGGER)check_requirements   )BaseBackendc                  "    e Zd ZdZddZdd
ZdS )
MNNBackendzMNN (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.
    weight
str | PathreturnNonec                   t          j        d| d           t          d           ddl}ddt	          j                    dz   d	z  d
}|j                            |f          }|j                            |g g |d          | _	        |j
        | _
        | j	                                        }d|v rF	 |                     t          j        |d                              dS # t          j        $ r Y dS w xY wdS )zLoad 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)selfr   r   configrtr   s         `/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/ultralytics/nn/backends/mnn.py
load_modelzMNNBackend.load_model   s    	<v<<<===5!!!


$blnnWXFX]^E^__V**F9556//BPR^b/ccH	 x  ""##DJtI$?$?@@@@@'    s   2-C! !C43C4imtorch.Tensorlistc                    | j                             |                                |j                  }| j                            |g          }d |D             S )zRun 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.
        c                Z    g | ](}|                                                                 )S  )readcopy).0xs     r*   
<listcomp>z&MNNBackend.forward.<locals>.<listcomp>;   s(    444A444    )r!   constdata_ptrshaper    	onForward)r'   r,   	input_var
output_vars       r*   forwardzMNNBackend.forward/   sN     IOOBKKMM28<<	X''44
444444r7   N)r   r   r   r   )r,   r-   r   r.   )__name__
__module____qualname____doc__r+   r>   r1   r7   r*   r
   r
      sF            .5 5 5 5 5 5r7   r
   )
__future__r   r$   r   pathlibr   torchultralytics.utilsr   ultralytics.utils.checksr   baser   r
   r1   r7   r*   <module>rI      s    # " " " " "  				        $ $ $ $ $ $ 7 7 7 7 7 7      *5 *5 *5 *5 *5 *5 *5 *5 *5 *5r7   