Skip to content

A toolkit to manage pretrained models of PaddlePaddle and start transfer learning more efficiently.

License

Notifications You must be signed in to change notification settings

Steffy-zxf/PaddleHub

 
 

Repository files navigation

PaddleHub

Build Status License Version

PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub开发者可以使用高质量的预训练模型结合Fine-tune API快速完成迁移学习到应用部署的全流程工作。其提供了飞桨生态下的高质量预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。更多模型详情请查看官网:https://www.paddlepaddle.org.cn/hub

基于预训练模型,PaddleHub支持以下功能:

  • 模型即软件,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库。

  • 迁移学习,用户通过Fine-tune API,只需要少量代码即可完成自然语言处理和计算机视觉场景的深度迁移学习。

  • 服务化部署,简单一行命令即可搭建属于自己的模型的API服务。

  • 超参优化,自动搜索最优超参,得到更好的模型效果。

PaddleHub发布最新版本1.4.1


目录

安装

环境依赖

  • Python==2.7 or Python>=3.5 for Linux or Mac

    Python>=3.6 for Windows

  • PaddlePaddle>=1.5

除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。

NOTE:

  1. 若是出现离线运行PaddleHub错误,请更新PaddleHub 1.1.1版本之上。 pip安装方式如下:
$ pip install paddlehub
  1. 使用PaddleHub下载数据集、预训练模型等,要求机器可以访问外网。可以使用server_check()可以检查本地与远端PaddleHub-Server的连接状态,使用方法如下:
import paddlehub
paddlehub.server_check()
# 如果可以连接远端PaddleHub-Server,则显示Request Hub-Server successfully。
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully。

特性

模型即软件

PaddleHub提出 模型即软件 的理念,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库。 安装PaddleHub成功后,执行命令hub run,可以快速体验PaddleHub无需代码、一键预测的命令行功能,如下三个示例:

$ hub run lac --input_text "今天是个好日子"
[{'word': ['今天', '', '', '好日子'], 'tag': ['TIME', 'v', 'q', 'n']}]
$ hub run senta_bilstm --input_text "今天天气真好"
{'text': '今天天气真好', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9798, 'negative_probs': 0.0202}]
  • 使用目标检测模型 SSD/YOLO v3/Faster RCNN 对图片进行目标检测
$ wget https://paddlehub.bj.bcebos.com/resources/test_object_detection.jpg
$ hub run ssd_mobilenet_v1_pascal --input_path test_object_detection.jpg
$ hub run yolov3_darknet53_coco2017 --input_path test_object_detection.jpg
$ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg

SSD检测结果

除了上述三类模型外,PaddleHub还发布了图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等业界主流模型,更多PaddleHub已经发布的模型,请前往 https://www.paddlepaddle.org.cn/hub 查看

PaddleHub同时支持安装、卸载、查看模型信息等命令行功能,详细参见PaddleHub命令行工具介绍

迁移学习

迁移学习(Transfer Learning)通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性。PaddleHub提供了Fine-tune API,只需要少量代码即可完成深度学习模型在自然语言处理和计算机视觉场景下的迁移学习。

  • 示例合集

PaddleHub提供了使用Finetune-API和预训练模型完成文本分类序列标注多标签分类图像分类检索式问答任务回归任务句子语义相似度计算阅读理解任务等迁移任务的使用示例,详细参见demo

  • 场景化使用

PaddleHub在AI Studio上提供了IPython NoteBook形式的demo。用户可以直接在平台上在线体验,链接如下:

预训练模型 任务类型 数据集 AIStudio链接 备注
ResNet 图像分类 猫狗数据集DogCat 点击体验
ERNIE 文本分类 中文情感分类数据集ChnSentiCorp 点击体验
ERNIE 文本分类 中文新闻分类数据集THUNEWS 点击体验 本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。
ERNIE 序列标注 中文序列标注数据集MSRA_NER 点击体验
ERNIE 序列标注 中文快递单数据集Express 点击体验 本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。
ERNIE Tiny 文本分类 中文情感分类数据集ChnSentiCorp 点击体验
Senta 文本分类 中文情感分类数据集ChnSentiCorp 点击体验 本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。
Senta 情感分析预测 N/A 点击体验
LAC 词法分析 N/A 点击体验
Ultra-Light-Fast-Generic-Face-Detector-1MB 人脸检测 N/A 点击体验

NOTE: 飞桨PaddleHub是PaddleHub的官方账号。

关于PaddleHub快捷完成迁移学习,更多信息参考:

Fine-tune API

自定义数据集如何Fine-tune

实现自定义迁移任务

ULMFiT优化策略

服务化部署PaddleHub Serving

PaddleHub提供便捷的服务化部署能力,简单一行命令即可实现模型部署上线以对外提供服务。

PaddleHub Serving启动方式有两种:

  • 命令行方式:
$ hub serving start --modules [Module1==Version1, Module2==Version2, ...]

其中选项参数--modules/-m表示待部署模型。

  • 配置文件方式:
$ hub serving start --config config.json

config.json文件包含待部署模型信息等,

关于PaddleHub Serving详细信息参考PaddleHub Serving一键服务化部署

超参优化AutoDL Finetuner

深度学习模型往往包含许多的超参数,而这些超参数的取值对模型性能起着至关重要的作用。因为模型参数空间大,目前超参调整都是通过手动,依赖人工经验或者不断尝试,且不同模型、样本数据和场景下不尽相同,所以需要大量尝试,时间成本和资源成本非常浪费。PaddleHub AutoDL Finetuner可以实现自动调整超参数,使得模型性能达到最优水平。它通过多种调优的算法来搜索最优超参。

AutoDL Finetuner详细信息参见PaddleHub超参优化

FAQ

Q: 利用PaddleHub Fine-tune如何适配自定义数据集?

A: 参考PaddleHub适配自定义数据集完成Fine-tune

Q: 使用PaddleHub时,无法下载预置数据集、Module的等现象。

A: 下载数据集、module等,PaddleHub要求机器可以访问外网。可以使用server_check()可以检查本地与远端PaddleHub-Server的连接状态,使用方法如下:

import paddlehub
paddlehub.server_check()
# 如果可以连接远端PaddleHub-Server,则显示Request Hub-Server successfully。
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully。

Q: 利用PaddleHub ernie/bert进行Fine-tune时,运行出错并提示paddle.fluid.core_avx.EnforceNotMet: Input ShapeTensor cannot be found in Op reshape2等信息。

A: 因为ernie/bert module的创建时和此时运行环境中PaddlePaddle版本不对应。可以将PaddlePaddle和PaddleHub升级至最新版本,同时将ernie卸载。

$ pip install --upgrade paddlehub
$ hub uninstall ernie

NOTE: PaddleHub 1.1.1版本已支持离线运行Module

更多问题

当安装或者使用遇到问题时,可以通过FAQ查找解决方案。 如果在FAQ中没有找到解决方案,欢迎您将问题和bug报告以Github Issues的形式提交给我们,我们会第一时间进行跟进。

用户交流群

  • 飞桨PaddlePaddle 交流群:796771754(QQ群)
  • 飞桨 ERNIE交流群:760439550(QQ群)

更新历史

PaddleHub v1.4.1已发布!

详情参考更新历史

About

A toolkit to manage pretrained models of PaddlePaddle and start transfer learning more efficiently.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.9%
  • HTML 1.8%
  • Shell 0.3%