README.md 11.0 KB
Newer Older
Z
Zeyu Chen 已提交
1 2
# PaddleHub

Z
Zeyu Chen 已提交
3
[![Build Status](https://travis-ci.org/PaddlePaddle/PaddleHub.svg?branch=release/v1.3)](https://travis-ci.org/PaddlePaddle/PaddleHub)
W
wuzewu 已提交
4
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
Z
Zeyu Chen 已提交
5
[![Version](https://img.shields.io/github/release/PaddlePaddle/PaddleHub.svg)](https://github.com/PaddlePaddle/PaddleHub/releases)
W
wuzewu 已提交
6

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


S
Steffy-zxf 已提交
10
基于预训练模型,PaddleHub支持以下功能:  
K
kinghuin 已提交
11

S
Steffy-zxf 已提交
12 13
* **[模型即软件](#模型即软件)**,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库。

S
Steffy-zxf 已提交
14
* **[迁移学习](#迁移学习)**,用户通过Fine-tune API,只需要少量代码即可完成自然语言处理和计算机视觉场景的深度迁移学习。
S
Steffy-zxf 已提交
15

S
Steffy-zxf 已提交
16
* **[服务化部署](#服务化部署paddlehub-serving)**,简单一行命令即可搭建属于自己的模型的API服务。
S
Steffy-zxf 已提交
17 18

* **[超参优化](#超参优化autodl-finetuner)**,自动搜索最优超参,得到更好的模型效果。
Z
Zeyu Chen 已提交
19

S
Steffy-zxf 已提交
20

Z
zhangxuefei 已提交
21
**PaddleHub发布最新版本1.5.0**
S
Steffy-zxf 已提交
22 23


S
Steffy-zxf 已提交
24

S
Steffy-zxf 已提交
25
<p align="center">
S
Steffy-zxf 已提交
26 27 28 29 30
 <img src="./docs/imgs/paddlehub_finetune.gif" align="middle"  
</p>

<p align='center'>
 十行代码完成ERNIE工业级文本分类
S
Steffy-zxf 已提交
31
</p>
Z
Zeyu Chen 已提交
32

S
Steffy-zxf 已提交
33

Z
Zeyu Chen 已提交
34 35
## 目录

W
wuzewu 已提交
36
* [安装](#%E5%AE%89%E8%A3%85)
S
Steffy-zxf 已提交
37
* [特性](#特性)
W
wuzewu 已提交
38 39 40
* [FAQ](#faq)
* [用户交流群](#%E7%94%A8%E6%88%B7%E4%BA%A4%E6%B5%81%E7%BE%A4)
* [更新历史](#%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2)
Z
Zeyu Chen 已提交
41 42


Z
Zeyu Chen 已提交
43
## 安装
Z
Zeyu Chen 已提交
44 45

### 环境依赖
K
kinghuin 已提交
46 47 48
* Python==2.7 or Python>=3.5 for Linux or Mac

  **Python>=3.6 for Windows**
走神的阿圆's avatar
走神的阿圆 已提交
49

K
kinghuin 已提交
50
* PaddlePaddle>=1.5
Z
Zeyu Chen 已提交
51

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

54
**NOTE:**
S
Steffy-zxf 已提交
55
1. 若是出现离线运行PaddleHub错误,请更新PaddleHub 1.1.1版本之上。
S
Steffy-zxf 已提交
56 57 58 59 60
pip安装方式如下:

```shell
$ pip install paddlehub
```
S
Steffy-zxf 已提交
61
2. 使用PaddleHub下载数据集、预训练模型等,要求机器可以访问外网。可以使用`server_check()`可以检查本地与远端PaddleHub-Server的连接状态,使用方法如下:
S
Steffy-zxf 已提交
62 63 64 65

```python
import paddlehub
paddlehub.server_check()
S
Steffy-zxf 已提交
66 67
# 如果可以连接远端PaddleHub-Server,则显示Request Hub-Server successfully。
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully。
S
Steffy-zxf 已提交
68 69
```

S
Steffy-zxf 已提交
70
## 特性
S
Steffy-zxf 已提交
71

S
Steffy-zxf 已提交
72
### 模型即软件
S
Steffy-zxf 已提交
73

S
Steffy-zxf 已提交
74
PaddleHub提出 **模型即软件** 的理念,通过Python API或命令行实现快速预测,更方便地使用PaddlePaddle模型库。
75
安装PaddleHub成功后,执行命令[hub run](./docs/tutorial/cmdintro.md),可以快速体验PaddleHub无需代码、一键预测的命令行功能,如下三个示例:
S
Steffy-zxf 已提交
76 77

* 使用[词法分析](http://www.paddlepaddle.org.cn/hub?filter=category&value=LexicalAnalysis)模型LAC进行分词
S
Steffy-zxf 已提交
78 79 80 81 82
```shell
$ hub run lac --input_text "今天是个好日子"
[{'word': ['今天', '是', '个', '好日子'], 'tag': ['TIME', 'v', 'q', 'n']}]
```

S
Steffy-zxf 已提交
83
* 使用[情感分析](http://www.paddlepaddle.org.cn/hub?filter=category&value=SentimentAnalysis)模型Senta对句子进行情感预测
S
Steffy-zxf 已提交
84
```shell
S
Steffy-zxf 已提交
85 86
$ hub run senta_bilstm --input_text "今天天气真好"
{'text': '今天天气真好', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9798, 'negative_probs': 0.0202}]
S
Steffy-zxf 已提交
87 88
```

89 90 91 92 93 94
* 使用[目标检测](http://www.paddlepaddle.org.cn/hub?filter=category&value=ObjectDetection)模型Ultra-Light-Fast-Generic-Face-Detector-1MB对图片进行人脸识别
```shell
$ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
$ hub run ultra_light_fast_generic_face_detector_1mb_640 --input_path test_image.jpg
```
![人脸识别结果](docs/imgs/face_detection_result.jpeg)
95

96
* 使用[图像分割](https://www.paddlepaddle.org.cn/hub?filter=en_category&value=ImageSegmentation)模型ace2p对图片进行语义分割
S
Steffy-zxf 已提交
97
```shell
98 99
$ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
$ hub run ace2p --input_path test_image.jpg
S
Steffy-zxf 已提交
100
```
101
![图像分割结果](docs/imgs/img_seg_result.jpeg)
S
Steffy-zxf 已提交
102

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

S
Steffy-zxf 已提交
105
### 迁移学习
S
Steffy-zxf 已提交
106

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

* 示例合集

S
Steffy-zxf 已提交
111
  PaddleHub提供了使用Finetune-API和预训练模型完成[文本分类](./demo/text_classification)[序列标注](./demo/sequence_labeling)[多标签分类](./demo/multi_label_classification)[图像分类](./demo/image_classification)[检索式问答任务](./demo/qa_classification)[回归任务](./demo/regression)[句子语义相似度计算](./demo/sentence_similarity)[阅读理解任务](./demo/reading_comprehension)等迁移任务的使用示例,详细参见[demo](./demo)
S
Steffy-zxf 已提交
112 113

* 场景化使用
S
Steffy-zxf 已提交
114

S
Steffy-zxf 已提交
115
  PaddleHub在AI Studio上提供了IPython NoteBook形式的demo。用户可以直接在平台上在线体验,链接如下:
W
wuzewu 已提交
116

K
kinghuin 已提交
117 118
|预训练模型|任务类型|数据集|AIStudio链接|备注|
|-|-|-|-|-|
119
|pyramidbox_lite_mobile_mask|口罩检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/267322)|
S
Steffy-zxf 已提交
120 121 122 123 124
|ResNet|图像分类|猫狗数据集DogCat|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/147010)||
|ERNIE|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/147006)||
|ERNIE|文本分类|中文新闻分类数据集THUNEWS|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/221999)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成文本分类迁移学习。|
|ERNIE|序列标注|中文序列标注数据集MSRA_NER|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/147009)||
|ERNIE|序列标注|中文快递单数据集Express|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/184200)|本教程讲述了如何将自定义数据集加载,并利用Fine-tune API完成序列标注迁移学习。|
S
Steffy-zxf 已提交
125
|ERNIE Tiny|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/186443)||
S
Steffy-zxf 已提交
126 127 128 129
|Senta|文本分类|中文情感分类数据集ChnSentiCorp|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/216846)|本教程讲述了任何利用Senta和Fine-tune API完成情感分类迁移学习。|
|Senta|情感分析预测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215814)||
|LAC|词法分析|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215711)||
|Ultra-Light-Fast-Generic-Face-Detector-1MB|人脸检测|N/A|[点击体验](https://aistudio.baidu.com/aistudio/projectdetail/215962)||
W
wuzewu 已提交
130

S
Steffy-zxf 已提交
131
**NOTE:** [`飞桨PaddleHub`](https://aistudio.baidu.com/aistudio/personalcenter/thirdview/79927)是PaddleHub的官方账号。
S
Steffy-zxf 已提交
132

S
Steffy-zxf 已提交
133
关于PaddleHub快捷完成迁移学习,更多信息参考:
K
kinghuin 已提交
134

135
[Fine-tune API](./docs/reference)
K
kinghuin 已提交
136

137
[自定义数据集如何Fine-tune](./docs/tutorial/how_to_load_data.md)
S
Steffy-zxf 已提交
138

139
[实现自定义迁移任务](./docs/tutorial/how_to_define_task.md)
S
Steffy-zxf 已提交
140

141
[ULMFiT优化策略](./docs/tutorial/strategy_exp.md)
S
Steffy-zxf 已提交
142 143 144 145 146

### 服务化部署PaddleHub Serving

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

147
**PaddleHub 1.5.0版本增加文本Embedding服务[Bert Service](./docs/tutorial/bert_service.md), 轻松获取文本embedding**
S
Steffy-zxf 已提交
148

S
Steffy-zxf 已提交
149 150 151 152 153 154 155 156
PaddleHub Serving启动方式有两种:

* 命令行方式:

```shell
$ hub serving start --modules [Module1==Version1, Module2==Version2, ...]
```

S
Steffy-zxf 已提交
157
其中选项参数`--modules/-m`表示待部署模型。
S
Steffy-zxf 已提交
158 159 160 161 162 163 164 165 166

* 配置文件方式:

```shell
$ hub serving start --config config.json
```

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

167
关于PaddleHub Serving详细信息参见[PaddleHub Serving一键服务化部署](./docs/tutorial/serving.md)
S
Steffy-zxf 已提交
168

S
Steffy-zxf 已提交
169
### 超参优化AutoDL Finetuner
K
kinghuin 已提交
170

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

173
AutoDL Finetuner详细信息参见[PaddleHub超参优化](./docs/tutorial/autofinetune.md)
S
Steffy-zxf 已提交
174 175


S
Steffy-zxf 已提交
176
## FAQ
S
Steffy-zxf 已提交
177

S
Steffy-zxf 已提交
178
**Q:** 利用PaddleHub Fine-tune如何适配自定义数据集?
K
kinghuin 已提交
179

S
Steffy-zxf 已提交
180
**A:** 参考[PaddleHub适配自定义数据集完成Fine-tune](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub%E9%80%82%E9%85%8D%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%88%90FineTune)
S
Steffy-zxf 已提交
181 182


S
Steffy-zxf 已提交
183
**Q:** 使用PaddleHub时,无法下载预置数据集、Module的等现象。
S
Steffy-zxf 已提交
184

K
kinghuin 已提交
185
**A:** 下载数据集、module等,PaddleHub要求机器可以访问外网。可以使用server_check()可以检查本地与远端PaddleHub-Server的连接状态,使用方法如下:
S
Steffy-zxf 已提交
186 187

```python
K
kinghuin 已提交
188 189
import paddlehub
paddlehub.server_check()
S
Steffy-zxf 已提交
190 191
# 如果可以连接远端PaddleHub-Server,则显示Request Hub-Server successfully。
# 如果无法连接远端PaddleHub-Server,则显示Request Hub-Server unsuccessfully。
K
kinghuin 已提交
192
```
S
Steffy-zxf 已提交
193

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

K
kinghuin 已提交
196 197 198 199
**A:** 因为ernie/bert module的创建时和此时运行环境中PaddlePaddle版本不对应。可以将PaddlePaddle和PaddleHub升级至最新版本,同时将ernie卸载。
```shell
$ pip install --upgrade paddlehub
$ hub uninstall ernie
S
Steffy-zxf 已提交
200 201 202
```


K
kinghuin 已提交
203
**NOTE**: PaddleHub 1.1.1版本已支持离线运行Module
S
Steffy-zxf 已提交
204 205


S
Steffy-zxf 已提交
206
**更多问题**
S
Steffy-zxf 已提交
207 208

当安装或者使用遇到问题时,可以通过[FAQ](https://github.com/PaddlePaddle/PaddleHub/wiki/PaddleHub-FAQ)查找解决方案。
S
Steffy-zxf 已提交
209
如果在FAQ中没有找到解决方案,欢迎您将问题和bug报告以[Github Issues](https://github.com/PaddlePaddle/PaddleHub/issues)的形式提交给我们,我们会第一时间进行跟进。
S
Steffy-zxf 已提交
210

S
Steffy-zxf 已提交
211
## 用户交流群
Z
Zeyu Chen 已提交
212

S
Steffy-zxf 已提交
213
* 飞桨PaddlePaddle 交流群:796771754(QQ群)
S
Steffy-zxf 已提交
214
* 飞桨 ERNIE交流群:760439550(QQ群)
Z
Zeyu Chen 已提交
215

W
wuzewu 已提交
216

S
Steffy-zxf 已提交
217 218
## 更新历史

S
Steffy-zxf 已提交
219
PaddleHub v1.5.0已发布!
K
kinghuin 已提交
220

S
Steffy-zxf 已提交
221
详情参考[更新历史](./RELEASE.md)