#include "model.h"
#include <tflm_esp32.h>
#include <eloquent_tinyml.h>
// this is trial-and-error process
// when developing a new model, start with a high value
// (e.g. 10000), then decrease until the model stops
// working as expected
#define ARENA_SIZE 2000
Eloquent::TF::Sequential<TF_NUM_OPS, ARENA_SIZE> tf;
/**
*
*/
void setup() {
Serial.begin(115200);
delay(3000);
Serial.println("__TENSORFLOW HAND GESTURE CLASSIFICATION__");
while (!tf.begin(emgModel).isOk())
Serial.println(tf.exception.toString());
}
void loop() {
// classify class 1
if (!tf.predict(x1).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 1, predicted class ");
Serial.println(tf.classification);
// classify class 13
if (!tf.predict(x13).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expected class 13, predicted class ");
Serial.println(tf.classification);
// classify class 14
if (!tf.predict(x14).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 14, predicted class ");
Serial.println(tf.classification);
// classify class 17
if (!tf.predict(x17).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 17, predicted class ");
Serial.println(tf.classification);
// classify class 18
if (!tf.predict(x18).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 18, predicted class ");
Serial.println(tf.classification);
// classify class 19
if (!tf.predict(x19).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 19, predicted class ");
Serial.println(tf.classification);
// classify class 34
if (!tf.predict(x34).isOk()) {
Serial.println(tf.exception.toString());
return;
}
Serial.print("expcted class 34, predicted class ");
Serial.println(tf.classification);
// how long does it take to run a single prediction?
Serial.print("It takes ");
Serial.print(tf.benchmark.microseconds());
Serial.println("us for a single prediction");
delay(1000);
}