资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

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 加速版