I have Oak D pro PoE, and I want to convert the ONNX TResnet weights to RVC2 weights to run on device. I tried the online approach by using the API key, but I got this error:

Traceback (most recent call last):
File "/usr/local/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/usr/local/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.10/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
File "/app/modelconverter/packages/rvc2/exporter.py", line 335, in _superblob_compile_step
subprocess_run(["compile_tool", *args], silent=True)
File "/app/modelconverter/utils/subprocess.py", line 67, in subprocess_run
raise SubprocessException(info_string)
modelconverter.utils.exceptions.SubprocessException: Command `compile_tool` finished in 0.95 seconds with return code 1.
[ STDERR ]:
[ GENERAL_ERROR ] 
/mnt/docker/openvino/src/plugins/intel_myriad/graph_transformer/src/middleend/passes/adjust_data_location.cpp:227 [Internal Error]: Memory allocation failed: unable to satisfy requirements for stage ReduceMean with type ReduceMean
[ STDOUT ]:

Is this model too complex for RVC2? For Oak D pro PoE I can only use RVC2, right? Is there any other way to make this work? Will custom OPEN CL kernel work for this model?

  • Hi @ShivamSharma ,
    You are correct, the model you are trying to use is too complex for RVC2 (Intel Myriad X) device.

    For Oak D pro PoE I can only use RVC2, right?

    Yes, this is the only VPU that is on your device.

    Will custom OPEN CL kernel work for this model?

    No, custom kernels won't work same as they would on GPU because Myriad X does not support custome operation implementations. You can only work with operations that are officially supported.

    Is there any other way to make this work?

    Depending on the usage of the ReduceMean operation you could try replacing it with e.g. AveragePool. But this won't work for all cases, it depends where and how this operation is used in the network.
    The other workaround would be to use a different, more lightweight architecture. We have a collection of them in our ZOO so perhaps there is something already prepared for you to use.

    Hope this helps,
    Klemen

Hi @ShivamSharma ,
You are correct, the model you are trying to use is too complex for RVC2 (Intel Myriad X) device.

For Oak D pro PoE I can only use RVC2, right?

Yes, this is the only VPU that is on your device.

Will custom OPEN CL kernel work for this model?

No, custom kernels won't work same as they would on GPU because Myriad X does not support custome operation implementations. You can only work with operations that are officially supported.

Is there any other way to make this work?

Depending on the usage of the ReduceMean operation you could try replacing it with e.g. AveragePool. But this won't work for all cases, it depends where and how this operation is used in the network.
The other workaround would be to use a different, more lightweight architecture. We have a collection of them in our ZOO so perhaps there is something already prepared for you to use.

Hope this helps,
Klemen