My image classification system on esp32-cam crashed and I can't resolve it




Hi @Meteor,

This looks like a compilation or linking problem rather than a crash. Could you copy and paste the text from the error output rather than screenshots? A lot of the text is getting cut off.

Here is my error :
In file included from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/common.h:29:0,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h:21,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/kernels/pooling.h:23,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/micro_mutable_op_resolver.h:33,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/all_ops_resolver.h:19,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:35,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:28,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/ei_run_classifier.h:44,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/fruitsclassification_inferencing.h:49,
from D:\Arduino\Basic-Image-Classification\Basic-Image-Classification.ino:8:
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h: In function ‘T tflite::TfLiteRound(T)’:
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:26:35: error: ‘round’ is not a member of ‘std’
#define TF_LITE_GLOBAL_STD_PREFIX std
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:32:12: note: in expansion of macro ‘TF_LITE_GLOBAL_STD_PREFIX’
return TF_LITE_GLOBAL_STD_PREFIX::std_name(x);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:35:1: note: in expansion of macro ‘DECLARE_STD_GLOBAL_SWITCH1’
DECLARE_STD_GLOBAL_SWITCH1(TfLiteRound, round);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:26:35: note: suggested alternative:
#define TF_LITE_GLOBAL_STD_PREFIX std
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:32:12: note: in expansion of macro ‘TF_LITE_GLOBAL_STD_PREFIX’
return TF_LITE_GLOBAL_STD_PREFIX::std_name(x);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:35:1: note: in expansion of macro ‘DECLARE_STD_GLOBAL_SWITCH1’
DECLARE_STD_GLOBAL_SWITCH1(TfLiteRound, round);
^
In file included from C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32/esp32-hal.h:34:0,
from C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32/Arduino.h:35,
from D:\Arduino\Basic-Image-Classification\Basic-Image-Classification.ino:2:
C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/newlib/math.h:278:15: note: ‘round’
extern double round _PARAMS((double));
^
In file included from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/common.h:29:0,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/reference/integer_ops/pooling.h:21,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/kernels/pooling.h:23,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/micro_mutable_op_resolver.h:33,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/micro/all_ops_resolver.h:19,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/inferencing_engines/tflite_helper.h:35,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/inferencing_engines/tflite_eon.h:28,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/classifier/ei_run_classifier.h:44,
from c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/fruitsclassification_inferencing.h:49,
from D:\Arduino\Basic-Image-Classification\Basic-Image-Classification.ino:8:
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h: In function ‘T tflite::TfLiteExpm1(T)’:
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:26:35: error: ‘expm1’ is not a member of ‘std’
#define TF_LITE_GLOBAL_STD_PREFIX std
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:32:12: note: in expansion of macro ‘TF_LITE_GLOBAL_STD_PREFIX’
return TF_LITE_GLOBAL_STD_PREFIX::std_name(x);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:36:1: note: in expansion of macro ‘DECLARE_STD_GLOBAL_SWITCH1’
DECLARE_STD_GLOBAL_SWITCH1(TfLiteExpm1, expm1);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:26:35: note: suggested alternative:
#define TF_LITE_GLOBAL_STD_PREFIX std
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:32:12: note: in expansion of macro ‘TF_LITE_GLOBAL_STD_PREFIX’
return TF_LITE_GLOBAL_STD_PREFIX::std_name(x);
^
c:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing\src/edge-impulse-sdk/tensorflow/lite/kernels/internal/cppmath.h:36:1: note: in expansion of macro ‘DECLARE_STD_GLOBAL_SWITCH1’
DECLARE_STD_GLOBAL_SWITCH1(TfLiteExpm1, expm1);
^
In file included from C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32/esp32-hal.h:34:0,
from C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32/Arduino.h:35,
from D:\Arduino\Basic-Image-Classification\Basic-Image-Classification.ino:2:
C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/newlib/math.h:290:15: note: ‘expm1’
extern double expm1 _PARAMS((double));
^

Using library WiFi at version 1.0 in folder: C:\Users\My laptop\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Using library fruitsclassification_inferencing at version 1.0.1 in folder: C:\Users\My laptop\Documents\Arduino\libraries\fruitsclassification_inferencing

This is my cppmath.h :

#ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_CPPMATH_H_
#define TENSORFLOW_LITE_KERNELS_INTERNAL_CPPMATH_H_

#include

namespace tflite {

#if defined(TF_LITE_USE_GLOBAL_CMATH_FUNCTIONS) ||
(defined(ANDROID) && !defined(NDK_MAJOR)) || defined(ZEPHYR)
#define TF_LITE_GLOBAL_STD_PREFIX
#else
#define TF_LITE_GLOBAL_STD_PREFIX std
#endif

#define DECLARE_STD_GLOBAL_SWITCH1(tf_name, std_name)
template
inline T tf_name(const T x) {
return TF_LITE_GLOBAL_STD_PREFIX::std_name(x);
}

DECLARE_STD_GLOBAL_SWITCH1(TfLiteRound, round);
DECLARE_STD_GLOBAL_SWITCH1(TfLiteExpm1, expm1);

} // namespace tflite

#endif

Hello, @Meteor !
One thing I’m noticing is that you are using a very outdated version of ESP32 Arduino core - 1.0.6.
In our example files it says

// These sketches are tested with 2.0.4 ESP32 Arduino Core

Can you please test with this particular version?

1 Like

when I compiled it with version 2.0.11 a new error appeared :
image_util.h: No such file or directory
Where can i find this library ?

In our example files it says

// These sketches are tested with 2.0.4 ESP32 Arduino Core

Can you please test with this particular version?

1 Like

My arduino ide doesn’t have esp32 2.0.4 version :(((

It is also a very outdatet lib with a lot of known bugs. Current version is 2.0.15. To get it, you may need to change the source to https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

1 Like

Follow the instructions here to install 2.0.4
https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-arduino-ide

1 Like

I tested it with version 2.0.4 but the same problem :(((
image_util.h: No such file or directory
when I added library image_util.h to my project another problem appeared:
mtmn.h: No such file or directory

You’re trying to compile deprecated example.
Just use the example bundled with the downloaded library.
File → Examples → name of your project → esp32

1 Like


when I added the required libraries I got the error:
ping timeout

and here are its details:
c:\Users\My laptop\Documents\Arduino\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\src\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_depthwise_separable_conv_HWC_q7_nonsquare.c:2: fatal error: opening dependency file C:\Users\My laptop\AppData\Local\Temp\arduino\sketches\4846EB6F30865CC76B19E677AD7FEBDE\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_depthwise_separable_conv_HWC_q7_nonsquare.c.d: No such file or directory
#if EI_CLASSIFIER_TFLITE_LOAD_CMSIS_NN_SOURCES

compilation terminated.

c:\Users\My laptop\Documents\Arduino\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\src\edge-impulse-sdk\CMSIS\NN\Source\FullyConnectedFunctions\arm_fully_connected_mat_q7_vec_q15_opt.c:2: fatal error: opening dependency file C:\Users\My laptop\AppData\Local\Temp\arduino\sketches\4846EB6F30865CC76B19E677AD7FEBDE\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\edge-impulse-sdk\CMSIS\NN\Source\FullyConnectedFunctions\arm_fully_connected_mat_q7_vec_q15_opt.c.d: No such file or directory
#if EI_CLASSIFIER_TFLITE_LOAD_CMSIS_NN_SOURCES

compilation terminated.
c:\Users\My laptop\Documents\Arduino\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\src\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_nn_mat_mult_kernel_s8_s16_reordered.c:2: fatal error: opening dependency file C:\Users\My laptop\AppData\Local\Temp\arduino\sketches\4846EB6F30865CC76B19E677AD7FEBDE\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_nn_mat_mult_kernel_s8_s16_reordered.c.d: No such file or directory
#if EI_CLASSIFIER_TFLITE_LOAD_CMSIS_NN_SOURCES

compilation terminated.
c:\Users\My laptop\Documents\Arduino\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\src\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_nn_mat_mult_kernel_q7_q15_reordered.c:2: fatal error: opening dependency file C:\Users\My laptop\AppData\Local\Temp\arduino\sketches\4846EB6F30865CC76B19E677AD7FEBDE\libraries\FRUIT_AND_VEGETABLE_RECOGNITION_BY_TRANSFER_LEARNING_inferencing\edge-impulse-sdk\CMSIS\NN\Source\ConvolutionFunctions\arm_nn_mat_mult_kernel_q7_q15_reordered.c.d: No such file or directory
#if EI_CLASSIFIER_TFLITE_LOAD_CMSIS_NN_SOURCES

compilation terminated.

You’re trying to compile deprecated example.
Use the example bundled with the downloaded library.
File → Examples → name of your project → esp32
And build from there.

We cannot provide help debugging deprecated code.