Skip to content

Latest commit

 

History

History
186 lines (143 loc) · 6.35 KB

predict.md

File metadata and controls

186 lines (143 loc) · 6.35 KB

批量推理

EasyCV提供了工具支持本地大规模图片推理能力,该工具支持读取本地图片、图片http链接、MaxCompute表数据,使用EasyCV提供的各类Predictor进行预测。

依赖安装

安装easy_predict, easy_predict把图片预测过程中的数据读取/下载、图片解码、模型推理各个部分抽象成了独立的处理单元,每个处理单元支持多线程并发执行,能够大大加速任务整体的吞吐量。

pip install https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/release/easy_predict-0.4.2-py2.py3-none-any.whl

数据格式

输入文件列表

当输入为一个文件时,文件每行可以是一个本地图片路径,也可以是图片url地址

本地文件路径

predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg
predict/test_data/000000289059.jpg

图片url

https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg
https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg
https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg
https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg
https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg
https://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/test/ant%2Bhill_14_33.jpg

输入MaxCompute Table

输入表可以是一列或者多列, 其中一列需要是图像的url或者图像文件的二进制数据经过base64编码后的字符串(image_base64)

输入表schema示例如下: url数据

+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| id              | string     |       |                                             |
| url             | string     |       |                                             |
+------------------------------------------------------------------------------------+

base64数据 输入表可以是一列或者多列, 其中一列需要是图像的url或者图像编码后的二进制数据经过base64编码的数据,type为str schema示例如下

+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| id              | string     |       |                                             |
| base64          | string     |       |                                             |
+------------------------------------------------------------------------------------+

运行

读取本地文件

单卡运行

PYTHONPATH=. python tools/predict.py  \
    --input_file predict/test.list \
    --output_file predict/output.txt \
    --model_type YoloXPredictor \
    --model_path predict/test_data/yolox/epoch_300.pt
参数说明
  • input_file: 输入文件路径

  • output_file: 输出文件路径

  • model_type: 模型类型, 对应easycv/predictors/下的不同Predictor类名, 例如YoloXPredictor

  • model_path: 模型文件路径/模型目录

多机多卡运行

这里多机多卡启动方式复用pytorch DDP方式, 需要在GPU环境下使用

PYTHONPATH=. python -m torch.distributed.launch --nproc_per_node=2 --master_port=29527 \
                    tools/predict.py \
                    --input_file predict/test.list \
                    --output_file predict/output.txt \
                    --model_type YoloXPredictor \
                    --model_path  predict/test_data/yolox/epoch_300.pt\
                    --launcher pytorch
参数说明
  • nproc_per_node: 每个节点的gpu数

  • master_port: master节点端口

  • master_addr: master IP

  • input_file: 输入文件路径

  • output_file: 输出文件路径

  • model_type: 模型类型, 对应easycv/predictors/下的不同Predictor类名, 例如YoloXPredictor

  • model_path: 模型文件路径/模型目录

读取MaxComputeTable

单卡示例

#创建输出表分区
odpscmd -e "alter table 表名 add partition (ds=分区名);"

PYTHONPATH=. python tools/predict.py \
   --model_type YoloXPredictor \
   --model_path predict/test_data/yolox/epoch_300.pt \
   --input_table odps://项目名/tables/表名/ds=分区信息 \
   --output_table  odps://项目名/tables/表名/ds=分区信息\
   --image_col url\
   --image_type url\
   --reserved_columns id\
   --result_column result \
   --odps_config /path/to/odps.config
- `model_type`: 模型类型, 对应easycv/predictors/下的不同Predictor类名, 例如YoloXPredictor
  • model_path: 模型文件路径/模型目录

  • input_table: 输入表

  • output_table: 输出表

  • image_col: 图片数据所在列

  • image_type: 图片类型, url or base64

  • reserved_columns: 输入表保留列名,英文逗号分割

  • result_column: 结果列名

  • odps_config: MaxCompute配置文件

多卡示例

这里多机多卡启动方式复用pytorch DDP方式, 需要在GPU环境下使用

#创建输出表分区
odpscmd -e "alter table 表名 add partition (ds=分区名);"

PYTHONPATH=. python -m torch.distributed.launch --nproc_per_node=3 --master_port=29527 \
    tools/predict.py  \
    --model_type YoloXPredictor \
    --model_path predict/test_data/yolox/epoch_300.pt \
   --input_table odps://项目名/tables/表名/ds=分区名 \
   --output_table  odps://项目名/tables/表名/ds=分区名\
    --image_col url\
    --image_type url\
    --reserved_columns id\
    --result_column result \
    --odps_config  /path/to/odps.config \
    --launcher pytorch