
    v-j                    v    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	m
Z
 d dlmZ ddlmZ  G d d	e          ZdS )
    )annotations)PathN)ARM64LINUXLOGGER)check_requirements   )BaseBackendc                  "    e Zd ZdZddZdd
ZdS )OpenVINOBackenda  Intel OpenVINO inference backend for Intel hardware acceleration.

    Loads and runs inference with Intel OpenVINO IR models (*_openvino_model/ directories). Supports automatic device
    selection, Intel-specific device targeting, and async inference for throughput optimization.
    weight
str | PathreturnNonec                r   t          j        d| d           t          d           ddl}|                                }|j        dgk    rdnd}|}t          | j        t                    r| j        	                    d          rq| j        
                    d	          d
                                         }t          j        d          | _        ||j        vrt          j        d| d| d           |}t          |          }|                                s"t!          |                    d                    }|                    t          |          |                    d                    }|                                d                                         j        r@|                                d                             |                    d                     |j        dz  }|                                r.ddlm}	 |                     |	                    |                     | j        r| j         d
k    rdnd| _!        d| j!        i}
tD          r5tF          r.|dk    r(|j$        j%        j&        j'        |
d<   |j(        j)        |
d<   |*                    |||
          | _+        t          j        d| j!         d| j          dd,                    | j+        -                    d                     d            | j+        .                                /                                | _0        || _1        dS )!zLoad an Intel OpenVINO IR model from a .xml/.bin file pair or model directory.

        Args:
            weight (str | Path): Path to the .xml file or directory containing OpenVINO model files.
        zLoading z for OpenVINO inference...zopenvino>=2024.0.0r   NCPUAUTOintel:r	   cpuzOpenVINO device 'z' not available. Using 'z
' instead.z*.xmlz.bin)modelweightsNCHWzmetadata.yaml)YAMLCUMULATIVE_THROUGHPUTLATENCYPERFORMANCE_HINTEXECUTION_MODE_HINTINFERENCE_PRECISION_HINT)device_nameconfigzUsing OpenVINO z mode for batch=z inference on z, EXECUTION_DEVICESz...)2r   infor   openvinoCoreavailable_devices
isinstancedevicestr
startswithsplituppertorchwarningr   is_filenextglob
read_modelwith_suffixget_parameters
get_layoutempty
set_layoutLayoutparentexistsultralytics.utilsr   apply_metadataloaddynamicbatchinference_moder   r   
propertieshintExecutionModeACCURACYTypef32compile_modelov_compiled_modeljoinget_propertyinputget_any_name
input_nameov)selfr   rN   corefallback_devicer    wov_modelmetadata_filer   r!   s              `/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/ultralytics/nn/backends/openvino.py
load_modelzOpenVINOBackend.load_model   s9    	AvAAABBB/000wwyy#'#9eW#D#D%%&%dk3'' 	.DK,B,B7,K,K 	.+++C00399;;K,u--DK$"888s;ssXgsssttt-LLyy{{ 	&QVVG__%%A??Qv9N9N?OO""$$Q'2244: 	G##%%a(33BIIf4E4EFFF ?2!! 	:......		- 8 8999 :>g$*WX..55^g$d&9: 	=U 	={e33,.M,>,L,UF()13F-.!%!3!3# "4 "
 "

 	Xd1 X X4: X Xyy/<<=PQQRRX X X	
 	
 	
 06688EEGG    imtorch.Tensorlist[np.ndarray]c                ~   |                                                                                     t          j                  }| j        dv r|j        d         }dg|z  fd}| j                            | j	                  }|
                    |           t          |          D ]+}|                    | j        |||dz            i|           ,|                                 d D             }d t          | D             }n4t!          | 	                    |                                                    }|S )	a7  Run Intel OpenVINO inference with sync or async execution based on inference mode.

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

        Returns:
            (list[np.ndarray]): Model predictions as a list of numpy arrays, one per output layer.
        >   
THROUGHPUTr   r   Nc                    | j         |<   dS )zQStore async inference result in the preallocated results list at the given index.N)results)requestuserdatar^   s     rU   callbackz)OpenVINOBackend.forward.<locals>.callback^   s    $+O!!!rW   r	   )inputsr`   c                P    g | ]#}t          |                                          $S  )listvalues).0rs     rU   
<listcomp>z+OpenVINOBackend.forward.<locals>.<listcomp>i   s(    333aahhjj!!333rW   c                6    g | ]}t          j        |          S rd   )npconcatenate)rg   xs     rU   ri   z+OpenVINOBackend.forward.<locals>.<listcomp>j   s"    444q""444rW   )r   numpyastyperk   float32r@   shaperN   AsyncInferQueuerH   set_callbackrangestart_asyncrM   wait_allzipre   rf   )rO   rX   nra   async_queueiyr^   s          @rU   forwardzOpenVINOBackend.forwardN   sK    VVXX^^$$RZ00"IIIAfqjG4 4 4 4 4 '11$2HIIK$$X...1XX ] ]''AAI/OZ['\\\\  """337333A44CG444AA T++B//668899ArW   N)r   r   r   r   )rX   rY   r   rZ   )__name__
__module____qualname____doc__rV   r|   rd   rW   rU   r   r      sG         5 5 5 5n           rW   r   )
__future__r   pathlibr   rn   rk   r-   r;   r   r   r   ultralytics.utils.checksr   baser
   r   rd   rW   rU   <module>r      s    # " " " " "            2 2 2 2 2 2 2 2 2 2 7 7 7 7 7 7      ^ ^ ^ ^ ^k ^ ^ ^ ^ ^rW   