Home > database >  Compile errors in Tensorflow Lite Micro framework when trying to integrate Tensorflow Lite Micro to
Compile errors in Tensorflow Lite Micro framework when trying to integrate Tensorflow Lite Micro to

Time:04-05

Hi stackoverflow community,

I am trying to get a project leveraging Tensorflow Lite Micro to run on my ESP32 using PlatformIO and the Arduino framework (not ESP-IDF). Basically, I followed the guide in this medium post https://towardsdatascience.com/tensorflow-meet-the-esp32-3ac36d7f32c7 and then included everything in my already existing ESP32 project.

My project was compiling fine prior to the integration of Tensorflow Lite Micro but since integrating it, I am getting the following compile errors which seem to be related to the Tensorflow framework itself. When I uncomment everything related to Tensorflow, it compiles fine. But just when only including the following header files, it breaks:

#include "tensorflow/lite/micro/kernels/micro_ops.h"
#include "tensorflow/lite/micro/micro_error_reporter.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/micro/micro_mutable_op_resolver.h"
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow/lite/version.h"

Does someone know where these errors come from and what I can do to solve those?

Here is the error trace:

In file included from /Users/XXX/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.h:24:0,
                 from /Users/XXX/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFi.h:37,
                 from src/main.cpp:3:
/Users/XXX/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:64:17: error: expected identifier before numeric constant
 #define DEFAULT 1
                 ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:31:5: note: in expansion of macro 'DEFAULT'
     DEFAULT = 1,
     ^
/Users/XXX/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:64:17: error: expected '}' before numeric constant
 #define DEFAULT 1
                 ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:31:5: note: in expansion of macro 'DEFAULT'
     DEFAULT = 1,
     ^
/Users/XXX/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:64:17: error: expected unqualified-id before numeric constant
 #define DEFAULT 1
                 ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:31:5: note: in expansion of macro 'DEFAULT'
     DEFAULT = 1,
     ^
In file included from lib/tfmicro/tensorflow/lite/micro/micro_interpreter.h:24:0,
                 from src/main.cpp:12:
lib/tfmicro/tensorflow/lite/core/api/profiler.h:51:21: error: declaration of '~tflite::Profiler' as non-member
   virtual ~Profiler() {}
                     ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:61:48: error: 'EventType' has not been declared
   virtual uint32_t BeginEvent(const char* tag, EventType event_type,
                                                ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:63:54: error: 'virtual' outside class declaration
                               int64_t event_metadata2) = 0;
                                                      ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:63:58: error: function 'uint32_t tflite::BeginEvent(const char*, int, int64_t, int64_t)' is initialized like a variable
                               int64_t event_metadata2) = 0;
                                                          ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:65:40: error: 'EventType' has not been declared
   uint32_t BeginEvent(const char* tag, EventType event_type,
                                        ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:74:48: error: 'virtual' outside class declaration
                         int64_t event_metadata2) {}
                                                ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:76:46: error: 'virtual' outside class declaration
   virtual void EndEvent(uint32_t event_handle) = 0;
                                              ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:76:50: error: function 'void tflite::EndEvent(uint32_t)' is initialized like a variable
   virtual void EndEvent(uint32_t event_handle) = 0;
                                                  ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:85:34: error: 'EventType' has not been declared
   void AddEvent(const char* tag, EventType event_type, uint64_t start,
                                  ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h: In function 'void tflite::AddEvent(const char*, int, uint64_t, uint64_t, int64_t)':
lib/tfmicro/tensorflow/lite/core/api/profiler.h:88:35: error: too many arguments to function 'void tflite::AddEvent(const char*, int, uint64_t, uint64_t, int64_t)'
              /*event_metadata2*/ 0);
                                   ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:85:8: note: declared here
   void AddEvent(const char* tag, EventType event_type, uint64_t start,
        ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h: At global scope:
lib/tfmicro/tensorflow/lite/core/api/profiler.h:91:42: error: 'EventType' has not been declared
   virtual void AddEvent(const char* tag, EventType event_type, uint64_t start,
                                          ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:93:48: error: 'virtual' outside class declaration
                         int64_t event_metadata2) {}
                                                ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:95:2: error: expected unqualified-id before 'protected'
  protected:
  ^
lib/tfmicro/tensorflow/lite/core/api/profiler.h:105:25: error: expected ')' before '*' token
   ScopedProfile(Profiler* profiler, const char* tag,
                         ^
src/main.cpp:202:1: error: expected '}' at end of input
 }
 ^
src/main.cpp:202:1: error: expected unqualified-id at end of input
*** [.pio/build/esp32cam/src/main.cpp.o] Error 1

CodePudding user response:

I resolved this for now by switching from the Arduino framework to the ESP-IDF framework. With this, it works like a charm.

  • Related