PaddleHub深度学习模型开发工具

联合创作 · 2023-09-26 05:07

PaddleHub是一个深度学习模型开发工具。它基于飞桨领先的核心框架,精选效果优秀的算法,提供了百亿级大数据训练的预训练模型,方便用户不用花费大量精力从头开始训练一个模型。PaddleHub可以便捷地获取这些预训练模型,完成模型的管理和一键预测。

## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

配合使用Fine-tune API,可以基于大规模预训练模型快速完成迁移学习,让预训练模型能更好地服务于用户特定场景的应用。

PaddleHub有什么特色

1、 通过PaddleHub,开发者可以便捷地获取飞桨生态下的所有预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、语言模型、视频分类、图像生成八类主流模型40余个。

PaddleHub 1.0正式发布:一键模型加载,十行代码完成迁移学习

 

 图1 PaddleHub提供了40+官方预训练模型

2、PaddleHub引入了模型即软件的概念,通过Python API或者命令行工具,一键完成预训练模型地预测。此外还借鉴了Anaconda和pip软件包管理的理念设计了一套命令行接口。

深度学习时代,模型发展的趋势会逐渐向软件工程靠拢;未来模型可以当作一个可执行程序,一键预测;也可以是第三方库,通过模型插拔的方式提高开发者的开发效率。

同时模型会有版本的概念,通过不断迭代升级的方式提升我们模型的效果。通过命令行工具,可以方便快捷的完成模型的搜索、下载、安装、预测等功能,对应的关键的命令分别是search,download,install,run等。

如以下示例,在安装完成飞桨和PaddleHub以后(具体安装方法见后文示例),使用词法分析模型LAC,可以一键实现分词。

$ hub run lac --input_text "今天是个好日子"
[{'word': ['今天', '是', '个', '好日子'], 'tag': ['TIME', 'v', 'q', 'n']}]

再如以下示例所示,是一个目标检测的例子,通过hub run 调用不同的目标检测模型,一行即可完成预测,同时也可以快速体验哪个模型能更符合开发的需求。

$ hub run yolov3_coco2017 --input_path test.jpg 
$ hub run faster_rcnn_coco2017 --input_path test.jpg

PaddleHub 1.0正式发布:一键模型加载,十行代码完成迁移学习

 

 图2 PaddleHub一键完成预训练模型地预测

3、通过PaddleHub Fine-tune API,结合少量代码即可完成大规模预训练模型的迁移学习。下面一节我们也会全面介绍PaddleHub的API。

PaddleHub API全景

PaddleHub API的全景图如图3所示。

为了更好帮助用户更好的应用预训练模型,PaddleHub对Fine-tune做了6个层次的抽象。

PaddleHub 1.0正式发布:一键模型加载,十行代码完成迁移学习

 

 图3 PaddleHub Fine-tune API全景

  • 数据集Dataset:PaddleHub提供多种NLP任务和CV任务的数据集,用户也可以在自定义数据集上完成Fine-tune。
  • 数据预处理Reader:PaddleHub的数据预处理模块Reader对常见的NLP和CV任务进行了抽象。
  • 预训练模型Module:Module代表了一个预训练模型。
  • 优化策略Strategy:在PaddleHub中,Strategy类封装了一系列适用于迁移学习的Fine-tune策略。Strategy包含了对预训练参数使用什么学习率变化策略,使用哪种类型的优化器,使用什么类型的正则化等。
  • 运行配置 RunConfig:在PaddleHub中,RunConfig代表了在对Task进行Fine-tune时的运行配置。包括运行的epoch次数、batch的大小、是否使用GPU训练等。
  • 迁移任务Task:PaddleHub预置了常见任务的Task。Task代表了一个Fine-tune的任务。任务中包含了执行该任务相关的Program、数据Reader、运行配置等内容。每种Task都有自己特有的应用场景以及提供了对应的度量指标,用于适应用户的不同需求。预置的任务类型包括图像分类、文本分类、序列分类和多标签分类各类任务。

PaddleHub还支持用户可以通过继承BasicTask来实现自己的任务。

PaddleHub封装了finetune、eval、finetune_and_eval、predict等直观的基础接口,让开发者更方便完成模型的迁移和应用。

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报