Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
48ff7ec1
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
1 年多 前同步成功
通知
115
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看板
未验证
提交
48ff7ec1
编写于
7月 06, 2021
作者:
C
cuicheng01
提交者:
GitHub
7月 06, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'PaddlePaddle:develop' into develop
上级
964a46a5
68fba885
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
21 addition
and
17 deletion
+21
-17
docs/zh_CN/tutorials/quick_start_new_user.md
docs/zh_CN/tutorials/quick_start_new_user.md
+18
-15
ppcls/arch/backbone/variant_models/resnet_variant.py
ppcls/arch/backbone/variant_models/resnet_variant.py
+3
-2
未找到文件。
docs/zh_CN/tutorials/quick_start_new_user.md
浏览文件 @
48ff7ec1
...
...
@@ -40,7 +40,7 @@
*
进入PaddleClas目录。
```
bash
#
#
linux or mac, $path_to_PaddleClas表示PaddleClas的根目录,用户需要根据自己的真实目录修改
# linux or mac, $path_to_PaddleClas表示PaddleClas的根目录,用户需要根据自己的真实目录修改
cd
$path_to_PaddleClas
```
...
...
@@ -61,7 +61,9 @@ unzip flowers102.zip
此时flowers102数据集存放在
**dataset/flowers102/jpg**
文件夹中,图像示例如下:
<img
src=
"../../images/quick_start/Examples-Flower-102.png"
style=
"zoom:50%;"
/>
<div
align=
"center"
>
<img
src=
"../../images/quick_start/Examples-Flower-102.png"
width =
"800"
/>
</div>
*
返回
`PaddleClas`
根目录
...
...
@@ -73,18 +75,14 @@ cd ../../
## 四、模型训练
### 预训练模型下载
### 训练模型
#### 使用CPU进行模型训练
### 使用CPU进行模型训练
由于使用CPU来进行模型训练,计算速度较慢,因此,此处以ShuffleNetV2_x0_25为例。此模型计算量较小,在CPU上计算速度较快。但是也因为模型较小,训练好的模型精度也不会太高。
####
#
不使用预训练模型
#### 不使用预训练模型
```
shell
#windows在cmd中进入PaddleClas根目录,执行此命令
#
windows在cmd中进入PaddleClas根目录,执行此命令
python tools/train.py
-c
./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml
```
...
...
@@ -92,16 +90,17 @@ python tools/train.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25
-
`yaml`
文
`Global.device`
参数设置为
`cpu`
,即使用CPU进行训练(若不设置,此参数默认为
`True`
)
-
`yaml`
文件中
`epochs`
参数设置为20,说明对整个数据集进行20个epoch迭代,预计训练20分钟左右(不同CPU,训练时间略有不同),此时训练模型不充分。若提高训练模型精度,请将此参数设大,如
**40**
,训练时间也会相应延长
####
#
使用预训练模型
#### 使用预训练模型
```
shell
python tools/train.py
-c
./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml
-o
Arch.pretrained
=
True
```
-
`-o`
参数可以选择为True或False,也可以是预训练模型存放路径,当选择为True时,预训练权重会自动下载到本地。注意:若为预训练模型路径,则不要加上:
`.pdparams`
可以使用将使用与不使用预训练模型训练进行对比,观察loss的下降情况。
###
#
使用GPU进行模型训练
### 使用GPU进行模型训练
由于GPU训练速度更快,可以使用更复杂模型,因此以ResNet50_vd为例。与ShuffleNetV2_x0_25相比,此模型计算量较大, 训练好的模型精度也会更高。
...
...
@@ -119,7 +118,7 @@ python tools/train.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25
set
CUDA_VISIBLE_DEVICES
=
0
```
####
#
不使用预训练模型
#### 不使用预训练模型
```
shell
python3 tools/train.py
-c
./ppcls/configs/quick_start/ResNet50_vd.yaml
...
...
@@ -127,9 +126,11 @@ python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml
训练完成后,验证集的
`Top1 Acc`
曲线如下所示,最高准确率为0.2735。训练精度曲线下图所示
![image-20210329103510936](../../images/quick_start/r50_vd_acc.png)
<div
align=
"center"
>
<img
src=
"../../images/quick_start/r50_vd_acc.png"
width =
"800"
/>
</div>
####
#
使用预训练模型进行训练
#### 使用预训练模型进行训练
基于ImageNet1k分类预训练模型进行微调,训练脚本如下所示
...
...
@@ -143,7 +144,9 @@ python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Arch.p
验证集的
`Top1 Acc`
曲线如下所示,最高准确率为0.9402,加载预训练模型之后,flowers102数据集精度大幅提升,绝对精度涨幅超过65%。
![image-20210329105947361](../../images/quick_start/r50_vd_pretrained_acc.png)
<div
align=
"center"
>
<img
src=
"../../images/quick_start/r50_vd_pretrained_acc.png"
width =
"800"
/>
</div>
## 五、模型预测
...
...
ppcls/arch/backbone/variant_models/resnet_variant.py
浏览文件 @
48ff7ec1
from
paddle.nn
import
Conv2D
from
ppcls.arch.backbone.legendary_models.resnet
import
ResNet50
from
ppcls.arch.backbone.legendary_models.resnet
import
ResNet50
,
MODEL_URLS
,
_load_pretrained
__all__
=
[
"ResNet50_last_stage_stride1"
]
...
...
@@ -17,6 +17,7 @@ def ResNet50_last_stage_stride1(pretrained=False, use_ssld=False, **kwargs):
return
new_conv
match_re
=
"conv2d_4[4|6]"
model
=
ResNet50
(
pretrained
=
pretrained
,
use_ssld
=
use_ssld
,
**
kwargs
)
model
=
ResNet50
(
pretrained
=
False
,
use_ssld
=
use_ssld
,
**
kwargs
)
model
.
replace_sub
(
match_re
,
replace_function
,
True
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNet50"
],
use_ssld
)
return
model
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录