Ë
    Fêñiÿ  ã                  ób   — 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y)
é    )Úannotations)ÚPathN)ÚLOGGER)Úcheck_requirementsÚis_rockchipé   )ÚBaseBackendc                  ó    — e Zd ZdZdd„Zdd„Zy)ÚRKNNBackendzóRockchip 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).
    c                óX  — t        «       st        d«      ‚t        j                  d|› d�«       t	        d«       ddlm} t        |«      }|j                  «       st        |j                  d«      «      } |«       | _        | j                  j                  t        |«      «      }|dk7  rt        d|› �«      ‚| j                  j                  «       }|dk7  rt        d	|› �«      ‚|j                   d
z  }|j#                  «       r'ddlm} | j)                  |j+                  |«      «       yy)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)ÚselfÚweightr   ÚwÚretÚmetadata_filer   s          ú^/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/nn/backends/rknn.pyÚ
load_modelzRKNNBackend.load_model   sþ   € ô Œ}ÜÐQÓRÐRä�‰�h˜v˜hÐ&<Ð=Ô>ÜÐ/Ô0Ý)ä�‹LˆØ�y‰yŒ{Ü�Q—W‘W˜XÓ&Ó'ˆAá“ZˆŒ
Ø�j‰j×"Ñ"¤3 q£6Ó*ˆØ�!Š8ÜÐ!<¸S¸EÐBÓCÐCà�j‰j×%Ñ%Ó'ˆØ�!Š8ÜÐ!>¸s¸eÐDÓEÐEð Ÿ™ ?Ñ2ˆØ×ÑÔ!Ý.à×Ñ §	¡	¨-Ó 8Õ9ð "ó    c                óÐ   — |j                  «       j                  «       dz  j                  d«      }t        |t        t
        f«      r|n|g}| j                  j                  |¬«      S )zæRun 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Ú
isinstanceÚlistÚtupler   Ú	inference)r   Úims     r$   ÚforwardzRKNNBackend.forward;   sT   € ð �f‰f‹h�n‰nÓ Ñ$×,Ñ,¨WÓ5ˆÜ˜b¤4¬ -Ô0‰R°r°dˆØ�z‰z×#Ñ#¨2Ð#Ó.Ð.r&   N)r    z
str | PathÚreturnÚNone)r2   ztorch.Tensorr4   r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r3   © r&   r$   r   r      s   „ ñó#:ôJ/r&   r   )Ú
__future__r   Úpathlibr   Útorchr   r   Úultralytics.utils.checksr   r   Úbaser	   r   r:   r&   r$   ú<module>r@      s%   ðõ #å ã å $ß Då ô7/�+õ 7/r&   