/PaddleHub

Toolkit for Pre-Trained Model Application of PaddlePaddle(『飞桨』预训练模型应用工具 )

Primary LanguagePythonApache License 2.0Apache-2.0

Build Status License Version python version support os

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

PaddleHub以预训练模型应用为核心具备以下特点:

  • 模型即软件,通过Python API或命令行实现模型调用,可快速体验或集成飞桨特色预训练模型。

  • 易用的迁移学习,通过Fine-tune API,内置多种优化策略,只需少量代码即可完成预训练模型的Fine-tuning。

  • 一键模型转服务,简单一行命令即可搭建属于自己的深度学习模型API服务完成部署。

  • 自动超参优化,内置AutoDL Finetuner能力,一键启动自动化超参搜索。

十行代码完成ERNIE工业级文本分类

目录

安装

环境依赖

  • Python >= 3.6
  • PaddlePaddle >= 1.7.0
  • 操作系统: Windows/Mac/Linux

安装命令

在安装PaddleHub之前,请先安装PaddlePaddle深度学习框架,更多安装说明请查阅飞桨快速安装

pip install paddlehub

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

特性

模型即软件

PaddleHub采用模型即软件的设计理念,所有的预训练模型与Python软件包类似,具备版本的概念,通过hub install/uninstall 可以便捷完成模型的升级和卸载。还可以通过Python的API或命令行实现快速预测的软件集成,更方便地应用和集成深度学习模型。

安装PaddleHub后,执行命令hub run,即可快速体验无需代码、一键预测的功能:

  • 使用文字识别轻量级中文OCR模型chinese_ocr_db_crnn_mobile即可一键快速识别图片中的文字。
$ wget https://paddlehub.bj.bcebos.com/model/image/ocr/test_ocr.jpg
$ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr.jpg --visualization=True

预测结果图片保存在当前运行路径下ocr_result文件夹中,如下图所示。

  • 使用目标检测模型pyramidbox_lite_mobile_mask对图片进行口罩检测
$ wget https://paddlehub.bj.bcebos.com/resources/test_mask_detection.jpg
$ hub run pyramidbox_lite_mobile_mask --input_path test_mask_detection.jpg

$ hub run lac --input_text "现在,慕尼黑再保险公司不仅是此类行动的倡议者,更是将其大量气候数据整合进保险产品中,并与公众共享大量天气信息,参与到新能源领域的保障中。"
[{
    'word': ['现在', '', '慕尼黑再保险公司', '不仅', '', '此类', '行动', '', '倡议者', '', '更是', '', '', '大量', '气候', '数据', '整合', '', '保险', '产品', '', '', '', '', '公众', '共享', '大量', '天气', '信息', '', '参与', '', '新能源', '领域', '', '保障', '', ''],
    'tag':  ['TIME', 'w', 'ORG', 'c', 'v', 'r', 'n', 'u', 'n', 'w', 'd', 'p', 'r', 'a', 'n', 'n', 'v', 'v', 'n', 'n', 'f', 'w', 'c', 'p', 'n', 'v', 'a', 'n', 'n', 'w', 'v', 'v', 'n', 'n', 'u', 'vn', 'f', 'w']
}]
$ hub run senta_bilstm --input_text "今天天气真好"
{'text': '今天天气真好', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9798, 'negative_probs': 0.0202}]
  • 使用目标检测模型Ultra-Light-Fast-Generic-Face-Detector-1MB对图片进行人脸识别
$ 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

  • 使用图像分割模型进行人像扣图和人体部件识别
$ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
$ hub run ace2p --input_path test_image.jpg
$ hub run deeplabv3p_xception65_humanseg --input_path test_image.jpg

         ACE2P人体部件分割                 HumanSeg人像分割   

PaddleHub还提供图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型,更多模型介绍,请前往预训练模型介绍或者PaddleHub官网https://www.paddlepaddle.org.cn/hub 查看

易用的迁移学习

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

更多Fine-tune API的使用教程可参考:

一键模型转服务

PaddleHub提供便捷的模型转服务的能力,只需简单一行命令即可完成模型的HTTP服务部署。通过以下命令即可快速启动LAC词法分析服务:

$ hub serving start --modules lac

更多关于模型服务化使用说明参见PaddleHub模型一键能服务化部署

PaddleHub 1.5.0版本增加文本Embedding服务Bert Service, 高性能地获取文本Embedding

自动超参优化

PaddleHub内置AutoDL Finetuner能力,提供多种优化策略策略实现自动化超参搜索,使得模型在验证集上得到更好的结果,用户只需要一行命令hub autofinetune即可启动。更多详细使用说明请参见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: 预训练模型版本与PaddlePaddle版本不匹配。可尝试将PaddlePaddle和PaddleHub升级至最新版本,并将原ERNIE模型卸载。

$ pip install --upgrade paddlehub
$ hub uninstall ernie

FAQ

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

用户交流群

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

更新历史

PaddleHub v1.7 已发布! 更多升级详情参考更新历史