Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 29-Oct-2021 | - | ||||
example/ | 29-Oct-2021 | - | ||||
include/ | 29-Oct-2021 | - | ||||
src/ | 29-Oct-2021 | - | ||||
README.md | A D | 29-Oct-2021 | 15.9 KiB | 520 | 431 | |
cp_resources.py | A D | 29-Oct-2021 | 584 | 29 | 15 | |
package.yaml | A D | 29-Oct-2021 | 6.9 KiB |
README.md
1@page ucloud_ai ucloud_ai 2 3**[更正文档](https://gitee.com/alios-things/ucloud_ai/edit/master/README.md)**      **[贡献说明](https://help.aliyun.com/document_detail/302301.html)** 4 5# 概述 6ucloud ai是基于alicloud OpenAPI实现的云端AI推理引擎,对接的阿里云视觉智能开放平台AI能力,目前支持15种AI模型:人脸识别、表情识别、人物动漫化、物体检测、主体检测、通用分割、人脸分割、身份证识别、银行卡识别、文字识别、垃圾分类、水果识别、图像人体擦除、风格迁移,未来将加入更多AI能力。 7 8## 版权信息 9> Apache license v2.0 10 11## 目录结构 12```tree 13├── include 14│ ├── model 15│ │ ├── common.h # model通用函数内部头文件 16│ │ ├── facebody.h # 云端人脸人体识别函数内部头文件 17│ │ ├── imageenhan.h # 云端图像增强处理函数内部头文件 18│ │ ├── imagerecog.h # 云端图像识别处理函数内部头文件 19│ │ ├── imageseg.h # 云端图像分割处理函数内部头文件 20│ │ ├── internal.h # 云端节点配置内部头文件 21│ │ ├── objectdet.h # 云端目标检测处理函数内部头文件 22│ │ └── ocr.h # 云端OCR识别处理函数内部头文件 23│ ├── ucloud_ai_common.h # 云端AI模型配置对外头文件 24│ ├── ucloud_ai_facebody.h # 云端人脸人体识别函数接口对外头文件 25│ ├── ucloud_ai_imageenhan.h # 云端图像增强处理函数接口对外头文件 26│ ├── ucloud_ai_imagerecog.h # 云端图像识别处理函数接口对外头文件 27│ ├── ucloud_ai_imageseg.h # 云端图像分割处理函数接口对外头文件 28│ ├── ucloud_ai_objectdet.h # 云端目标检测处理函数接口对外头文件 29│ └── ucloud_ai_ocr.h # 云端OCR识别处理函数接口对外头头文件 30├── package.yaml # 编译配置文件 31├── src 32│ ├── model 33│ │ ├── common.cc # model通用函数代码 34│ │ ├── facebody.cc # 云端人脸人体识别函数接口代码 35│ │ ├── imageenhan.cc # 云端图像增强函数接口代码 36│ │ ├── imagerecog.cc # 云端图像识别函数接口代码 37│ │ ├── imageseg.cc # 云端图像分割函数接口代码 38│ │ ├── objectdet.cc # 云端目标检测函数接口代码 39│ │ ├── ocr.cc # 云端OCR识别函数接口代码 40│ │ └── aliyun-openapi # 阿里云视觉智能开放平台OpenAPI接口 41│ ├── ucloud_ai_common.c # 云端文件上传及配置函数接口代码 42│ ├── ucloud_ai_facebody.c # 云端人脸识别对外函数接口代码 43│ ├── ucloud_ai_imageenhan.c # 云端图像增强对外函数接口代码 44│ ├── ucloud_ai_imagerecog.c # 云端图像识别对外函数接口代码 45│ ├── ucloud_ai_imageseg.c # 云端图像分割对外函数接口代码 46│ ├── ucloud_ai_objectdet.c # 云端目标检测对外函数接口代码 47│ └── ucloud_ai_ocr.c # 云端OCR识别对外函数接口代码 48└── example 49 ├── image # 测试用例中使用到的图片资源文件 50 └── ucloud_ai_example.c # 测试用例 51``` 52 53## 依赖组件 54 55* http 56 57# 常用配置 58```yaml 59def_config: # 组件的可配置项 60 CONFIG_ALICLOUD_FACEBODY_ENABLE: 1 61 CONFIG_ALICLOUD_IMAGERECOG_ENABLE: 1 62 CONFIG_ALICLOUD_IMAGEENHAN_ENABLE: 1 63 CONFIG_ALICLOUD_OBJECTDET_ENABLE: 1 64 CONFIG_ALICLOUD_IMAGESEG_ENABLE: 1 65 CONFIG_ALICLOUD_OCR_ENABLE: 1 66 CONFIG_ALICLOUD_OSS_ENABLE: 1 67 CONFIG_ALICLOUD_CHATBOT_ENABLE: 1 68``` 69> 配置支持的云端AI模型 70 71# API说明 72- 参考 [ucloud_ai_aos_api](https://g.alicdn.com/alios-things-3.3/doc/group__ucloud__ai__aos__api.html) 73 74# 使用示例 75 76组件使用示例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具,所以首先需要参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),下载安装。 77待开发环境搭建完成后,可以按照以下步骤进行示例的测试。 78 79## 步骤1 创建或打开工程 80 81**打开已有工程** 82 83如果用于测试的案例工程已存在,可参考[《AliOS Things集成开发环境使用说明之打开工程》](https://help.aliyun.com/document_detail/302381.html)打开已有工程。 84 85**创建新的工程** 86 87组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择helloworld_demo案例。helloworld_demo案例相关的源代码下载可参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html)。 88 89## 步骤2 添加组件 90 91案例下载完成后,需要在helloworld_demo组件的package.yaml中添加对组件的依赖: 92 93```yaml 94 95depends: 96 - ucloud_ai: master # helloworld_demo中引入ucloud_ai组件 97 - netmgr: master # helloworld_demo中引入netmgr组件 98 - littlefs: master # helloworld_demo中引入littlefs组件 99 100def_config: 101 CLI_IOBOX_ENABLE: 1 # 可选:使能文件系统测试命令,例如ls, ll, mkdir, touch, echo等 102 103``` 104 105## 步骤3 下载组件 106 107在已安装了 的开发环境工具栏中,选择Terminal -> New Terminal启动终端,并且默认工作路径为当前工程的workspace,此时在终端命令行中输入: 108 109```shell 110 111aos install ucloud_ai 112 113``` 114 115上述命令执行成功后,组件源码则被下载到了./components/ucloud_ai路径中。 116 117## 步骤4 添加示例 118 119在ucloud_ai组件的package.yaml中添加[example示例代码](https://gitee.com/alios-things/ucloud_ai/tree/master/example): 120 121```yaml 122source_file: 123 - "example/ucloud_ai_example.c" # add ucloud_ai_example.c 124 125build_config: 126 prebuild_script: cp_resources.py #编译时cp_resources.py会对资源文件进行拷贝,系统自动打包资源文件到littlefs文件系统中 127 128``` 129 130### 云端功能开通 1311. 如没有阿里云账号,请登陆[阿里云官网](http://www.aliyun.com)开通。 1322. 登陆[视觉智能开放平台](https://vision.aliyun.com)免费开通如下功能: 133 134    **[人脸人体](https://vision.aliyun.com/facebody)** 135 **[文字识别](https://vision.aliyun.com/ocr)** 136 **[分割抠图](https://vision.aliyun.com/imageseg)** 137 **[目标检测](https://vision.aliyun.com/objectdet)** 138 1393. 登陆[OSS平台](oss.console.aliyun.com)创建bucket: 140```sh 141a. 创建Bucket时地域选择“上海” 142b. 读写权限选择“公共读” 143c. Bucket名称全小写 144``` 145### 配置OSS信息 146在components/ucloud_ai/package.yaml中替换你的OSS信息 147 148```yaml 149OSS_ACCESS_KEY: "Your-Access-Key" 150OSS_ACCESS_SECRET: "Your-Access-Secret" 151OSS_ENDPOINT: "Your-OSS-Endpoint" #例如: "oss-cn-shanghai-internal.aliyuncs.com" 152OSS_BUCKET: "Your-OSS-Bucket" #例如: "cloud-ai-dev" 153 154OSS_ACCESS_KEY以及OSS_ACCESS_SECRET获取链接: https://usercenter.console.aliyun.com/#/accesskey 155ENDPOINT默认使用“oss-cn-shanghai-internal.aliyuncs.com”,BUCKET请使用你创建好的Bucket名称。 156``` 157 158## 步骤5 编译固件 159 160在示例代码已经添加至组件的配置文件,并且helloworld_demo已添加了对该组件的依赖后,就可以编译helloworld_demo案例来生成固件了,具体编译方法可参考[《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)。 161 162## 步骤6 烧录固件 163 164### 文件系统烧录 165本组件例子中使用到到图片存放在代码中hardware/chip/haas1000/prebuild/data/目录下ucloud_ai_image目录,除烧录helloworld_demo image外,需烧录littlefs文件系统,请将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开: 166 167```yaml 168 program_data_files: 169 - filename: release/write_flash_tool/ota_bin/littlefs.bin 170 address: 0xB32000 171``` 172 173上述步骤执行后,可参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)来烧录固件。 174 175## 步骤7 打开串口 176 177固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考[《AliOS Things集成开发环境使用说明之查看日志》](https://help.aliyun.com/document_detail/302382.html)。 178 179当串口终端打开成功后,可在串口中输入help来查看已添加的测试命令。 180 181## 步骤8 测试示例 182 183测试步骤: 184```shell 185$ ucloud_ai init # 初始化ucloud_ai组件 186$ netmgr -t wifi -c {ssid} {password} # 请将ssid修改为您路由器的WiFi名称,paasword填入路由器的WiFi密码 187$ ucloud_ai -m {0 ~ 15} # 测试AI用例 188``` 189 190**CLI命令行输入:** 191```shell 192ucloud_ai init # 在执行下面的测试命令前,该命令需要优先执行,仅需执行一次即可 193``` 194 195> CLI关键日志: 196```shell 197ucloud_ai comp init successfully! 198``` 199 200**CLI命令行输入:** 201```shell 202ucloud_ai -m 0 # 人脸比对 203``` 204 205> CLI关键日志: 206```shell 207confidence:84.5607 208x:159 209y:76 210w:143 211h194 212``` 213 214**CLI命令行输入:** 215```shell 216ucloud_ai -m 1 # 人物动漫化 217``` 218 219> CLI关键日志: 220```shell 221image url:http://vibktprfx-prod-prod-aic-gd-cn-shanghai.oss-cn-shanghai.aliyuncs.com/person-image-cartoonizer/5BE7565D-59CE-43EE-8169-09ED2821CE21_b301_20210331-093707.jpg?Expires=1617185228&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=8zhYdqxKgz9eDz970l1BXmpPAiQ%3D 222``` 223 224**CLI命令行输入:** 225```shell 226ucloud_ai -m 2 # 表情识别 227``` 228 229> CLI关键日志: 230```shell 231face probablility:0.997393 232x:872835160 233y:873405208 234w:4 235h:872835304 236``` 237 238**CLI命令行输入:** 239```shell 240ucloud_ai -m 3 # 目标检测 241``` 242 243> CLI关键日志: 244```shell 245object num:6 246object height:533 247object width:948 248object score:0.437 249object type:potted plant 250object boxes.x:35 251object boxes.y:274 252object boxes.w:185 253object boxes.h:443 254object score:0.487 255object type:potted plant 256object boxes.x:663 257object boxes.y:121 258object boxes.w:847 259object boxes.h:457 260object score:0.583 261object type:monitor 262object boxes.x:250 263object boxes.y:43 264object boxes.w:670 265object boxes.h:439 266object score:0.482 267object type:keyboard 268object boxes.x:239 269object boxes.y:435 270object boxes.w:489 271object boxes.h:485 272object score:0.261 273object type:keyboard 274object boxes.x:241 275object boxes.y:428 276object boxes.w:639 277object boxes.h:506 278object score:0.217 279object type:mouse 280object boxes.x:660 281object boxes.y:479 282object boxes.w:750 283object boxes.h:528 284``` 285 286**CLI命令行输入:** 287```shell 288ucloud_ai -m 4 # 主体检测 289``` 290 291> CLI关键日志: 292```shell 293object x:56 294object y:177 295object width:661 296object height:209 297``` 298 299**CLI命令行输入:** 300```shell 301ucloud_ai -m 5 # 通用分割 302``` 303 304> CLI关键日志: 305```shell 3060image url: http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/result_HeadSegmenter/2021-3-31/invi_HeadSegmenter_016171837626454285967296_L925gE.png?Expires=1617185562&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=bvMITW5gJQPlHBiP3Aa%2BO6fCdvQ%3D 3070width: 160 3080height: 209 3090x: 153 3100y: 66 311``` 312 313**CLI命令行输入:** 314```shell 315ucloud_ai -m 6 # 面部分割 316``` 317 318> CLI关键日志: 319```shell 320image url: http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/result_humansegmenter/2021-3-31/invi_humansegmenter_016171860047301086642_0V057V.jpg?Expires=1617187804&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=TiqmpoQqCon9KHPXEF8W6sf2vuY%3D 321``` 322 323**CLI命令行输入:** 324```shell 325ucloud_ai -m 7 # 身份证正面识别 326``` 327 328> CLI关键日志: 329```shell 330Address: 江苏省南京市浦口区天天小区1栋11号 331BirthDate: 332gender: 333nationality: 汉 334iDNumber: 335faceRectangle.x: 663.147 336faceRectangle.y: 249.947 337faceRectangle.width: 115.432 338faceRectangle.height: 96.2586 339faceRectangle.angle: -87.3476 3400cardAreas.x: 166 3410cardAreas.y: 97 3420faceRectVertices.x: 708.554 3430faceRectVertices.y: 309.828 3441cardAreas.x: 775 3451cardAreas.y: 97 3461faceRectVertices.x: 612.398 3471faceRectVertices.y: 305.374 3482cardAreas.x: 775 3492cardAreas.y: 460 3502faceRectVertices.x: 617.74 3512faceRectVertices.y: 190.065 3523cardAreas.x: 166 3533cardAreas.y: 460 3543faceRectVertices.x: 713.895 3553faceRectVertices.y: 194.52 356``` 357 358**CLI命令行输入:** 359```shell 360ucloud_ai -m 8 # 身份证反面识别 361``` 362 363> CLI关键日志: 364```shell 365startDate: 20131010 366issue: 杭州市公安局余杭分局 367endDate: 20231010 368``` 369 370**CLI命令行输入:** 371```shell 372ucloud_ai -m 9 # 银行卡识别 373``` 374 375> CLI关键日志: 376```shell 377bankName: 中国工商银行 378cardNumber: 6212262315007683105 379validDate: 07/26 380``` 381 382**CLI命令行输入:** 383```shell 384ucloud_ai -m 10 # 文本识别 385``` 386 387> CLI关键日志: 388```shell 389results size: 7 3900text: 《爆炸新闻》 3910probability: 0.987366 3920text left: 442 3930text angle: -9 3940text top: 141 3950text height: 20 3960text: width:89 3971text: 19 3981probability: 0.993373 3991text left: 173 4001text angle: -10 4011text top: 115 4021text height: 109 4031text: width:100 4042text: 豆瓣评分7.1 4052probability: 0.896118 4062text left: 447 4072text angle: -9 4082text top: 168 4092text height: 18 4102text: width:98 4113text: 2019||美国|加拿大|剧情|传记 4123probability: 0.494584 4133text left: 450 4143text angle: -9 4153text top: 181 4163text height: 17 4173text: width:241 4184text: 杰伊·罗奇 导演 4194probability: 0.894469 4204text left: 454 4214text angle: -9 4224text top: 216 4234text height: 18 4244text: width:112 4255text: 2021年2月星期五 4265probability: 0.991614 4275text left: 187 4285text angle: -9 4295text top: 231 4305text height: 18 4315text: width:150 4326text: 农历正月初八 4336probability: 0.984329 4346text left: 193 4356text angle: -9 4366text top: 261 4376text height: 18 4386text: width:104 439``` 440 441**CLI命令行输入:** 442```shell 443ucloud_ai -m 11 # 垃圾分类 444``` 445 446> CLI关键日志: 447```shell 448sensitive: 0 4490rubbish: 塑料饮料瓶 4500category: 可回收垃圾 4510categoryScore: 1 4520rubbishScore: 1 453``` 454 455**CLI命令行输入:** 456```shell 457ucloud_ai -m 12 # 水果检测 458``` 459 460> CLI关键日志: 461```shell 4620score: 0.822785 4630name: 橙子 464box.xmin: 214.05966186523438 465box.ymin: 44.830513000488281 466box.xmax: 723.5120849609375 467box.ymax: 482.88070678710938 468``` 469 470**CLI命令行输入:** 471```shell 472ucloud_ai -m 13 # 图像人体擦除 473``` 474 475> CLI关键日志: 476```shell 477imageUrl: http://algo-app-isr-lab-cn-shanghai-prod.oss-cn-shanghai.aliyuncs.com/remove-person/2021-03-31_10%3A20%3A46.011134_person_org.jpg?Expires=1617187846&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=OwLEg5pWNVDwXrvAbGsUU7q5Dbs%3D 478``` 479 480**CLI命令行输入:** 481```shell 482ucloud_ai -m 14 # 风格迁移 483``` 484 485**CLI命令行输入:** 486```shell 487ucloud_ai -m 15 # 智能对话 488``` 489 490> CLI关键日志: 491```shell 492outMajorURL: 493outImageURL: http://viapi-cn-shanghai-dha-filter.oss-cn-shanghai.aliyuncs.com/upload/result_/2021-3-31/invi__016171860565631021659_XIqH26.jpg?Expires=1617187856&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=tqJqHHoPSvga6LyET31TZsvOXFs%3D 494``` 495 496# 注意事项 497使用过程中如果想要验证自己的图片是否可以正常识别可通过http://vision.aliyun.com进入能力中心中对应的体验页面进行验证。 498 499# FAQ 500如果遇到: 501> error code: InvalidAction.NotFound 502请确认Endpoint是否设置正确 503 504> error code: InvalidApi.NotPurchase 505 506请确认是否在vision.aliyun.com开通相应功能 507 508> tlefs_vfs.c:677:error: lfs_vfs_open /data/ucloud_ai_image/object.jpg failed, ret - -2 509 510请确认是否有拷贝图片到hardware/chip/haas1000/prebuild/data/ucloud_ai_image目录。 511```yaml 5121. 在cli/package.yaml中设置CLI_IOBOX_ENABLE: 1 5132. ls /data/ucloud_ai_image查看 514``` 515 516如果有,可能是文件系统存储空间不够,此时请执行: 5171. 在ucloud_ai/package.yaml中屏蔽prebuild_script: cp_resources.py; 5182. 删除ucloud_ai_image中其他文件,仅保留测试case使用的图片文件; 5193. 再重新编译烧录。 520