未验证 提交 df59f042 编写于 作者: B Bai Yifan 提交者: GitHub

Slim doc add eval&infer usage (#3600)

* doc add eval&infer usage

* doc fix
上级 8abe35ee
......@@ -87,6 +87,16 @@ strategies:
如果不需要保存评估模型,可以在定义Compressor对象时,将`save_eval_model`选项设置为False(默认为True)。
运行命令为:
```
python ../eval.py \
--model_path ${checkpoint_path}/${epoch_id}/eval_model/ \
--model_name __model__ \
--params_name __params__ \
-c ../../configs/yolov3_mobilenet_v1_voc.yml \
-d "../../dataset/voc"
```
## 预测
如果在配置文件中设置了`checkpoint_path`,并且在定义Compressor对象时指定了`prune_infer_model`选项,则每个epoch都会
......@@ -101,6 +111,16 @@ strategies:
在脚本<a href="../infer.py">slim/infer.py</a>中展示了如何使用fluid python API加载使用预测模型进行预测。
运行命令为:
```
python ../infer.py \
--model_path ${checkpoint_path}/${epoch_id}/eval_model/ \
--model_name __model__ \
--params_name __params__ \
-c ../../configs/yolov3_mobilenet_v1_voc.yml \
--infer_dir ../../demo
```
### PaddleLite
该示例中产出的预测(inference)模型可以直接用PaddleLite进行加载使用。
......
......@@ -30,7 +30,7 @@ from paddle.fluid.framework import IrGraph
from paddle.fluid import core
graph = IrGraph(core.Graph(train_prog.desc), for_test=True)
marked_nodes = set()
marked_nodes = set()
for op in graph.all_op_nodes():
print(op.name())
if op.name().find('conv') > -1:
......@@ -40,12 +40,12 @@ graph.draw('.', 'forward', marked_nodes)
该示例中MobileNetV1-YoloV3模型结构的可视化结果:<a href="./images/MobileNetV1-YoloV3.pdf">MobileNetV1-YoloV3.pdf</a>
同时通过以下命令观察目标卷积层的参数(parameters)的名称和shape:
同时通过以下命令观察目标卷积层的参数(parameters)的名称和shape:
```
for param in fluid.default_main_program().global_block().all_parameters():
if 'weights' in param.name:
print param.name, param.shape
print(param.name, param.shape)
```
......@@ -121,7 +121,7 @@ python compress.py \
- **max_iters:** 一个`epoch`中batch的数量,需要设置为`total_num / batch_size`, 其中`total_num`为训练样本总数量,`batch_size`为多卡上总的batch size.
- **YoloTrainFeed.batch_size:** 当使用DataLoader时,表示单张卡上的batch size; 当使用普通reader时,则表示多卡上的总的`batch_size``batch_size`受限于显存大小。
- **LeaningRate.base_lr:** 根据多卡的总`batch_size`调整`base_lr`,两者大小正相关,可以简单的按比例进行调整。
- **LearningRate.schedulers.PiecewiseDecay.milestones:**请根据batch size的变化对其调整。
- **LearningRate.schedulers.PiecewiseDecay.milestones:** 请根据batch size的变化对其调整。
- **LearningRate.schedulers.PiecewiseDecay.LinearWarmup.steps:** 请根据batch size的变化对其进行调整。
......@@ -168,6 +168,16 @@ python compress.py \
如果不需要保存评估模型,可以在定义Compressor对象时,将`save_eval_model`选项设置为False(默认为True)。
运行命令为:
```
python ../eval.py \
--model_path ${checkpoint_path}/${epoch_id}/eval_model/ \
--model_name __model__ \
--params_name __params__ \
-c ../../configs/yolov3_mobilenet_v1_voc.yml \
-d "../../dataset/voc"
```
## 预测
如果在配置文件中设置了`checkpoint_path`,并且在定义Compressor对象时指定了`prune_infer_model`选项,则每个epoch都会
......@@ -182,6 +192,16 @@ python compress.py \
在脚本<a href="../infer.py">PaddleDetection/tools/infer.py</a>中展示了如何使用fluid python API加载使用预测模型进行预测。
运行命令为:
```
python ../infer.py \
--model_path ${checkpoint_path}/${epoch_id}/eval_model/ \
--model_name __model__ \
--params_name __params__ \
-c ../../configs/yolov3_mobilenet_v1_voc.yml \
--infer_dir ../../demo
```
### PaddleLite
该示例中产出的预测(inference)模型可以直接用PaddleLite进行加载使用。
......
......@@ -34,12 +34,12 @@
```python
# 观察student model的Variable
for v in fluid.default_main_program().list_vars():
print v.name, v.shape
print(v.name, v.shape)
```
```python
# 观察teacher model的Variable
for v in teacher_program.list_vars():
print v.name, v.shape
print(v.name, v.shape)
```
经过对比可以发现,`student model``teacher model`预测的输出分别为:
......@@ -111,6 +111,16 @@ strategies:
脚本<a href="../eval.py">PaddleSlim/classification/eval.py</a>中为使用该模型在评估数据集上做评估的示例。
运行命令示例:
```bash
python eval.py \
--use_gpu True \
--model_path ${save_path}/eval_model/ \
--model_name __model__ \
--params_name __params__
```
## 预测
如果在配置文件中设置了`checkpoint_path`,并且在定义Compressor对象时指定了`prune_infer_model`选项,则每个epoch都会
......@@ -125,6 +135,15 @@ strategies:
在脚本<a href="../infer.py">PaddleSlim/classification/infer.py</a>中展示了如何使用fluid python API加载使用预测模型进行预测。
运行命令示例:
```bash
python infer.py \
--use_gpu True \
--model_path ${save_path}/eval_model/ \
--model_name __model__ \
--params_name __params__
```
### PaddleLite
该示例中产出的预测(inference)模型可以直接用PaddleLite进行加载使用。
......@@ -144,7 +163,7 @@ strategies:
- batch size: 256
- lr_strategy: piecewise_decay
- step_epochs: 30, 60, 90
- num_epochs: 120
- num_epochs: 130
- l2_decay: 4e-5
- init lr: 0.1
......@@ -160,7 +179,7 @@ strategies:
- batch size: 256
- lr_strategy: piecewise_decay
- step_epochs: 30, 60, 90
- num_epochs: 120
- num_epochs: 130
- l2_decay: 4e-5
- init lr: 0.1
......@@ -176,7 +195,7 @@ strategies:
- batch size: 256
- lr_strategy: piecewise_decay
- step_epochs: 30, 60, 90
- num_epochs: 120
- num_epochs: 130
- l2_decay: 4e-5
- init lr: 0.1
......
......@@ -95,7 +95,6 @@ def compress(args):
train_fetch_list = [('loss', avg_cost.name)]
teacher_programs = []
distiller_optimizer = None
teacher_model = models.__dict__[args.teacher_model](prefix_name='res50')
# define teacher program
......
......@@ -2,8 +2,8 @@ version: 1.0
distillers:
l2_distiller:
class: 'L2Distiller'
teacher_feature_map: 'res50_fc_0.tmp_1'
student_feature_map: 'fc_0.tmp_1'
teacher_feature_map: 'res50_fc_0.tmp_0'
student_feature_map: 'fc_0.tmp_0'
distillation_loss_weight: 1
strategies:
distillation_strategy:
......
......@@ -58,7 +58,7 @@ tailf mobilenet_v1.log
#--model "MobileNetV2" \
#--teacher_model "ResNet50" \
#--teacher_pretrained_model ../pretrain/ResNet50_pretrained \
#--compress_config ./configs/mobilenetv2_resnet50_distillation.yaml\
#--compress_config ./configs/mobilenetv2_resnet50_distillation.yaml \
#> mobilenet_v2.log 2>&1 &
#tailf mobilenet_v2.log
......
......@@ -37,7 +37,7 @@ PaddleSlim暂时无法对`depthwise convolution`直接进行剪裁, 因为`dep
```
for param in fluid.default_main_program().global_block().all_parameters():
if 'weights' in param.name:
print param.name, param.shape
print(param.name, param.shape)
```
结果如下:
......@@ -100,6 +100,16 @@ fc10_weights (1280L, 1000L)
脚本<a href="../eval.py">PaddleSlim/classification/eval.py</a>中为使用该模型在评估数据集上做评估的示例。
运行命令示例:
```bash
python eval.py \
--use_gpu True \
--model_path ${save_path}/eval_model/ \
--model_name __model__ \
--params_name __params__
```
## 预测
如果在配置文件中设置了`checkpoint_path`,并且在定义Compressor对象时指定了`prune_infer_model`选项,则每个epoch都会
......@@ -114,6 +124,15 @@ fc10_weights (1280L, 1000L)
在脚本<a href="../infer.py">PaddleSlim/classification/infer.py</a>中展示了如何使用fluid python API加载使用预测模型进行预测。
运行命令示例:
```bash
python infer.py \
--use_gpu True \
--model_path ${save_path}/eval_model/ \
--model_name __model__ \
--params_name __params__
```
### PaddleLite
该示例中产出的预测(inference)模型可以直接用PaddleLite进行加载使用。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册