From 52438b300c597d46a43ea5227a67b610b4c71f2d Mon Sep 17 00:00:00 2001 From: Guanghua Yu <742925032@qq.com> Date: Wed, 27 Jan 2021 16:06:57 +0800 Subject: [PATCH] fix dygraph getting_started doc (#2128) --- dygraph/docs/tutorials/GETTING_STARTED_cn.md | 73 ++++++++++++++++---- dygraph/requirements.txt | 2 - dygraph/tools/eval.py | 5 +- dygraph/tools/export_model.py | 2 +- dygraph/tools/infer.py | 2 +- dygraph/tools/train.py | 14 +--- 6 files changed, 64 insertions(+), 34 deletions(-) diff --git a/dygraph/docs/tutorials/GETTING_STARTED_cn.md b/dygraph/docs/tutorials/GETTING_STARTED_cn.md index 541aaf01b..7a2e6788e 100644 --- a/dygraph/docs/tutorials/GETTING_STARTED_cn.md +++ b/dygraph/docs/tutorials/GETTING_STARTED_cn.md @@ -2,33 +2,80 @@ ## 安装 -`dygraph`分支需要安装每日版本的PaddlePaddle,PaddlePaddle中`c0a991c8740b413559bfc894aa5ae1d5ed3704b5`这个commit会影响精度,建议安装这个commit之前的版本。 +关于安装配置运行环境,请参考[安装指南](INSTALL_cn.md) ## 准备数据 -请按照[如何准备训练数据](PrepareDataSet.md) 准备训练数据。 -数据准备好之后,设置数据配置文件`configs/_base_/datasets/coco.yml`中的数据路径。 +- 首先按照[准备数据文档](PrepareDataSet.md) 准备数据。 +- 然后设置`configs/datasets`中相应的coco或voc等数据配置文件中的数据路径。 ## 训练/评估/预测 -PaddleDetection提供了训练/评估/预测,支持通过不同可选参数实现特定功能 +PaddleDetection在[tools](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/tools)中提供了`训练`/`评估`/`预测`/`导出模型`等功能,支持通过传入不同可选参数实现特定功能 + +### 参数列表 + +以下列表可以通过`--help`查看 + +| FLAG | 支持脚本 | 用途 | 默认值 | 备注 | +| :----------------------: | :------------: | :---------------: | :--------------: | :-----------------: | +| -c | ALL | 指定配置文件 | None | **必选**,例如-c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml | +| --eval | train | 是否边训练边测试 | False | 可选,如需指定,直接`--eval`即可 | +| -o | ALL | 设置或更改配置文件里的参数内容 | None | 可选,例如:`-o use_gpu=False` | +| --slim_config | ALL | 模型压缩策略配置文件 | None | 可选,例如`--slim_config configs/slim/prune/yolov3_prune_l1_norm.yml` | +| --output_dir | infer/export_model | 预测后结果或导出模型保存路径 | `./output` | 可选,例如`--output_dir=output` | +| --draw_threshold | infer | 可视化时分数阈值 | 0.5 | 可选,`--draw_threshold=0.7` | +| --infer_dir | infer | 用于预测的图片文件夹路径 | None | 可选 | +| --infer_img | infer | 用于预测的图片路径 | None | 可选,`--infer_img`和`--infer_dir`必须至少设置一个 | + + +### 训练 + +- 单卡训练 +```bash +# 通过CUDA_VISIBLE_DEVICES指定GPU卡号 +export CUDA_VISIBLE_DEVICES=0 +python tools/train.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml +``` +- 多卡训练 -#### 训练 ```bash -# GPU训练 支持单卡,多卡训练,通过CUDA_VISIBLE_DEVICES指定卡号 export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 -python -m paddle.distributed.launch --selected_gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/faster_rcnn_r50_fpn_1x_coco.yml +python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml +``` + +- 边训练边评估 +```bash +python tools/train.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml --eval ``` -#### 评估 +### 评估 ```bash -# 使用单卡评估 -CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c configs/faster_rcnn_r50_fpn_1x_coco.yml +# 目前只支持单卡评估 +CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml ``` -#### 预测 +### 预测 ```bash -# 预测 -CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c configs/faster_rcnn_r50_fpn_1x_coco.yml --infer_img=demo/000000570688.jpg +CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml --infer_img={IMAGE_PATH} ``` + +## 预测部署 + +(1)导出模型 + +```bash +python tools/export_model.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml \ + -o weights=output/faster_rcnn_r50_fpn_1x_coco/model_final \ + --output_dir=output_inference +``` + +(2)预测部署 + +参考[预测部署文档](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/deploy)。 + + +## 模型压缩 + +参考[模型压缩文档](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/slim)。 diff --git a/dygraph/requirements.txt b/dygraph/requirements.txt index 21bdf638c..170c8a3b0 100644 --- a/dygraph/requirements.txt +++ b/dygraph/requirements.txt @@ -4,5 +4,3 @@ visualdl>=2.0.0b opencv-python PyYAML shapely -llvmlite==0.33 -numba==0.50 diff --git a/dygraph/tools/eval.py b/dygraph/tools/eval.py index 09afaeb24..eb7e60af4 100755 --- a/dygraph/tools/eval.py +++ b/dygraph/tools/eval.py @@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) if parent_path not in sys.path: sys.path.append(parent_path) -# ignore numba warning +# ignore warning log import warnings warnings.filterwarnings('ignore') @@ -55,9 +55,6 @@ def parse_args(): type=str, help="Configuration file of slim method.") - parser.add_argument( - '--use_gpu', action='store_true', default=False, help='') - args = parser.parse_args() return args diff --git a/dygraph/tools/export_model.py b/dygraph/tools/export_model.py index 656f0dd33..1a251312a 100644 --- a/dygraph/tools/export_model.py +++ b/dygraph/tools/export_model.py @@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) if parent_path not in sys.path: sys.path.append(parent_path) -# ignore numba warning +# ignore warning log import warnings warnings.filterwarnings('ignore') diff --git a/dygraph/tools/infer.py b/dygraph/tools/infer.py index f1a2e4d7e..6c0e57813 100755 --- a/dygraph/tools/infer.py +++ b/dygraph/tools/infer.py @@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) if parent_path not in sys.path: sys.path.append(parent_path) -# ignore numba warning +# ignore warning log import warnings warnings.filterwarnings('ignore') import glob diff --git a/dygraph/tools/train.py b/dygraph/tools/train.py index ce75cdf30..b00b8575c 100755 --- a/dygraph/tools/train.py +++ b/dygraph/tools/train.py @@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) if parent_path not in sys.path: sys.path.append(parent_path) -# ignore numba warning +# ignore warning log import warnings warnings.filterwarnings('ignore') import random @@ -49,16 +49,6 @@ def parse_args(): type=str, help="Loading Checkpoints only support 'pretrain', 'finetune', 'resume'." ) - parser.add_argument( - "--fp16", - action='store_true', - default=False, - help="Enable mixed precision training.") - parser.add_argument( - "--loss_scale", - default=8., - type=float, - help="Mixed precision training loss scale.") parser.add_argument( "--eval", action='store_true', @@ -75,8 +65,6 @@ def parse_args(): default=False, help="If set True, enable continuous evaluation job." "This flag is only used for internal test.") - parser.add_argument( - "--use_gpu", action='store_true', default=False, help="data parallel") args = parser.parse_args() return args -- GitLab