开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
EasyDL零门槛AI开发平台

    EasyDL图像Windows-x86-加速版SDK集成快速开始

    简介

    Windows CPU加速版SDK是适用于EasyDL图像模型快速部署的工具包。SDK中包含了EasyDL训练的模型资源文件、SDK和demo文件。

    测试前的准备

    • Windows x86的硬件及开发环境

      • 详情参考下方文档
    • EasyDL平台的Windows x86 加速版SDK

      • 以图像分类为例,前往操作台训练模型后,选择发布为Windows x86的通用设备端SDK并勾选加速版,发布成功后即可从平台下载
    • 用于激活通用设备端加速版SDK的序列号

      • 前往控制台申请用于激活通用设备端SDK的序列号,注意选择加速版序列号
      • 首次使用SDK或者更换序列号、更换设备时,需要联网激活。激活成功之后,有效期内可离线使用

    安装依赖

    在使用SDK之前,首先要确认自己的硬件类型和相应的依赖库安装是否已经符合要求。

    硬件要求:

    • Intel Xeon with AVX2 and AVX512
    • Intel Core Processors with AVX2
    • Intel Atom Processors with SSE

    软件要求:

    • 64位 Windows 10
    • .NET Framework 4.5
    • Visual C++ Redistributable Packages for Visual Studio 2013
    • Visual C++ Redistributable Packages for Visual Studio 2015
    • Openvino 2020.1

    其他要求:

    • 第一次使用SDK请确保联网

    SDK结构

    获取到的SDK解压后的目录结构是:

    其中:

    • bootstrap是SDK的入口脚本。
    • data/model文件夹下是EasyDL训练得到的模型资源文件。
    • tools文件夹下提供的是模型更新工具,用在迭代训练模型后,直接拉取新训练的模型,而不用重新下载SDK。

    运行demo

    打开EasyEdge.exe,输入Serial Num 点击"启动服务",等待数秒即可启动成功,本地服务默认运行在

    http://127.0.0.1:24401/

    服务运行成功,此时可直接在浏览器中输入http://127.0.0.1:24401,在h5中测试模型效果。

    Http服务集成

    服务运行成功后,除网页直接访问外,也可以通过http请求的方式执行模型的预测并获取预测结果。

    图像服务调用说明

    Python 使用示例代码如下

    import requests
    
    with open('./1.jpg', 'rb') as f:
        img = f.read()
    
    ## params 为GET参数 data 为POST Body
    result = requests.post('http://127.0.0.1:24401/', params={'threshold': 0.1},
                                                      data=img).json()

    C# 使用示例代码如下

    FileStream fs = new FileStream("./img.jpg", FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    byte[] img = br.ReadBytes((int)fs.Length);
    br.Close();
    fs.Close();
    string url = "http://127.0.0.1:8402?threshold=0.1";
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = "POST";
    Stream stream = request.GetRequestStream();
    stream.Write(img, 0, img.Length);
    stream.Close();
    
    WebResponse response = request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    Console.WriteLine(sr.ReadToEnd());
    sr.Close();
    response.Close();

    C++ 使用示例代码如下,需要安装curl

    #include <sys/stat.h>
    #include <curl/curl.h>
    
    int main(int argc, char *argv[]) {
        const char *post_data_filename = "./img.jpg";
    
        FILE *fp = NULL;
        struct stat stbuf = { 0, };
    
        fp = fopen(post_data_filename, "rb");
    
        if (!fp) {
            fprintf(stderr, "Error: failed to open file \"%s\"\n", post_data_filename);
            return -1;
        }
    
        if (fstat(fileno(fp), &stbuf) || !S_ISREG(stbuf.st_mode)) {
            fprintf(stderr, "Error: unknown file size \"%s\"\n", post_data_filename);
            return -1;
        }
    
        CURL *curl;
        CURLcode res;
    
        curl_global_init(CURL_GLOBAL_ALL);
    
        curl = curl_easy_init();
        if (curl != NULL) {
            curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:24401?threshold=0.1");
            curl_easy_setopt(curl, CURLOPT_POST, 1L);
            curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,(curl_off_t)stbuf.st_size);
            curl_easy_setopt(curl, CURLOPT_READDATA, (void *)fp);
    
            res = curl_easy_perform(curl);
            if (res != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            }
            curl_easy_cleanup(curl);
        }
        curl_global_cleanup();
        fclose(fp);
    
        return 0;
    }

    请求参数

    字段 类型 取值 说明
    threshold float 0 ~ 1 置信度阈值

    HTTP POST Body直接发送图片二进制。

    返回参数

    字段 类型 取值 说明
    confidence float 0~1 分类或检测的置信度
    label string 分类或检测的类别
    index number 分类或检测的类别
    x1, y1 float 0~1 物体检测,矩形的左上角坐标 (相对长宽的比例值)
    x2, y2 float 0~1 物体检测,矩形的右下角坐标(相对长宽的比例值)

    关于矩形坐标

    x1 * 图片宽度 = 检测框的左上角的横坐标

    y1 * 图片高度 = 检测框的左上角的纵坐标

    x2 * 图片宽度 = 检测框的右下角的横坐标

    y2 * 图片高度 = 检测框的右下角的纵坐标

    图像分割

    返回结果格式参考API调用文档 代码参考 https://github.com/Baidu-AIP/EasyDL-Segmentation-Demo

    声音服务调用说明

    Python 使用示例代码如下

    import requests
    
    with open('./1.mp3', 'rb') as f:
        audio = f.read()
    
    ## params 为GET参数 data 为POST Body
    result = requests.post('http://127.0.0.1:24401/', params={'threshold': 0.1},
                                                      data=audio).json()

    C# 使用示例代码如下

    FileStream fs = new FileStream("./audio.mp3", FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    byte[] audio = br.ReadBytes((int)fs.Length);
    br.Close();
    fs.Close();
    string url = "http://127.0.0.1:8402?threshold=0.1";
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = "POST";
    Stream stream = request.GetRequestStream();
    stream.Write(audio, 0, audio.Length);
    stream.Close();
    
    WebResponse response = request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    Console.WriteLine(sr.ReadToEnd());
    sr.Close();
    response.Close();

    C++ 使用示例代码如下,需要安装curl

    #include <sys/stat.h>
    #include <curl/curl.h>
    
    int main(int argc, char *argv[]) {
        const char *post_data_filename = "./audio.mp3";
    
        FILE *fp = NULL;
        struct stat stbuf = { 0, };
    
        fp = fopen(post_data_filename, "rb");
    
        if (!fp) {
            fprintf(stderr, "Error: failed to open file \"%s\"\n", post_data_filename);
            return -1;
        }
    
        if (fstat(fileno(fp), &stbuf) || !S_ISREG(stbuf.st_mode)) {
            fprintf(stderr, "Error: unknown file size \"%s\"\n", post_data_filename);
            return -1;
        }
    
        CURL *curl;
        CURLcode res;
    
        curl_global_init(CURL_GLOBAL_ALL);
    
        curl = curl_easy_init();
        if (curl != NULL) {
            curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:24401?threshold=0.1");
            curl_easy_setopt(curl, CURLOPT_POST, 1L);
            curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,(curl_off_t)stbuf.st_size);
            curl_easy_setopt(curl, CURLOPT_READDATA, (void *)fp);
    
            res = curl_easy_perform(curl);
            if (res != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            }
            curl_easy_cleanup(curl);
        }
        curl_global_cleanup();
        fclose(fp);
    
        return 0;
    }

    请求参数

    字段 类型 取值 说明
    threshold float 0 ~ 1 置信度阈值

    HTTP POST Body直接发送声音二进制。

    返回参数

    字段 类型 取值 说明
    confidence float 0~1 分类或检测的置信度
    label string 分类或检测的类别
    index number 分类或检测的类别
    上一篇
    通用设备端Linux ARM
    下一篇
    服务器端Linux GPU 加速版