Github:https://github.com/EdgeAIWithRTT/Project7-Cifar10_Cube_Art-Pi
RT-AK 及 Art-Pi 簡(jiǎn)介
目前該項(xiàng)目為 RT-AK 的示例 Demo,基于 ART-PI 硬件平臺(tái)和 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)平臺(tái)上獲極致優(yōu)化的性能,從而更簡(jiǎn)單方便地開發(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 及以上版本,否則會(huì)轉(zhuǎn)化失敗。該鏈接中還有量化后的 tflite 的推理代碼。目錄如下:

一。 將 Cifar10 分類模型 部署至 Art-Pi (不搭建LCD)
1. 項(xiàng)目總結(jié)
該項(xiàng)目不需要任何驅(qū)動(dòng),僅將 AI 模型部署至 Art-Pi 硬件平臺(tái),并利用其元件進(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 硬件平臺(tái)之后,利用其元件進(jìn)行 AI 模型推理, 并對(duì)模型輸出結(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 模型 部署至支持的硬件平臺(tái)上面。
在 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卷序列號(hào)為 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 平臺(tái)相關(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// 注冊(cè)模型的代碼在 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)輸入會(huì)打印到對(duì)應(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 之后會(huì)有 1s 的 logo 顯示,然后黑屏。之后終端輸出推理結(jié)果。

編輯:jq
-
AI
+關(guān)注
關(guān)注
91文章
39755瀏覽量
301361
原文標(biāo)題:使用 RT-AK 部署 Cifar10 模型至 Art-Pi
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ART-Pi中啟用外部flash是在哪里配置了qspi的引腳呢?
使用qemu-vexpress-a9 運(yùn)行用戶程序跑不了怎么解決?
ART-PI使用新的env工具已經(jīng)無法編譯SDK倉庫里的示例工程了,怎么解決?
art_pi_lrs007_lora_gw_driver示例工程無法創(chuàng)建怎么解決?
AP6181移植到STM32H723,wifi庫初始化錯(cuò)誤怎么解決?
按照官方文檔在ART-PI上開啟PWM,但是串口輸出找不到設(shè)備,怎么解決?
如何在 ART-Pi 平臺(tái)使用 openocd 直接燒錄到外部 spi flash?
ART-PI2串口DMA累計(jì)接收超過buf設(shè)置的大小后就不能再接收了為什么?
ART-PI2的CherryUSB cdc_acm例程 在復(fù)位后需要好久才能出來COM口?
ART PI FDCAN卡死在rt_device_write是哪里出了問題?
ART-PI 使用CAN硬件過濾器打開后接收中斷異常的原因?
ART-PI H750-USB-MSC設(shè)備描述符異常的原因?怎么解決?
【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介
RT-AK及Art-Pi簡(jiǎn)介
評(píng)論