在项目中包含用于微控制器的 Tensorflow Lite 导致包含错误

问题描述 投票:0回答:0

我正在尝试使用 libDaisy(Electrosmith Daisy Seed 开发板的 HAL - 基于 STM32H7 MCU 的开发板)将用于微控制器的 Tensorflow Lite 包含在 C++ 项目中。我遇到了这个问题,Tensorflow 试图导入一些其他文件但不能。这似乎是由于使用了绝对路径,因为如果我将它们更改为相对路径,它就可以工作,但是 tensorflow 有数百个导入,所以手工操作是不切实际的。例如,这是我在包含 Tensorflow 时遇到的错误:

DataInference/RainPredictor/../../tensorflow/tensorflow/lite/micro/all_ops_resolver.h:18:10: fatal error: tensorflow/lite/micro/compatibility.h: No such file or directory
   18 | #include "tensorflow/lite/micro/compatibility.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我可以通过更改 Tensorflow 中的这个包含来解决这个问题:

#include "tensorflow/lite/micro/compatibility.h"

至:

#include "compatibility.h"

但我必须对 Tensorflow 中的每个包含项执行此操作以修复所有这些显然不切实际的错误。我假设我需要启用一些 Makefile 魔术或编译器设置,以允许在我不知道的 C++ 项目中使用绝对路径。而且我似乎无法在 Google 或 C++ 或 Make 文档中找到任何内容。那么有人可以就这个问题启发我吗?

额外信息:

项目结构:

  • lib雏菊/
  • 雏菊SP/
  • 固件/
    • 固件.cpp
    • 张量流/
      • ...
    • 数据推理/
      • RainPredictor/
        • 模型.h
        • rain_predictor.cpp
    • (不相关的文件)...
    • 制作文件

Makefile 内容:

# Project Name
TARGET = Firmware

# Sources
CPP_SOURCES = Firmware.cpp 

LDFLAGS += -u _printf_float

# Library Locations
LIBDAISY_DIR = ../libDaisy
DAISYSP_DIR = ../DaisySP
TENSORFLOW_DIR = ./tensorflow
TENSORFLOW_ROOT := ./tensorflow

# Core location, and generic makefile.
SYSTEM_FILES_DIR = $(LIBDAISY_DIR)/core
include $(SYSTEM_FILES_DIR)/Makefile

rain_predictor.cpp 内容:

#include "../../tensorflow/tensorflow/lite/micro/all_ops_resolver.h"
#include "../../tensorflow/tensorflow/lite/micro/micro_interpreter.h"
#include "../../tensorflow/tensorflow/lite/schema/schema_generated.h"
#include "model.h"

void predict_rain_intensity() {

}
c++ tensorflow makefile embedded tensorflow-lite
© www.soinside.com 2019 - 2024. All rights reserved.