
    /j                    j    d dl mZ d dlmZ d dlZd dlmZ d dlmZm	Z	 ddl
mZ  G d d	e          ZdS )
    )annotations)PathN)LOGGER)check_requirementsis_rockchip   )BaseBackendc                  "    e Zd ZdZddZdd
ZdS )RKNNBackendzRockchip RKNN inference backend for Rockchip NPU hardware.

    Loads and runs inference with RKNN models (.rknn files) using the RKNN-Toolkit-Lite2 runtime. Only supported on
    Rockchip devices with NPU hardware (e.g., RK3588, RK3566).
    weight
str | PathreturnNonec                   t                      st          d          t          j        d| d           t	          d           ddlm} t          |          }|                                s"t          |
                    d                    } |            | _        | j                            t          |                    }|dk    rt          d|           | j                                        }|dk    rt          d	|           |j        d
z  }|                                r0ddlm} |                     |                    |                     dS dS )aJ  Load a Rockchip RKNN model from a .rknn file or model directory.

        Args:
            weight (str | Path): Path to the .rknn file or directory containing the model.

        Raises:
            OSError: If not running on a Rockchip device.
            RuntimeError: If model loading or runtime initialization fails.
        z5RKNN inference is only supported on Rockchip devices.zLoading z for RKNN inference...zrknn-toolkit-lite2r   )RKNNLitez*.rknnzFailed to load RKNN model: zFailed to init RKNN runtime: zmetadata.yaml)YAMLN)r   OSErrorr   infor   rknnlite.apir   r   is_filenextrglobmodel	load_rknnstrRuntimeErrorinit_runtimeparentexistsultralytics.utilsr   apply_metadataload)selfr   r   wretmetadata_filer   s          a/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/ultralytics/nn/backends/rknn.py
load_modelzRKNNBackend.load_model   sp    }} 	SQRRR=v===>>>/000))))))LLyy{{ 	(QWWX&&''AXZZ
j""3q66**!88BSBBCCCj%%''!88DsDDEEE ?2!! 	:......		- 8 899999	: 	:    imtorch.Tensorlistc                    |                                                                 dz                      d          }t          |t          t
          f          r|n|g}| j                            |          S )zRun inference on the Rockchip NPU.

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

        Returns:
            (list): Model predictions as a list of output arrays.
           uint8)inputs)cpunumpyastype
isinstancer,   tupler   	inference)r#   r*   s     r'   forwardzRKNNBackend.forward;   se     ffhhnn$,,W55b4-00:RRrdz##2#...r)   N)r   r   r   r   )r*   r+   r   r,   )__name__
__module____qualname____doc__r(   r7    r)   r'   r   r      sG         #: #: #: #:J/ / / / / /r)   r   )
__future__r   pathlibr   torchr    r   ultralytics.utils.checksr   r   baser	   r   r<   r)   r'   <module>rB      s    # " " " " "        $ $ $ $ $ $ D D D D D D D D      7/ 7/ 7/ 7/ 7/+ 7/ 7/ 7/ 7/ 7/r)   