Skip to content

Commit 81d41d9

Browse files
author
QingChuanWS
committed
恢复语音demo,调整cmsis的目录结构
1 parent 075d266 commit 81d41d9

120 files changed

Lines changed: 3118 additions & 26436 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.vscode/settings.json

Lines changed: 0 additions & 65 deletions
This file was deleted.

README.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ Tensorflow Lite Micro软件包(简称TFLu)是针对RT-Thread实时操作系统
2121
| 名称 | 说明 |
2222
| ---- | :--- |
2323
| docs | 文档目录 |
24-
| examples | Tensorflow Lite Micro示例 |
25-
| third_party | Tensorflow Lite Micro依赖的第三方库 |
26-
| tensorflow | Google Tensorflow Lite Micro推理框架 |
24+
| examples | Tensorflow Lite Micro demo |
25+
| third_party | Tensorflow Lite Micro 依赖的第三方库 |
26+
| tensorflow | Tensorflow Lite Micro 推理框架 |
2727

2828
### 1.2 许可证
2929

@@ -63,38 +63,43 @@ RT-Thread online packages
6363
其中, Select Offical Example 中有两个选项:
6464

6565
```
66-
(X) Enable Tensorflow Lite Micro audio example
67-
( ) No Tensorflow Lite Micro example
66+
( ) Enable Tensorflow Lite Micro audio example
67+
(X) No Tensorflow Lite Micro example
6868
```
6969

70-
注 : audio example 是执行官方携带的语音示例, No example 则是不集成 example 文件, 只使用 Tensorflow Lite Micro 标准框架.
70+
注 : audio example 是执行官方携带的语音示例, No example 则是不集成 example 文件, 只使用 Tensorflow Lite Micro 标准框架. (注:默认不开启语音实例)
7171

7272
- 如果选择了语音示例, 请将example文件夹下的audio_main.cc文件拷贝到工程的Application目录中, 然后编译, 烧录/下载查看效果了
7373

7474
Select Tensorflow Lite Operations Type 中有两个选项:
7575

7676
```
77-
(X) Using Tensorflow Lite reference operations
78-
( ) Using Tensorflow Lite CMSIS NN operations
77+
( ) Using Tensorflow Lite reference operations
78+
(X) Using Tensorflow Lite CMSIS NN operations
7979
```
8080

81-
注 : reference operation 是应用 TFLMicro 的通用算子(算子与平台隔离,可移植性好), CMSIS NN operations 是应用CMSIS库对具有ARM内核的平台进行算子的加速. **有关注意事项请参照第四部分!!**
81+
- reference operation 对应的是 TFLMicro 的通用算子库,其中的各类算子实现与硬件平台隔离,具备良好的可移植性,但是运行速度较慢。
8282

83-
- Tensorflow Lite Micro整个框架功能较为复杂, 各类API比较多, 请先参考文档中[introduction.md](introduction.md), 然后通过 [user-guide.md](user-guide.md) 来了解基本的深度学习端测部署流程. 在有了以上基础之后, 就可以尝试开发自己端测部署任务了.
83+
- CMSIS NN operations 对应的是 TFLMicro 基于CMSIS-NN 库进行二次开发的算子库,对ARM Cortex M4,M7 有大幅加速. **使用的有关注意事项请参照第四部分!!**
8484

85-
* API 手册可以访问这个[链接](docs/api.md), 其中提供了目前支持算子的情况
86-
* 更多文档位于 [`/docs`](/docs) 下,使用前 **务必查看**
85+
**注意:**
86+
87+
- Tensorflow Lite Micro 框架中的模块较多,使用之前请先参考 [introduction.md ](introduction.md), 通过 [user-guide.md](user-guide.md) 来了解基本使用流程流程。
88+
89+
* API 手册可以访问[此链接](docs/api.md), 其中提供了目前支持算子的情况
90+
* 更多文档位于 [`docs`](/docs) 下,使用前 **务必查看**
8791

8892
## 4、注意事项
8993

9094
- 关于`Using Tensorflow Lite CMSIS NN operations `选项:
91-
- 目前CMSIS对于算子的优化主要针对ARM Cortex M4以上的内核 ( 其搭载了DSP, FPU等硬件加速部件) 进行计算优化, 不推荐M4以下的MCU应用该选项.
92-
- 目前CMSIS的算子优化目前只支持M系列的MCU, A系列, R系列不推荐应用该选项.
95+
- CMSIS-NN 对于算子的优化主要针对 ARM Cortex M4 以上的 ARM 内核 ( 因为其搭载了DSP, FPU等硬件加速部件) 进行计算优化, M4 以下的 MCU 不建议使用该软件包。
96+
- CMSIS-NN 的优化目前只提供了M系列的MCU;ARM Cortex A系列, R系列不应应用该选项.
9397
- 目前CMSIS NN算子还处在测试阶段, 可能存在问题.
9498
- 本软件包在运行时会占用16KB RAM空间, 同时自带的语音识别案例在运行时总共占用22KB内存, **请注意通过menuconfig来修改主函数栈的大小以及内存管理算法 !**
9599

96100
## 5、联系方式 & 感谢
97101

98102
* 维护:QingChuanWS
99103
* 主页:https://github.com/QingChuanWS
100-
* 欢迎各位RT-Threader试用本软件包并提出自己的建议, 我会认真听取并不断改进本软件包. 你的支持就是我最大的动力
104+
* 欢迎各位developer使用该组件并提出自己的建议, 我会认真听取并不断改进. 您的支持就是我最大的动力
105+

examples/audio_main.cc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
2+
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
9+
Unless required by applicable law or agreed to in writing, software
10+
distributed under the License is distributed on an "AS IS" BASIS,
11+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
See the License for the specific language governing permissions and
13+
limitations under the License.
14+
==============================================================================*/
15+
16+
#include <rtthread.h>
17+
#include <rtdevice.h>
18+
#include <board.h>
19+
#include "tflite/micro/examples/micro_speech/main_functions.h"
20+
21+
// This is the default main used on systems that have the standard C entry
22+
// point. Other devices (for example FreeRTOS or ESP32) that have different
23+
// requirements for entry code (like an app_main function) should specialize
24+
// this main.cc file in a target-specific subfolder.
25+
int main(int argc, char* argv[]) {
26+
setup();
27+
rt_kprintf("model load successfully!!\n");
28+
while (true) {
29+
loop();
30+
}
31+
32+
return 0;
33+
}

tensorflow/lite/experimental/SConscript

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cwd = GetCurrentDir()
77
objs = []
88
list = os.listdir(cwd)
99

10-
if GetDepend('PKG_USING_TENSORFLOWLITEMICRO'):
10+
if GetDepend('PKG_USING_TENSORFLOWLITEMICRO_AUDIO_EXAMPLE'):
1111
for d in list:
1212
path = os.path.join(cwd, d)
1313
if os.path.isfile(os.path.join(path, 'SConscript')):

tensorflow/lite/micro/SConscript

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,74 @@
11
from building import *
22
import os
33

4-
if GetDepend(['PKG_USING_TENSORFLOWLITEMICRO_REFERENCE']):
5-
src = Glob('kernels/*.cc') + Glob('*.c') + Glob('*.cc') + Glob('benchmarks/*.cc') \
6-
+ Glob('examples/person_detection_experimental/*.cc') \
7-
+ Glob('memory_planner/*.cc') + Glob('testing/*.cc') + Glob('kernels/reference/*.cc') \
8-
+ Glob('tools/make/downloads/person_model_int8/*.cc')
4+
src = Split('''
5+
kernels/activations.cc
6+
kernels/arg_min_max.cc
7+
kernels/ceil.cc
8+
kernels/circular_buffer.cc
9+
kernels/comparisons.cc
10+
kernels/concatenation.cc
11+
kernels/dequantize.cc
12+
kernels/elementwise.cc
13+
kernels/ethosu.cc
14+
kernels/floor.cc
15+
kernels/hard_swish.cc
16+
kernels/kernel_runner.cc
17+
kernels/kernel_util.cc
18+
kernels/l2norm.cc
19+
kernels/logical.cc
20+
kernels/logistic.cc
21+
kernels/maximum_minimum.cc
22+
kernels/neg.cc
23+
kernels/pack.cc
24+
kernels/pad.cc
25+
kernels/prelu.cc
26+
kernels/quantize.cc
27+
kernels/reduce.cc
28+
kernels/reshape.cc
29+
kernels/resize_nearest_neighbor.cc
30+
kernels/round.cc
31+
kernels/split.cc
32+
kernels/strided_slice.cc
33+
kernels/sub.cc
34+
kernels/svdf.cc
35+
kernels/tanh.cc
36+
kernels/unpack.cc
37+
''') + Glob('*.c') + Glob('*.cc') + Glob('benchmarks/*.cc') \
38+
+ Glob('memory_planner/*.cc') + Glob('testing/*.cc')
939

10-
if GetDepend(['PKG_USING_TENSORFLOWLITEMICRO_CMSISNN']):
11-
src = Glob('kernels/*.cc') + Glob('*.c') + Glob('*.cc') + Glob('benchmarks/*.cc') \
12-
+ Glob('examples/person_detection_experimental/*.cc') \
13-
+ Glob('memory_planner/*.cc') + Glob('testing/*.cc') + Glob('kernels/cmsis-nn/*.cc') \
14-
+ Glob('tools/make/downloads/person_model_int8/*.cc')
40+
if GetDepend('PKG_USING_TENSORFLOWLITEMICRO_AUDIO_EXAMPLE'):
41+
src += Glob('examples/micro_speech/*.cc') + Glob('examples/micro_speech/micro_features/*.cc')
1542

16-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/ActivationFunctions/*.c')
17-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/BasicMathFunctions/*.c')
18-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/ConcatenationFunctions/*.c')
19-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/ConvolutionFunctions/*.c')
20-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/FullyConnectedFunctions/*.c')
21-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/NNSupportFunctions/*.c')
22-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/PoolingFunctions/*.c')
23-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/ReshapeFunctions/*.c')
24-
src += Glob('tools/make/downloads/cmsis/CMSIS/NN/Source/SoftmaxFunctions/*.c')
43+
if GetDepend('PKG_USING_TENSORFLOWLITEMICRO_REFERENCE'):
44+
src += Split('''
45+
kernels/add.cc
46+
kernels/conv.cc
47+
kernels/depthwise_conv.cc
48+
kernels/fully_connected.cc
49+
kernels/mul.cc
50+
kernels/pooling.cc
51+
kernels/softmax.cc
52+
''')
53+
if GetDepend('PKG_USING_TENSORFLOWLITEMICRO_CMSISNN'):
54+
src += Split('''
55+
kernels/cmsis-nn/add.cc
56+
kernels/cmsis-nn/conv.cc
57+
kernels/cmsis-nn/depthwise_conv.cc
58+
kernels/cmsis-nn/fully_connected.cc
59+
kernels/cmsis-nn/mul.cc
60+
kernels/cmsis-nn/pooling.cc
61+
kernels/cmsis-nn/softmax.cc
62+
''')
63+
src += Glob('tools/cmsis/CMSIS/NN/Source/ActivationFunctions/*.c')
64+
src += Glob('tools/cmsis/CMSIS/NN/Source/BasicMathFunctions/*.c')
65+
src += Glob('tools/cmsis/CMSIS/NN/Source/ConcatenationFunctions/*.c')
66+
src += Glob('tools/cmsis/CMSIS/NN/Source/ConvolutionFunctions/*.c')
67+
src += Glob('tools/cmsis/CMSIS/NN/Source/FullyConnectedFunctions/*.c')
68+
src += Glob('tools/cmsis/CMSIS/NN/Source/NNSupportFunctions/*.c')
69+
src += Glob('tools/cmsis/CMSIS/NN/Source/PoolingFunctions/*.c')
70+
src += Glob('tools/cmsis/CMSIS/NN/Source/ReshapeFunctions/*.c')
71+
src += Glob('tools/cmsis/CMSIS/NN/Source/SoftmaxFunctions/*.c')
2572

2673
#.
2774
root = str(Dir('#'))
@@ -40,7 +87,7 @@ kissfft = os.path.join(tflm_pkg, "third_party/kissfft")
4087
#./third_party/ruy
4188
ruy = os.path.join(tflm_pkg, "third_party/ruy")
4289
#./tensorflow/lite/micro/tools/make/downloads
43-
cmsis = os.path.join(tflm_pkg, "tensorflow/lite/micro/tools/make/downloads")
90+
cmsis = os.path.join(tflm_pkg, "tensorflow/lite/micro/tools/")
4491

4592

4693
CPPPATH = [tflm_pkg, flatbuffer, gemmlowp, kissfft, ruy, cmsis]

0 commit comments

Comments
 (0)