Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
a47e4d37
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看板
提交
a47e4d37
编写于
6月 13, 2022
作者:
C
cuicheng01
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update PULC_train.md
上级
1e238a98
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
146 addition
and
8 deletion
+146
-8
docs/zh_CN/PULC/PULC_train.md
docs/zh_CN/PULC/PULC_train.md
+8
-8
ppcls/configs/PULC/person_exists/PPLCNet_x1_0_base.yaml
ppcls/configs/PULC/person_exists/PPLCNet_x1_0_base.yaml
+138
-0
未找到文件。
docs/zh_CN/PULC/PULC_train.md
浏览文件 @
a47e4d37
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
图像分类是计算机视觉的基础算法之一,是企业应用中最常见的算法,也是许多 CV 应用的重要组成部分。近年来,骨干网络模型发展迅速,ImageNet 的精度纪录被不断刷新。然而,这些模型在实用场景的表现有时却不尽如人意。一方面,精度高的模型往往体积大,运算慢,常常难以满足实际部署需求;另一方面,选择了合适的模型之后,往往还需要经验丰富的工程师进行调参,费时费力。PaddleClas 为了解决企业应用难题,让分类模型的训练和调参更加容易,总结推出了实用轻量图像分类解决方案(PULC, Practical Ultra Lightweight Classification)。PULC融合了骨干网络、数据增广、蒸馏等多种前沿算法,可以自动训练得到轻量且高精度的图像分类模型。
图像分类是计算机视觉的基础算法之一,是企业应用中最常见的算法,也是许多 CV 应用的重要组成部分。近年来,骨干网络模型发展迅速,ImageNet 的精度纪录被不断刷新。然而,这些模型在实用场景的表现有时却不尽如人意。一方面,精度高的模型往往体积大,运算慢,常常难以满足实际部署需求;另一方面,选择了合适的模型之后,往往还需要经验丰富的工程师进行调参,费时费力。PaddleClas 为了解决企业应用难题,让分类模型的训练和调参更加容易,总结推出了实用轻量图像分类解决方案(PULC, Practical Ultra Lightweight Classification)。PULC融合了骨干网络、数据增广、蒸馏等多种前沿算法,可以自动训练得到轻量且高精度的图像分类模型。
PULC 方案在人、车、OCR等方向的多个场景中均验证有效,用超轻量模型就可实现与
SwinTransformer
模型接近的精度,预测速度提高 40+ 倍。
PULC 方案在人、车、OCR等方向的多个场景中均验证有效,用超轻量模型就可实现与
SwinTransformer
模型接近的精度,预测速度提高 40+ 倍。
<div
align=
"center"
>
<div
align=
"center"
>
<img
src=
"https://user-images.githubusercontent.com/19523330/173011854-b10fcd7a-b799-4dfd-a1cf-9504952a3c44.png"
width =
"800"
/>
<img
src=
"https://user-images.githubusercontent.com/19523330/173011854-b10fcd7a-b799-4dfd-a1cf-9504952a3c44.png"
width =
"800"
/>
...
@@ -78,7 +78,7 @@ train
...
@@ -78,7 +78,7 @@ train
tree
-r
-i
-f
train |
grep
-E
"jpg|JPG|jpeg|JPEG|png|PNG"
|
awk
-F
"/"
'{print $0" "$2}'
>
train_list.txt
tree
-r
-i
-f
train |
grep
-E
"jpg|JPG|jpeg|JPEG|png|PNG"
|
awk
-F
"/"
'{print $0" "$2}'
>
train_list.txt
```
```
其中,如果
需要传入更多的数据类型,可以增加
`grep -E`
后的内容,
`$2`
中的
`2`
为类别号文件夹的层级。
其中,如果
涉及更多的图片名称尾缀,可以增加
`grep -E`
后的内容,
`$2`
中的
`2`
为类别号文件夹的层级。
**备注:**
以上为数据集获取和生成的方法介绍,这里您可以直接下载有人/无人场景数据快速开始体验。
**备注:**
以上为数据集获取和生成的方法介绍,这里您可以直接下载有人/无人场景数据快速开始体验。
...
@@ -105,20 +105,20 @@ cd ../
...
@@ -105,20 +105,20 @@ cd ../
#### 3.1 骨干网络PP-LCNet
#### 3.1 骨干网络PP-LCNet
PULC
采用了轻量骨干网络PP-LCNet,相比同精度竞品速度快
50%,您可以在
[
PP-LCNet介绍
](
../models/PP-LCNet.md
)
查阅该骨干网络的详细介绍。
PULC
采用了轻量骨干网络 PP-LCNet,相比同精度竞品速度快
50%,您可以在
[
PP-LCNet介绍
](
../models/PP-LCNet.md
)
查阅该骨干网络的详细介绍。
直接使用
PP-LCNet
训练的命令为:
直接使用
PP-LCNet
训练的命令为:
```
shell
```
shell
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
python3
-m
paddle.distributed.launch
\
python3
-m
paddle.distributed.launch
\
--gpus
=
"0,1,2,3"
\
--gpus
=
"0,1,2,3"
\
tools/train.py
\
tools/train.py
\
-c
./ppcls/configs/PULC/person_exists/PPLCNet_x1_0.yaml
-c
./ppcls/configs/PULC/person_exists/PPLCNet_x1_0
_search
.yaml
```
```
为了方便性能对比,我们也提供了大模型 SwinTransformer
和轻量模型 MobileNetV3
的配置文件,您可以使用命令训练:
为了方便性能对比,我们也提供了大模型 SwinTransformer
_tiny 和轻量模型 MobileNetV3_small_x0_35
的配置文件,您可以使用命令训练:
SwinTransformer:
SwinTransformer
_tiny
:
```
shell
```
shell
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
...
@@ -128,7 +128,7 @@ python3 -m paddle.distributed.launch \
...
@@ -128,7 +128,7 @@ python3 -m paddle.distributed.launch \
-c
./ppcls/configs/PULC/person_exists/SwinTransformer_tiny_patch4_window7_224.yaml
-c
./ppcls/configs/PULC/person_exists/SwinTransformer_tiny_patch4_window7_224.yaml
```
```
MobileNetV3:
MobileNetV3
_small_x0_35
:
```
shell
```
shell
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
export
CUDA_VISIBLE_DEVICES
=
0,1,2,3
...
...
ppcls/configs/PULC/person_exists/PPLCNet_x1_0_base.yaml
0 → 100644
浏览文件 @
a47e4d37
# global configs
Global
:
checkpoints
:
null
pretrained_model
:
null
output_dir
:
./output/
device
:
gpu
save_interval
:
1
eval_during_train
:
True
eval_interval
:
1
start_eval_epoch
:
10
epochs
:
20
print_batch_step
:
10
use_visualdl
:
False
# used for static mode and model export
image_shape
:
[
3
,
224
,
224
]
save_inference_dir
:
./inference
# training model under @to_static
to_static
:
False
use_dali
:
False
# model architecture
Arch
:
name
:
PPLCNet_x1_0
class_num
:
2
pretrained
:
True
use_ssld
:
True
use_sync_bn
:
True
# loss function config for traing/eval process
Loss
:
Train
:
-
CELoss
:
weight
:
1.0
Eval
:
-
CELoss
:
weight
:
1.0
Optimizer
:
name
:
Momentum
momentum
:
0.9
lr
:
name
:
Cosine
learning_rate
:
0.01
warmup_epoch
:
5
regularizer
:
name
:
'
L2'
coeff
:
0.00004
# data loader for train and eval
DataLoader
:
Train
:
dataset
:
name
:
ImageNetDataset
image_root
:
./dataset/person_exists/
cls_label_path
:
./dataset/person_exists/train_list.txt
transform_ops
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
RandCropImage
:
size
:
224
-
RandFlipImage
:
flip_code
:
1
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
sampler
:
name
:
DistributedBatchSampler
batch_size
:
64
drop_last
:
False
shuffle
:
True
loader
:
num_workers
:
8
use_shared_memory
:
True
Eval
:
dataset
:
name
:
ImageNetDataset
image_root
:
./dataset/person_exists/
cls_label_path
:
./dataset/person_exists/val_list.txt
transform_ops
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
ResizeImage
:
resize_short
:
256
-
CropImage
:
size
:
224
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
sampler
:
name
:
DistributedBatchSampler
batch_size
:
64
drop_last
:
False
shuffle
:
False
loader
:
num_workers
:
4
use_shared_memory
:
True
Infer
:
infer_imgs
:
deploy/images/PULC/person_exists/objects365_02035329.jpg
batch_size
:
10
transforms
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
ResizeImage
:
resize_short
:
256
-
CropImage
:
size
:
224
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
ToCHWImage
:
PostProcess
:
name
:
ThreshOutput
threshold
:
0.5
label_0
:
nobody
label_1
:
someone
Metric
:
Train
:
-
TopkAcc
:
topk
:
[
1
,
2
]
Eval
:
-
TprAtFpr
:
-
TopkAcc
:
topk
:
[
1
,
2
]
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录