Skip to content

Latest commit

 

History

History
249 lines (184 loc) · 7.76 KB

quick_start.md

File metadata and controls

249 lines (184 loc) · 7.76 KB

PP-DataAug 快速开始

本文主要介绍EasyData whl包对PP-DataAug工具的快速使用,如需使用数据质量提升相关功能,请参考教程PP-DataClean

1. 安装

1.1 安装PaddlePaddle

  • 您的机器安装的是CUDA9或CUDA10,请运行以下命令安装

    python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
  • 您的机器是CPU,请运行以下命令安装

    python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

更多的版本需求,请参照飞桨官网安装文档中的说明进行操作。

1.2 安装EasyData whl包

pip安装

pip install easydata-python

本地构建并安装

git clone https://github.com/PaddlePaddle/EasyData.git
cd EasyData
python setup.py install

2. 快速使用

2.1 命令行使用

PP-DataAug 提供两种数据自动扩充模式:

  • img2img

适用于图像识别类任务(例如:图像分类、图像识别、OCR文本识别), 提供原始图片,PP-DataAug将自动完成基于图片的数据增广、筛选、清洗功能,输出扩充后的数据集。

以分类任务为例,准备原始训练数据和标签文件,其中标签文件内容为:

" 图像文件名                 图像标注信息 "

train/n01440764_15008.JPEG 0
train/n01530575_10039.JPEG 1
train/n01601694_4224.JPEG 2

注意: txt文件中默认图片路径和图片标签用空格分割,如是ocr识别任务则默认使用“\t”分割

最终输入数据应有如下文件结构:

demo/clas_data/
|-- train  # 原始训练数据
|   |-- n01440764_15008.JPEG
|   |-- n01530575_10039.JPEG
|   |-- n01601694_4224.JPEG
|   |-- n01641577_14447.JPEG
|   |-- n01682714_8438.JPEG
|   `-- n01698640_9242.JPEG
`-- train_list.txt # 数据标签
  • text2img

适用于OCR文本识别任务。输入文本语料、字体、背景图,自动完成基于语料的图像生成、筛选、清洗功能,输出扩充后的数据集。

准备字体文件、背景图和原始语料文件,其中原始语料文件内容为:

母婴百汇
停车场
品质沙龙
散作乾坤万里春
24小时营业

注意: 每行代表一条语料

最终输入数据应有如下文件结构:

demo/ocr_rec/
|-- bg
|-- corpus.txt
|-- font
    |-- 1.ttf
    |-- 2.ttf

EasyData/demo 路径下提供了样例图,可参考样例组织自己的数据格式。

如需使用自定义数据,注意将下方 --ori_data_dir--label_file 参数替换为相应的测试图片路径和标签路径。

2.1.1 图像分类

easydata --model ppdataaug --ori_data_dir demo/clas_data/ --label_file demo/clas_data/train_list.txt --gen_mode img2img

运行该命令后,会输出增广后的图像和标签文件,增广图像路径默认在test目录下,该目录下有对应的增广子文件夹,如下所示:

├── test
│   ├── randaugment
│   ├── random_erasing
│   ├── gridmask
│   ├── tia_distort
│   ├── tia_stretch
│   ├── tia_perspective

增广后的有效标签位于high_socre_label.txt,内容如下:

./test/randaugment/1_n01440764_15008.JPEG 0
./test/randaugment/2_n01530575_10039.JPEG 1
./test/randaugment/3_n01601694_4224.JPEG 2
./test/randaugment/4_n01641577_14447.JPEG 3
./test/randaugment/5_n01682714_8438.JPEG 4

2.1.2 文本识别

文本识别任务需要修改参数 --model_type ocr_rec

  • img2img

输入原始图像,其中过滤模型使用ocr_rec

easydata --model ppdataaug --ori_data_dir demo/ocr_data/ --label_file demo/ocr_data/train_list.txt --gen_mode img2img --model_type ocr_rec
  • text2img

输入文本数据,生成图像数据,需提供语料路径、背景图路径,如需指定其他字体,可以添加参数--font_dir {path to font}:

easydata --model ppdataaug --bg_img_dir demo/ocr_rec/bg --corpus_file demo/ocr_rec/corpus.txt --gen_mode text2img --model_type ocr_rec

运行该命令后,会输出生成的图像和标签文件,输出图像默认在test目录下,如下所示:

├──test
|  |-- 0
|  |-- label_0.txt

经过筛选后的有效标签位于high_socre_label.txt,内容如下:

test/0/0_n01530575_10039.JPEG	母婴百汇
test/0/1_n01682714_8438.JPEG	母婴百汇
test/0/2_n01601694_4224.JPEG	母婴百汇
test/0/3_n01440764_15008.JPEG	母婴百汇
test/0/4_n01641577_14447.JPEG	母婴百汇
test/0/5_n01698640_9242.JPEG	停车场
test/0/6_n01641577_14447.JPEG	停车场
test/0/7_n01601694_4224.JPEG	停车场
test/0/8_n01440764_15008.JPEG	停车场
test/0/9_n01682714_8438.JPEG	停车场

2.1.3 图像识别

由于图像识别任务的暂时无法返回预测score,因此不使用大模型过滤,设置 --use_big_model False

easydata --model ppdataaug --ori_data_dir demo/shitu_data --label_file demo/shitu_data/train_list.txt --gen_mode img2img --use_big_model False

2.2 Python脚本使用

easydata不仅支持命令行使用,还支持Python脚本进行调用使用,以图像分类模型为例:

from easydata import EasyData

ppdataaug = EasyData(model='ppdataaug', ori_data_dir='demo/clas_data', label_file='demo/clas_data/train_list.txt', gen_mode='img2img',model_type='cls')
ppdataaug.predict()

如需更换其他场景,可以修改 gen_modemodel_type 字段,具体参数说明可以参考第三节

3. 参数说明

字段 任务类型 说明 默认值
model 通用 使用的模型工具,可选ppdataaug,ppldi ppdataaug
gen_mode 数据生成 数据生成类型,可选 img2img, text2img img2img
model_type 数据生成 场景模型类型,可选 cls, ocr_rec cls
ori_data_dir 数据生成 原始数据目录 None
label_file 数据生成 原始数据标签 None
gen_label 数据生成 增广后的数据标签 labels/test.txt
img_save_folder 数据生成 增广图像存储目录 test
size 数据生成 输出图像尺寸 224
gen_num 数据生成 生成的总数据量 10
gen_ratio 数据生成 生成总数据量与原数据量比例,优先级高于gen_num 0
ops 数据生成 增广op "randaugment", "random_erasing", "gridmask", "tia_distort", "tia_stretch", "tia_perspective"
bg_num_per_word 数据生成 每条OCR语料选择几张背景图 5
bg_img_dir 数据生成 文本图像生成背景图目录 demo/ocr_rec/bg
font_dir 数据生成 文本图像生成字体目录 demo/ocr_rec/font
corpus_file 数据生成 文本图像生成语料路径 demo/ocr_rec/corpus.txt
threads 数据生成 文本图像生成线程数 1
repeat_ratio 数据去重 图像去重的阈值,图像相似度得分大于该阈值会被剔除 0.9
compare_out 数据去重 去重过滤的中间结果 tmp/rm_repeat.txt
quality_ratio 低质过滤 低质过滤的阈值,图像质量得分低于该阈值会被剔除 0.2
final_label 低质过滤 最终生成的有效数据标签 high_socre_label.txt

4. 小结

通过本节内容,相信您已经掌握了EasyData whl包的使用方法并获得了初步效果。