使用tensorflow lite micro ESP32将输入复制到CNN的缓冲区中

时间:2020-10-09 17:06:20

标签: arduino tensorflow-lite esp32

当使用tensorflow Lite一个esp32时,我使用

loat input_data[3] = {value1, value2, value3};

// Copy value to input buffer (tensor)
for (size_t i = 0; i < 3; i++){
    model_input->data.f[i] = input_data[i];
    }

将“功能值”复制到输入缓冲区。对于每个样本只有3个功能的应用程序(例如setosa示例),这很简单。

如何传递CNN的值?我的模型输入是

[1,80,3,1]

使用

[noOfTimeSeries, noOfMeasurementsPerSensorPerTimeSeries, noOfSensors, anotherDimensionForTensorflow]

到目前为止,我的功能存储在struct中,但如有必要,我可以将其放入数组中。

我如何通过图像传递CNN的值?

1 个答案:

答案 0 :(得分:0)

尽管tflite模型具有多维输入,但您可以填充输入缓冲区,就像在tflite中微控制器是一维数组一样。

就您而言,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="Script.js" async></script>
    <title>Document</title>
</head>
<body>
    <img id="Pic1" src="https://www.hzpc.com/uploads/overview-transparent-896/dc78aee8-3f50-5ba8-b8d3-6cf74852aa2b/3175818931/Colomba%20%282%29.png" alt="">
    <img id="Pic2" src="https://image.shutterstock.com/image-photo/potato-chips-260nw-116860495.jpg" alt="">
    <input type="range" name="" id="range" min="0" max="100" value="0">
</body>
</html>

在您的情况下,展平的1D数组看起来像

size_t input_size = 1*80*3*1;

for (size_t i = 0; i < input_size; i++){
    model_input->data.f[i] = input_data[i];
}

希望您能明白。

作为附带建议和其他读者,请考虑将模型量化为int8参数,甚至是int8输入和输出。它将减小大小并显着提高推理时间。