Github:https://github.com/EdgeAIWithRTT/Project7-Cifar10_Cube_Art-Pi
RT-AK 及 Art-Pi 簡介
目前該項(xiàng)目為 RT-AK 的示例 Demo,基于 ART-PI 硬件平臺和 Cifar10 數(shù)據(jù)集。
RT-AK: RT-Thread AI Toolkit,RT-Thread AI 套件。
RT-AK 是 RT-Thread 團(tuán)隊(duì)為 RT-Thread 實(shí)時(shí)操作系統(tǒng)所開發(fā)的 AI 套件,能夠一鍵將 AI 模型部署到 RT-Thread 項(xiàng)目中,讓用戶可以 在統(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. 項(xiàng)目總結(jié)
該項(xiàng)目不需要任何驅(qū)動(dòng),僅將 AI 模型部署至 Art-Pi 硬件平臺,并利用其元件進(jìn)行 AI 模型推理,最后在終端輸出模型推理結(jié)果相關(guān)信息。
2. 空項(xiàng)目工程創(chuàng)建
該項(xiàng)目是基于 ART-PI 的模板工程,初始工程來于 RT-Thread 新建工程
經(jīng)過 RT-AK 轉(zhuǎn)換之后得到的一個(gè)完整的項(xiàng)目工程
3. RT-AK 的使用
cd 到 aitools.py 所在目錄,打開 cmd 命令行窗口,輸入以下命令即可獲得集成 AI 模型的完整項(xiàng)目工程。
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 模型的項(xiàng)目工程的編譯和燒錄
這里我們使用 RT-Thread Studio 進(jìn)行編譯和燒錄
5. AI 應(yīng)用開發(fā)
我們提供了一個(gè)實(shí)例代碼 cifar10_app.c,在終端命令行中輸入 cifat10_app.c,即可獲得輸出
6. 自定義數(shù)據(jù)
該項(xiàng)目提供了自定義數(shù)據(jù)生成代碼 save_img.py
二。 將 Cifar10 分類模型 部署至 Art-Pi, 并搭建LCD
1. 項(xiàng)目總結(jié)
該項(xiàng)目應(yīng)用了 LCD 驅(qū)動(dòng)相關(guān)代碼,使用 RT-AK 將 AI 模型部署至 Art-Pi 硬件平臺之后,利用其元件進(jìn)行 AI 模型推理, 并對模型輸出結(jié)果進(jìn)行處理,最后將模型輸入圖片和輸出相關(guān)信息顯示到 LCD 上。
使用 RT-Thread Studio 創(chuàng)建的空白工程不包含 LCD 驅(qū)動(dòng)代碼,所以務(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)換,我們得到的項(xiàng)目工程就集成了 AI 模型, 然后我們可以在上面做相關(guān)應(yīng)用開發(fā),最后編譯和燒錄到開發(fā)板上。
我們需要在 applications 中書寫我們的應(yīng)用代碼,我們給出一個(gè)示例 cifar10_app.c ,下面介紹下里面的文件:
1卷 軟件 的文件夾 PATH 列表
2卷序列號為 E67E-D1CA
3D:。
4 cifar10_app.c // ai 模型推理應(yīng)用代碼實(shí)現(xiàn)5 main.c // artpi LED 閃爍燈例程原 main 函數(shù),未改動(dòng)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, 所以顯示的圖片尺寸要滿足這個(gè)大小,而模型輸入大小則根據(jù)具體模型而言,該項(xiàng)目中的 cifar10 模型輸入數(shù)據(jù)大小為 32x32)
模型運(yùn)行核心代碼:
1// cifar10_app.c 2 3.。。
4 5// 注冊模型的代碼在 rt_ai_cifar10_model.c 文件下的第43行,代碼自動(dòng)執(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 模型的項(xiàng)目工程的編譯和燒錄
這里我們使用 RT-Thread Studio 進(jìn)行編譯和燒錄:
5. 效果呈現(xiàn)
開機(jī)屏幕是白色的,當(dāng)在終端輸入 cifar10_app 之后會有 1s 的 logo 顯示,然后黑屏。之后終端輸出推理結(jié)果。
編輯:jq
-
AI
+關(guān)注
關(guān)注
88文章
34920瀏覽量
278187
原文標(biāo)題:使用 RT-AK 部署 Cifar10 模型至 Art-Pi
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
ART-PI H750-USB-MSC設(shè)備描述符異常的原因?怎么解決?
FPC組成簡介及工程設(shè)計(jì)規(guī)范
【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡介

STM32H750XBH6- ART-Pi使用HAL_SPI_Transmit_DMA()函數(shù)初次發(fā)送時(shí),不進(jìn)入SPI中斷怎么解決?
ART-PI2使用vscode cortex-debug插件進(jìn)行外部flash燒錄調(diào)試

RT-Thread ART-Pi二代正式發(fā)布
RT-Thread全新發(fā)布ART-Pi二代,攜手ST H7R芯片!

Banana Pi M5 與 Raspberry Pi 4 – 基準(zhǔn)測試

Abracon推出AK2B/AK3B ClearClock差分輸出有源晶振
獲獎(jiǎng)公布!2024 RT-Thread全球巡回線下培訓(xùn)火熱來襲!報(bào)名提問有獎(jiǎng)!
【QEMU系列】不用開發(fā)板運(yùn)行RT-Thread指南-ARM架構(gòu)

捷報(bào)!芯海EC再助榮耀旗艦輕薄本MagicBook Art 14隆重發(fā)布

一文讀懂AK1和AK2超聲波雷達(dá)的區(qū)別

評論