TensorFlow Lite for Microcontrollers 是 TensorFlow Lite 的一個(gè)實(shí)驗(yàn)性移植版本,它適用于微控制器和其他一些僅有數(shù)千字節(jié)內(nèi)存的設(shè)備。
它可以直接在“裸機(jī)”上運(yùn)行,不需要操作系統(tǒng)支持、任何標(biāo)準(zhǔn) C/C++ 庫(kù)和動(dòng)態(tài)內(nèi)存分配。核心運(yùn)行時(shí) (core runtime) 在 Cortex M3 上運(yùn)行時(shí)僅需 16KB,加上足以用來(lái)運(yùn)行語(yǔ)音關(guān)鍵字檢測(cè)模型的操作,也只需 22KB 的空間。
開始
要快速入門并運(yùn)行 TensorFlow Lite for Microcontrollers,請(qǐng)閱讀微控制器入門。
注:微控制器入門 鏈接
https://tensorflow.google.cn/lite/microcontrollers/get_started
為什么微控制器很重要
微控制器通常是小型、低能耗的計(jì)算設(shè)備,經(jīng)常嵌入在只需要進(jìn)行基本運(yùn)算的硬件中,包括家用電器和物聯(lián)網(wǎng)設(shè)備等。每年都有數(shù)十億個(gè)微控制器被生產(chǎn)出來(lái)。
微控制器通常針對(duì)低能耗和小尺寸進(jìn)行優(yōu)化,但代價(jià)是降低了處理能力、內(nèi)存和存儲(chǔ)。一些微控制器具有用來(lái)優(yōu)化機(jī)器學(xué)習(xí)任務(wù)性能的功能。
通過(guò)在微控制器上運(yùn)行機(jī)器學(xué)習(xí)推斷,開發(fā)人員可以在不依賴于網(wǎng)絡(luò)連接的情況下將 AI 添加到各種各樣的硬件設(shè)備中,這經(jīng)常用來(lái)克服帶寬、功率以及由它們所導(dǎo)致的高延遲而造成的約束。在設(shè)備上運(yùn)行推斷也可以幫助保護(hù)隱私,因?yàn)闆]有數(shù)據(jù)從設(shè)備中發(fā)送出去。
功能和組件
C++ API,其運(yùn)行時(shí) (runtime) 在 Cortex M3 上僅需 16KB
使用標(biāo)準(zhǔn)的 TensorFlow Lite FlatBuffer架構(gòu) (schema)
為 Arduino、Keil 和 Mbed 等較為流行的嵌入式開發(fā)平臺(tái)預(yù)生成的項(xiàng)目文件
針對(duì)多個(gè)嵌入式平臺(tái)優(yōu)化
演示口語(yǔ)熱詞檢測(cè)的示例代碼
開發(fā)工作流程
這是將 TensorFlow 模型部署到微控制器的過(guò)程:
創(chuàng)建或獲取 TensorFlow 模型該模型必須非常小,以便在轉(zhuǎn)換后適合您的目標(biāo)設(shè)備。它只能使用支持的操作。如果要使用當(dāng)前不被支持的操作,可以提供自己的實(shí)現(xiàn)。
將模型轉(zhuǎn)換為 TensorFlow Lite FlatBuffer您將使用 TensorFlow Lite 轉(zhuǎn)換器來(lái)將模型轉(zhuǎn)換為標(biāo)準(zhǔn) TensorFlow Lite 格式。您可能希望輸出量化模型,因?yàn)樗鼈兊某叽绺?、?zhí)行效率更高。
將 FlatBuffer 轉(zhuǎn)換為 C byte 數(shù)組模型保存在只讀程序存儲(chǔ)器中,并以簡(jiǎn)單的 C 文件的形式提供。標(biāo)準(zhǔn)工具可用于將 FlatBuffer 轉(zhuǎn)換為 C 數(shù)組。
集成 TensorFlow Lite for Microcontrollers 的 C++ 庫(kù)編寫微控制器代碼以使用 C++ 庫(kù)執(zhí)行推斷。
部署到您的設(shè)備構(gòu)建程序并將其部署到您的設(shè)備。
注:構(gòu)建和轉(zhuǎn)換模型 鏈接
https://tensorflow.google.cn/lite/microcontrollers/build_convert#%E8%BD%AC%E6%8D%A2%E6%A8%A1%E5%9E%8B
理解 C++ 庫(kù) 鏈接
https://tensorflow.google.cn/lite/microcontrollers/library
支持的平臺(tái)
嵌入式軟件開發(fā)的挑戰(zhàn)之一是存在許多不同的體系結(jié)構(gòu)、設(shè)備、操作系統(tǒng)和構(gòu)建系統(tǒng)。我們的目標(biāo)是盡可能多地支持流行的組合,并盡可能地讓給其他設(shè)備添加支持變得簡(jiǎn)單。
如果您是產(chǎn)品開發(fā)人員,您可以下載我們提供的以下平臺(tái)的構(gòu)建說(shuō)明或預(yù)生成的項(xiàng)目文件:
如果您的設(shè)備尚未被支持,添加支持也許并不困難。您可以在 README.md中了解該過(guò)程。
可移植參考代碼
如果您還沒有考慮具體的的微控制器平臺(tái),或者只想在開始移植之前試用代碼,最簡(jiǎn)單的方法是下載與平臺(tái)無(wú)關(guān)的參考代碼。
注:參考代碼 鏈接
https://drive.google.com/open?id=1cawEQAkqquK_SO4crReDYqf_v7yAwOY8
歸檔中有很多文件夾,每個(gè)文件夾只包含構(gòu)建一個(gè)二進(jìn)制文件所需的源文件。每個(gè)文件夾都有一個(gè)簡(jiǎn)單的 Makefile 文件,您應(yīng)該能夠?qū)⑽募虞d到幾乎任何 IDE 中并構(gòu)建它們。我們還提供了已經(jīng)設(shè)置好的 Visual Studio Code 項(xiàng)目文件,因此您可以輕松地在跨平臺(tái) IDE 中瀏覽代碼。
目標(biāo)
我們的設(shè)計(jì)目標(biāo)是使框架可讀、易于修改、經(jīng)過(guò)良好測(cè)試、易于集成,并通過(guò)一致的文件架構(gòu)、解釋器、API 和內(nèi)核接口與 TensorFlow Lite 完全兼容。
您可以閱讀更多在目標(biāo)和權(quán)衡方面有關(guān)設(shè)計(jì)的信息。
限制
TensorFlow Lite for Microcontrollers 專為微控制器開發(fā)中的特殊限制而設(shè)計(jì)。如果您正在使用更強(qiáng)大的設(shè)備(例如像 Raspberry Pi 這樣的嵌入式 Linux 設(shè)備),標(biāo)準(zhǔn)的 TensorFlow Lite 框架可能更容易集成。
應(yīng)考慮以下限制:
僅支持 TensorFlow 操作的有限子集
僅支持有限的一些設(shè)備
低級(jí) C++ API 需要手動(dòng)內(nèi)存管理
注:有限子集 鏈接
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151417 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60535 -
TensorFlow Lite
+關(guān)注
關(guān)注
0文章
26瀏覽量
622
原文標(biāo)題:TensorFlow Lite 微控制器
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論