ai_agent
ai_agent使用說明文檔。
概述
AI Agent作為AI的代理引擎框架,支持不同推理引擎的注冊,對用戶提供統(tǒng)一的接口,簡化用戶操作,目前注冊的AI引擎為ucloud-ai云端推理引擎,用戶可以根據(jù)需要注冊其他推理引擎。
版權(quán)信息
Apache license v2.0
目錄結(jié)構(gòu)
├── include
│ ├── aiagent_common.h # aiagent模型定義頭文件
│ ├── aiagent_engine.h # aiagent引擎注冊結(jié)構(gòu)體定義頭文件
│ ├── aiagent_service.h # aiagent對外服務(wù)接口定義頭文件
│ ├── engine
│ │ └── ucloud_ai_engine.h # ucloud ai引擎頭文件
│ └── aiconfig.h # AI引擎配置文件
├── package.yaml # 編譯配置文件
├── src
│ ├── aiagent_engine.c # aiagent引擎管理代碼
│ ├── aiagent_service.c # aiagent服務(wù)接口實(shí)現(xiàn)
│ └── engine
│ │ └── ucloud_ai_engine.c # ucloud ai引擎注冊實(shí)例
└── example
└── aiagent_example.c # 測試用例
依賴組件
ucloud_ai
常用配置
def_config: # 組件的可配置項(xiàng)
CONFIG_UCLOUD_AI_ENGINE_ENABLE: 1
配置AI引擎為ucloud ai推理引擎
API說明
使用示例
組件使用示例相關(guān)的代碼下載、編譯和固件燒錄均依賴AliOS Things配套的開發(fā)工具,所以首先需要參考《AliOS Things集成開發(fā)環(huán)境使用說明之搭建開發(fā)環(huán)境》,下載安裝。 待開發(fā)環(huán)境搭建完成后,可以按照以下步驟進(jìn)行示例的測試。
步驟1 創(chuàng)建或打開工程
打開已有工程
如果用于測試的案例工程已存在,可參考《AliOS Things集成開發(fā)環(huán)境使用說明之打開工程》打開已有工程。
創(chuàng)建新的工程
組件的示例代碼可以通過編譯鏈接到AliOS Things的任意案例(solution)來運(yùn)行,這里選擇helloworld_demo案例。helloworld_demo案例相關(guān)的源代碼下載可參考《AliOS Things集成開發(fā)環(huán)境使用說明之創(chuàng)建工程》。
步驟2 添加組件
案例下載完成后,需要在helloworld_demo組件的package.yaml中添加對組件的依賴:
depends:
- ai_agent: master # helloworld_demo中引入ai_agent組件
- netmgr: master # helloworld_demo中引入netmgr組件
- littlefs: master # helloworld_demo中引入littlefs組件
def_config:
CLI_IOBOX_ENABLE: 1 # 可選:使能文件系統(tǒng)測試命令,例如ls, ll, mkdir, touch, echo等
步驟3 下載組件
在已安裝了 的開發(fā)環(huán)境工具欄中,選擇Terminal -> New Terminal啟動終端,并且默認(rèn)工作路徑為當(dāng)前工程的workspace,此時(shí)在終端命令行中輸入:
aos install ai_agent
上述命令執(zhí)行成功后,組件源碼則被下載到了./components/ai_agent路徑中。
步驟4 添加示例
在ai_agent組件的package.yaml中添加example示例代碼:
source_file:
- "example/aiagent_example.c" # add aiagent_example.c
在ucloud_ai組件的package.yaml中添加:
build_config:
prebuild_script: cp_resources.py #編譯時(shí)cp_resources.py會對資源文件進(jìn)行拷貝,系統(tǒng)自動打包資源文件到littlefs文件系統(tǒng)中
云端功能開通
如沒有阿里云賬號,請登錄阿里云官網(wǎng)開通。
登錄視覺智能開放平臺免費(fèi)開通如下功能:
登錄OSS平臺創(chuàng)建bucket:
a. 創(chuàng)建Bucket時(shí)地域選擇“上?!?b. 讀寫權(quán)限選擇“公共讀”
c. Bucket名稱全小寫
配置OSS信息
在components/ucloud_ai/package.yaml中替換你的OSS信息:
OSS_ACCESS_KEY: "Your-Access-Key"
OSS_ACCESS_SECRET: "Your-Access-Secret"
OSS_ENDPOINT: "Your-OSS-Endpoint" #例如 "oss-cn-shanghai-internal.aliyuncs.com"
OSS_BUCKET: "Your-OSS-Bucket" #例如 "cloud-ai-dev"
OSS_ACCESS_KEY以及OSS_ACCESS_SECRET獲取鏈接 https://usercenter.console.aliyun.com/#/accesskey
ENDPOINT默認(rèn)使用“oss-cn-shanghai-internal.aliyuncs.com”,BUCKET請使用你創(chuàng)建好的Bucket名稱。
步驟5 編譯固件
在示例代碼已經(jīng)添加至組件的配置文件,并且helloworld_demo已添加了對該組件的依賴后,就可以編譯helloworld_demo案例來生成固件了,具體編譯方法可參考《AliOS Things集成開發(fā)環(huán)境使用說明之編譯固件》。
步驟6 燒錄固件
文件系統(tǒng)燒錄
本組件例子中使用到圖片存放在代碼中hardware/chip/haas1000/prebuild/data/目錄下ucloud_ai_image目錄,除燒錄helloworld_demo image外,需燒錄littlefs文件系統(tǒng),請將hardware/chip/haas1000/package.yaml文件中以下代碼段的注釋打開:
program_data_files:
- filename: release/write_flash_tool/ota_bin/littlefs.bin
address: 0xB32000
上述步驟執(zhí)行后,可參考《AliOS Things集成開發(fā)環(huán)境使用說明之燒錄固件》來燒錄固件。
步驟7 打開串口
固件燒錄完成后,可以通過串口查看示例的運(yùn)行結(jié)果,打開串口的具體方法可參考《AliOS Things集成開發(fā)環(huán)境使用說明之查看日志》。
當(dāng)串口終端打開成功后,可在串口中輸入help來查看已添加的測試命令。
步驟8 示例測試
測試步驟:
$ aiagent -e ucloud-ai init # 初始化aiagent組件
$ netmgr -t wifi -c {ssid} {password} # 請將ssid修改為您路由器的WiFi名稱,paasword填入路由器的WiFi密碼
$ aiagent -e ucloud-ai -m {0 ~ 14} # 測試AI用例
CLI命令行輸入:
$ aiagent -e ucloud-ai init # 初始化ucloud-ai引擎,在執(zhí)行下面的測試命令前,該命令需要優(yōu)先執(zhí)行,僅需執(zhí)行一次即可
CLI關(guān)鍵日志:
aiagent init successfully!
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 0 # 人臉比對
CLI關(guān)鍵日志:
Facebody comparing result:
confidence: 84.6
location at x: 159, y: 76, w: 143, h: 194
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 1 # 人物動漫化
CLI關(guān)鍵日志:
Generate human anime style result:
url: http://vibktprfx-prod-prod-aic-gd-cn-shanghai.oss-cn-shanghai.aliyuncs.com/person-image-cartoonizer/4F10FBB8-19DC-476B-A51D-458CD180A24F_07f2_20210331-142711.jpg?Expires=1617202631&OSSAccessKeyId=XXXX&Signature=YCLva1stK27Cn657nMeYhgFt7h4%3D
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 2 # 表情識別
CLI關(guān)鍵日志:
Recognize expression result:
type: anger, probability: 1.0
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 3 # 目標(biāo)檢測
CLI關(guān)鍵日志:
Detect object result:
type: potted plant, Score: 0.4, x: 35, y: 274, w: 185, h: 443
Detect object result:
type: potted plant, Score: 0.5, x: 663, y: 121, w: 847, h: 457
Detect object result:
type: monitor, Score: 0.6, x: 250, y: 43, w: 670, h: 439
Detect object result:
type: keyboard, Score: 0.5, x: 239, y: 435, w: 489, h: 485
Detect object result:
type: keyboard, Score: 0.3, x: 241, y: 428, w: 639, h: 506
Detect object result:
type: mouse, Score: 0.2, x: 660, y: 479, w: 750, h: 528
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 4 # 主體檢測
CLI關(guān)鍵日志:
Detect main body result:
main body location x: 1, y: 31, w: 461, h: 528
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 5 # 通用分割
CLI關(guān)鍵日志:
Segment common image result:
url: http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/result_humansegmenter/2021-3-31/invi_humansegmenter_016172056326493133388_avpTpm.jpg?Expires=1617207432&OSSAccessKeyId=XXXX&Signature=WREOAoBUIvpLSyygGxKPfi82HfI%3D
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 6 # 面部分割
CLI關(guān)鍵日志:
Segment face result:
image url: http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/result_HeadSegmenter/2021-3-31/invi_HeadSegmenter_016172056422754285967296_yRhj6C.png?Expires=1617207442&OSSAccessKeyId=XXXX&Signature=wR7GUxqrrwRF9u3mCJ%2BNDhAPCzk%3D
location at x: 153, y: 66, w: 160, h: 209
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 7 # 身份證證明識別
CLI關(guān)鍵日志:
Recognize identity card face side result:
address: 江蘇省南京市浦口區(qū)天天小區(qū)1棟11號
nationality: 漢
card location: x0: 1126563840, y0: 1126563840
card location: x1: 0, y1: 0
card location: x2: 0, y2: 0
card location: x3: 0, y3: 0
face location: x0: 1126563840, y0: 1126563840
face location: x1: 0, y1: 0
face location: x2: 0, y2: 0
face location: x3: 0, y3: 0
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 8 # 身份證反面識別
CLI關(guān)鍵日志:
Recognize identity card back side result:
start date: 20131010
issue: 杭州市公安局余杭分局
end date: 20231010
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 9 # 銀行卡識別
CLI關(guān)鍵日志:
bankName: 中國工商銀行
cardNumber: 6212262315007683105
validDate: 07/26
Recognize bank card result:
bank name: 中國工商銀行
card number: 6212262315007683105
valid date: 07/26
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 10 # 文本識別
CLI關(guān)鍵日志:
Recognize character result:
text: 《爆炸新聞》
probability: 1.0
text area: left: 141, top: 442, weight: 89, height: 20
Recognize character result:
text: 19
probability: 1.0
text area: left: 115, top: 173, weight: 100, height: 109
Recognize character result:
text: 豆瓣評分7.1
probability: 0.9
text area: left: 168, top: 447, weight: 98, height: 18
Recognize character result:
text: 2019||美國|加拿大|劇情|傳記
probability: 0.5
text area: left: 181, top: 450, weight: 241, height: 17
Recognize character result:
text: 杰伊·羅奇導(dǎo)演
probability: 0.9
text area: left: 216, top: 454, weight: 112, height: 18
Recognize character result:
text: 2021年2月星期五
probability: 1.0
text area: left: 231, top: 187, weight: 150, height: 18
Recognize character result:
text: 農(nóng)歷正月初八
probability: 1.0
text area: left: 261, top: 193, weight: 104, height: 18
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 11 # 垃圾分類
CLI關(guān)鍵日志:
Recognize rubbish result:
rubbish: 塑料飲料瓶
rubbish score: 1.0
category: 可回收垃圾
category score: 1.0
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 12 # 水果檢測
CLI關(guān)鍵日志:
Recognize fruits result:
fruit name: 橙子
fruit score: 0.8
fruit location: x: 214, y: 44, w: 509, h: 438
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 13 # 圖像人體擦除
CLI關(guān)鍵日志:
Erase person result:
url: http://algo-app-isr-lab-cn-shanghai-prod.oss-cn-shanghai.aliyuncs.com/remove-person/2021-03-31_15%3A34%3A17.959810_person_org.jpg?Expires=1617206658&OSSAccessKeyId=XXXX&Signature=jFwwnSYOw2fXev1%2Fm5az4JBa%2B5Q%3D
CLI命令行輸入:
$ aiagent -e ucloud-ai -m 14 # 風(fēng)格遷移
CLI關(guān)鍵日志:
Extend image style result:
out image url: http://viapi-cn-shanghai-dha-filter.oss-cn-shanghai.aliyuncs.com/upload/result_/2021-3-31/invi__016172056608421021961_1mdK2W.jpg?Expires=1617207460&OSSAccessKeyId=XXXX&Signature=3t8Q%2BwTAo6Lib9utaoMrWUJX6Iw%3D