2021-05-16 02:19 AM
Hi, I have installed STM32 cube IDE and the latest version of CUBE AI software pack to convert a pretrained neural nework implemented and trained with Keras/TF. After creating a project, when I try to add a network from a saved model.h5 from the file system, when I try to analyze it I have the following error:
Analyzing model
C:/Users/<username>/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI/6.0.0/Utilities/windows/stm32ai analyze --name network -m C:/Users/<username>/facedetection/pnet.h5 --type keras --compression 1 --verbosity 1 --workspace C:\Users\<username>\AppData\Local\Temp\mxAI_workspace85208706500011701743944848630527 --output C:\Users\<username>\.stm32cubemx
[456] Failed to execute script stm32ai
Traceback (most recent call last):
File "tensorflow\python\pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: DLL load failed: Routine di inizializzazione della libreria di collegamento dinamico (DLL) non riuscita.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "stm32ai.py", line 376, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "irs\objects\ai_layer_factory.py", line 22, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "irs\objects\layers\bidirectional.py", line 23, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "irs\objects\layers\gru.py", line 24, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "irs\objects\layers\recurrent_layer.py", line 24, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "utilities\keras_utilities.py", line 28, in <module>
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "tensorflow\__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "tensorflow\python\__init__.py", line 40, in <module>
from tensorflow.python.eager import context
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "tensorflow\python\eager\context.py", line 35, in <module>
from tensorflow.python import pywrap_tfe
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "tensorflow\python\pywrap_tfe.py", line 28, in <module>
from tensorflow.python import pywrap_tensorflow
File "c:\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
File "tensorflow\python\pywrap_tensorflow.py", line 83, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "tensorflow\python\pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: DLL load failed: Routine di inizializzazione della libreria di collegamento dinamico (DLL) non riuscita.
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help
The above error can be translated as:
ImportError: DLL load failed: DLL initialization routine failed.
This it the STM32CubeIDE version:
Version: 1.6.1
Build: 9958_20210326_1446 (UTC)
My OS is windows 10. I already tried to install the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019, but nothing changed.
Do you have any suggestion about what could be wrong in my environment setup?
Thanks,
Enrico
2021-05-16 02:21 AM
UPDATE:
A similar error occurs if I switch to a previous version of X-CUBE-AI (5.0.0):
Analyzing model
Neural Network Tools for STM32 v1.2.0 (AI tools v5.0.0)
TOOL ERROR: Traceback (most recent call last):
File "C:\Users\<username>\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\5.0.0\Utilities\windows\tensorflow_core\python\pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\Users\<username>\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\5.0.0\Utilities\windows\tensorflow_core\python\pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\Users\<username>\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\5.0.0\Utilities\windows\tensorflow_core\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "imp.py", line 242, in load_module
File "imp.py", line 342, in load_dynamic
ImportError: DLL load failed: Routine di inizializzazione della libreria di collegamento dinamico (DLL) non riuscita.
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
2021-05-17 12:51 AM
We had a similar issue in the past with vcruntime (the vcruntime140_1.dll was missing in the directory).
Can you try to see if you have another vcruntimexxxx.dll in C:\Windows\System32 and copy it into
C:\Users\<username>\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\5.0.0\Utilities\windows
Regards
2021-05-17 02:13 AM
Hi Daniel,
Thanks for your help!
The library vcruntime140_1.dll was actually missing in C:\Users\<username>\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\5.0.0\Utilities\windows, but adding it didn't solve the problem. I also tried adding other related files (e.g. vcruntime140.dll, replacing it with the version in my C:\Windows\System32 directory), but nothing seems to work. The error I am having is exactly the same as before.
Shall I try to install older versions of STM32 cube IDE?
If yes, do you have any suggestion on which configuration to try first?
Thanks,
Enrico
2021-05-18 06:51 AM
Please tell me if u find an answer, i cant get through this either.
2022-01-03 11:38 PM
To make it short, it means that you lacked some "dependencies" for the libraries you wanted to use. This is a common problem when installing python packages, mainly in windows. Before trying to use any kind of library, first it is suggested to look up whether it needs another library in python "family".
The solution is to provide the python interpreter with the path-to-your-module/library. The simplest solution is to append that python path to your sys.path list. In your notebook, first try:
import sys
sys.path.append('my/path/to/module/folder')
This isn't a permanent change in sys.path, because when you log out, your environment is reset, so any variables you may have set are lost.
The better (and more permanent) way to solve this is to set your PYTHONPATH, which provides the interpreter with additional directories look in for python packages/modules.
from BASH type: export PYTHONPATH=/path/to/new/folder:/another/path/...../ #each path must be separated by a colon