所有文档

          EasyDL定制AI训练平台

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

          简介

          Windows CPU加速版SDK是适用于EasyDL经典版、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 加速版