1、视觉智能平台简介
视觉智能开放平台拥有阿里达摩院图像、视频、3D视觉等领域科学家和工程师沉淀的视觉AI能力,荟聚经阿里巴巴经济体海量场景实践锤炼出的最佳案例,为用户提供具备实战价值的一站式视觉AI服务。依托阿里云智能坚实的基础设施服务,提供普惠易用的AI能力,采用通用、标准化的接口,方便用户快速接入视觉智能API,省心省力。
2、为什么使用视觉智能开放平台
前面我们已经提到AIoT端侧设备因为硬件能力或应用场景的不同,通过整合云端AI能力充分发挥端智能的能力,而视觉智能开放平台有着150+的AI能力,可以极大地满足开发者在工农业等细分场景中的AI应用。这里我们以人脸比对为例带大家来进行AI应用实践。
3、视觉智能开放平台使用
3.1、人脸比对开通
登陆视觉智能平台https://vision.aliyun.com,在能力广场中选择人脸比对1:1:
2QPS都是免费的,所以在同一个账号下一个开发板使用是不会收取费用的,放心使用。
3.2、 AI SDK应用开发
在AliOS Things中为你整合了云端AI,参考demo:
$application/example/ucloud_ai_demo/ucloud_ai_demo.c
在OSS图像上传章节中当图像保存后将图像上传,当上传成功后就进入异步人脸比对流程。
void do_comparing_facebody_async(void) { int len; char *tmp_upload_url, p_upload_url[128]; char *p_myface_url; aos_mutex_lock(&g_mutex, AOS_WAIT_FOREVER); /*update capture.jpg to oss*/ tmp_upload_url = upload_local_file("/data/capture.jpg", OSS_ACCESS_KEY, \ OSS_ACCESS_SECRET, NULL , OSS_ENDPOINT, OSS_BUCKET); if (!tmp_upload_url) { LOGE(TAG, "url is null\n"); return -1; } aos_mutex_unlock(&g_mutex); len = strlen(tmp_upload_url); memcpy(p_upload_url, tmp_upload_url, len); p_upload_url[len] = '\0'; /*my face picture*/ p_myface_url = MYFACE_PATH; /*do facebody detection*/ facebody_comparing_ai(p_upload_url, p_myface_url, facebody_comparing_callback); return; }
本例中采用http POST方式请求云端,我们将上传到OSS的人脸图片传入到AI SDK中,告诉它要进行人脸比对的图片地址,然后进行比对并返回置信度结果以及人脸的位置数据。
3.2.1、 获取AccessKey信息
3.2.2、AI SDK配置
将3.2.1中获取的AccessKey和Secret填入上一篇文章中提到的sdkconfig.h中。
a. AccessKey
b. Secret
c. regionId: cn-shanghai(固定)
d. endpoint: "facebody.cn-shanghai.aliyuncs.com"
3.2.3、人脸比对实现
在demo中facebody.cc实现云端人脸比对调用接口:
int facebody_comparing_ai(char *url_a, char *url_b, facebody_comparing_cb_t cb) { InitializeSdk(); configuration.setRegionId(CLOUD_AI_REGION_ID); configuration.setEndpoint(CLOUD_AI_FACEBODY_ENDPOINT); FacebodyClient client(key, secret, configuration); Model::CompareFaceRequest request; string tmpImageURLA, tmpImageURLB; face_rect_t face_rect; float confidence; int ret; tmpImageURLA = url_a; tmpImageURLB = url_b; request.setScheme("http"); request.setMethod(HttpRequest::Method::Post); request.setImageURLA(tmpImageURLA); request.setImageURLB(tmpImageURLB); auto outcome = client.compareFace(request); //cout << endl << "facebody describeInstances returned:" << endl; //cout << "error code: " << outcome.error().errorCode() << endl; //cout << "requestId: " << outcome.result().requestId() << endl << endl; cout << "confidence:" << outcome.result().getData().confidence << endl; cout << "x:" << outcome.result().getData().rectAList[0] << endl; cout << "y:" << outcome.result().getData().rectAList[1] << endl; cout << "w:" << outcome.result().getData().rectAList[2] << endl; cout << "h" << outcome.result().getData().rectAList[3] << endl; if (cb) { confidence = outcome.result().getData().confidence; face_rect.x = outcome.result().getData().rectAList[0]; face_rect.y = outcome.result().getData().rectAList[1]; face_rect.w = outcome.result().getData().rectAList[2]; face_rect.h = outcome.result().getData().rectAList[3]; ret = cb(confidence, &face_rect); } ShutdownSdk(); return ret; }
3.2.4、应用调试
可以在该界面下上传你要比对的照片查看返回结果是否与你在AI SDK中调用API返回的结果一致。
4、总结
AI SDK从云端拿到返回的置信度和人脸位置信息后,接下来根据置信度大小判断是否触发蜂鸣器报警,钉钉机器人预警等逻辑,请看《HaaS AI应用实践“老板来了”系列之五:IoT Studio应用》。
5、开发者技术支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/
转载:https://blog.csdn.net/HaaSTech/article/details/113393336