<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1841162#M222160</link>
    <description>&lt;P&gt;I run into the same behaviour. Do yo have some code snippets, how you linked the vx_custom_op library in yocto?&lt;/P&gt;</description>
    <pubDate>Fri, 05 Apr 2024 08:38:47 GMT</pubDate>
    <dc:creator>whale-1958</dc:creator>
    <dc:date>2024-04-05T08:38:47Z</dc:date>
    <item>
      <title>Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718119#M212125</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I have a TFlite model. Specified external delegate with python. Observe correct behavior. First warmup run takes ~46 seconds, thereafter 0.5 seconds per execution.&lt;/P&gt;&lt;P&gt;Converted code to C++. Specified external_delegate options with vx_delegate. Options initialize, but it still uses XNNPACK delegate when the builder and interpreter are constructed.&lt;/P&gt;&lt;P&gt;C++ behavior shows that vx_delegate is not being called, first warmup run and all runs thereafter take ~46 seconds, ie no hardware acceleration is occurring.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The model has float inputs and outputs. This didn't bother the python. C++ I tried specifiying&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;interpreter-&amp;gt;SetAllowFp16PrecisionForFP32(true);&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This caused a segmentation fault. So I have removed it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Python code:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;setup the interpreter:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;self.interpreter = tflite.Interpreter(model_path='./model_integer_quant.tflite', experimental_delegates=[tflite.load_delegate('/usr/lib/libvx_delegate.so')])&lt;BR /&gt;self.interpreter.allocate_tensors()&lt;BR /&gt;self.input_details = self.interpreter.get_input_details()&lt;BR /&gt;self.output_details = self.interpreter.get_output_details()&lt;/P&gt;&lt;P&gt;# check the type of the input tensor&lt;BR /&gt;&lt;STRONG&gt;self.floating_model = self.input_details[0]['dtype'] == np.float32&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;print("self.floating_model is ", self.floating_model)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;invoke the interpreter:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;def detect(self, image, object=None):&lt;BR /&gt;interpreter = self.interpreter&lt;/P&gt;&lt;P&gt;input_data = self.preprocess(image)&lt;/P&gt;&lt;P&gt;interpreter.set_tensor(self.input_details[0]['index'], input_data)&lt;BR /&gt;# start_time = time.time()&lt;BR /&gt;interpreter.invoke()&lt;BR /&gt;# stop_time = time.time()&lt;BR /&gt;output_data = interpreter.get_tensor(self.output_details[0]['index'])&lt;/P&gt;&lt;P&gt;results = self.postprocess(output_data)&lt;/P&gt;&lt;P&gt;if object is not None:&lt;BR /&gt;results = [result for result in results if result['cls_name'] == object]&lt;/P&gt;&lt;P&gt;return results&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;preprocessing inputs:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;def preprocess(self, image):&lt;BR /&gt;# load image&lt;BR /&gt;if type(image) == str: # Load from file path&lt;BR /&gt;if not os.path.isfile(image):&lt;BR /&gt;raise ValueError("Input image file path (", image, ") does not exist.")&lt;BR /&gt;image = cv.imread(image)&lt;BR /&gt;elif isinstance(image, np.ndarray): # Use given NumPy array&lt;BR /&gt;image = image.copy()&lt;BR /&gt;else:&lt;BR /&gt;raise ValueError("Invalid image input. Only file paths or a NumPy array accepted.")&lt;/P&gt;&lt;P&gt;self.img_height = image.shape[0]&lt;BR /&gt;self.img_width = image.shape[1]&lt;/P&gt;&lt;P&gt;# resize and padding&lt;BR /&gt;image = self.letterbox(image)&lt;/P&gt;&lt;P&gt;# BGR -&amp;gt; RGB&lt;BR /&gt;image = image[:, :, ::-1]&lt;BR /&gt;# image = cv.cvtColor(image, cv.COLOR_BGR2RGB)&lt;/P&gt;&lt;P&gt;# add N dim&lt;BR /&gt;input_data = np.expand_dims(image, axis=0)&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if self.floating_model:&lt;/STRONG&gt;&lt;BR /&gt;input_data = np.float32(input_data) / 255&amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&amp;nbsp; // input data is np.float32&lt;/STRONG&gt;&lt;BR /&gt;else:&lt;BR /&gt;input_data = input_data.astype(np.int8)&lt;/P&gt;&lt;P&gt;return input_data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Python output:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Vx delegate: allowed_builtin_code set to 0.&lt;BR /&gt;Vx delegate: error_during_init set to 0.&lt;BR /&gt;Vx delegate: error_during_prepare set to 0.&lt;BR /&gt;Vx delegate: error_during_invoke set to 0.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;self.floating_model is True&lt;/STRONG&gt;&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;&lt;STRONG&gt;Processing ./image0frame37373.jpg - time: 47.29401898384094 s&lt;/STRONG&gt;&lt;BR /&gt;Processing ./image0frame37954.jpg - time: 0.4757547378540039 s&lt;BR /&gt;Processing ./image0frame40189.jpg - time: 0.4649374485015869 s&lt;BR /&gt;Processing ./image0frame30.jpg - time: 0.46975016593933105 s&lt;BR /&gt;Processing ./image0frame937.jpg - time: 0.46828198432922363 s&lt;BR /&gt;Processing ./image0frame674.jpg - time: 0.46784138679504395 s&lt;BR /&gt;Processing ./image0frame37487.jpg - time: 0.4682295322418213 s&lt;BR /&gt;Processing ./image0frame36965.jpg - time: 0.475665807723999 s&lt;BR /&gt;Processing ./image0frame40527.jpg - time: 0.4699666500091553 s&lt;BR /&gt;Processing ./image0frame852.jpg - time: 0.4759962558746338 s&lt;BR /&gt;Processing ./result1.jpg - time: 0.46816182136535645 s&lt;BR /&gt;Processing ./image0frame1.jpg - time: 0.4685957431793213 s&lt;BR /&gt;Processing ./image0frame40183.jpg - time: 0.46500706672668457 s&lt;BR /&gt;Processing ./image0frame36962.jpg - time: 0.47954559326171875 s&lt;BR /&gt;Processing ./image0frame842.jpg - time: 0.472883939743042 s&lt;BR /&gt;Processing ./image0frame38968.jpg - time: 0.4709169864654541 s&lt;BR /&gt;Processing ./result0.jpg - time: 0.46674442291259766 s&lt;BR /&gt;Processing ./viper_snapshot.jpg - time: 0.4655272960662842 s&lt;BR /&gt;Processing ./image0frame40808.jpg - time: 0.464113712310791 s&lt;BR /&gt;Processing ./image0frame40814.jpg - time: 0.4668314456939697 s&lt;BR /&gt;Processing ./image0frame668.jpg - time: 0.46632933616638184 s&lt;BR /&gt;Processing ./image0frame900.jpg - time: 0.47098541259765625 s&lt;BR /&gt;Processing ./image0frame37379.jpg - time: 0.4749300479888916 s&lt;BR /&gt;Processing ./image0frame0.jpg - time: 0.46938037872314453 s&lt;BR /&gt;Processing ./image0frame420.jpg - time: 0.4686119556427002 s&lt;BR /&gt;Processing ./image0frame37956.jpg - time: 0.477811336517334 s&lt;BR /&gt;Processing ./image0frame38974.jpg - time: 0.4715125560760498 s&lt;BR /&gt;Processing ./image0frame40532.jpg - time: 0.475177526473999 s&lt;BR /&gt;Processing ./image0frame37484.jpg - time: 0.4749460220336914 s&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Above code is working, I try to do the same thing with C++:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;std&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;unique_ptr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;FlatBufferModel&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;model&lt;/SPAN&gt;&lt;SPAN&gt; =&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;FlatBufferModel&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;BuildFromFile&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"model_integer_quant.tflite"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Got tflite model "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;auto&lt;/SPAN&gt; &lt;SPAN&gt;ext_delegate_option&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;TfLiteExternalDelegateOptionsDefault&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"/usr/lib/libvx_delegate.so"&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Ext delegate options "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;auto&lt;/SPAN&gt; &lt;SPAN&gt;ext_delegate_ptr&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;TfLiteExternalDelegateCreate&lt;/SPAN&gt;&lt;SPAN&gt;(&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;ext_delegate_option&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Ext delegate pointer "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;ext_delegate_ptr&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN&gt;nullptr&lt;/SPAN&gt;&lt;SPAN&gt;){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Ext delegate is null "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;inp&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;ops&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;builtin&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;BuiltinOpResolver&lt;/SPAN&gt; &lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;AddCustom&lt;/SPAN&gt;&lt;SPAN&gt;(kNbgCustomOp, &lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;ops&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;custom&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Register_VSI_NPU_PRECOMPILED&lt;/SPAN&gt;&lt;SPAN&gt;());&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Resolver "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;InterpreterBuilder&lt;/SPAN&gt; &lt;SPAN&gt;builder&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;model&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Builder "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;std&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;unique_ptr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Interpreter&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Interpreter "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;//interpreter-&amp;gt;SetAllowFp16PrecisionForFp32() //commented out because of segmentation fault&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Set precision "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;builder(&amp;amp;interpreter);&amp;nbsp; //Output shows: &lt;FONT size="2"&gt;INFO: Created TensorFlow Lite XNNPACK delegate for CPU.&amp;nbsp; ????&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Setup builder and intepreter "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ModifyGraphWithDelegate&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;ext_delegate_ptr&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Modifying graph with delegate "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;//tflite::PrintInterpreterState(interpreter.get());&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;AllocateTensors&lt;/SPAN&gt;&lt;SPAN&gt;();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Got model "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// get input &amp;amp; output layer&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;TfLiteTensor&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;input_tensor&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;tensor&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;inputs&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" Got input "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;const&lt;/SPAN&gt; &lt;SPAN&gt;uint&lt;/SPAN&gt; &lt;SPAN&gt;HEIGHT&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;input_tensor&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;dims&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;data&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;const&lt;/SPAN&gt; &lt;SPAN&gt;uint&lt;/SPAN&gt; &lt;SPAN&gt;WIDTH&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;input_tensor&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;dims&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;data&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;const&lt;/SPAN&gt; &lt;SPAN&gt;uint&lt;/SPAN&gt; &lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;input_tensor&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;dims&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;data&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;3&lt;/SPAN&gt;&lt;SPAN&gt;];&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;"H "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;HEIGHT&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" W "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;WIDTH&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;" C "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;CHANNEL&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;// read image file&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;cv&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Mat&lt;/SPAN&gt; &lt;SPAN&gt;img&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;inp&lt;/SPAN&gt;&lt;SPAN&gt; == &lt;/SPAN&gt;&lt;SPAN&gt;NULL&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;"Getting image from file "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;img&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;cv&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;imread&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;infile&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;"Getting image from input "&lt;/SPAN&gt; &lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;img&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;inp&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;cv&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Mat&lt;/SPAN&gt; &lt;SPAN&gt;inputImg&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;mat_process&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;img&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;WIDTH&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;HEIGHT&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;SPAN&gt;// flatten rgb image to input layer.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;inputImg_ptr&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inputImg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ptr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;memcpy&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;input_tensor&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;data&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;inputImg&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;ptr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;WIDTH&lt;/SPAN&gt;&lt;SPAN&gt; * &lt;/SPAN&gt;&lt;SPAN&gt;HEIGHT&lt;/SPAN&gt;&lt;SPAN&gt; * &lt;/SPAN&gt;&lt;SPAN&gt;CHANNEL&lt;/SPAN&gt;&lt;SPAN&gt; * &lt;/SPAN&gt;&lt;SPAN&gt;sizeof&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt;));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;Invoke&lt;/SPAN&gt;&lt;SPAN&gt;();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;output1&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;typed_output_tensor&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;float&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;C++ Output&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Tensorflow Test&lt;BR /&gt;Reading image&lt;BR /&gt;IMAGE SIZE IS 281776&lt;BR /&gt;Reading image&lt;BR /&gt;IMAGE SIZE IS 348944&lt;BR /&gt;Got tflite model&lt;BR /&gt;Ext delegate options&lt;BR /&gt;Vx delegate: allowed_builtin_code set to 0.&lt;BR /&gt;Vx delegate: error_during_init set to 0.&lt;BR /&gt;Vx delegate: error_during_prepare set to 0.&lt;BR /&gt;Vx delegate: error_during_invoke set to 0.&lt;BR /&gt;Ext delegate pointer&lt;BR /&gt;Resolver&lt;BR /&gt;Builder&lt;BR /&gt;Interpreter&lt;BR /&gt;&lt;STRONG&gt;INFO: Created TensorFlow Lite XNNPACK delegate for CPU.&amp;nbsp;&lt;/STRONG&gt;&lt;BR /&gt;Setup builder and intepreter&lt;BR /&gt;Modifying graph with delegate&lt;BR /&gt;Got model&lt;BR /&gt;Got input&lt;BR /&gt;Got output&lt;BR /&gt;Got output score&lt;BR /&gt;H 640 W 640 C 3&lt;BR /&gt;Getting image from input&lt;BR /&gt;Read matrix from file s: 0.0000083760&lt;BR /&gt;Creating dst&lt;BR /&gt;Creating dst2&lt;BR /&gt;Creating dst3&lt;BR /&gt;Creating dst4&lt;BR /&gt;Creating dst5&lt;BR /&gt;Creating dst6&lt;BR /&gt;Creating dst7&lt;BR /&gt;Got image&lt;BR /&gt;Process Matrix to RGB s: 0.1358635630&lt;BR /&gt;GOT MEMCPY&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 19: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:257]Op 18: default layout inference pass.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;BR /&gt;W [op_optimize:676]stride slice copy tensor.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Sep 2023 15:20:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718119#M212125</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2023-09-06T15:20:37Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718892#M212199</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;Which BSP does customer used? Is the tflite model fully quantized?&lt;/P&gt;
&lt;P&gt;NPU on i.MX8MP can only support quantized Operators. Details can be seen in &lt;A href="https://www.nxp.com.cn/docs/en/user-guide/IMX-MACHINE-LEARNING-UG.pdf" target="_self" rel="nofollow noopener noreferrer"&gt;16 OVXLIB Operation Support with NPU&lt;/A&gt; (&lt;A href="https://www.nxp.com.cn/docs/en/user-guide/IMX-MACHINE-LEARNING-UG.pdf" target="_blank"&gt;https://www.nxp.com.cn/docs/en/user-guide/IMX-MACHINE-LEARNING-UG.pdf&lt;/A&gt; ). To get a best performance, please quantize the models by&amp;nbsp;&lt;A href="https://www.tensorflow.org/lite/performance/post_training_quantization#integer_only" target="_self" rel="nofollow noopener noreferrer"&gt;integer_only quantization&lt;/A&gt; ( &lt;A href="https://www.tensorflow.org/lite/performance/post_training_quantization?hl=es-419#integer_only" target="_blank"&gt;https://www.tensorflow.org/lite/performance/post_training_quantization?hl=es-419#integer_only&lt;/A&gt;).&amp;nbsp;Do not use the dynamic range quantization for models. It converts only the weights to 8-bit integers, but retains the activations in fp32, which results in the inference running in fp32 with an additional overhead for data conversion. In fact, the inference is even slower compared to a fp32 model, because the conversion is done on the fly.&lt;/P&gt;
&lt;P&gt;You can also use benchmark_model located at "/usr/bin/tensorflow-lite-2.9.1/examples" in default BSP to profile the model to see if all of the Ops runs on NPU. For example,&lt;/P&gt;
&lt;PRE class="lia-code-sample  language-markup"&gt;&lt;CODE&gt;root@imx8mpevk:~# cd /usr/bin/tensorflow-lite-2.9.1/examples/
root@imx8mpevk:/usr/bin/tensorflow-lite-2.9.1/examples# ./benchmark_model --graph=./mobilenet_v1_1.0_224_quant.tflite --external_delegate_path=/usr/lib/libvx_delegate.so --enable_op_profiling=true

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then you will see the results as below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bio_TICFSL_0-1694098054347.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/240064i393EE60A8BD2C6A7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Bio_TICFSL_0-1694098054347.png" alt="Bio_TICFSL_0-1694098054347.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The "Vx Delegate" node means running on NPU. If there are other nodes, it means the other nodes fall back to CPU, which will affect the inference performance related to models.&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;</description>
      <pubDate>Thu, 07 Sep 2023 14:50:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718892#M212199</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2023-09-07T14:50:02Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718907#M212202</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am using:&lt;/P&gt;&lt;P&gt;Linux imx8mpevk 6.1.22+g66e442bc7fdc #1 SMP PREEMPT Mon Jun 12 12:31:27 UTC 2023 aarch64 GNU/Linux&amp;nbsp; &amp;nbsp;---&amp;gt;&amp;nbsp;NXP i.MX Release Distro 6.1-mickledore \n \l&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The model is fully quantized but it has floating point inputs and outputs.&lt;/P&gt;&lt;P&gt;Somewhere in the documentation I read that it will default to XNNPACK delegate if there are floating points.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I am running the python code on the same machine, with same model, and it is correctly invoking the NPU, so the problem is not the hardware, or the model quantization.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I have tested the benchmark model and it is running fine.&lt;/P&gt;&lt;P&gt;You can see in the time and in the output of the python, it doesn't print the XNNPACK delegate and also the first time it takes longer but then it is 0.5 seconds, which is consistent with the expected behavior with hardware acceleration, whereas with CPU each run takes the same amount of time. If I don't specify the vx_delegate, python also prints out the XNNPACK delegate info. and has similar behavior as C++.&lt;/P&gt;&lt;P&gt;There is no doubt it is correctly using the NPU and the vx_delegate with python.&lt;/P&gt;&lt;P&gt;The problem has to do with the C++ behavior is different from Python. It seems to be wanting to override the specified vx_delegate and default to XNNPACK. &lt;STRONG&gt;I am looking for a line of code to force it to try the vx_delegate first, as somehow it is deciding to use the XNNPACK not the specified vx_delegate.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;ops&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;builtin&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;BuiltinOpResolver&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;AddCustom&lt;/SPAN&gt;&lt;SPAN&gt;(kNbgCustomOp,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;ops&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;custom&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Register_VSI_NPU_PRECOMPILED&lt;/SPAN&gt;&lt;SPAN&gt;());&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Resolver "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;InterpreterBuilder&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;builder&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;model&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;resolver&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Builder "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;std&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;unique_ptr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt;&lt;SPAN&gt;::&lt;/SPAN&gt;&lt;SPAN&gt;Interpreter&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Interpreter "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;//interpreter-&amp;gt;SetAllowFp16PrecisionForFp32() //commented out because of segmentation fault&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Set precision "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;builder(&amp;amp;interpreter);&amp;nbsp; //Output shows:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;FONT size="2"&gt;INFO: Created TensorFlow Lite XNNPACK delegate for CPU.&amp;nbsp; ????&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Setup builder and intepreter "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;interpreter&lt;/SPAN&gt;&lt;SPAN&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;ModifyGraphWithDelegate&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;ext_delegate_ptr&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;cout&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;" Modifying graph with delegate "&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;endl&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-----------&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;for further clarity see the python output differences if I change the line that specifies the vx_delegate:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;self.interpreter = tflite.Interpreter(model_path='./model_integer_quant.tflite', experimental_delegates=[tflite.load_delegate('/usr/lib/libvx_delegate.so')])&amp;nbsp;&lt;STRONG&gt; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp;self.interpreter = tflite.Interpreter(model_path='./model_integer_quant.tflite' )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;python output with vx_delegate:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Vx delegate: allowed_cache_mode set to 0.&lt;BR /&gt;Vx delegate: device num set to 0.&lt;BR /&gt;Vx delegate: allowed_builtin_code set to 0.&lt;BR /&gt;Vx delegate: error_during_init set to 0.&lt;BR /&gt;Vx delegate: error_during_prepare set to 0.&lt;BR /&gt;Vx delegate: error_during_invoke set to 0.&lt;BR /&gt;W [HandleLayoutInfer:281]Op 162: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:281]Op 162: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:281]Op 162: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:281]Op 162: default layout inference pass.&lt;BR /&gt;W [HandleLayoutInfer:281]Op 162: default layout inference pass.&lt;BR /&gt;&lt;STRONG&gt;Processing ./image0frame37487.jpg - time: 86.78495478630066 s&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Processing ./image0frame40808.jpg - time: 0.39295029640197754 s&amp;nbsp; &amp;nbsp;-----&amp;gt; first run takes longer, then subsequent runs are fast&lt;/STRONG&gt;&lt;BR /&gt;Processing ./image0frame420.jpg - time: 0.39923834800720215 s&lt;BR /&gt;Processing ./image0frame40183.jpg - time: 0.3918418884277344 s&lt;BR /&gt;Processing ./image0frame852.jpg - time: 0.4001171588897705 s&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;python output without vx_delegate:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;STRONG&gt;INFO: Created TensorFlow Lite XNNPACK delegate for CPU.&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Processing ./image0frame37487.jpg - time: 17.06532335281372 s&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Processing ./image0frame40808.jpg - time: 16.96425437927246 s&amp;nbsp; &amp;nbsp;---&amp;gt; all runs take the same time with CPU&lt;/STRONG&gt;&lt;BR /&gt;Processing ./image0frame420.jpg - time: 16.964816570281982 s&lt;BR /&gt;Processing ./image0frame40183.jpg - time: 16.957589387893677 s&lt;BR /&gt;Processing ./image0frame852.jpg - time: 16.96754550933838 s&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 07 Sep 2023 15:53:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1718907#M212202</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2023-09-07T15:53:15Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1720458#M212375</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;Can you clarify to me : you wants to run the model using NPU/GPU?&lt;BR /&gt;If so: The i.MX8MP board runs by default on CPU (XNN PACK delegate) to change this you need to add the delegate ".so" file path within the code, which I don´t see in the part of the code you posted. can you share to me the Client´s full code so I can test it on my side adding those lines of delegate?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;</description>
      <pubDate>Mon, 11 Sep 2023 14:25:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1720458#M212375</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2023-09-11T14:25:10Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1721356#M212478</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please find attached code as you requested. There is a python folder and a cpp folder. The cpp folder already has the precompiled "server"&amp;nbsp; file.&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The attachment is too large, so I am including it as Google Drive link below:&lt;/P&gt;&lt;P&gt;&lt;A href="https://drive.google.com/drive/folders/1zESQauOTws3VFeLmt7lVwlLBDfykdCEH?usp=sharing" target="_blank" rel="noopener"&gt;https://drive.google.com/drive/folders/1zESQauOTws3VFeLmt7lVwlLBDfykdCEH?usp=sharing&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;you can invoke the python on the imx8mplus evk with:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;python3 test_model.py&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;to compile the CPP file, I am using &lt;STRONG&gt;Visual Studio code as the IDE&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;1) in the command line run your source command to source into the sdk:&lt;/P&gt;&lt;P&gt;eg. source /opt/fsl-imx-xwayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux&lt;/P&gt;&lt;P&gt;2) unzip and navigate into the cpp folder in above Google Drive link&lt;/P&gt;&lt;P&gt;3) run the command&amp;nbsp; &lt;STRONG&gt;code . &lt;/STRONG&gt;from inside the cpp folder.&amp;nbsp;&lt;/P&gt;&lt;P&gt;4) In tasks.json file in the .vscode folder update the .so references eg.&lt;STRONG&gt; libopencv_core.so.4.5&lt;/STRONG&gt; to the version based on the bsp&lt;/P&gt;&lt;P&gt;5) with test.cpp file selected in the active window run the command "&lt;STRONG&gt;recompile executable with new file&lt;/STRONG&gt;"&lt;/P&gt;&lt;P&gt;6) It will output a &lt;STRONG&gt;server&lt;/STRONG&gt; executable in the env folder which can be copied onto the board, you will also need to copy the .tflite model which is included, and the .jpg files which are used for testing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;7) test.cpp has function called &lt;STRONG&gt;process_4&lt;/STRONG&gt;&amp;nbsp; in this one I am invoking the tensorflow with vx_delgate.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The python code with the model runs&lt;STRONG&gt; correctly &lt;/STRONG&gt;with hardware acceleration&lt;/P&gt;&lt;P&gt;The C++ code&lt;STRONG&gt; does not run correctly &lt;/STRONG&gt;with same model. IE no hardware acceleration is observed even with vx_delegate specified.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I am looking for the code change required to get the C++ to work exactly like the python does.&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Sep 2023 18:27:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1721356#M212478</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2023-09-12T18:27:20Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1722284#M212564</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have figured out the problem. The issue was that the interpreter is being created each time in the function. I needed to initialize the interpreter once and then pass it into the function, rather than creating it anew each time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Once I did this, I got the expected behaviour. Thanks.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Sep 2023 18:53:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1722284#M212564</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2023-09-13T18:53:41Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1815764#M220428</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I followed your suggestion to setup the model for the npu and came upt with this code: My model is already working in python on the npu.&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;iostream&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/interpreter.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/kernels/register.h&amp;gt;&lt;BR /&gt;#include &amp;lt;ctime&amp;gt;&lt;BR /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;BR /&gt;#include &amp;lt;vector&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/c/common.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/model.h&amp;gt;&lt;BR /&gt;#include &amp;lt;memory&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/tools/gen_op_registration.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/delegates/nnapi/nnapi_delegate.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow/lite/delegates/external/external_delegate.h&amp;gt;&lt;BR /&gt;#include &amp;lt;opencv2/opencv.hpp&amp;gt;&lt;BR /&gt;#include &amp;lt;vector&amp;gt;&lt;BR /&gt;#include &amp;lt;chrono&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow-lite-vx-delegate/vsi_npu_custom_op.h&amp;gt;&lt;BR /&gt;#include &amp;lt;tensorflow-lite-vx-delegate/delegate_main.h&amp;gt;&lt;/P&gt;&lt;P&gt;int main() {&lt;BR /&gt;//load image&lt;BR /&gt;std::string image_path = "/usr/src/Screenshot.png";&lt;BR /&gt;cv::Mat img = cv::imread(image_path);&lt;BR /&gt;if (img.empty()){&lt;BR /&gt;std::cout &amp;lt;&amp;lt; "Failed to load image!";&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;//transform to required model input&lt;BR /&gt;int new_width = 128;&lt;BR /&gt;int new_height = 128;&lt;BR /&gt;cv::resize(img, img, cv::Size( new_width, new_height));&lt;BR /&gt;img = (img - 127.5)/127.5 - 1.0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//create model for the npu&lt;BR /&gt;const char* filename = "/usr/src/blazeface_npu.tflite";&lt;BR /&gt;const char* delegate_path = "/usr/lib/libvx_delegate.so";&lt;BR /&gt;auto model = tflite::FlatBufferModel::BuildFromFile(filename);&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Ext delegate options " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;auto ext_delegate_option = TfLiteExternalDelegateOptionsDefault(delegate_path);&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Ext delegate options " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;auto ext_delegate_ptr = TfLiteExternalDelegateCreate(&amp;amp;ext_delegate_option);&lt;BR /&gt;&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Ext delegate pointer " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;if(ext_delegate_ptr == nullptr){&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Ext delegate is null " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;tflite::ops::builtin::BuiltinOpResolver resolver;&lt;BR /&gt;resolver.AddCustom(kNbgCustomOp, tflite::ops::custom::Register_VSI_NPU_PRECOMPILED());&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Resolver " &amp;lt;&amp;lt; std::endl;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;tflite::InterpreterBuilder builder(*model, resolver);&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Builder " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;std::unique_ptr&amp;lt;tflite::Interpreter&amp;gt; interpreter;&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Interpreter " &amp;lt;&amp;lt; std::endl;&lt;/P&gt;&lt;P&gt;std::cout &amp;lt;&amp;lt; " Setup builder and intepreter " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;interpreter-&amp;gt;ModifyGraphWithDelegate(ext_delegate_ptr);&lt;BR /&gt;std::cout &amp;lt;&amp;lt; " Modifying graph with delegate " &amp;lt;&amp;lt; std::endl;&lt;BR /&gt;interpreter-&amp;gt;AllocateTensors();&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;but i always get:&lt;/P&gt;&lt;P&gt;undefined reference to tflite::ops::custom::REGISTER_VSI_NPU_PRECOMPILED() do you know where the problem could be? &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/207757"&gt;@dwightk&lt;/a&gt; i tried to play around with the namespaces but i have no clue wher the problem is.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;best wishes jean&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Feb 2024 16:18:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1815764#M220428</guid>
      <dc:creator>JeFi</dc:creator>
      <dc:date>2024-02-26T16:18:57Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1815805#M220432</link>
      <description>&lt;P&gt;I think you are missing the header file:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#include&amp;nbsp;vsi_npu_custom_op.h&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/nxp-imx/tflite-vx-delegate-imx/blob/lf-5.15.71_2.2.0/vsi_npu_custom_op.h" target="_blank"&gt;https://github.com/nxp-imx/tflite-vx-delegate-imx/blob/lf-5.15.71_2.2.0/vsi_npu_custom_op.h&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I may have created this header file based on the Github repo above.&lt;/P&gt;&lt;P&gt;This might work as is, if you create the file and drop it in the same folder as your program, or you might have to update the "common.h" reference for the correct path to your yocto sdk tensorflow headers.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#include "tensorflow/lite/c/common.h"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;You can issue the find command from bash:&amp;nbsp; &lt;STRONG&gt;find / -name "common.h"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 Feb 2024 16:59:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1815805#M220432</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2024-02-26T16:59:14Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1816335#M220466</link>
      <description>&lt;P&gt;Thank you so much for your quick response! I dont think this is the problem. Indeed i had this problem initially when i tried it first and i got exactly what you said that it could not load the header file.&amp;nbsp; But then i included the vx delegate package in my recipe:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMMARY&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"bf on npu"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LICENSE&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"CLOSED"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Specify&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;version&lt;/SPAN&gt; &lt;SPAN&gt;of&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;IMAGE_VERSION&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"1.0"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;S&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"${WORKDIR}"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Specify&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;dependencies&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"opencv"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"tensorflow-lite"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"flatbuffers"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"tensorflow-lite-vx-delegate"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS += "tim-vx"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS += "abseil-cpp"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Define&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;recipe&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Define&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;recipe&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;cpp&lt;/SPAN&gt; &lt;SPAN&gt;file&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SRC_URI&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"file://fd.cpp \&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file://Screenshot.png \&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file://blazeface_npu.tflite \&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;do_compile&lt;/SPAN&gt;&lt;SPAN&gt;() {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;CXX&lt;/SPAN&gt;&lt;SPAN&gt;} fd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;cpp&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;o&lt;/SPAN&gt; &lt;SPAN&gt;blazeface_npu&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;CFLAGS&lt;/SPAN&gt;&lt;SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;LDFLAGS&lt;/SPAN&gt;&lt;SPAN&gt;} -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_gapi&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_highgui&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_ml&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_objdetect&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_photo&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_stitching&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_video&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_calib3d&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_features2d&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_dnn&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_flann&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_videoio&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_imgcodecs&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_imgproc&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_core&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;ltensorflow&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;lite&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;do_install&lt;/SPAN&gt;&lt;SPAN&gt;() {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;install&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;d&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;D&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;bindir&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;install&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;d&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;D&lt;/SPAN&gt;&lt;SPAN&gt;}/&lt;/SPAN&gt;&lt;SPAN&gt;usr&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;src&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;install&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;m&lt;/SPAN&gt; &lt;SPAN&gt;0755&lt;/SPAN&gt; &lt;SPAN&gt;blazeface_npu&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;D&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;bindir&lt;/SPAN&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;install&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;m&lt;/SPAN&gt; &lt;SPAN&gt;0755&lt;/SPAN&gt; &lt;SPAN&gt;Screenshot&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;png&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;D&lt;/SPAN&gt;&lt;SPAN&gt;}/&lt;/SPAN&gt;&lt;SPAN&gt;usr&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;src&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;install&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;m&lt;/SPAN&gt; &lt;SPAN&gt;0755&lt;/SPAN&gt; &lt;SPAN&gt;blazeface_npu&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;tflite&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;D&lt;/SPAN&gt;&lt;SPAN&gt;}/&lt;/SPAN&gt;&lt;SPAN&gt;usr&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;src&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I am compiling the program during the yocto build and it works already for the cpu(so i know that header and libarys files for opencv and tensorflow lite are loaded correctly.). I have only the binarys on my board in the end.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I also included the header files you mentioned in the script above:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;#include &amp;lt;tensorflow-lite-vx-delegate/delegate_main.h&amp;gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;STRONG&gt;#include &amp;lt;tensorflow-lite-vx-delegate/vsi_npu_custom_op.h&amp;gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;This is the error i receive for the script above:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;| DEBUG: Executing shell function do_compile&lt;BR /&gt;| facedetectionnpu.cpp: In function 'int main()':&lt;BR /&gt;| facedetectionnpu.cpp:74:41: warning: 'this' pointer is null [-Wnonnull]&lt;BR /&gt;| 74 | interpreter-&amp;gt;ModifyGraphWithDelegate(ext_delegate_ptr);&lt;BR /&gt;| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~&lt;BR /&gt;| In file included from facedetectionnpu.cpp:3:&lt;BR /&gt;| /build/image-provisioning-tmp/work/cortexa53-crypto-mx8mp-linux/fd/1.0-r0/recipe-sysroot/usr/include/tensorflow/lite/interpreter.h:601:16: note: in a call to no&amp;gt;&lt;BR /&gt;| 601 | TfLiteStatus ModifyGraphWithDelegate(TfLiteDelegate* delegate);&lt;BR /&gt;| | ^~~~~~~~~~~~~~~~~~~~~~~&lt;BR /&gt;| fd.cpp:76:33: warning: 'this' pointer is null [-Wnonnull]&lt;BR /&gt;| 76 | interpreter-&amp;gt;AllocateTensors();&lt;BR /&gt;| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~&lt;BR /&gt;| In file included from facedetectionnpu.cpp:3:&lt;BR /&gt;| /build/image-provisioning-tmp/work/cortexa53-crypto-mx8mp-linux/fd/1.0-r0/recipe-sysroot/usr/include/tensorflow/lite/interpreter.h:528:16: note: in a call to no&amp;gt;&lt;BR /&gt;| 528 | TfLiteStatus AllocateTensors();&lt;BR /&gt;| | ^~~~~~~~~~~~~~~&lt;BR /&gt;| facedetectionnpu.cpp:95:28: warning: 'this' pointer is null [-Wnonnull]&lt;BR /&gt;| 95 | interpreter-&amp;gt;Invoke();&lt;BR /&gt;| | ~~~~~~~~~~~~~~~~~~~^~&lt;BR /&gt;| In file included from facedetectionnpu.cpp:3:&lt;BR /&gt;| /build/image-provisioning-tmp/work/cortexa53-crypto-mx8mp-linux/fd/1.0-r0/recipe-sysroot/usr/include/tensorflow/lite/interpreter.h:536:16: note: in a call to no&amp;gt;&lt;BR /&gt;| 536 | TfLiteStatus Invoke();&lt;BR /&gt;| | ^~~~~~&lt;BR /&gt;| /build/image-provisioning-tmp/work/cortexa53-crypto-mx8mp-linux/fd/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-linux/../../libexec/aarch64-linux/gcc/&amp;gt;&lt;BR /&gt;| /usr/src/debug/fd/1.0-r0/fd.cpp:64: undefined reference to `tflite::ops::custom::Register_VSI_NPU_PRECOMPILED()'&lt;BR /&gt;| collect2: error: ld returned 1 exit status&lt;BR /&gt;| WARNING: exit code 1 from a shell command.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;and i dont get a error that the header files cant be found, so i am assuming that this works.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Do you have an sdk on your board so that you compile it on the board directly? If so, how did you get the header files for the libarys onto the board?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Thank you in advance!&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;best wishes &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Jean &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 27 Feb 2024 09:02:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1816335#M220466</guid>
      <dc:creator>JeFi</dc:creator>
      <dc:date>2024-02-27T09:02:22Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1816556#M220478</link>
      <description>&lt;P&gt;If I understand the debug output correctly, you are getting this error at compile time, not runtime.&lt;/P&gt;&lt;P&gt;1) Ensure that the .o object files are being created, which will confirm the compiler found the headers.&lt;/P&gt;&lt;P&gt;2) Double check the .vscode&amp;nbsp; tasks.json where I will reference the libraries. Ensure all of those libraries are available to your compiler. Error may arise from secondary dependency, not just the primary library.&lt;/P&gt;&lt;P&gt;3) Find all those libraries on your board. (it's something like /usr/lib path) You should see all the required .so&lt;/P&gt;&lt;P&gt;4) Try commenting out that line or substituting it with a different line, sometimes it will give a different debug output which can help to identify if there is a particular missing library.&lt;/P&gt;&lt;P&gt;Reasons might be: 1) Your SDK or Yocto Image isn't the full version (eg. maybe you created multimedia SDK), which has some of the OpenCV etc. but not all the tensorflow.&amp;nbsp; 2) Your header paths are not being found.&amp;nbsp; 3) You're trying to compile the project directly on the board without the SDK present. I don't have an SDK on the board, I use arm64 cross compiler on desktop with full SDK installed and then drop the binary on the board to run it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Feb 2024 12:34:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1816556#M220478</guid>
      <dc:creator>dwightk</dc:creator>
      <dc:date>2024-02-27T12:34:19Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1818493#M220573</link>
      <description>&lt;P&gt;You understood the output correctly, the error was during compilation. Meanwhile i solved the problem. The header files loaded correctly but during the compilation of vx-delegate there are two libarys created. 1. libvx_delegate.so and 2. libvx_custom_op.a. The problem was that the static libary was not included or linked in the syspath of the yocto project. So i linked the static libary from the build folder of the vx-delegate recipe manually to the compiler flags of my recipe and everything worked fine!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/207757"&gt;@dwightk&lt;/a&gt;,&amp;nbsp;your post helped me a lot!&lt;/P&gt;&lt;P&gt;best wishes&lt;/P&gt;</description>
      <pubDate>Thu, 29 Feb 2024 08:25:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1818493#M220573</guid>
      <dc:creator>JeFi</dc:creator>
      <dc:date>2024-02-29T08:25:30Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1841162#M222160</link>
      <description>&lt;P&gt;I run into the same behaviour. Do yo have some code snippets, how you linked the vx_custom_op library in yocto?&lt;/P&gt;</description>
      <pubDate>Fri, 05 Apr 2024 08:38:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1841162#M222160</guid>
      <dc:creator>whale-1958</dc:creator>
      <dc:date>2024-04-05T08:38:47Z</dc:date>
    </item>
    <item>
      <title>Re: Vx_delegate invoking in Python but not C++ for IMXMPLUS</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1848215#M222601</link>
      <description>&lt;P&gt;Sorry for the late response. I solved it a bit hacky. I would suggest that to go to the build directory of tensorflow-lite-vx-delegate recipe. You can find it by initialising youre yocto project (source oe...) and then type in the terminal comand:&lt;/P&gt;&lt;P&gt;bitbake -e tensorflow-lite-vx-delegate | grep ^D=&lt;/P&gt;&lt;P&gt;You will get a path. Go there and browse a bit around and in some folder you will find the static libary vx_custom_op.a. Somehow it is not linked in the filesystem libarys of yocto. I solved it the brutal way:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMMARY&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"bf on npu"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;LICENSE&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"CLOSED"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Specify&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;version&lt;/SPAN&gt; &lt;SPAN&gt;of&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;IMAGE_VERSION&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"1.0"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;S&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"${WORKDIR}"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Specify&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;dependencies&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"opencv"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"tensorflow-lite"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"flatbuffers"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"tensorflow-lite-vx-delegate"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"abseil-cpp"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DEPENDS&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"tim-vx"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;PATH_TO_VX&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"/../../../linux/tensorflow-lite-vx-delegate/2.9.1-r0/build"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;WD&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"${WORKDIR}"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CUSTOM_PATH&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;"${WD}${PATH_TO_VX}"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Define&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;recipe&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;#inherit&lt;/SPAN&gt; &lt;SPAN&gt;core&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;image&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#&lt;/SPAN&gt; &lt;SPAN&gt;Define&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;recipe&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;the&lt;/SPAN&gt; &lt;SPAN&gt;main&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;cpp&lt;/SPAN&gt; &lt;SPAN&gt;file&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SRC_URI&lt;/SPAN&gt;&lt;SPAN&gt; += &lt;/SPAN&gt;&lt;SPAN&gt;"file://fd.cpp \&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file://Screenshot.png \&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file://bf_npu.tflite \&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file://vsi_npu_custom_op.h \&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;do_compile&lt;/SPAN&gt;&lt;SPAN&gt;() {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;CXX&lt;/SPAN&gt;&lt;SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN&gt;fd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;cpp&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;o&lt;/SPAN&gt; &lt;SPAN&gt;bf_npu&lt;/SPAN&gt; &lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;CFLAGS&lt;/SPAN&gt;&lt;SPAN&gt;} &lt;/SPAN&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;LDFLAGS&lt;/SPAN&gt;&lt;SPAN&gt;} -&lt;/SPAN&gt;&lt;SPAN&gt;I&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;WORKDIR&lt;/SPAN&gt;&lt;SPAN&gt;} -&lt;/SPAN&gt;&lt;SPAN&gt;ltim&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;vx&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;ltensorflow&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;lite&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;L$&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN&gt;CUSTOM_PATH&lt;/SPAN&gt;&lt;SPAN&gt;} -&lt;/SPAN&gt;&lt;SPAN&gt;lvx_custom_op&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_gapi&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_highgui&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_ml&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_objdetect&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_photo&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_stitching&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_video&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_calib3d&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_features2d&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_dnn&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_flann&lt;/SPAN&gt; &lt;SPAN&gt;\&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_videoio&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_imgcodecs&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_imgproc&lt;/SPAN&gt;&lt;SPAN&gt; -&lt;/SPAN&gt;&lt;SPAN&gt;lopencv_core&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I remembered wehre to find the static libary and made a path to reach to that point. In the compiler arguments i parse the path.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best wishes&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 16 Apr 2024 14:48:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Vx-delegate-invoking-in-Python-but-not-C-for-IMXMPLUS/m-p/1848215#M222601</guid>
      <dc:creator>JeFi</dc:creator>
      <dc:date>2024-04-16T14:48:06Z</dc:date>
    </item>
  </channel>
</rss>

