Github:https://github.com/EdgeAIWithRTT/Project7-Cifar10_Cube_Art-Pi
RT-AK 及 Art-Pi 簡介
目前該項目為 RT-AK 的示例 Demo,基于 ART-PI 硬件平臺和 Cifar10 數(shù)據(jù)集。
RT-AK: RT-Thread AI Toolkit,RT-Thread AI 套件。
RT-AK 是 RT-Thread 團(tuán)隊為 RT-Thread 實時操作系統(tǒng)所開發(fā)的 AI 套件,能夠一鍵將 AI 模型部署到 RT-Thread 項目中,讓用戶可以 在統(tǒng)一的 API 之上進(jìn)行業(yè)務(wù)代碼開發(fā),又能在目標(biāo)平臺上獲極致優(yōu)化的性能,從而更簡單方便地開發(fā)端側(cè) AI 應(yīng)用程序。
在 RT-AK 支持下,僅需要一行命令,即可將 AI 模型部署到 RT-Thread 系統(tǒng)中:
1$ python rt_ai_tools.py --model xxx.。。
我們將致力于降低嵌入式 AI 落地的難度和門檻。
Art-Pi:
使用 Tensorflow2.5.0 進(jìn)行模型量化
我們已提供 keras 模型量化為 tflite 模型的代碼 鏈接。注意一定要下載 tensorflow2.5.0 及以上版本,否則會轉(zhuǎn)化失敗。該鏈接中還有量化后的 tflite 的推理代碼。目錄如下:
一。 將 Cifar10 分類模型 部署至 Art-Pi (不搭建LCD)
1. 項目總結(jié)
該項目不需要任何驅(qū)動,僅將 AI 模型部署至 Art-Pi 硬件平臺,并利用其元件進(jìn)行 AI 模型推理,最后在終端輸出模型推理結(jié)果相關(guān)信息。
2. 空項目工程創(chuàng)建
該項目是基于 ART-PI 的模板工程,初始工程來于 RT-Thread 新建工程
經(jīng)過 RT-AK 轉(zhuǎn)換之后得到的一個完整的項目工程
3. RT-AK 的使用
cd 到 aitools.py 所在目錄,打開 cmd 命令行窗口,輸入以下命令即可獲得集成 AI 模型的完整項目工程。
1python aitools.py --project=C:UsersAdminDesktopArt-Pi_cifar10_without_lcd
2--model=C:UsersAdminDesktopArt-piArt-Pi_cifar10modelcifar10_int8.tflite
3--model_name=cifar10
4--platform=stm32
5--ext_tools=C:UsersAdminDesktopRTAK-toolsstm32ai-windows-5.2.0windows # x_cube_ai 工具
4. 集成 AI 模型的項目工程的編譯和燒錄
這里我們使用 RT-Thread Studio 進(jìn)行編譯和燒錄
5. AI 應(yīng)用開發(fā)
我們提供了一個實例代碼 cifar10_app.c,在終端命令行中輸入 cifat10_app.c,即可獲得輸出
6. 自定義數(shù)據(jù)
該項目提供了自定義數(shù)據(jù)生成代碼 save_img.py
二。 將 Cifar10 分類模型 部署至 Art-Pi, 并搭建LCD
1. 項目總結(jié)
該項目應(yīng)用了 LCD 驅(qū)動相關(guān)代碼,使用 RT-AK 將 AI 模型部署至 Art-Pi 硬件平臺之后,利用其元件進(jìn)行 AI 模型推理, 并對模型輸出結(jié)果進(jìn)行處理,最后將模型輸入圖片和輸出相關(guān)信息顯示到 LCD 上。
使用 RT-Thread Studio 創(chuàng)建的空白工程不包含 LCD 驅(qū)動代碼,所以務(wù)必使用我們提供的模板工程。
2. RT-AK 的使用
RT-AK 的 gitlab 倉庫已經(jīng)開源,可以自行到倉庫上克隆到本地 PC。
cd 到 RT-AK 的 rt_ai_tools 文件夾, 在目錄輸入 cmd 打開命令行窗口。其中 aitools.py 是核心代碼,使用改代碼我們可以輸入相關(guān)命令參數(shù)即可快速將 AI 模型 部署至支持的硬件平臺上面。
在 cmd 命令行窗口輸入以下命令,參數(shù)很好理解,看名字就知道它的意思了。
1python aitools.py --project=C:UsersAdminDesktopArt-Pi_cifar10_with_lcd
2--model=C:UsersAdminDesktopArt-piArt-Pi_cifar10modelcifar10_int8.tflite
3--model_name=cifar10
4--platform=stm32
5--ext_tools=C:UsersAdminDesktopRTAK-toolsstm32ai-windows-5.2.0windows # x_cube_ai 工具
運(yùn)行結(jié)果:
通過這部轉(zhuǎn)換,我們得到的項目工程就集成了 AI 模型, 然后我們可以在上面做相關(guān)應(yīng)用開發(fā),最后編譯和燒錄到開發(fā)板上。
我們需要在 applications 中書寫我們的應(yīng)用代碼,我們給出一個示例 cifar10_app.c ,下面介紹下里面的文件:
1卷 軟件 的文件夾 PATH 列表
2卷序列號為 E67E-D1CA
3D:。
4 cifar10_app.c // ai 模型推理應(yīng)用代碼實現(xiàn)5 main.c // artpi LED 閃爍燈例程原 main 函數(shù),未改動6 rt_ai_cifar10_model.c // 與 STM32 平臺相關(guān)的模型聲明文件7 rt_ai_cifar10_model.h // 存放 ai 模型輸入輸出等相關(guān)信息文件8 SConscript
3. cifar10_app.c 核心代碼和自定義數(shù)據(jù)
3. 1 核心代碼
頭文件:
模型輸入數(shù)據(jù)和 LCD 顯示的數(shù)據(jù):(兩者大小不同,Art-Pi 中的 LCD 尺寸為 320x240, 所以顯示的圖片尺寸要滿足這個大小,而模型輸入大小則根據(jù)具體模型而言,該項目中的 cifar10 模型輸入數(shù)據(jù)大小為 32x32)
模型運(yùn)行核心代碼:
1// cifar10_app.c 2 3.。。
4 5// 注冊模型的代碼在 rt_ai_cifar10_model.c 文件下的第43行,代碼自動執(zhí)行 6// 模型的相關(guān)信息在 rt_ai_cifar10_model.h 文件 7// find a registered model handle 8model = rt_ai_find(RT_AI_CIFAR10_MODEL_NAME); // 找到模型 9.。。
10result = rt_ai_init(model, work_buffer); // 初始化模型,傳入輸入數(shù)據(jù)11.。。
12result = rt_ai_run(model, ai_run_complete, &ai_run_complete_flag); // 模型推理一次13.。。
14/* 獲取模型輸出結(jié)果 */15uint8_t *out = (uint8_t *)rt_ai_output(model, 0);
3. 2 自定義數(shù)據(jù)集
如何使用自己的圖片,生成可以在 Art-Pi 中運(yùn)行的數(shù)據(jù)?我們已經(jīng)提供數(shù)據(jù)生成代碼 save_img.py。目錄如下
在 svae_img.py 文件中修改參數(shù),相關(guān)輸入會打印到對應(yīng) .txt 文件中。然后將 .txt 文件中的信息復(fù)制到 cifar10_app.c 文件中,修改參數(shù)即可。
4. 集成 AI 模型的項目工程的編譯和燒錄
這里我們使用 RT-Thread Studio 進(jìn)行編譯和燒錄:
5. 效果呈現(xiàn)
開機(jī)屏幕是白色的,當(dāng)在終端輸入 cifar10_app 之后會有 1s 的 logo 顯示,然后黑屏。之后終端輸出推理結(jié)果。
編輯:jq
-
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268886
原文標(biāo)題:使用 RT-AK 部署 Cifar10 模型至 Art-Pi
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論