上云无忧 > 文档中心 > 百度智能云飞桨EasyDL零门槛AI开发平台视频目标跟踪 - WindowsSDK集成文档
飞桨EasyDL零门槛AI开发平台
百度智能云飞桨EasyDL零门槛AI开发平台视频目标跟踪 - WindowsSDK集成文档

文档简介:
本文档介绍Windows CPU SDK的使用方法。 网络类型支持:图像分类,物体检测,图像分割,目标跟踪。 硬件支持: Intel CPU 普通版 * x86_64。 CPU 加速版 - Intel Xeon with AVX2 and AVX512 - Intel Core Processors with AVX2 - Intel Atom Processors with SSE Intel Movidius MyRIAD2/MyRIAD X (仅支持Win10)。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

简介

本文档介绍Windows CPU SDK的使用方法。

  • 网络类型支持:图像分类,物体检测,图像分割,目标跟踪
  • 硬件支持:

    • Intel CPU 普通版 * x86_64
    • CPU 加速版 - Intel Xeon with AVX2 and AVX512 - Intel Core Processors with AVX2 - Intel Atom Processors with SSE
    • Intel Movidius MyRIAD2/MyRIAD X (仅支持Win10)
  • 操作系统支持

    • 普通版:64位 Windows 7 及以上
    • 加速版:64位 Windows 10
  • 环境依赖(必须安装以下版本)

    • .NET Framework 4.5
    • Visual C++ Redistributable Packages for Visual Studio 2013
    • Visual C++ Redistributable Packages for Visual Studio 2015
  • 协议

    • HTTP

Release Notes

时间 版本 说明
2021-06-29 1.3.1 预测引擎升级
2021-05-13 1.3.0 模型发布新增多种加速方案选择;目标追踪支持x86平台的GPU及加速版;展示已发布模型性能评估报告
2021-04-08 1.2.3 支持BML平台模型仓库本地上传模型
2021-03-09 1.2.2 CPU加速版支持int8量化模型
2021-01-27 1.2.1 新增模型支持;性能优化;问题修复
2020.12.18 1.2.0 推理引擎升级
2020-11-26 1.1.20 新增一些模型的加速版支持
2020.10.29 1.1.20 修复已知问题
2020.05.15 1.1.16 优化性能,修复已知问题
2020-09-17 1.1.19 支持更多模型
2020.08.11 1.1.18 支持专业版更多模型
2020.06.23 1.1.17 支持专业版更多模型
2020.05.15 1.1.16 优化性能,修复已知问题
2020.04.16 1.1.15 升级引擎版本
2020.03.13 1.1.14 支持EdgeBoardVMX
2020.02.23 1.1.13 支持多阶段模型
2020.01.16 1.1.12 预测默认使用推荐阈值
2019.12.26 1.1.11 CPU加速版支持物体检测高精度
2019.12.04 1.1.10 支持图像分割
2019.10.21 1.1.9 支持 EasyDL 专业版
2019.08.29 1.1.8 CPU 加速版支持
2019.07.19 1.1.7 提供模型更新工具
2019.05.16 1.1.3 NVIDIA GPU 支持
2019.03.15 1.1.0 架构与功能完善
2019.02.28 1.0.6 引擎功能完善
2019.02.13 1.0.5 paddlepaddle 支持
2018.11.30 1.0.0 第一版!

快速开始

1. 安装依赖

必须安装:

安装.NET Framework4.5

https://www.microsoft.com/zh-CN/download/details.aspx?id=42642

Visual C++ Redistributable Packages for Visual Studio 2013

https://www.microsoft.com/zh-cn/download/details.aspx?id=40784

Visual C++ Redistributable Packages for Visual Studio 2015

https://www.microsoft.com/zh-cn/download/details.aspx?id=48145

可选安装:

Openvino (使用Windows加速版或Intel Movidius必须)

  • 使用 OpenVINO™ toolkit 安装,请参考 OpenVINO toolkit 文档安装 2020.3.1LTS(必须)版本, 安装时可忽略Configure the Model Optimizer及后续部分。
  • 使用源码编译安装,请参考 Openvino Inference Engine文档编译安装 2020.3.1LTS(必须)版本。

安装完成后,请设置环境变量OPENVINO_HOME为您设置的安装地址,默认是C:\Program Files (x86)\IntelSWTools,并确保文件夹下的openvino的快捷方式指到了2020.3.1LTS版本。

 

注意事项

  1. 安装目录不能包含中文
  2. Windows Server 请自行开启,选择“我的电脑”——“属性”——“管理”——”添加角色和功能“——勾选”桌面体验“,点击安装,安装之后重启即可。

2. 运行离线SDK

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

http://127.0.0.1:24401/

其他任何语言只需通过HTTP调用即可。

Demo示例(以图像服务为例)

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

使用说明

图像服务调用说明

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> #include <iostream> #include <string>
 #define S_ISREG(m) (((m) & 0170000) == (0100000))  #define S_ISDIR(m) (((m) & 0170000)
 == (0040000))  size_t write_callback(void *ptr, size_t size, size_t num, void *data)
 { std::string *str = dynamic_cast<std::string *>((std::string *)data); str->append((char *)ptr, 
size*num); return size*num; } int main(int argc, char *argv[]) { const char *post_data_filename = 
"./img.jpg"; FILE *fp = NULL; std::string response; 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); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl,
 CURLOPT_WRITEDATA, &response); res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr,
 "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } std::cout << response << std::endl;
 // response即为返回的json数据 curl_easy_cleanup(curl); } curl_global_cleanup(); fclose(fp); return 0; }

结果

获取的结果存储在response字符串中。

请求参数

字段 类型 取值 说明
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> #define S_ISREG(m) (((m) & 0170000) ==
 (0100000))  #define S_ISDIR(m) (((m) & 0170000) == (0040000))  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 分类或检测的类别

FAQ

1. 服务启动失败,怎么处理?

请确保相关依赖都安装正确,版本必须如下: .NET Framework 4.5 Visual C++ Redistributable Packages for Visual Studio 2013 * Visual C++ Redistributable Packages for Visual Studio 2015

如使用的是CPU加速版,需额外确保Openvino安装正确,版本为2020.3.1LTS版 如使用Windows Server,需确保开启桌面体验

2. 服务调用时返回为空,怎么处理?

调用输入的图片必须是RGB格式,请确认是否有alpha通道。

3. 多个模型怎么同时使用?

SDK设置运行不同的端口,点击运行即可。

4. JAVA、C#等其他语言怎么调用SDK?

参考 https://ai.baidu.com/forum/topic/show/943765

5. 启动失败,缺失DLL?

打开EasyEdge.log,查看日志错误,根据提示处理 缺失DLL,请使用 https://www.dependencywalker.com/ 查看相应模块依赖DLL缺失哪些,请自行下载安装

6. 启动失败,报错NotDecrypted?

Windows下使用,当前用户名不能为中文,否则无法正确加载模型。

7. 启动失败,报错 SerialNum无效

日志显示failed to get/check device id(xxx)或者Device fingerprint mismatch(xxx) 此类情况一般是设备指纹发生了变更,包括(但不局限于)以下可能的情况:

  • mac 地址变化
  • 磁盘变更
  • bios重刷

以及系统相关信息。

遇到这类情况,请确保硬件无变更,如果想更换序列号,请先删除 C:\Users\${用户名}\.baidu\easyedge 目录,再重新激活。

其他问题

如果无法解决,可到论坛发帖: https://ai.baidu.com/forum/topic/list/199 描述使用遇到的问题,我们将及时回复您的问题。

相似文档
  • 本文档介绍EasyEdge/EasyDL的Jetson SDK的使用方法。Jetson SDK支持的硬件包括Jetson nano,Jetson TX2,Jetson AGX Xavier和Jetson Xavier NX。您可在AI市场了解Jetson相关系列产品,同时可以在软硬一体方案了解部署方案。
  • 目前EasyDL结构化数据支持训练以下模型: 表格数据预测: 通过机器学习技术从表格化数据中发现潜在规律,从而创建机器学习模型,并基于机器学习模型处理新的数据,为业务应用生成预测结果。 时序预测: 通过机器学习技术从历史数据中发现潜在规律,从而对未来的变化趋势进行预测。
  • 定制表格数据预测模型,旨在帮助用户通过机器学习技术从表格化数据中发现潜在规律,从而创建机器学习模型,并基于机器学习模型处理新的数据,为业务应用生成预测结果。本文介绍表格数据预测模型,根据预测数据的不同,可以分为如下几种类型:
  • 训练数据的质量决定了训练所得模型效果可达到的上限。数据上传后无法修改其内容。如果在导入训练数据后需要对其进行更改,必须重新导入。 数据文件格式要求: 目前仅支持CSV格式的数据文件。 一次仅能上传一个文件,可以是一个CSV文件或由多个CSV文件压缩成的zip包。
  • 在EasyDL经典版中,您可以在“数据总览”页面,完成数据集创建、数据导入等操作,为模型构建准备好数据。 创建数据集: 数据集需要先定义,然后再导入数据。 单击“数据总览”,进入数据集列表页面。 单击“创建数据集”,进入数据集创建页面。 输入数据集名称,单击“完成”结束创建。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部