PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub开发者可以使用高质量的预训练模型结合Fine-tune API快速完成迁移学习到应用部署的全流程工作。PaddleHub具有以下特性:
-
便捷获取飞桨生态下的高质量预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、语言模型、视频分类、图像生成、图像分割等主流模型。更多模型详情请查看官网:https://www.paddlepaddle.org.cn/hub
-
通过高质量预训练模型与PaddleHub Fine-tune API,只需要少量代码即可实现自然语言处理和计算机视觉场景的深度学习模型,更多Demo请参考以下链接:
-
『模型即软件』的设计理念,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库,更多介绍请参考教程PaddleHub命令行工具介绍
-
PaddleHub提供便捷的服务化部署能力,简单一行命令即可搭建属于自己的模型的API服务,更多详情请参考教程PaddleHub Serving一键服务化部署和使用示例
-
支持AutoDL Finetuner超参优化技术, 自动搜索最优模型超参得到更好的模型效果。详情请参考AutoDL Finetuner超参优化功能教程
-
Python==2.7 or Python>=3.5 for Linux or Mac
Python>=3.6 for Windows
-
PaddlePaddle>=1.5
除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。
NOTE:
- 若是出现离线运行PaddleHub错误,请更新PaddleHub 1.1.1版本之上。 pip安装方式如下:
$ pip install paddlehub
- 下载数据集、module等,PaddleHub要求机器可以访问外网。可以使用server_check()可以检查本地与远端PaddleHub-Server的连接状态,使用方法如下:
import paddlehub
paddlehub.server_check()
# 如果可以连接远端PaddleHub-Server,则显示Request Hub-Server successfully.
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully.
安装成功后,执行下面的命令,可以快速体验PaddleHub无需代码、一键预测的命令行功能:
示例一
使用词法分析模型LAC进行分词
$ hub run lac --input_text "今天是个好日子"
[{'word': ['今天', '是', '个', '好日子'], 'tag': ['TIME', 'v', 'q', 'n']}]
示例二
使用情感分析模型Senta对句子进行情感预测
$ 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 --no-check-certificate 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_coco2017 --input_path test_object_detection.jpg
$ hub run faster_rcnn_coco2017 --input_path test_object_detection.jpg
除了上述三类模型外,PaddleHub还发布了语言模型、语义模型、图像分类、生成模型、视频分类等业界主流模型,更多PaddleHub已经发布的模型,请前往 https://www.paddlepaddle.org.cn/hub 查看
我们在AI Studio上提供了IPython NoteBook形式的demo,您可以直接在平台上在线体验,链接如下:
预训练模型 | 任务类型 | 数据集 | AIStudio链接 | 备注 |
---|---|---|---|---|
ResNet | 图像分类 | 猫狗数据集DogCat | 点击体验 | |
ERNIE | 文本分类 | 中文情感分类数据集ChnSentiCorp | 点击体验 | |
ERNIE | 文本分类 | 中文新闻分类数据集THUNEWS | 点击体验 | 本教程讲述了如何将自定义数据集加载,并利用Finetune API完成文本分类迁移学习。 |
ERNIE | 序列标注 | 中文序列标注数据集MSRA_NER | 点击体验 | |
ERNIE | 序列标注 | 中文快递单数据集Express | 点击体验 | 本教程讲述了如何将自定义数据集加载,并利用Finetune API完成序列标注迁移学习。 |
ERNIE Tiny | 文本分类 | 中文情感分类数据集ChnSentiCorp | 点击体验 | |
Senta | 文本分类 | 中文情感分类数据集ChnSentiCorp | 点击体验 | 本教程讲述了任何利用Senta和Finetune API完成情感分类迁移学习。 |
Senta | 情感分析预测 | N/A | 点击体验 | |
LAC | 词法分析 | N/A | 点击体验 | |
Ultra-Light-Fast-Generic-Face-Detector-1MB | 人脸检测 | N/A | 点击体验 |
同时,关于PaddleHub更多信息参考:
Q: 利用PaddleHub ernie/bert进行Finetune时,运行出错并提示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
Q: 使用PaddleHub时,无法下载预置数据集、Module的等现象
A: PaddleHub中的预训练模型和预置数据集都需要通过服务端进行下载,因此PaddleHub默认用户访问外网权限。 可以通过以下命令确认是否可以访问外网。
import requests
res = requests.get('http://paddlepaddle.org.cn/paddlehub/search', {'word': 'ernie', 'type': 'Module'})
print(res)
# the common result is like this:
# <Response [200]>
Note: PaddleHub 1.1.1版本已支持离线运行Module
Q: 利用PaddleHub Finetune如何适配自定义数据集
A: 参考PaddleHub适配自定义数据集完成Finetune
更多问题
当安装或者使用遇到问题时,可以通过FAQ查找解决方案。 如果在FAQ中没有找到解决方案,欢迎您将问题和bug报告以Github Issues的形式提交给我们,我们会第一时间进行跟进
- 飞桨PaddlePaddle 交流群:796771754(QQ群)
- 飞桨 ERNIE交流群:760439550(QQ群)
详情参考更新历史