小言_互联网的博客

HaaS AI 应用实践“老板来了”系列之四:人脸比对

252人阅读  评论(0)

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、应用调试

https://vision.aliyun.com/experience/detail?spm=a211p3.14020179.J_7524944390.15.66cd608dch2l04&tagName=facebody&children=CompareFace

可以在该界面下上传你要比对的照片查看返回结果是否与你在AI SDK中调用API返回的结果一致。

 

4、总结

AI SDK从云端拿到返回的置信度和人脸位置信息后,接下来根据置信度大小判断是否触发蜂鸣器报警,钉钉机器人预警等逻辑,请看《HaaS AI应用实践“老板来了”系列之五:IoT Studio应用》。

 

5、开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/


转载:https://blog.csdn.net/HaaSTech/article/details/113393336
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场