未验证 提交 52438b30 编写于 作者: G Guanghua Yu 提交者: GitHub

fix dygraph getting_started doc (#2128)

上级 13f0b561
...@@ -2,33 +2,80 @@ ...@@ -2,33 +2,80 @@
## 安装 ## 安装
`dygraph`分支需要安装每日版本的PaddlePaddle,PaddlePaddle中`c0a991c8740b413559bfc894aa5ae1d5ed3704b5`这个commit会影响精度,建议安装这个commit之前的版本。 关于安装配置运行环境,请参考[安装指南](INSTALL_cn.md)
## 准备数据 ## 准备数据
请按照[如何准备训练数据](PrepareDataSet.md) 准备训练数据。 - 首先按照[准备数据文档](PrepareDataSet.md) 准备数据。
数据准备好之后,设置数据配置文件`configs/_base_/datasets/coco.yml`中的数据路径。 - 然后设置`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 ```bash
# GPU训练 支持单卡,多卡训练,通过CUDA_VISIBLE_DEVICES指定卡号
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 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 ```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 ```bash
# 预测 CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml --infer_img={IMAGE_PATH}
CUDA_VISIBLE_DEVICES=0 python tools/infer.py -c configs/faster_rcnn_r50_fpn_1x_coco.yml --infer_img=demo/000000570688.jpg
``` ```
## 预测部署
(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)
...@@ -4,5 +4,3 @@ visualdl>=2.0.0b ...@@ -4,5 +4,3 @@ visualdl>=2.0.0b
opencv-python opencv-python
PyYAML PyYAML
shapely shapely
llvmlite==0.33
numba==0.50
...@@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) ...@@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2)))
if parent_path not in sys.path: if parent_path not in sys.path:
sys.path.append(parent_path) sys.path.append(parent_path)
# ignore numba warning # ignore warning log
import warnings import warnings
warnings.filterwarnings('ignore') warnings.filterwarnings('ignore')
...@@ -55,9 +55,6 @@ def parse_args(): ...@@ -55,9 +55,6 @@ def parse_args():
type=str, type=str,
help="Configuration file of slim method.") help="Configuration file of slim method.")
parser.add_argument(
'--use_gpu', action='store_true', default=False, help='')
args = parser.parse_args() args = parser.parse_args()
return args return args
......
...@@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) ...@@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2)))
if parent_path not in sys.path: if parent_path not in sys.path:
sys.path.append(parent_path) sys.path.append(parent_path)
# ignore numba warning # ignore warning log
import warnings import warnings
warnings.filterwarnings('ignore') warnings.filterwarnings('ignore')
......
...@@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) ...@@ -21,7 +21,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2)))
if parent_path not in sys.path: if parent_path not in sys.path:
sys.path.append(parent_path) sys.path.append(parent_path)
# ignore numba warning # ignore warning log
import warnings import warnings
warnings.filterwarnings('ignore') warnings.filterwarnings('ignore')
import glob import glob
......
...@@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2))) ...@@ -22,7 +22,7 @@ parent_path = os.path.abspath(os.path.join(__file__, *(['..'] * 2)))
if parent_path not in sys.path: if parent_path not in sys.path:
sys.path.append(parent_path) sys.path.append(parent_path)
# ignore numba warning # ignore warning log
import warnings import warnings
warnings.filterwarnings('ignore') warnings.filterwarnings('ignore')
import random import random
...@@ -49,16 +49,6 @@ def parse_args(): ...@@ -49,16 +49,6 @@ def parse_args():
type=str, type=str,
help="Loading Checkpoints only support 'pretrain', 'finetune', 'resume'." 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( parser.add_argument(
"--eval", "--eval",
action='store_true', action='store_true',
...@@ -75,8 +65,6 @@ def parse_args(): ...@@ -75,8 +65,6 @@ def parse_args():
default=False, default=False,
help="If set True, enable continuous evaluation job." help="If set True, enable continuous evaluation job."
"This flag is only used for internal test.") "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() args = parser.parse_args()
return args return args
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册