目前tinyML基金会并没有指定特定的开发板或开发平台,也没有限制可以跑那些项目,只期望功耗能在毫瓦(mW)等级,用电池供电即可。接下来会帮大家介绍几块比较常见(平价)、各平台商支援较完整的开发板,其中大部份主晶片都是使用Arm Cortex-M系列MCU,从M0+到M7都有,也有非Arm系列的,以下简单列出数款值大家参考。
ps. 由於MCU规格大小性能差异颇大,所以可以运行何种模型及速度是否满足,须以实际布署为准。
- Arduino Uno R3
- Arducam Pico4ML(Raspberry Pi RP2040)
- Seeeduino XAIO (SAMD21G18)
- Eta ECM 3532
- Silicon Labs Thunderboarrd Sense 2
- Nordic nRF52840
- Arduino Nano 33 BLE Sense (nRF52840)
- Arduino Protenta H7 (STM32H747XI)
- OpenMV Cam H7 (STM32H743VI)
- Himax WE-I Plus (台湾厂商奇景光电)
Fig. 3-1 常见tinyML开发板。(OmniXRI整理绘制, 2021/8/14)
Fig. 3-2 tinyML开发板主要规格比较。(OmniXRI整理绘制, 2021/8/14)
在Arm Cortex-M系列中,皆为32bit MCU,依指令集效能(非工作时脉速度)来排名,大概为M0, M0+, M1, M3, M4, M7, M23, M33, M35P, M55,而其内建的程序码区(Flash)和静态随机记忆体(SRAM)通常不多,仅有数百KB到数MB而已,并会随着不同厂商及产品线会有不同配置。不过相较於一般仅有数十KB Code Flash及数KB的SRAM,这样的配置已相当不错,可做出相当多的应用。
从上面表格中可看出,Cortex-M的MCU的工作时脉通常不高,记忆体也不多,这使得运行tinyML前就要考虑是否能将模型及参数塞进程序码区,运行时所需的变数记忆体是否够用,同时要评估工作时脉(含平行指令数)推论速度是否能满足实际应用。当然这些评估工作有些亦由开发平台商提供的工具代劳,不须使用者头痛,待後面章节再行介绍。
目前在这麽多开发板中,其中又以Arduino Nano 33 BLE Sense被最多tinyML平台商支援,其主要原因如下所示:
- 主晶片为Nordic nRF52840,其中以Arm Cortex-M4为主要核心,可支援浮点数运算,工作时脉64MHz, 1MB Flash, 256KB SRAM。
- Arm Cortex-M4可支援Arm Mbed作业系统及Cortex单晶片软件介面标准CMSIS(Common Microcontroller Software Interface Standard),其中亦包括CMSIS-NN神经网路加速运算函式库。
- 板子上有很多感测器,包括运动感测模组、麦克风(声音)、手势、色彩、近接(光电)、气压、温湿度等。
- 具有2.4GHz 蓝牙低功耗模组(BT 5.0, BLE)可轻松连接到笔电或其它行动装置,方便传送资料及接收命令。
- 板子体积很小,仅有45mm x 18mm,非常适合直接做成产品原型机。
Fig. 3-3 Arduino Nano 33 BLE Sense规格表。(OmniXRI整理绘制, 2021/8/14)
另外Arduino Nano 33还有两片兄弟板,分别为Nano 33 IoT, Nano 33 BLE,原则上和Nano 33 BLE Sense只差在感测器的支援数量不同,其它使用上都相同,更完整规格及使用说明可参见文末连结。
最後补充几个重要的tinyML开发平台商所支援的开发板清单。
Edge Impulse https://docs.edgeimpulse.com/docs/fully-supported-development-boards
- ST B-L475E-IOT01A (IoT Discovery Kit)
- Arduino Nano 33 BLE Sense
- Eta Compute ECM3532 AI Sensor
- Eta Compute ECM3532 AI Vision
- OpenMV Cam H7 Plus
- Himax WE-I Plus
- Nordic Semiconductor nRF52840 DK
- Nordic Semiconductor nRF5340 DK
- Nordic Semiconductor nRF9160 DK
- Silicon Labs Thunderboard Sense 2
- Sony's Spresense
- TI CC1352P LaunchPad
- Arduino Portenta H7 + Vision shield (preview support)
- Raspberry Pi 4
- NVIDIA Jetson Nano
- Seeed Wio Terminal (ATSAMD51)
- Agora Product Development Kit
- Arducam Pico4ML TinyML Dev Kit (PR2040)
- Blues Wireless Swan (STM32L4+)
AITS (cAInvas) https://www.ai-tech.systems/cainvas/
- Raspberry Pi 3
- Arduino Nano 33 BLE Sense
- STM32F4
- STM32L4
- STM32F3
- Microchip AT91SAM9260
- Infineon PSoC 6
- NXP i.MX RT1060
- NXP LPC5500
SensiML https://sensiml.com/documentation/firmware/
- Arduino Nano 33 BLE Sense
- Arm GCC Cortex M4/M7/A53
- Microchip SAMD21 ML Eval Kit (SAM-IoT WG)
- Nordic Thingy
- QuickLogic Chilkat
- QuickLogic QuickAI
- QuickLogic QuickFeather
- Raspberry Pi
- Sillicon Labs Thunderboard Sense 2
- SparkFun QuickLogic Thing Plus - EOS S3
- ST SensorTile
- ST SensorTile.Box
- x86 Processors
Google TensorFlow Lite Microcontroller https://www.tensorflow.org/lite/microcontrollers
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal:ATSAMD51
- Himax WE-I Plus EVB
- Synopsys DesignWare ARC EM Software Development Platform
参考连结: