提交 a3c5feb5 编写于 作者: W wuzewu

Update docs.

上级 b75d0f7e
# 自定义数据
训练一个新任务时,如果从零开始训练时,这将是一个耗时的过程,并且效果可能达不到理想的效果,此时您可以利用PaddleHub提供的预训练模型进行具体任务的Fine-tune。您只需要对自定义数据进行相应的预处理,随后输入预训练模型中,即可得到相应的结果。请参考如下内容设置数据集的结构。
## 一、图像分类数据集
利用PaddleHub迁移分类任务使用自定义数据时,需要切分数据集,将数据集切分为训练集、验证集和测试集。
### 数据准备
需要三个文本文件来记录对应的图片路径和标签,此外还需要一个标签文件用于记录标签的名称。
```
├─data: 数据目录
  ├─train_list.txt:训练集数据列表
  ├─test_list.txt:测试集数据列表
  ├─validate_list.txt:验证集数据列表
├─label_list.txt:标签列表
  └─...
```
训练/验证/测试集的数据列表文件的格式如下
```
图片1路径 图片1标签
图片2路径 图片2标签
...
```
label_list.txt的格式如下
```
分类1名称
分类2名称
...
```
示例:
[Flower数据集](../reference/datasets.md)为示例,train_list.txt/test_list.txt/validate_list.txt内容如下示例
```
roses/8050213579_48e1e7109f.jpg 0
sunflowers/45045003_30bbd0a142_m.jpg 3
daisy/3415180846_d7b5cced14_m.jpg 2
```
label_list.txt内容如下:
```
roses
tulips
daisy
sunflowers
dandelion
```
### 数据集加载
数据集的准备代码可以参考 [flowers.py](../../paddlehub/datasets/flowers.py)`hub.datasets.Flowers()` 会自动从网络下载数据集并解压到用户目录下`$HOME/.paddlehub/dataset`目录。具体使用如下:
```python
from paddlehub.datasets import Flowers
flowers = Flowers(transforms)
flowers_validate = Flowers(transforms, mode='val')
```
* `transforms`: 数据预处理方式。
* `mode`: 选择数据模式,可选项有 `train`, `test`, `val`, 默认为`train`
## 二、图像着色数据集
利用PaddleHub迁移着色任务使用自定义数据时,需要切分数据集,将数据集切分为训练集和测试集。
### 数据准备
需要将准备用于着色训练和测试的彩色图像分成训练集数据和测试集数据。
```
├─data: 数据目录
  ├─train:训练集数据
|-图片文件夹1
|-图片文件夹2
|-……
|-图片1
|-图片2
|-……
  ├─test:测试集数据
|-图片文件夹1
|-图片文件夹2
|-……
|-图片1
|-图片2
|-……
  └─……
```
示例:
PaddleHub为用户提供了用于着色的数据集`Canvas数据集`, 它由1193张莫奈风格和400张梵高风格的图像组成,以[Canvas数据集](../reference/datasets.md)为示例,train文件夹内容如下:
```
├─train:训练集数据
|-monet
|-图片1
|-图片2
|-……
|-vango
|-图片1
|-图片2
|-……
```
### 数据集加载
数据集的准备代码可以参考 [canvas.py](../../paddlehub/datasets/canvas.py)`hub.datasets.Canvas()` 会自动从网络下载数据集并解压到用户目录下`$HOME/.paddlehub/dataset`目录。具体使用如下:
```python
from paddlehub.datasets import Canvas
color_set = Canvas(transforms, mode='train')
```
* `transforms`: 数据预处理方式。
* `mode`: 选择数据模式,可选项有 `train`, `test`, 默认为`train`
## 三、风格迁移数据集
利用PaddleHub进行风格迁移任务使用自定义数据时,需要切分数据集,将数据集切分为训练集和测试集。
### 数据准备
需要将准备用于风格迁移的彩色图像分成训练集和测试集数据。
```
├─data: 数据目录
  ├─train:训练集数据
|-图片文件夹1
|-图片文件夹2
|-...
|-图片1
|-图片2
|-...
  ├─test:测试集数据
|-图片文件夹1
|-图片文件夹2
|-...
|-图片1
|-图片2
|-...
|- 21styles
|-图片1
|-图片2
  └─...
```
示例:
PaddleHub为用户提供了用于风格迁移的数据集`MiniCOCO数据集`, 训练集数据和测试集数据来源于COCO2014, 其中训练集有2001张图片,测试集有200张图片。 `21styles`文件夹下存放着21张不同风格的图片,用户可以根据自己的需求更换不同风格的图片。以[MiniCOCO数据集](../reference/datasets.md)为示例,train文件夹内容如下:
```
├─train:训练集数据
|-train
|-图片1
|-图片2
|-……
|-test
|-图片1
|-图片2
|-……
|-21styles
|-图片1
|-图片2
|-……
```
### 数据集加载
数据集的准备代码可以参考 [minicoco.py](../../paddlehub/datasets/minicoco.py)`hub.datasets.MiniCOCO()` 会自动从网络下载数据集并解压到用户目录下`$HOME/.paddlehub/dataset`目录。具体使用如下:
```python
from paddlehub.datasets import MiniCOCO
ccolor_set = MiniCOCO(transforms, mode='train')
```
* `transforms`: 数据预处理方式。
* `mode`: 选择数据模式,可选项有 `train`, `test`, 默认为`train`
## 四、文本分类数据集
利用PaddleHub进行文本分类任务使用自定义数据时,需要切分数据集,将数据集切分为训练集和测试集。
### 数据准备
#### 1. 设置数据集目录
用户需要将数据集目录设定为如下格式:
```shell
├──data: 数据目录
├── train.txt: 训练集数据
├── dev.txt: 验证集数据
└── test.txt: 测试集数据
```
#### 2. 设置文件格式和内容
训练/验证/测试集的数据文件的编码格式建议为utf8格式。内容的第一列是文本类别标签,第二列为文本内容,列与列之间以Tab键分隔。建议在数据集文件第一行填写列说明"label"和"text_a",中间以Tab键分隔,示例如下:
```shell
label text_a
房产 昌平京基鹭府10月29日推别墅1200万套起享97折
教育 贵州2011高考录取分数线发布理科一本448分
社会 众多白领因集体户口面临结婚难题
...
```
### 数据集加载
加载文本分类的自定义数据集,用户仅需要继承基类TextClassificationDataset,修改数据集存放地址以及类别即可,具体可以参考如下代码:
```python
from paddlehub.datasets.base_nlp_dataset import TextClassificationDataset
class MyDataset(TextClassificationDataset):
# 数据集存放目录
base_path = '/path/to/dataset'
# 数据集的标签列表
label_list=['体育', '科技', '社会', '娱乐', '股票', '房产', '教育', '时政', '财经', '星座', '游戏', '家居', '彩票', '时尚']
def __init__(self, tokenizer, max_seq_len: int = 128, mode: str = 'train'):
if mode == 'train':
data_file = 'train.txt'
elif mode == 'test':
data_file = 'test.txt'
else:
data_file = 'dev.txt'
super().__init__(
base_path=self.base_path,
tokenizer=tokenizer,
max_seq_len=max_seq_len,
mode=mode,
data_file=data_file,
label_list=self.label_list,
is_file_with_header=True)
# 选择所需要的模型,获取对应的tokenizer
import paddlehub as hub
model = hub.Module(name='ernie_tiny', task='seq-cls', num_classes=len(MyDataset.label_list))
tokenizer = model.get_tokenizer()
# 实例化训练集
train_dataset = MyDataset(tokenizer)
```
至此用户可以通过MyDataset实例化获取对应的数据集,可以通过hub.Trainer对预训练模型`model`完成文本分类任务,详情可参考[PaddleHub文本分类demo](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0.0-beta/demo/text_classification)
## 五、序列标注数据集
利用PaddleHub进行序列标注任务使用自定义数据时,需要切分数据集,将数据集切分为训练集和测试集。
### 数据准备
#### 1. 设置数据集目录
用户需要将数据集目录设定为如下格式:
```shell
├──data: 数据目录
├── train.txt: 训练集数据
├── dev.txt: 验证集数据
└── test.txt: 测试集数据
```
#### 2. 设置文件格式和内容
训练/验证/测试集的数据文件的编码格式建议为utf8格式。内容的第一列是文本内容, 第二列为文本中每个token对应的标签。需要注意的是,在文本和标签中,都需使用分隔符(该例子中使用的是斜杠`/`)隔开不同的token。
列与列之间以Tab键分隔。建议在数据集文件第一行填写列说明"label"和"text_a",中间以Tab键分隔,示例如下:
```shell
text_a label
5/月/1/2/日/,/北/京/市/怀/柔/县/民/政/局/、/畜/牧/局/领/导/来/到/驻/守/在/偏/远/山/区/的/武/警/北/京/一/总/队/十/支/队/十/四/中/队/。 O/O/O/O/O/O/B-LOC/I-LOC/I-LOC/B-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/O/B-ORG/I-ORG/I-ORG/O/O/O/O/O/O/O/O/O/O/O/O/B-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/O
他/每/年/还/为/河/北/农/业/大/学/扶/助/多/名/贫/困/学/生/。 O/O/O/O/O/B-ORG/I-ORG/I-ORG/I-ORG/I-ORG/I-ORG/O/O/O/O/O/O/O/O/O
...
```
### 数据准备
加载文本分类的自定义数据集,用户仅需要继承基类SeqLabelingDataset,修改数据集存放地址、类别信息和分隔符即可,具体可以参考如下代码:
```python
from paddlehub.datasets.base_nlp_dataset import SeqLabelingDataset
class MyDataset(SeqLabelingDataset):
# 数据集存放目录
base_path = '/path/to/dataset'
# 数据集的标签列表
label_list = ["B-PER", "I-PER", "B-ORG", "I-ORG", "B-LOC", "I-LOC", "O"]
label_map = {idx: label for idx, label in enumerate(label_list)}
# 数据文件使用的分隔符
split_char = '/'
def __init__(self, tokenizer, max_seq_len: int = 128, mode: str = 'train'):
if mode == 'train':
data_file = 'train.txt'
elif mode == 'test':
data_file = 'test.txt'
else:
data_file = 'dev.txt'
super().__init__(
base_path=self.base_path,
tokenizer=tokenizer,
max_seq_len=max_seq_len,
mode=mode,
data_file=data_file,
label_file=None,
label_list=self.label_list,
split_char=self.split_char,
is_file_with_header=True)
# 选择所需要的模型,获取对应的tokenizer
import paddlehub as hub
model = hub.Module(name='ernie_tiny', task='token-cls', label_map=MyDataset.label_map)
tokenizer = model.get_tokenizer()
# 实例化训练集
train_dataset = MyDataset(tokenizer)
```
至此用户可以通过MyDataset实例化获取对应的数据集,可以通过hub.Trainer对预训练模型`model`完成系列标注任务,详情可参考[PaddleHub序列标注demo](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0.0-beta/demo/sequence_labeling)
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
关于PaddleHub 关于PaddleHub
=========================== ===========================
欢迎使用PaddleHub!这是一个基于飞桨框架的预训练模型应用工具,旨在降低AI模型的使用门槛并促动AI社区的发展。无论您是AI领域的资深开发者,还是对该领域不甚了解却非常感兴趣的用户,PaddleHub都可以对您产生帮助。ou are a senior developer in the AI ​​industry nor an interested person who knows nothing about the AI ​​field, you can benefit from PaddleHub. 欢迎使用PaddleHub!这是一个基于飞桨框架的预训练模型应用工具,旨在降低AI模型的使用门槛并促动AI社区的发展。无论您是AI领域的资深开发者,还是对该领域不甚了解却非常感兴趣的用户,PaddleHub都可以对您产生帮助。
* PaddleHub旨在为开发者提供丰富的、高质量的、直接可用的预训练模型。 * PaddleHub旨在为开发者提供丰富的、高质量的、直接可用的预训练模型。
* **【无需深度学习背景、无需数据与训练过程】**,可快速使用AI模型,享受人工智能时代红利。 * **【无需深度学习背景、无需数据与训练过程】**,可快速使用AI模型,享受人工智能时代红利。
......
...@@ -23,4 +23,5 @@ ...@@ -23,4 +23,5 @@
finetune/image_colorization.md finetune/image_colorization.md
finetune/style_transfer.md finetune/style_transfer.md
finetune/semantic_segmentation.md finetune/semantic_segmentation.md
finetune/audio_classification.md finetune/audio_classification.md
\ No newline at end of file finetune/customized_dataset.md
\ No newline at end of file
# Customized Data
In the training of a new task, it is a time-consuming process starting from zero, without producing the desired results probably. You can use the pre-training model provided by PaddleHub for fine-tune of a specific task. You just need to perform pre-processing of the customized data accordingly, and then input the pre-training model to get the corresponding results. Refer to the following for setting up the structure of the dataset.
## I. Image Classification Dataset
When migrating a classification task using custom data with PaddleHub, you need to slice the dataset into training set, validation set, and test set.
### Data Preparation
Three text files are needed to record the corresponding image paths and labels, plus a label file to record the name of the label.
```
├─data:
  ├─train_list.txt:
  ├─test_list.txt:
  ├─validate_list.txt:
├─label_list.txt:
  └─...
```
The format of the data list file for the training/validation/test set is as follows:
```
Path-1 label-1
Path-2 label-2
...
```
The format of label\_list.txt is:
```
Classification 1
Classification 2
...
```
Example: Take [Flower Dataset](../reference/dataset.md) as an example, train\_list.txt/test\_list.txt/validate\_list.txt:
```
roses/8050213579_48e1e7109f.jpg 0
sunflowers/45045003_30bbd0a142_m.jpg 3
daisy/3415180846_d7b5cced14_m.jpg 2
```
label\_list.txt reads as follows.
```
roses
tulips
daisy
sunflowers
dandelion
```
### Dataset Loading
For the preparation code of dataset, see [flowers.py](../../paddlehub/datasets/flowers.py). `hub.datasets.Flowers()` It automatically downloads the dataset from the network and unzip it into the `$HOME/.paddlehub/dataset` directory. Specific usage:
```python
from paddlehub.datasets import Flowers
flowers = Flowers(transforms)
flowers_validate = Flowers(transforms, mode='val')
```
* `transforms`: Data pre-processing mode.
* `mode`: Select data mode. Options are `train`, `test`, `val`. Default is `train`.
## II. Image Coloring Dataset
When migrating a coloring task using custom data with PaddleHub, you need to slice the dataset into training set and test set.
### Data Preparation
You need to divide the color images for coloring training and testing into training set data and test set data.
```
├─data:
  ├─train:
|-folder1
|-folder2
|-……
|-pic1
|-pic2
|-……
  ├─test:
|-folder1
|-folder2
|-……
|-pic1
|-pic2
|-……
  └─……
```
Example: PaddleHub provides users with a dataset for coloring `Canvas dataset. It consists of 1193 images in Monet style and 400 images in Van Gogh style. Take [Canvas Dataset](../reference/datasets.md) as an example, the contents of the train folder are as follows:
```
├─train:
|-monet
|-pic1
|-pic2
|-……
|-vango
|-pic1
|-pic2
|-……
```
### Dataset Loading
For dataset preparation codes, refer to [canvas.py](../../paddlehub/datasets/canvas.py). `hub.datasets.Canvas()` It automatically downloads the dataset from the network and unzip it into the `$HOME/.paddlehub/dataset` directory. Specific usage:
```python
from paddlehub.datasets import Canvas
color_set = Canvas(transforms, mode='train')
```
* `transforms`: Data pre-processing mode.
* `mode`: Select data mode. Options are `train`, `test`. The default is `train`.
## III. Style Migration Dataset
When using custom data for style migration tasks with PaddleHub, you need to slice the dataset into training set and test set.
### Data Preparation
You need to split the color images for style migration into training set and test set data.
```
├─data:
  ├─train:
|-folder1
|-folder2
|-...
|-pic1
|-pic2
|-...
  ├─test:
|-folder1
|-folder2
|-...
|-pic1
|-pic1
|-...
|- 21styles
|-pic1
|-pic1
  └─...
```
Example: PaddleHub provides users with data sets for style migration `MiniCOCO dataset`. Training set data and test set data is from COCO2014, in which there are 2001 images in the training set and 200 images in the test set. There are 21 images with different styles in `21styles` folder. Users can change the images of different styles as needed. Take [MiniCOCO Dataset](../reference/datasets.md) as an example. The content of train folder is as follows:
```
├─train:
|-train
|-pic1
|-pic2
|-……
|-test
|-pic1
|-pic2
|-……
|-21styles
|-pic1
|-pic2
|-……
```
### Dataset Loading
For the preparation codes of the dataset, refer to [minicoco.py](../../paddlehub/datasets/minicoco.py). `hub.datasets.MiniCOCO()` It automatically downloads the dataset from the network and unzip it into the `$HOME/.paddlehub/dataset` directory. Specific usage:
```python
from paddlehub.datasets import MiniCOCO
ccolor_set = MiniCOCO(transforms, mode='train')
```
* `transforms`: Data pre-processing mode.
* `mode`: Select data mode. Options are `train`, `test`. The default is `train`.
...@@ -23,4 +23,5 @@ In order to make it easier for developers to apply transfer learning, Paddle has ...@@ -23,4 +23,5 @@ In order to make it easier for developers to apply transfer learning, Paddle has
finetune/image_colorization.md finetune/image_colorization.md
finetune/style_transfer.md finetune/style_transfer.md
finetune/semantic_segmentation.md finetune/semantic_segmentation.md
finetune/audio_classification.md finetune/audio_classification.md
\ No newline at end of file finetune/customized_dataset.md
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册