Deploy model to ESP-CAM

Question/Issue:

How can I deploy my model into ESP-CAM. I built my detection model for ESP-Cam with 60kB RAM and 80kB flash. I successfully ran some examples from hacker.io (car detection, cat-dog detection, …) but when I imported my model library to Arduino, it report error. Here is my error.


/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(debug_log.cpp.o): in function `DebugLog(char const*)':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/debug_log.cpp:34: multiple definition of `DebugLog(char const*)'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(debug_log.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/debug_log.cpp:34: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_read_timer_ms()':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:47: multiple definition of `ei_read_timer_ms()'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:41: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_read_timer_us()':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:51: multiple definition of `ei_read_timer_us()'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:45: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_putchar(char)':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:56: multiple definition of `ei_putchar(char)'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:55: first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board AI Thinker ESP32-CAM.


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
1 Like

Hi @bihonght,

The “multiple definition” error makes me think that you have several versions of the same Edge Impulse Arduino library “fire_detection_inferencing” somewhere on your system (and Arduino search path).

Failing that, are you able to run this example? https://github.com/edgeimpulse/example-esp32-cam