文档简介:
简介
本文档介绍Windows GPU SDK的使用方法。
- 网络类型支持:图像分类,物体检测
-
硬件支持:
- NVIDIA GPU
-
操作系统支持
- 64位 Windows 7 及以上
-
环境依赖(必须安装以下版本)
- .NET Framework 4.5
- Visual C++ Redistributable Packages for Visual Studio 2013
- Visual C++ Redistributable Packages for Visual Studio 2015
- GPU 版依赖(必须安装以下版本) * CUDA 9.0.x + cuDNN 7.6.x 或者 CUDA 10.0.x + cuDNN 7.6.x
-
协议
- HTTP
Release Notes
时间 | 版本 | 说明 |
---|---|---|
2021.8.23 | 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
如果使用GPU版SDK,请安装CUDA + cuDNN
https://developer.nvidia.com/cuda
https://developer.nvidia.com/cudnn
注意事项
- 安装目录不能包含中文
- Windows Server 请自行开启,选择“我的电脑”——“属性”——“管理”——”添加角色和功能“——勾选”桌面体验“,点击安装,安装之后重启即可。
2. 运行离线SDK
解压下载好的SDK,SDK默认使用cuda9版本,如果需要cuda10请运行EasyEdge CUDA10.0.bat切换到cuda10版本,
点击"启动服务",等待数秒即可启动成功,本地服务默认运行在~~
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> #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 = "./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 * 图片高度 = 检测框的右下角的纵坐标
FAQ
1. 服务启动失败,怎么处理?
请确保相关依赖都安装正确,版本必须如下: .NET Framework 4.5 Visual C++ Redistributable Packages for Visual Studio 2013 * Visual C++ Redistributable Packages for Visual Studio 2015
GPU依赖,版本必须如下: * CUDA 9.0.x + cuDNN 7.6.x 或者 CUDA 10.0.x + cuDNN 7.6.x
GPU加速版(EasyEdge-win-x86-nvidia-gpu-tensorrt)依赖,版本必须如下: CUDA 9.0.x + cuDNN 7.6.x 或者 CUDA 10.0.x + cuDNN 7.6.x TensorRT 7.x 必须和CUDA版本对应
GPU加速版(EasyEdge-win-x86-nvidia-gpu-paddletrt)依赖,版本必须如下: CUDA 11.0.x + cuDNN 8.0.x TensorRT 7.1.3.4 必须和CUDA版本对应
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. 其他问题
如果无法解决,可到论坛发帖: https://ai.baidu.com/forum/topic/list/199 描述使用遇到的问题,我们将及时回复您的问题。