Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
6791753c
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看板
未验证
提交
6791753c
编写于
4月 19, 2020
作者:
D
dyning
提交者:
GitHub
4月 19, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #33 from shippingwang/master
add data doc
上级
5736d85b
6aee0dc4
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
257 addition
and
54 deletion
+257
-54
configs/flower.yaml
configs/flower.yaml
+74
-0
dataset/flower102/generate_flower_list.py
dataset/flower102/generate_flower_list.py
+37
-0
docs/zh_CN/tutorials/data.md
docs/zh_CN/tutorials/data.md
+84
-0
docs/zh_CN/tutorials/getting_started.md
docs/zh_CN/tutorials/getting_started.md
+34
-9
docs/zh_CN/tutorials/index.rst
docs/zh_CN/tutorials/index.rst
+1
-0
docs/zh_CN/tutorials/install.md
docs/zh_CN/tutorials/install.md
+27
-45
未找到文件。
configs/flower.yaml
0 → 100644
浏览文件 @
6791753c
mode
:
'
train'
architecture
:
'
ResNet50_vd'
pretrained_model
:
model_save_dir
:
"
./output/"
classes_num
:
102
total_images
:
1020
save_interval
:
10
validate
:
True
valid_interval
:
1
epochs
:
40
topk
:
5
image_shape
:
[
3
,
224
,
224
]
ls_epsilon
:
0.1
LEARNING_RATE
:
function
:
'
Cosine'
params
:
lr
:
0.00375
OPTIMIZER
:
function
:
'
Momentum'
params
:
momentum
:
0.9
regularizer
:
function
:
'
L2'
factor
:
0.000001
TRAIN
:
batch_size
:
32
num_workers
:
1
file_list
:
"
./dataset/flower102/train_list.txt"
data_dir
:
"
./dataset/flower102"
shuffle_seed
:
0
transforms
:
-
DecodeImage
:
to_rgb
:
True
to_np
:
False
channel_first
:
False
-
RandCropImage
:
size
:
224
-
RandFlipImage
:
flip_code
:
1
-
NormalizeImage
:
scale
:
1./255.
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
ToCHWImage
:
#mix:
# - MixupOperator:
# alpha: 0.2
VALID
:
batch_size
:
64
num_workers
:
1
file_list
:
"
./dataset/flower102/val_list.txt"
data_dir
:
"
./dataset/flower102/"
shuffle_seed
:
0
transforms
:
-
DecodeImage
:
to_rgb
:
True
to_np
:
False
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
:
dataset/flower102/generate_flower_list.py
0 → 100644
浏览文件 @
6791753c
import
scipy.io
import
numpy
as
np
import
os
import
sys
""".mat files data format
imagelabel.mat
jpg_name 1 2 3 ...
label 32 12 66 ...
setid.mat
jpg_name(10 records in a class) 24 6 100 65 32 ...
label 4 ...
"""
"""
Usage:
python generate_flower_list.py prefix_folder mode
python generate_flower_list.py jpg train > train_list.txt
python generate_flower_list.py jpg valid > val_list.txt
"""
data_path
=
sys
.
argv
[
1
]
imagelabels_path
=
'./imagelabels.mat'
setid_path
=
'./setid.mat'
labels
=
scipy
.
io
.
loadmat
(
imagelabels_path
)
labels
=
np
.
array
(
labels
[
'labels'
][
0
])
setid
=
scipy
.
io
.
loadmat
(
setid_path
)
d
=
{}
d
[
'train'
]
=
np
.
array
(
setid
[
'trnid'
][
0
])
d
[
'valid'
]
=
np
.
array
(
setid
[
'valid'
][
0
])
d
[
'test'
]
=
np
.
array
(
setid
[
'tstid'
][
0
])
for
id
in
d
[
sys
.
argv
[
2
]]:
message
=
str
(
data_path
)
+
"/image_"
+
str
(
id
).
zfill
(
5
)
+
".jpg "
+
str
(
labels
[
id
-
1
])
print
(
message
)
docs/zh_CN/tutorials/data.md
0 → 100644
浏览文件 @
6791753c
# 数据说明
---
## 1.简介
本文档介绍ImageNet1k和Flower102数据准备过程。
以及PaddleClas提供了丰富的
[
预训练模型
](
../models/models_intro.md
)
## 2.数据集准备
数据集 | 训练集大小 | 测试集大小 | 类别数 | 备注|
:------:|:---------------:|:---------------------:|:-----------:|:-----------:
[
Flower102
](
https://www.robots.ox.ac.uk/~vgg/data/flowers/102/
)
|1k | 6k | 102 |
[
ImageNet1k
](
http://www.image-net.org/challenges/LSVRC/2012/
)
|1.2M| 50k | 1000 |
数据格式
按照如下结构组织数据,其中train_list.txt 和val_list.txt的格式形如
```
#每一行采用"空格"分隔图像路径与标注
ILSVRC2012_val_00000001.JPEG 65
...
```
### ImageNet1k
从官方下载数据后,按如下组织数据
```
bash
PaddleClas/dataset/imagenet/
|_ train/
| |_ n01440764
| | |_ n01440764_10026.JPEG
| | |_ ...
| |_ ...
| |
| |_ n15075141
| |_ ...
| |_ n15075141_9993.JPEG
|_ val/
| |_ ILSVRC2012_val_00000001.JPEG
| |_ ...
| |_ ILSVRC2012_val_00050000.JPEG
|_ train_list.txt
|_ val_list.txt
```
### Flower
从
[
VGG官方网站
](
https://www.robots.ox.ac.uk/~vgg/data/flowers/102/
)
下载后的数据,解压后包括
jpg/
setid.mat
imagelabels.mat
将以上文件放置在PaddleClas/dataset/flower102/下
通过运行generate_flower_list.py生成train_list.txt和val_list.txt
```
bash
python generate_flower_list.py jpg train
>
train_list.txt
python generate_flower_list.py jpg valid
>
val_list.txt
```
按照如下结构组织数据:
```
bash
PaddleClas/dataset/flower102/
|_ jpg/
| |_ image_03601.jpg
| |_ ...
| |_ image_02355.jpg
|_ train_list.txt
|_ val_list.txt
```
## 3.下载预训练模型
通过tools/download.py下载所需要的预训练模型。
```
bash
python tools/download.py
-a
ResNet50_vd
-p
./pretrained
-d
True
```
参数说明:
+
`architecture`
(简写 a):模型结构
+
`path`
(简写 p):下载路径
+
`decompress`
(简写 d):是否解压
docs/zh_CN/tutorials/getting_started.md
浏览文件 @
6791753c
# 开始使用
---
请事先参考
[
安装指南
](
install.md
)
配置运行环境
有关模型库的基本信息请参考
[
README
](
https://github.com/PaddlePaddle/PaddleClas/blob/master/README.md
)
## 一、设置环境变量
...
...
@@ -15,15 +16,17 @@ export PYTHONPATH=path_to_PaddleClas:$PYTHONPATH
PaddleClas 提供模型训练与评估脚本:tools/train.py和tools/eval.py
### 2.1 模型训练
以flower102数据为例按如下方式启动模型训练,flower数据集准备请参考
[
数据集准备
](
./data.md
)
```
bash
# PaddleClas通过launch方式启动多卡多进程训练
# 通过设置FLAGS_selected_gpus 指定GPU运行卡号
python
-m
paddle.distributed.launch
\
--selected_gpus
=
"0,1,2,3"
\
--log_dir
=
log_ResNet50
\
--log_dir
=
log_ResNet50
_vd
\
tools/train.py
\
-c
./configs/
ResNet/ResNet50
.yaml
-c
./configs/
flower
.yaml
```
-
输出日志示例如下:
...
...
@@ -39,7 +42,7 @@ python -m paddle.distributed.launch \
--selected_gpus
=
"0,1,2,3"
\
--log_dir
=
log_ResNet50_vd
\
tools/train.py
\
-c
./configs/
ResNet/ResNet50_vd
.yaml
\
-c
./configs/
flower
.yaml
\
-o
use_mix
=
1
```
...
...
@@ -54,18 +57,40 @@ epoch:0 train step:522 loss:1.6330 lr:0.100000 elapse:0.210
### 2.3 模型微调
您可以通过如下命令进行模型微调,通过指定--pretrained_model参数加载预训练模型
以ResNet50_vd和ResNet50_vd_ssld预训练模型对flower102数据集进行微调
ResNet50_vd: 在ImageNet1k数据集上训练 top1 acc:79.1% 模型详细信息参考
[
模型库
](
https://paddleclas.readthedocs.io/zh_CN/latest/models/ResNet_and_vd.html
)
ResNet50_vd_ssld: 在ImageNet1k数据集训练的蒸馏模型 top1: 82.4% 模型详细信息参考
[
模型库
](
https://paddleclas.readthedocs.io/zh_CN/latest/models/ResNet_and_vd.html
)
flower数据集相关信息参考
[
数据文档
](
data.md
)
指定pretrained_model参数初始化预训练模型
ResNet50_vd:
```
bash
python
-m
paddle.distributed.launch
\
--selected_gpus
=
"0,1,2,3"
\
--log_dir
=
log_ResNet50_vd
\
train.py
\
-c
../configs/ResNet/ResNet50_vd.yaml
\
-o
pretrained_model
=
预训练模型路径
\
--selected_gpus
=
"0"
\
tools/train.py
\
-c
./configs/finetune/ResNet50_vd_finetune.yaml
-o
pretrained_model
=
ResNet50_vd预训练模型
```
ResNet50_vd_ssld:
```
bash
python
-m
paddle.distributed.launch
\
--selected_gpus
=
"0"
\
tools/train.py
\
-c
./configs/finetune/ResNet50_vd_ssld_finetune.yaml
-o
pretrained_model
=
ResNet50_vd_ssld预训练模型
```
在使用ResNet50_vd预训练模型对flower102数据进行模型微调后,top1 acc 达到 92.71%
在使用ResNet50_vd_ssld预训练模型对flower102数据进行模型微调后,top1 acc 达到94.96%
### 2.2 模型评估
```
bash
...
...
docs/zh_CN/tutorials/index.rst
浏览文件 @
6791753c
...
...
@@ -7,3 +7,4 @@
install.md
getting_started.md
config.md
data.md
docs/zh_CN/tutorials/install.md
浏览文件 @
6791753c
...
...
@@ -4,33 +4,43 @@
## 1.简介
本章将介绍如何安装PaddleClas及其依赖项,准备ImageNet1k图像分类数据集和下载预训练模型。
本章将介绍如何安装PaddleClas及其依赖项.
有关模型库的基本信息请参考
[
README
](
https://github.com/PaddlePaddle/PaddleClas/blob/master/README.md
)
## 2.安装PaddlePaddle
运行PaddleClas需要PaddlePaddle Fluid v1.7或更高版本。
请按照
[
安装文档
](
http://www.paddlepaddle.org.cn/install/quick
)
中的说明进行操作。
运行PaddleClas需要PaddlePaddle Fluid v1.7或更高版本。
使用以下命令进行验证。
pip安装最新GPU版本PaddlePaddle
```
bash
pip
install
paddlepaddle-gpu
--upgrade
```
# 在您的Python解释器中确认PaddlePaddle安装成功
>>> import paddle.fluid as fluid
>>> fluid.install_check.run_check()
# 确认PaddlePaddle版本
python -c "import paddle; print(paddle.__version__)"
或是从源码安装PaddlePaddle,具体参照
[
安装文档
](
http://www.paddlepaddle.org.cn/install/quick
)
中的说明进行操作。
使用以下命令验证
```
python
import
paddle.fluid
as
fluid
fluid
.
install_check
.
run_check
()
```
查看PaddlePaddle版本
```
bash
python
-c
"import paddle; print(paddle.__version__)"
```
注意:
-
从源码编译的PaddlePaddle版本号为0.0.0,请确保使用了Fluid v1.7之后的源码编译。
-
PaddleClas基于PaddlePaddle高性能的分布式训练能力,若您从源码编译,请确保打开编译选项,
**WITH_DISTRIBUTE=ON**
。
-
PaddleClas基于PaddlePaddle高性能的分布式训练能力,若您从源码编译,请确保打开编译选项,
**WITH_DISTRIBUTE=ON**
。具体编译选项参考
[
编译选项表
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/install/Tables.html#id3
)
**环境需求:**
**
运行
环境需求:**
-
Python2(官方已不提供更新维护)或Python3 (windows系统仅支持Python3)
-
CUDA >=
8
.0
-
CUDA >=
9
.0
-
cuDNN >= 5.0
-
nccl >= 2.1.2
...
...
@@ -53,40 +63,12 @@ pip install --upgrade -r requirements.txt
```
## 4.
下载ImageNet1K图像分类数据集
## 4.
数据集和预训练模型
PaddleClas默认支持ImageNet1000分类任务。
在Linux系统下通过如下方式进行数据准备:
```
cd dataset/ILSVRC2012/
sh download_imagenet2012.sh
```
在
```download_imagenet2012.sh```
脚本中,通过下面三步来准备数据:
PaddleClas加载PaddleClas/dataset/中数据进行训练,请参照
[
数据文档
](
./data.md
)
进行准备。
PaddleClas提供丰富的预训练模型,请参照
[
数据文档
](
./data.md
)
进行准备。
**步骤一:**
首先在
```image-net.org```
网站上完成注册,用于获得一对
```Username```
和
```AccessKey```
。
**步骤二:**
从ImageNet官网下载ImageNet-2012的图像数据。训练以及验证数据集会分别被下载到"train" 和 "val" 目录中。注意,ImageNet数据的大小超过140GB,下载非常耗时;已经自行下载ImageNet的用户可以直接将数据按"train" 和 "val" 目录放到
```dataset/ILSVRC2012```
。
## 5.开始使用
**步骤三:**
下载训练与验证集合对应的标签文件。
*
train_list.txt: ImageNet-2012训练集合的标签文件,每一行采用"空格"分隔图像路径与标注,例如:
```
train/n02483708/n02483708_2436.jpeg 369
```
*
val_list.txt: ImageNet-2012验证集合的标签文件,每一行采用"空格"分隔图像路径与标注,例如:
```
val/ILSVRC2012_val_00000001.jpeg 65
```
**Windows系统下请用户自行下载ImageNet数据,[label下载链接](http://paddle-imagenet-models.bj.bcebos.com/ImageNet_label.tgz)**
## 5.下载预训练模型
PaddleClas 提供了丰富的预训练模型,支持的模型列表请参考
[
模型库
](
../models/models_intro.md
)
。
通过tools/download.py可以下载所需要的预训练模型。
```
bash
python tools/download.py
-a
ResNet50_vd
-p
./pretrained
-d
True
```
请参照
[
开始使用
](
./getting_started.md
)
文档
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录