Skip to content

Latest commit

 

History

History
209 lines (139 loc) · 8.24 KB

quick_start.md

File metadata and controls

209 lines (139 loc) · 8.24 KB

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 包

您可以从 PyPi 安装我们最新的发布版本,也可以获取 EasyData 项目代码本地安装。

1.2.1 PyPi

直接通过 pip 工具从 PyPi 等源进行安装,命令如下:

pip install easy-data

1.2.2 本地安装

本地安装需要先获取 EasyData 项目代码,命令如下:

git clone https://github.com/PaddlePaddle/EasyData.git

然后进入 EasyData 项目根目录并安装,命令如下:

cd EasyData
python setup.py install

2. 便捷使用

2.1 命令行使用

EasyData 提供了测试图片用于验证,点击这里下载并解压,然后在终端中切换到相应目录:

cd ./easydata_demo_imgs/

如果不使用提供的测试图片,可以将下方--input参数替换为相应的测试图片路径。

2.1.1 图像方向矫正模型

EasyData 提供了图像方向矫正模型,通过下方代码即可快速体验,其中参数 --model image_orientation 指定了所使用的模型;参数 --input ./image_orientation/1.jpg 指定了待预测图像文件路径;参数 --device cpu 指定了使用 CPU 进行预测,同样可以通过 --device gpu 指定使用 GPU 进行预测。

easydata --model image_orientation --input ./image_orientation/1.jpg --device cpu

预测结果以 dict 格式输出,预测结果包含了预测图像文件路径、分类结果、score 和分类结果对应的标签:

{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/1.jpg', 'class_ids': 1, 'scores': 0.9346007, 'label_names': '90°'}

预测结果中,类别 id 与分类标签的映射关系如下:

  • 0: 0°,表示图像方向为正,未进行旋转;
  • 1: 90°,表示该图像逆时针旋转了90度;
  • 2: 180°,表示该图像逆时针旋转了180度;
  • 3: 270°,表示该图像逆时针旋转了270度;

另外,EasyData 同样支持对多张图像进行预测,仅需通过参数 --input 指定包含预测图像的目录即可:

easydata --model image_orientation --input ./image_orientation/ --device cpu

此时,会将每个图像的预测结果依次打印:

{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/2.jpg', 'class_ids': 2, 'scores': 0.9217471, 'label_names': '180°'}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/3.jpg', 'class_ids': 3, 'scores': 0.9218502, 'label_names': '270°'}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/1.jpg', 'class_ids': 1, 'scores': 0.9346007, 'label_names': '90°'}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/0.jpg', 'class_ids': 0, 'scores': 0.9267141, 'label_names': ''}

对于图像方向矫正模型,还可以通过参数 --thresh 设置 score 的阈值。设置阈值则意味着,当 top1 score > thresh 时,预测值为 top1 对应类别,否则预测值为默认类别 0,即表示 0°。而阈值默认值为0,表示以 top1 score 结果作为预测值。如将阈值设置为 0.93,命令如下所示:

easydata --model image_orientation --input ./image_orientation/ --device cpu --thresh 0.93

上述命令的运行结果如下所示:

{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/3.jpg', 'class_ids': 0, 'scores': 0.023812257, 'label_names': ''}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/2.jpg', 'class_ids': 0, 'scores': 0.02494335, 'label_names': ''}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/0.jpg', 'class_ids': 0, 'scores': 0.92671424, 'label_names': ''}
{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/1.jpg', 'class_ids': 1, 'scores': 0.93460053, 'label_names': '90°'}

2.1.2 模糊图像过滤模型

EasyData 提供了模糊图像过滤模型,通过下方代码即可快速体验:

easydata --model clarity_assessment --input ./clarity_assessment/ --device cpu

上述命令的预测结果如下所示:

{'filename': '/paddle/data/easydata_demo_imgs/clarity_assessment/clarity_demo.jpg', 'class_ids': [0], 'scores': [0.89864], 'label_names': ['clarity']}
{'filename': '/paddle/data/easydata_demo_imgs/clarity_assessment/blured_demo.jpg', 'class_ids': [1], 'scores': [0.97749], 'label_names': ['blured']}

预测结果中,类别 id 与分类标签的映射关系如下:

  • 0: clarity,表示该图像为清晰图像;
  • 1: blured,表示该图像为模糊图像。

2.1.3 广告码图像过滤模型

EasyData 提供了广告码图像过滤模型,支持识别图像中是否包含条形码、二维码、微信小程序码,通过下方代码即可快速体验:

easydata --model code_exists --input ./code_exists/ --device cpu

上述命令的预测结果如下所示:

{'filename': '/paddle/data/easydata_demo_imgs/code_exists/no_code_demo.jpg', 'class_ids': [0], 'scores': [0.996], 'label_names': ['no code']}
{'filename': '/paddle/data/easydata_demo_imgs/code_exists/contains_code_demo.jpg', 'class_ids': [1], 'scores': [1.0], 'label_names': ['contains code']}

预测结果中,类别 id 与分类标签的映射关系如下:

  • 0: no code,表示该图像中不存在广告码;
  • 1: contains code,表示该图像中存在广告码。

2.2 Python脚本使用

EasyData 同样可以通过 whl 包的形式集成到 Python 脚本中。在 Python 脚本中使用时,只需 import 导入 EasyData 包,并实例化 EasyData 对象即可进行预测。以图像方向矫正模型为例,使用方法为:

from easydata import EasyData
model = EasyData(model="image_orientation", device="cpu", return_res=True, print_res=False)
results = model.predict("./image_orientation/")
print(results)

结果是一个list,其中元素为 dict 类型,包含了预测图像文件路径、预测结果id、score 和预测类别名:

[{'filename': '/paddle/data/easydata_demo_imgs/image_orientation/2.jpg', 'class_ids': 2, 'scores': 0.92174697, 'label_names': '180°'}, {'filename': '/paddle/data/easydata_demo_imgs/image_orientation/3.jpg', 'class_ids': 3, 'scores': 0.9218502, 'label_names': '270°'}, {'filename': '/paddle/data/easydata_demo_imgs/image_orientation/1.jpg', 'class_ids': 1, 'scores': 0.93460053, 'label_names': '90°'}, {'filename': '/paddle/data/easydata_demo_imgs/image_orientation/0.jpg', 'class_ids': 0, 'scores': 0.92671424, 'label_names': ''}]

如上例所示,在实例化 EasyData 对象时,相关参数说明如下:

  • model:用于指定预测模型,目前支持图像方向矫正模型 image_orientation、模糊图像过滤模型 clarity_assessment、广告码图像过滤模型 code_exists
  • device:用于指定预测平台,目前支持 CPUGPU,默认为 CPU

同样以图像方向矫正模型为例,在与 PaddleClas 图像分类模型结合使用时,可以参考示例代码

3. 小结

通过本节内容,相信您已经熟练掌握 EasyData whl 包的使用方法并获得了初步效果。EasyData 是一套数据治理工具,目前支持对图像方向、清晰度、是否包含广告码进行分类。