You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

pipeline.md 3.6 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Pipeline使用教程
  2. 本文将简单介绍如何使用`pipeline`函数加载模型进行推理。`pipeline`函数支持按照任务类型、模型名称从模型仓库
  3. 拉取模型进行进行推理,当前支持的任务有
  4. * 人像抠图 (image-matting)
  5. * 基于bert的语义情感分析 (bert-sentiment-analysis)
  6. 本文将从如下方面进行讲解如何使用Pipeline模块:
  7. * 使用pipeline()函数进行推理
  8. * 指定特定预处理、特定模型进行推理
  9. * 不同场景推理任务示例
  10. ## 环境准备
  11. 详细步骤可以参考 [快速开始](../quick_start.md)
  12. ## Pipeline基本用法
  13. 1. pipeline函数支持指定特定任务名称,加载任务默认模型,创建对应Pipeline对象
  14. 注: 当前还未与modelhub进行打通,需要手动下载模型,创建pipeline时需要指定本地模型路径,未来会支持指定模型名称从远端仓库
  15. 拉取模型并初始化。
  16. 下载模型文件
  17. ```shell
  18. wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/maas/image_matting/matting_person.pb
  19. ```
  20. 执行如下python代码
  21. ```python
  22. >>> from maas_lib.pipelines import pipeline
  23. >>> img_matting = pipeline(task='image-matting', model='damo/image-matting-person')
  24. ```
  25. 2. 传入单张图像url进行处理
  26. ``` python
  27. >>> import cv2
  28. >>> result = img_matting('http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/maas/image_matting/test.png')
  29. >>> cv2.imwrite('result.png', result['output_png'])
  30. >>> import os.path as osp
  31. >>> print(f'result file path is {osp.abspath("result.png")}')
  32. ```
  33. pipeline对象也支持传入一个列表输入,返回对应输出列表,每个元素对应输入样本的返回结果
  34. ```python
  35. >>> results = img_matting(
  36. [
  37. 'http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/maas/image_matting/test.png',
  38. 'http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/maas/image_matting/test.png',
  39. 'http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/maas/image_matting/test.png',
  40. ])
  41. ```
  42. 如果pipeline对应有一些后处理参数,也支持通过调用时候传入.
  43. ```python
  44. >>> pipe = pipeline(task_name)
  45. >>> result = pipe(input, post_process_args)
  46. ```
  47. ## 指定预处理、模型进行推理
  48. pipeline函数支持传入实例化的预处理对象、模型对象,从而支持用户在推理过程中定制化预处理、模型。
  49. 下面以文本情感分类为例进行介绍。
  50. 由于demo模型为EasyNLP提供的模型,首先,安装EasyNLP
  51. ```shell
  52. pip install https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/package/whl/easynlp-0.0.4-py2.py3-none-any.whl
  53. ```
  54. 下载模型文件
  55. ```shell
  56. wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/easynlp_modelzoo/alibaba-pai/bert-base-sst2.zip && unzip bert-base-sst2.zip
  57. ```
  58. 创建tokenizer和模型
  59. ```python
  60. >>> from maas_lib.models import Model
  61. >>> from maas_lib.preprocessors import SequenceClassificationPreprocessor
  62. >>> model = Model.from_pretrained('damo/bert-base-sst2')
  63. >>> tokenizer = SequenceClassificationPreprocessor(
  64. model.model_dir, first_sequence='sentence', second_sequence=None)
  65. ```
  66. 使用tokenizer和模型对象创建pipeline
  67. ```python
  68. >>> from maas_lib.pipelines import pipeline
  69. >>> semantic_cls = pipeline('text-classification', model=model, preprocessor=tokenizer)
  70. >>> semantic_cls("Hello world!")
  71. ```
  72. ## 不同场景任务推理示例
  73. 人像抠图、语义分类建上述两个例子。 其他例子未来添加。

致力于通过开放的社区合作,开源AI模型以及相关创新技术,推动基于模型即服务的生态繁荣发展