ucloud_ai接口說明文檔。
概述
ucloud ai是基于alicloud OpenAPI實現的云端AI推理引擎,對接的阿里云視覺智能開放平臺AI能力,目前支持15種AI模型:人臉識別、表情識別、人物動漫化、物體檢測、主體檢測、通用分割、人臉分割、身份證識別、銀行卡識別、文字識別、垃圾分類、水果識別、圖像人體擦除、風格遷移,未來將加入更多AI能力。
版權信息
Apache license v2.0
目錄結構
├── include
│ ├── model
│ │ ├── common.h # model通用函數內部頭文件
│ │ ├── facebody.h # 云端人臉人體識別函數內部頭文件
│ │ ├── imageenhan.h # 云端圖像增強處理函數內部頭文件
│ │ ├── imagerecog.h # 云端圖像識別處理函數內部頭文件
│ │ ├── imageseg.h # 云端圖像分割處理函數內部頭文件
│ │ ├── internal.h # 云端節點配置內部頭文件
│ │ ├── objectdet.h # 云端目標檢測處理函數內部頭文件
│ │ └── ocr.h # 云端OCR識別處理函數內部頭文件
│ ├── ucloud_ai_common.h # 云端AI模型配置對外頭文件
│ ├── ucloud_ai_facebody.h # 云端人臉人體識別函數接口對外頭文件
│ ├── ucloud_ai_imageenhan.h # 云端圖像增強處理函數接口對外頭文件
│ ├── ucloud_ai_imagerecog.h # 云端圖像識別處理函數接口對外頭文件
│ ├── ucloud_ai_imageseg.h # 云端圖像分割處理函數接口對外頭文件
│ ├── ucloud_ai_objectdet.h # 云端目標檢測處理函數接口對外頭文件
│ └── ucloud_ai_ocr.h # 云端OCR識別處理函數接口對外頭頭文件
├── package.yaml # 編譯配置文件
├── src
│ ├── model
│ │ ├── common.cc # model通用函數代碼
│ │ ├── facebody.cc # 云端人臉人體識別函數接口代碼
│ │ ├── imageenhan.cc # 云端圖像增強函數接口代碼
│ │ ├── imagerecog.cc # 云端圖像識別函數接口代碼
│ │ ├── imageseg.cc # 云端圖像分割函數接口代碼
│ │ ├── objectdet.cc # 云端目標檢測函數接口代碼
│ │ ├── ocr.cc # 云端OCR識別函數接口代碼
│ │ └── aliyun-openapi # 阿里云視覺智能開放平臺OpenAPI接口
│ ├── ucloud_ai_common.c # 云端文件上傳及配置函數接口代碼
│ ├── ucloud_ai_facebody.c # 云端人臉識別對外函數接口代碼
│ ├── ucloud_ai_imageenhan.c # 云端圖像增強對外函數接口代碼
│ ├── ucloud_ai_imagerecog.c # 云端圖像識別對外函數接口代碼
│ ├── ucloud_ai_imageseg.c # 云端圖像分割對外函數接口代碼
│ ├── ucloud_ai_objectdet.c # 云端目標檢測對外函數接口代碼
│ └── ucloud_ai_ocr.c # 云端OCR識別對外函數接口代碼
└── example
├── image # 測試用例中使用到的圖片資源文件
└── ucloud_ai_example.c # 測試用例
依賴組件
HTTP
常用配置
def_config: # 組件的可配置項
CONFIG_ALICLOUD_FACEBODY_ENABLE: 1
CONFIG_ALICLOUD_IMAGERECOG_ENABLE: 1
CONFIG_ALICLOUD_IMAGEENHAN_ENABLE: 1
CONFIG_ALICLOUD_OBJECTDET_ENABLE: 1
CONFIG_ALICLOUD_IMAGESEG_ENABLE: 1
CONFIG_ALICLOUD_OCR_ENABLE: 1
CONFIG_ALICLOUD_OSS_ENABLE: 1
CONFIG_ALICLOUD_CHATBOT_ENABLE: 1
配置支持的云端AI模型
API說明
使用示例
組件使用示例相關的代碼下載、編譯和固件燒錄均依賴AliOS Things配套的開發工具,所以首先需要參考《AliOS Things集成開發環境使用說明之搭建開發環境》,下載安裝。 待開發環境搭建完成后,可以按照以下步驟進行示例的測試。
步驟1 創建或打開工程
打開已有工程
如果用于測試的案例工程已存在,可參考《AliOS Things集成開發環境使用說明之打開工程》打開已有工程。
創建新的工程
組件的示例代碼可以通過編譯鏈接到AliOS Things的任意案例(solution)來運行,這里選擇helloworld_demo案例。helloworld_demo案例相關的源代碼下載可參考《AliOS Things集成開發環境使用說明之創建工程》。
步驟2 添加組件
案例下載完成后,需要在helloworld_demo組件的package.yaml中添加對組件的依賴:
depends:
- ucloud_ai: master # helloworld_demo中引入ucloud_ai組件
- netmgr: master # helloworld_demo中引入netmgr組件
- littlefs: master # helloworld_demo中引入littlefs組件
def_config:
CLI_IOBOX_ENABLE: 1 # 可選:使能文件系統測試命令,例如ls, ll, mkdir, touch, echo等
步驟3 下載組件
在已安裝了的開發環境工具欄中,選擇Terminal -> New Terminal啟動終端,并且默認工作路徑為當前工程的workspace,此時在終端命令行中輸入:
aos install ucloud_ai
上述命令執行成功后,組件源碼則被下載到了./components/ucloud_ai路徑中。
步驟4 添加示例
在ucloud_ai組件的package.yaml中添加example示例代碼:
source_file:
- "example/ucloud_ai_example.c" # add ucloud_ai_example.c
build_config:
prebuild_script: cp_resources.py #編譯時cp_resources.py會對資源文件進行拷貝,系統自動打包資源文件到littlefs文件系統中
云端功能開通
登錄OSS平臺創建bucket:
a. 創建Bucket時地域選擇“上海”
b. 讀寫權限選擇“公共讀”
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_BUCKET: "Your-OSS-Bucket"
OSS_ACCESS_KEY以及OSS_ACCESS_SECRET獲取鏈接為 https://usercenter.console.aliyun.com/#/accesskey
ENDPOINT默認使用“oss-cn-shanghai-internal.aliyuncs.com”,BUCKET請使用你創建好的Bucket名稱。
步驟5 編譯固件
在示例代碼已經添加至組件的配置文件,并且helloworld_demo已添加了對該組件的依賴后,就可以編譯helloworld_demo案例來生成固件了,具體編譯方法可參考《AliOS Things集成開發環境使用說明之編譯固件》。
步驟6 燒錄固件
文件系統燒錄
本組件例子中使用到圖片存放在代碼中hardware/chip/haas1000/prebuild/data/目錄下ucloud_ai_image目錄,除燒錄helloworld_demo image外,需燒錄littlefs文件系統,請將hardware/chip/haas1000/package.yaml文件中以下代碼段的注釋打開:
program_data_files:
- filename: release/write_flash_tool/ota_bin/littlefs.bin
address: 0xB32000
上述步驟執行后,可參考《AliOS Things集成開發環境使用說明之燒錄固件》來燒錄固件。
步驟7 打開串口
固件燒錄完成后,可以通過串口查看示例的運行結果,打開串口的具體方法可參考《AliOS Things集成開發環境使用說明之查看日志》。
當串口終端打開成功后,可在串口中輸入help來查看已添加的測試命令。
步驟8 測試示例
測試步驟:
$ ucloud_ai init # 初始化ucloud_ai組件
$ netmgr -t wifi -c {ssid} {password} # 請將ssid修改為您路由器的WiFi名稱,paasword填入路由器的WiFi密碼
$ ucloud_ai -m {0 ~ 15} # 測試AI用例
CLI命令行輸入:
ucloud_ai init # 在執行下面的測試命令前,該命令需要優先執行,僅需執行一次即可
CLI關鍵日志:
ucloud_ai comp init successfully!
CLI命令行輸入:
ucloud_ai -m 0 # 人臉比對
CLI關鍵日志:
confidence:84.5607
x:159
y:76
w:143
h194
CLI命令行輸入:
ucloud_ai -m 1 # 人物動漫化
CLI關鍵日志:
image 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=XXXX&Signature=8zhYdqxKgz9eDz970l1BXmpPAiQ%3D
CLI命令行輸入:
ucloud_ai -m 2 # 表情識別
CLI關鍵日志:
face probability:0.997393
x:872835160
y:873405208
w:4
h:872835304
CLI命令行輸入:
ucloud_ai -m 3 # 目標檢測
CLI關鍵日志:
object num:6
object height:533
object width:948
object score:0.437
object type:potted plant
object boxes.x:35
object boxes.y:274
object boxes.w:185
object boxes.h:443
object score:0.487
object type:potted plant
object boxes.x:663
object boxes.y:121
object boxes.w:847
object boxes.h:457
object score:0.583
object type:monitor
object boxes.x:250
object boxes.y:43
object boxes.w:670
object boxes.h:439
object score:0.482
object type:keyboard
object boxes.x:239
object boxes.y:435
object boxes.w:489
object boxes.h:485
object score:0.261
object type:keyboard
object boxes.x:241
object boxes.y:428
object boxes.w:639
object boxes.h:506
object score:0.217
object type:mouse
object boxes.x:660
object boxes.y:479
object boxes.w:750
object boxes.h:528
CLI命令行輸入:
ucloud_ai -m 4 # 主體檢測
CLI關鍵日志:
object x:56
object y:177
object width:661
object height:209
CLI命令行輸入:
ucloud_ai -m 5 # 通用分割
CLI關鍵日志:
0image 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=XXXX&Signature=bvMITW5gJQPlHBiP3Aa%2BO6fCdvQ%3D
0width: 160
0height: 209
0x: 153
0y: 66
CLI命令行輸入:
ucloud_ai -m 6 # 面部分割
CLI關鍵日志:
image 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=XXXX&Signature=TiqmpoQqCon9KHPXEF8W6sf2vuY%3D
CLI命令行輸入:
ucloud_ai -m 7 # 身份證正面識別
CLI關鍵日志:
Address: 江蘇省南京市浦口區天天小區1棟11號
BirthDate:
gender:
nationality: 漢
iDNumber:
faceRectangle.x: 663.147
faceRectangle.y: 249.947
faceRectangle.width: 115.432
faceRectangle.height: 96.2586
faceRectangle.angle: -87.3476
0cardAreas.x: 166
0cardAreas.y: 97
0faceRectVertices.x: 708.554
0faceRectVertices.y: 309.828
1cardAreas.x: 775
1cardAreas.y: 97
1faceRectVertices.x: 612.398
1faceRectVertices.y: 305.374
2cardAreas.x: 775
2cardAreas.y: 460
2faceRectVertices.x: 617.74
2faceRectVertices.y: 190.065
3cardAreas.x: 166
3cardAreas.y: 460
3faceRectVertices.x: 713.895
3faceRectVertices.y: 194.52
CLI命令行輸入:
ucloud_ai -m 8 # 身份證反面識別
CLI關鍵日志:
startDate: 20131010
issue: 杭州市公安局余杭分局
endDate: 20231010
CLI命令行輸入:
ucloud_ai -m 9 # 銀行卡識別
CLI關鍵日志:
bankName: 中國工商銀行
cardNumber: 6212262315007683105
validDate: 07/26
CLI命令行輸入:
ucloud_ai -m 10 # 文本識別
CLI關鍵日志:
results size: 7
0text: 《爆炸新聞》
0probability: 0.987366
0text left: 442
0text angle: -9
0text top: 141
0text height: 20
0text: width:89
1text: 19
1probability: 0.993373
1text left: 173
1text angle: -10
1text top: 115
1text height: 109
1text: width:100
2text: 豆瓣評分7.1
2probability: 0.896118
2text left: 447
2text angle: -9
2text top: 168
2text height: 18
2text: width:98
3text: 2019||美國|加拿大|劇情|傳記
3probability: 0.494584
3text left: 450
3text angle: -9
3text top: 181
3text height: 17
3text: width:241
4text: 杰伊·奇導演
4probability: 0.894469
4text left: 454
4text angle: -9
4text top: 216
4text height: 18
4text: width:112
5text: 2021年2月星期五
5probability: 0.991614
5text left: 187
5text angle: -9
5text top: 231
5text height: 18
5text: width:150
6text: 農歷正月初八
6probability: 0.984329
6text left: 193
6text angle: -9
6text top: 261
6text height: 18
6text: width:104
CLI命令行輸入:
ucloud_ai -m 11 # 垃圾分類
CLI關鍵日志:
sensitive: 0
0rubbish: 塑料飲料瓶
0category: 可回收垃圾
0categoryScore: 1
0rubbishScore: 1
CLI命令行輸入:
ucloud_ai -m 12 # 水果檢測
CLI關鍵日志:
0score: 0.822785
0name: 橙子
box.xmin: 214.05966186523438
box.ymin: 44.830513000488281
box.xmax: 723.5120849609375
box.ymax: 482.88070678710938
CLI命令行輸入:
ucloud_ai -m 13 # 圖像人體擦除
CLI關鍵日志:
imageUrl: 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=XXXX&Signature=OwLEg5pWNVDwXrvAbGsUU7q5Dbs%3D
CLI命令行輸入:
ucloud_ai -m 14 # 風格遷移
CLI命令行輸入:
ucloud_ai -m 15 # 智能對話
CLI關鍵日志:
outMajorURL:
outImageURL: http://viapi-cn-shanghai-dha-filter.oss-cn-shanghai.aliyuncs.com/upload/result_/2021-3-31/invi__016171860565631021659_XIqH26.jpg?Expires=1617187856&OSSA
注意事項
使用過程中如果想要驗證自己的圖片是否可以正常識別可通過http://vision.aliyun.com進入能力中心中對應的體驗頁面進行驗證。
FAQ
如果遇到:
error code: InvalidAction.NotFound
請確認Endpoint是否設置正確
error code: InvalidApi.NotPurchase
請確認是否在vision.aliyun.com開通相應功能
littlefs_vfs.c:677:error: lfs_vfs_open /data/ucloud_ai_image/object.jpg failed, ret - -2
請確認是否有拷貝圖片到hardware/chip/haas1000/prebuild/data/ucloud_ai_image目錄。
1. 在cli/package.yaml中設置CLI_IOBOX_ENABLE: 1
2. ls /data/ucloud_ai_image查看
如果有,可能是文件系統存儲空間不夠,此時請執行:
在ucloud_ai/package.yaml中屏蔽prebuild_script: cp_resources.py;
刪除ucloud_ai_image中其他文件,僅保留測試case使用的圖片文件;
再重新編譯燒錄。