1@page ai_agent ai_agent 2 3**[更正文档](https://gitee.com/alios-things/ai_agent/edit/master/README.md)**      **[贡献说明](https://help.aliyun.com/document_detail/302301.html)** 4 5# 概述 6AI Agent作为AI的代理引擎框架,支持不同推理引擎的注册,对用户提供统一的接口,简化用户操作,目前注册的AI引擎为ucloud-ai云端推理引擎,用户可以根据需要注册其他推理引擎。 7 8## 版权信息 9> Apache license v2.0 10 11## 目录结构 12```tree 13├── include 14│ ├── aiagent_common.h # aiagent模型定义头文件 15│ ├── aiagent_engine.h # aiagent引擎注册结构体定义头文件 16│ ├── aiagent_service.h # aiagent对外服务接口定义头文件 17│ ├── engine 18│ │ └── ucloud_ai_engine.h # ucloud ai引擎头文件 19│ └── aiconfig.h # AI引擎配置文件 20├── package.yaml # 编译配置文件 21├── src 22│ ├── aiagent_engine.c # aiagent引擎管理代码 23│ ├── aiagent_service.c # aiagent服务接口实现 24│ └── engine 25│ │ └── ucloud_ai_engine.c # ucloud ai引擎注册实例 26└── example 27 └── aiagent_example.c # 测试用例 28``` 29 30## 依赖组件 31 32* ucloud_ai 33 34# 常用配置 35```yaml 36def_config: # 组件的可配置项 37 CONFIG_UCLOUD_AI_ENGINE_ENABLE: 1 38``` 39> 配置AI引擎为ucloud ai推理引擎 40 41# API说明 42- 参考 [aiagent_aos_api](https://g.alicdn.com/alios-things-3.3/doc/group__aiagent__aos__api.html) 43 44# 使用示例 45 46组件使用示例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具,所以首先需要参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),下载安装。 47待开发环境搭建完成后,可以按照以下步骤进行示例的测试。 48 49## 步骤1 创建或打开工程 50 51**打开已有工程** 52 53如果用于测试的案例工程已存在,可参考[《AliOS Things集成开发环境使用说明之打开工程》](https://help.aliyun.com/document_detail/302381.html)打开已有工程。 54 55**创建新的工程** 56 57组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择helloworld_demo案例。helloworld_demo案例相关的源代码下载可参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html)。 58 59## 步骤2 添加组件 60 61案例下载完成后,需要在helloworld_demo组件的package.yaml中添加对组件的依赖: 62 63```yaml 64 65depends: 66 - ai_agent: master # helloworld_demo中引入ai_agent组件 67 - netmgr: master # helloworld_demo中引入netmgr组件 68 - littlefs: master # helloworld_demo中引入littlefs组件 69 70def_config: 71 CLI_IOBOX_ENABLE: 1 # 可选:使能文件系统测试命令,例如ls, ll, mkdir, touch, echo等 72 73``` 74 75 76## 步骤3 下载组件 77 78在已安装了 的开发环境工具栏中,选择Terminal -> New Terminal启动终端,并且默认工作路径为当前工程的workspace,此时在终端命令行中输入: 79 80```shell 81 82aos install ai_agent 83 84``` 85 86上述命令执行成功后,组件源码则被下载到了./components/ai_agent路径中。 87 88## 步骤4 添加示例 89 90在ai_agent组件的package.yaml中添加[example示例代码](https://gitee.com/alios-things/ai_agent/tree/master/example): 91 92```yaml 93source_file: 94 - "example/aiagent_example.c" # add aiagent_example.c 95``` 96 97在ucloud_ai组件的package.yaml中添加: 98 99```yaml 100build_config: 101 prebuild_script: cp_resources.py #编译时cp_resources.py会对资源文件进行拷贝,系统自动打包资源文件到littlefs文件系统中 102``` 103 104### 云端功能开通 1051. 如没有阿里云账号,请登陆[阿里云官网](http://www.aliyun.com)开通。 1062. 登陆[视觉智能开放平台](https://vision.aliyun.com)免费开通如下功能: 107 108    **[人脸人体](https://vision.aliyun.com/facebody)** 109 **[文字识别](https://vision.aliyun.com/ocr)** 110 **[分割抠图](https://vision.aliyun.com/imageseg)** 111 **[目标检测](https://vision.aliyun.com/objectdet)** 112 1133. 登陆[OSS平台](oss.console.aliyun.com)创建bucket: 114```sh 115a. 创建Bucket时地域选择“上海” 116b. 读写权限选择“公共读” 117c. Bucket名称全小写 118``` 119### 配置OSS信息 120在components/ucloud_ai/package.yaml中替换你的OSS信息 121 122```yaml 123OSS_ACCESS_KEY: "Your-Access-Key" 124OSS_ACCESS_SECRET: "Your-Access-Secret" 125OSS_ENDPOINT: "Your-OSS-Endpoint" #例如: "oss-cn-shanghai-internal.aliyuncs.com" 126OSS_BUCKET: "Your-OSS-Bucket" #例如: "cloud-ai-dev" 127 128OSS_ACCESS_KEY以及OSS_ACCESS_SECRET获取链接: https://usercenter.console.aliyun.com/#/accesskey 129ENDPOINT默认使用“oss-cn-shanghai-internal.aliyuncs.com”,BUCKET请使用你创建好的Bucket名称。 130``` 131 132## 步骤5 编译固件 133 134在示例代码已经添加至组件的配置文件,并且helloworld_demo已添加了对该组件的依赖后,就可以编译helloworld_demo案例来生成固件了,具体编译方法可参考[《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)。 135 136## 步骤6 烧录固件 137 138### 文件系统烧录 139本组件例子中使用到到图片存放在代码中hardware/chip/haas1000/prebuild/data/目录下ucloud_ai_image目录,除烧录helloworld_demo image外,需烧录littlefs文件系统,请将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开: 140 141```yaml 142 program_data_files: 143 - filename: release/write_flash_tool/ota_bin/littlefs.bin 144 address: 0xB32000 145``` 146 147上述步骤执行后,可参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)来烧录固件。 148 149## 步骤7 打开串口 150 151固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考[《AliOS Things集成开发环境使用说明之查看日志》](https://help.aliyun.com/document_detail/302382.html)。 152 153当串口终端打开成功后,可在串口中输入help来查看已添加的测试命令。 154 155 156## 步骤8 示例测试 157 158测试步骤: 159```sh 160$ aiagent -e ucloud-ai init # 初始化aiagent组件 161$ netmgr -t wifi -c {ssid} {password} # 请将ssid修改为您路由器的WiFi名称,paasword填入路由器的WiFi密码 162$ aiagent -e ucloud-ai -m {0 ~ 14} # 测试AI用例 163``` 164 165**CLI命令行输入:** 166```sh 167aiagent -e ucloud-ai init # 初始化ucloud-ai引擎,在执行下面的测试命令前,该命令需要优先执行,仅需执行一次即可 168``` 169 170> CLI关键日志: 171```sh 172aiagent init successfully! 173``` 174 175**CLI命令行输入:** 176```sh 177aiagent -e ucloud-ai -m 0 # 人脸比对 178``` 179 180> CLI关键日志: 181```sh 182Facebody comparing result: 183confidence: 84.6 184location at x: 159, y: 76, w: 143, h: 194 185``` 186 187**CLI命令行输入:** 188```sh 189aiagent -e ucloud-ai -m 1 # 人物动漫化 190``` 191 192> CLI关键日志: 193```sh 194Generate human anime style result: 195url: 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=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=YCLva1stK27Cn657nMeYhgFt7h4%3D 196``` 197 198**CLI命令行输入:** 199```sh 200aiagent -e ucloud-ai -m 2 # 表情识别 201``` 202 203> CLI关键日志: 204```sh 205Recognize expression result: 206type: anger, probability: 1.0 207``` 208 209**CLI命令行输入:** 210```sh 211aiagent -e ucloud-ai -m 3 # 目标检测 212``` 213 214> CLI关键日志: 215```sh 216Detect object result: 217type: potted plant, Score: 0.4, x: 35, y: 274, w: 185, h: 443 218Detect object result: 219type: potted plant, Score: 0.5, x: 663, y: 121, w: 847, h: 457 220Detect object result: 221type: monitor, Score: 0.6, x: 250, y: 43, w: 670, h: 439 222Detect object result: 223type: keyboard, Score: 0.5, x: 239, y: 435, w: 489, h: 485 224Detect object result: 225type: keyboard, Score: 0.3, x: 241, y: 428, w: 639, h: 506 226Detect object result: 227type: mouse, Score: 0.2, x: 660, y: 479, w: 750, h: 528 228``` 229 230**CLI命令行输入:** 231```sh 232aiagent -e ucloud-ai -m 4 # 主体检测 233``` 234 235> CLI关键日志: 236```sh 237Detect main body result: 238main body location x: 1, y: 31, w: 461, h: 528 239``` 240 241**CLI命令行输入:** 242```sh 243aiagent -e ucloud-ai -m 5 # 通用分割 244``` 245 246> CLI关键日志: 247```sh 248Segment common image result: 249url: 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=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=WREOAoBUIvpLSyygGxKPfi82HfI%3D 250``` 251 252**CLI命令行输入:** 253```sh 254aiagent -e ucloud-ai -m 6 # 面部分割 255``` 256 257> CLI关键日志: 258```sh 259Segment face result: 260image 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=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=wR7GUxqrrwRF9u3mCJ%2BNDhAPCzk%3D 261location at x: 153, y: 66, w: 160, h: 209 262``` 263 264**CLI命令行输入:** 265```sh 266aiagent -e ucloud-ai -m 7 # 身份证证明识别 267``` 268 269> CLI关键日志: 270```sh 271Recognize identity card face side result: 272address: 江苏省南京市浦口区天天小区1栋11号 273nationality: 汉 274card location: x0: 1126563840, y0: 1126563840 275card location: x1: 0, y1: 0 276card location: x2: 0, y2: 0 277card location: x3: 0, y3: 0 278face location: x0: 1126563840, y0: 1126563840 279face location: x1: 0, y1: 0 280face location: x2: 0, y2: 0 281face location: x3: 0, y3: 0 282``` 283 284**CLI命令行输入:** 285```sh 286aiagent -e ucloud-ai -m 8 # 身份证反面识别 287``` 288 289> CLI关键日志: 290```sh 291Recognize identity card back side result: 292start date: 20131010 293issue: 杭州市公安局余杭分局 294end date: 20231010 295``` 296 297**CLI命令行输入:** 298```sh 299aiagent -e ucloud-ai -m 9 # 银行卡识别 300``` 301 302> CLI关键日志: 303```sh 304bankName: 中国工商银行 305cardNumber: 6212262315007683105 306validDate: 07/26 307Recognize bank card result: 308bank name: 中国工商银行 309card number: 6212262315007683105 310valid date: 07/26 311``` 312 313**CLI命令行输入:** 314```sh 315aiagent -e ucloud-ai -m 10 # 文本识别 316``` 317 318> CLI关键日志: 319```sh 320Recognize character result: 321text: 《爆炸新闻》 322probability: 1.0 323text area: left: 141, top: 442, weight: 89, height: 20 324Recognize character result: 325text: 19 326probability: 1.0 327text area: left: 115, top: 173, weight: 100, height: 109 328Recognize character result: 329text: 豆瓣评分7.1 330probability: 0.9 331text area: left: 168, top: 447, weight: 98, height: 18 332Recognize character result: 333text: 2019||美国|加拿大|剧情|传记 334probability: 0.5 335text area: left: 181, top: 450, weight: 241, height: 17 336Recognize character result: 337text: 杰伊·罗奇 导演 338probability: 0.9 339text area: left: 216, top: 454, weight: 112, height: 18 340Recognize character result: 341text: 2021年2月星期五 342probability: 1.0 343text area: left: 231, top: 187, weight: 150, height: 18 344Recognize character result: 345text: 农历正月初八 346probability: 1.0 347text area: left: 261, top: 193, weight: 104, height: 18 348``` 349 350**CLI命令行输入:** 351```sh 352aiagent -e ucloud-ai -m 11 # 垃圾分类 353``` 354 355> CLI关键日志: 356```sh 357Recognize rubbish result: 358rubbish: 塑料饮料瓶 359rubbish score: 1.0 360category: 可回收垃圾 361category score: 1.0 362``` 363 364**CLI命令行输入:** 365```sh 366aiagent -e ucloud-ai -m 12 # 水果检测 367``` 368 369> CLI关键日志: 370```sh 371Recognize fruits result: 372fruit name: 橙子 373fruit score: 0.8 374fruit location: x: 214, y: 44, w: 509, h: 438 375``` 376 377**CLI命令行输入:** 378```sh 379aiagent -e ucloud-ai -m 13 # 图像人体擦除 380``` 381 382> CLI关键日志: 383```sh 384Erase person result: 385url: 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=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=jFwwnSYOw2fXev1%2Fm5az4JBa%2B5Q%3D 386``` 387 388**CLI命令行输入:** 389```sh 390aiagent -e ucloud-ai -m 14 # 风格迁移 391``` 392 393> CLI关键日志: 394```sh 395Extend image style result: 396out 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=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=3t8Q%2BwTAo6Lib9utaoMrWUJX6Iw%3D 397``` 398 399# 注意事项 400NA 401 402# FAQ 403NA 404