上云无忧 > 文档中心 > 百度智能云飞桨EasyDL零门槛AI开发平台桌面版 - Linux集成文档-Python
飞桨EasyDL零门槛AI开发平台
百度智能云飞桨EasyDL零门槛AI开发平台桌面版 - Linux集成文档-Python

文档简介:
本文档介绍Linux Python SDK 的使用方法。 网络类型支持:图像分类,物体检测。 硬件支持: Linux x86_64 CPU。 Linux x86_64 Nvidia GPU。 语言支持:Python 3.5, 3.6, 3.7。 EasyDL图像。 x86 CPU 基础版。 Nvidia GPU 基础版。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

简介

本文档介绍Linux Python SDK 的使用方法。

  • 网络类型支持:图像分类,物体检测
  • 硬件支持:

    • Linux x86_64 CPU
    • Linux x86_64 Nvidia GPU
  • 语言支持:Python 3.5, 3.6, 3.7

Release Notes

时间 版本 说明
2021.8.23 1.0.0 第一版!

快速开始

1. 安装依赖

  • 根据引擎的不同,SDK 依赖了不同的底层引擎。根据所需自行安装。

安装 paddlepaddle

  • 使用x86_64 CPU预测时必须安装:
pip3 install -U paddlepaddle

若 CPU 为特殊型号,如赛扬处理器(一般用于深度定制的硬件中),请关注 CPU 是否支持 avx 指令集。如果不支持,请在paddle官网安装 noavx 版本

  • 使用NVIDIA GPU预测时必须安装:
pip3 install -U paddlepaddle-gpu

如果环境非 cuda9 cudnn7,请参考paddle文档安装合适的 paddle 版本。 不被 paddle 支持的 cuda 和 cudnn 版本,EasyEdge 暂不支持

2. 安装 easyedge python wheel 包

pip3 install -U BaiduAI_EasyEdge_SDK-{版本号}-cp36-cp36m-linux_x86_64.whl

具体名称以 SDK 包中的 whl 为准。

3. 测试 Demo

图片预测

输入对应的模型文件夹(默认为RES)和测试图片路径,运行:

python3 demo.py {model_dir} {image_name.jpg}

测试效果:

4. 测试Demo HTTP 服务

输入对应的模型文件夹(默认为RES)、序列号、设备ip和指定端口号,运行:

python3 demo_serving.py {model_dir} "" {host, default 0.0.0.0} {port, default 24401}

后,会显示:

Running on http://0.0.0.0:24401/

字样,此时,开发者可以打开浏览器,http://{设备ip}:24401,选择图片或者视频来进行测试。也可以参考`demo_serving.py`里 http_client_test()函数请求http服务进行推理。

使用说明

使用流程

demo.py


import BaiduAI.EasyEdge as edge

pred = edge.Program() pred.init(model_dir={RES文件夹路径}, device=edge.Device.CPU,
 engine=edge.Engine.PADDLE_FLUID) pred.infer_image({numpy.ndarray的图片}) pred.close()


demo_serving.py


import BaiduAI.EasyEdge as edge from BaiduAI.EasyEdge.serving import Serving

server = Serving(model_dir={RES文件夹路径}) # 请参考同级目录下demo.py里: # pred.
init(model_dir=xx, device=xx, engine=xx, device_id=xx) # 对以下参数device\device_
id和engine进行修改 server.run(host=host, port=port, device=edge.Device.CPU, engine=edge.Engine.PADDLE_FLUID)


初始化

  • 接口


def init(self, model_dir, device=Device.LOCAL, engine=Engine.PADDLE_FLUID, config_file='conf.json',
 preprocess_file='preprocess_args.json', model_file='model', params_file='params', graph_file='graph.ncsmodel', 
label_file='label_list.txt', device_id=0 ): """
       Args:
           device: Device.CPU
           engine: Engine.PADDLE_FLUID
           model_dir: str
               model dir
           preprocess_file: str
           model_file: str
           params_file: str
           graph_file: str
           label_file: str
           device_id: int

       Raises:
           RuntimeError, IOError
       Returns:
           bool: True if success

       """


使用 NVIDIA GPU 预测时,必须满足:

  • 机器已安装 cuda, cudnn
  • 已正确安装对应 cuda 版本的 paddle 版本
  • 通过设置环境变量FLAGS_fraction_of_gpu_memory_to_use设置合理的初始内存使用比例

使用 CPU 预测时,可以通过在 init 中设置 thread_num 使用多线程预测。如:

pred.init(model_dir=_model_dir, device=edge.Device.CPU, engine=edge.Engine.PADDLE_FLUID, thread_num=1)

预测图像

  • 接口
def infer_image(self, img, threshold=0.3, channel_order='HWC', color_format='BGR', data_type='numpy'): """

       Args:
           img: np.ndarray or bytes
           threshold: float
               only return result with confidence larger than threshold
           channel_order: string
               channel order HWC or CHW
           color_format: string
               color format order RGB or BGR
           data_type: string
               image data type
           
       Returns:
           list

       """
  • 返回格式: [dict1, dict2, ...]
字段 类型 取值 说明
confidence float 0~1 分类或检测的置信度
label string 分类或检测的类别
index number 分类或检测的类别
x1, y1 float 0~1 物体检测,矩形的左上角坐标 (相对长宽的比例值)
x2, y2 float 0~1 物体检测,矩形的右下角坐标(相对长宽的比例值)
mask string/numpy.ndarray 图像分割的mask

关于矩形坐标

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

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

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

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

可以参考 demo 文件中使用 opencv 绘制矩形的逻辑。

结果示例

  • i) 图像分类
{ "index": 736, "label": "table", "confidence": 0.9 }
  • ii) 物体检测
{ "y2": 0.91211, "label": "cat", "confidence": 1.0, "x2": 0.91504, "index": 8, "y1": 0.12671, "x1": 0.21289 }

FAQ

1. 运行时报错 "非法指令" 或 " illegal instruction"

可能是 CPU 缺少 avx 指令集支持,请在paddle官网 下载 noavx 版本覆盖安装

2. NVIDIA GPU预测时,报错显存不:

如以下错误字样:


paddle.fluid.core.EnforceNotMet: Enforce failed. Expected allocating <= available, but received
 allocating:20998686233 > available:19587333888.
Insufficient GPU memory to allocation. at [/paddle/paddle/fluid/platform/gpu_info.cc:170]


请在运行 Python 前设置环境变量,通过export FLAGS_fraction_of_gpu_memory_to_use=0.3来限制SDK初始使用的显存量,0.3表示初始使用30%的显存。如果设置的初始显存较小,SDK 会自动尝试 allocate 更多的显存。

3. 我想使用多线程预测,怎么做?

如果需要多线程预测,可以每个线程启动一个Progam实例,进行预测。 demo.py文件中有相关示例代码。

注意: 对于CPU预测,SDK内部是可以使用多线程,最大化硬件利用率。参考init的thread_num参数。

相似文档
  • 本文档介绍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。
  • 本文档主要说明定制化模型发布后获得的服务器端SDK如何使用,如有疑问可以通过以下方式联系我们: 在百度智能云控制台内提交工单。 进入EasyDL社区交流 ,与其他开发者进行互动。
  • 本文档介绍EasyEdge/EasyDL的Linux CPP SDK的使用方法。 网络类型支持: - 图像分类 - 物体检测。 硬件支持: CPU: aarch64 armv7hf。 操作系统支持: Linux (Ubuntu, Centos, Debian等)。 海思HiLinux。 树莓派Raspbian/Debian。 瑞芯微Firefly。
  • 本文档介绍Windows CPU SDK的使用方法。 网络类型支持:图像分类,物体检测。 硬件支持: Intel CPU * x86_64。 操作系统支持: 64位 Windows 7 及以上。 环境依赖(必须安装以下版本): .NET Framework 4.5。 Visual C++ Redistributable Packages for Visual Studio 2013。 Visual C++ Redistributable Packages for Visual Studio 2015。
  • 本文档主要说明定制化模型发布后获得的SDK如何使用,如有疑问可以通过以下方式联系我们: 在百度智能云控制台内提交工单。 前往官方论坛交流,与其他开发者进行互动。 SDK说明: SDK支持iOS、Android、Linux、Windows四种操作系统。以下为具体的系统、硬件环境支持:
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部