Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
41a3a676
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
接近 2 年 前同步成功
通知
116
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
41a3a676
编写于
6月 13, 2022
作者:
W
weishengyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
dbg
上级
eae30201
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
12 deletion
+12
-12
deploy/configs/PULC/car_exists/inference_car_exists.yaml
deploy/configs/PULC/car_exists/inference_car_exists.yaml
+0
-0
docs/zh_CN/PULC/PULC_car_exists.md
docs/zh_CN/PULC/PULC_car_exists.md
+12
-12
未找到文件。
deploy/configs/PULC/car_exists/inference_
person
_exists.yaml
→
deploy/configs/PULC/car_exists/inference_
car
_exists.yaml
浏览文件 @
41a3a676
文件已移动
docs/zh_CN/PULC/PULC_car_exists.md
浏览文件 @
41a3a676
...
...
@@ -51,9 +51,9 @@
| PPLCNet_x1_0 | 94.72 | 2.12 | 6.5 | 使用 ImageNet 预训练模型 |
| PPLCNet_x1_0 | 95.48 | 2.12 | 6.5 | 使用 SSLD 预训练模型 |
| PPLCNet_x1_0 | 95.48 | 2.12 | 6.5 | 使用 SSLD 预训练模型+EDA 策略|
|
<b>
PPLCNet_x1_0
<b>
|
<b>
95.
7
2
<b>
|
<b>
2.12
<b>
|
<b>
6.5
<b>
| 使用 SSLD 预训练模型+EDA 策略+SKL-UGI 知识蒸馏策略|
|
<b>
PPLCNet_x1_0
<b>
|
<b>
95.
9
2
<b>
|
<b>
2.12
<b>
|
<b>
6.5
<b>
| 使用 SSLD 预训练模型+EDA 策略+SKL-UGI 知识蒸馏策略|
从表中可以看出,backbone 为 SwinTranformer_tiny 时精度较高,但是推理速度较慢。将 backboone 替换为轻量级模型 MobileNetV3_small_x0_35 后,速度可以大幅提升,但是会导致精度大幅下降。将 backbone 替换为速度更快的 PPLCNet_x1_0 时,精度较 MobileNetV3_small_x0_35 高 13 个百分点,与此同时速度依旧可以快 20% 以上。在此基础上,使用 SSLD 预训练模型后,在不改变推理速度的前提下,精度可以提升约 0.7 个百分点,进一步地,在使用 SKL-UGI 知识蒸馏后,精度可以继续提升 0.
2
4 个百分点。此时,PPLCNet_x1_0 达到了接近 SwinTranformer_tiny 模型的精度,但是速度快 40 多倍。关于 PULC 的训练方法和推理部署方法将在下面详细介绍。
从表中可以看出,backbone 为 SwinTranformer_tiny 时精度较高,但是推理速度较慢。将 backboone 替换为轻量级模型 MobileNetV3_small_x0_35 后,速度可以大幅提升,但是会导致精度大幅下降。将 backbone 替换为速度更快的 PPLCNet_x1_0 时,精度较 MobileNetV3_small_x0_35 高 13 个百分点,与此同时速度依旧可以快 20% 以上。在此基础上,使用 SSLD 预训练模型后,在不改变推理速度的前提下,精度可以提升约 0.7 个百分点,进一步地,在使用 SKL-UGI 知识蒸馏后,精度可以继续提升 0.
4
4 个百分点。此时,PPLCNet_x1_0 达到了接近 SwinTranformer_tiny 模型的精度,但是速度快 40 多倍。关于 PULC 的训练方法和推理部署方法将在下面详细介绍。
**备注:**
...
...
@@ -87,7 +87,7 @@ paddleclas --model_name=car_exists --infer_imgs=deploy/images/PULC/car_exists/ob
结果如下:
```
>>> result
class_ids: [1], scores: [0.9
740616
], label_names: ['contains_vehicle'], filename: deploy/images/PULC/car_exists/objects365_00001507.jpeg
class_ids: [1], scores: [0.9
871138
], label_names: ['contains_vehicle'], filename: deploy/images/PULC/car_exists/objects365_00001507.jpeg
Predict complete!
```
...
...
@@ -102,11 +102,11 @@ result = model.predict(input_data="deploy/images/PULC/car_exists/objects365_0000
print
(
next
(
result
))
```
**备注**
:
`model.predict()`
为可迭代对象(
`generator`
),因此需要使用
`next()`
函数或
`for`
循环对其迭代调用。每次调用将以
`batch_size`
为单位进行一次预测,并返回预测结果, 默认
`batch_size`
为 1,如果需要更改
`batch_size`
,实例化模型时,需要指定
`batch_size`
,如
`model = paddleclas.PaddleClas(model_name="
person
_exists", batch_size=2)`
, 使用默认的代码返回结果示例如下:
**备注**
:
`model.predict()`
为可迭代对象(
`generator`
),因此需要使用
`next()`
函数或
`for`
循环对其迭代调用。每次调用将以
`batch_size`
为单位进行一次预测,并返回预测结果, 默认
`batch_size`
为 1,如果需要更改
`batch_size`
,实例化模型时,需要指定
`batch_size`
,如
`model = paddleclas.PaddleClas(model_name="
car
_exists", batch_size=2)`
, 使用默认的代码返回结果示例如下:
```
>>> result
[{'class_ids': [1], 'scores': [0.9
740616
], 'label_names': ['contains_vehicle'], 'filename': 'deploy/images/PULC/car_exists/objects365_00001507.jpeg'}]
[{'class_ids': [1], 'scores': [0.9
871138
], 'label_names': ['contains_vehicle'], 'filename': 'deploy/images/PULC/car_exists/objects365_00001507.jpeg'}]
```
<a
name=
"3"
></a>
...
...
@@ -236,13 +236,13 @@ python3 tools/eval.py \
```
python
python3
tools
/
infer
.
py
\
-
c
.
/
ppcls
/
configs
/
PULC
/
car_exists
/
PPLCNet_x1_0
.
yaml
\
-
o
Global
.
pretrained_model
=
output
/
PPLCNet_x1_0
/
best_model
\
-
o
Global
.
pretrained_model
=
output
/
PPLCNet_x1_0
/
best_model
```
输出结果如下:
```
[{'class_ids': [1], 'scores': [0.9
740616
], 'label_names': ['contains_vehicle'], 'filename': 'deploy/images/PULC/car_exists/objects365_00001507.jpeg'}]
[{'class_ids': [1], 'scores': [0.9
871138
], 'label_names': ['contains_vehicle'], 'filename': 'deploy/images/PULC/car_exists/objects365_00001507.jpeg'}]
```
**备注:**
...
...
@@ -268,7 +268,7 @@ SKL-UGI 知识蒸馏是 PaddleClas 提出的一种简单有效的知识蒸馏方
#### 4.1.1 教师模型训练
复用
`ppcls/configs/PULC/
person
_exists/PPLCNet/PPLCNet_x1_0.yaml`
中的超参数,训练教师模型,训练脚本如下:
复用
`ppcls/configs/PULC/
car
_exists/PPLCNet/PPLCNet_x1_0.yaml`
中的超参数,训练教师模型,训练脚本如下:
```
shell
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
...
...
@@ -285,7 +285,7 @@ python3 -m paddle.distributed.launch \
#### 4.1.2 蒸馏训练
配置文件
`ppcls/configs/PULC/
person
_exists/PPLCNet_x1_0_distillation.yaml`
提供了
`SKL-UGI知识蒸馏策略`
的配置。该配置将
`ResNet101_vd`
当作教师模型,
`PPLCNet_x1_0`
当作学生模型,使用ImageNet数据集的验证集作为新增的无标签数据。训练脚本如下:
配置文件
`ppcls/configs/PULC/
car
_exists/PPLCNet_x1_0_distillation.yaml`
提供了
`SKL-UGI知识蒸馏策略`
的配置。该配置将
`ResNet101_vd`
当作教师模型,
`PPLCNet_x1_0`
当作学生模型,使用ImageNet数据集的验证集作为新增的无标签数据。训练脚本如下:
```
shell
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
...
...
@@ -390,7 +390,7 @@ python3.7 python/predict_cls.py -c configs/PULC/car_exists/inference_car_exists.
输出结果如下。
```
objects365_0
2035329.jpg: class id(s): [1], score(s): [1.00], label_name(s): ['someone
']
objects365_0
0001507.jpeg: class id(s): [1], score(s): [0.99], label_name(s): ['contains_car
']
```
...
...
@@ -410,8 +410,8 @@ python3.7 python/predict_cls.py -c configs/PULC/car_exists/inference_car_exists.
终端中会输出该文件夹内所有图像的分类结果,如下所示。
```
objects365_0
1780782.jpg: class id(s): [0], score(s): [1.00], label_name(s): ['nobody
']
objects365_0
2035329.jpg: class id(s): [1], score(s): [1.00], label_name(s): ['someone
']
objects365_0
0001507.jpeg: class id(s): [1], score(s): [0.99], label_name(s): ['contains_car
']
objects365_0
0001521.jpeg: class id(s): [0], score(s): [0.99], label_name(s): ['nocar
']
```
其中,
`contains_car`
表示该图里存在车,
`nocar`
表示该图里不存在车。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录