Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
a6479370
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a6479370
编写于
6月 03, 2020
作者:
F
FlyingQianMM
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add background training in docs
上级
aca532c6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
138 addition
and
2 deletion
+138
-2
docs/apis/datasets/detection.md
docs/apis/datasets/detection.md
+33
-2
docs/index.rst
docs/index.rst
+1
-0
docs/tuning_strategy.md
docs/tuning_strategy.md
+104
-0
未找到文件。
docs/apis/datasets/detection.md
浏览文件 @
a6479370
...
...
@@ -8,7 +8,7 @@ paddlex.datasets.VOCDetection(data_dir, file_list, label_list, transforms=None,
> 仅用于**目标检测**。读取PascalVOC格式的检测数据集,并对样本进行相应的处理。PascalVOC数据集格式的介绍可查看文档:[数据集格式说明](../datasets.md)
> 示例:[代码文件](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/detection/yolov3_
mobilenetv1
.py#L29)
> 示例:[代码文件](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/detection/yolov3_
darknet53
.py#L29)
> **参数**
...
...
@@ -21,6 +21,16 @@ paddlex.datasets.VOCDetection(data_dir, file_list, label_list, transforms=None,
> > * **parallel_method** (str): 数据集中样本在预处理过程中并行处理的方式,支持'thread'线程和'process'进程两种方式。默认为'process'(Windows和Mac下会强制使用thread,该参数无效)。
> > * **shuffle** (bool): 是否需要对数据集中样本打乱顺序。默认为False。
> 【可选】支持在训练过程中加入无目标真值的背景图片来减少背景误检,定义VOCDetection类后调用其成员函数`append_backgrounds`添加背景图片即可:
> ```
> append_backgrounds(image_dir)
> ```
> > 示例:[代码](../../tuning_strategy.html#id2)
> > **参数**
> > > * **image_dir** (str): 背景图片所在的目录路径。
## CocoDetection类
```
...
...
@@ -41,6 +51,16 @@ paddlex.datasets.CocoDetection(data_dir, ann_file, transforms=None, num_workers=
> > * **parallel_method** (str): 数据集中样本在预处理过程中并行处理的方式,支持'thread'线程和'process'进程两种方式。默认为'process'(Windows和Mac下会强制使用thread,该参数无效)。
> > * **shuffle** (bool): 是否需要对数据集中样本打乱顺序。默认为False。
> 【可选】支持在训练过程中加入无目标真值的背景图片来减少背景误检,定义CocoDetection类后调用其成员函数`append_backgrounds`添加背景图片即可:
> ```
> append_backgrounds(image_dir)
> ```
> > 示例:[代码](../../tuning_strategy.html#id2)
> > **参数**
> > > * **image_dir** (str): 背景图片所在的目录路径。
## EasyDataDet类
```
...
...
@@ -59,5 +79,16 @@ paddlex.datasets.EasyDataDet(data_dir, file_list, label_list, transforms=None, n
> > * **num_workers** (int|str):数据集中样本在预处理过程中的线程或进程数。默认为'auto'。当设为'auto'时,根据系统的实际CPU核数设置`num_workers`: 如果CPU核数的一半大于8,则`num_workers`为8,否则为CPU核数的一半。
> > * **buffer_size** (int): 数据集中样本在预处理过程中队列的缓存长度,以样本数为单位。默认为100。
> > * **parallel_method** (str): 数据集中样本在预处理过程中并行处理的方式,支持'thread'线程和'process'进程两种方式。默认为'process'(Windows和Mac下会强制使用thread,该参数无效)。
> > * **shuffle** (bool): 是否需要对数据集中样本打乱顺序。默认为False。
> > * **shuffle** (bool): 是否需要对数据集中样本打乱顺序。默认为False。
> 【可选】支持在训练过程中加入无目标真值的背景图片来减少背景误检,定义EasyDataDet类后调用其成员函数`append_backgrounds`添加背景图片即可:
> ```
> append_backgrounds(image_dir)
> ```
> > 示例:[代码](../../tuning_strategy.html#id2)
> > **参数**
> > > * **image_dir** (str): 背景图片所在的目录路径。
docs/index.rst
浏览文件 @
a6479370
...
...
@@ -26,6 +26,7 @@ PaddleX是基于飞桨核心框架、开发套件和工具组件的深度学习
cv_solutions.md
apis/index.rst
paddlex_gui/index.rst
tuning_strategy.md
update.md
FAQ.md
appendix/index.rst
...
...
docs/tuning_strategy.md
0 → 100644
浏览文件 @
a6479370
# PaddleX调优策略介绍
## 目标检测
### 空背景训练
在背景和目标相似的场景下,模型容易把背景误检成目标,此时可以采用空背景训练策略降低误检率,即在训练过程中把无目标真值的图片加入训练。接下来以X光违禁品检测为例,说明空背景训练策略对减少误检的有效性。
X光违禁品数据集介绍:
> * 检测铁壳打火机、黑钉打火机 、刀具、电源和电池、剪刀5种违禁品。
> * 训练集有883张违禁品图片,验证集有98张违禁品图片。
> * 无违禁品的X光图片有2540张。
**(1) 基准模型**
使用FasterRCNN-ResNet50作为检测模型,除了水平翻转外没有使用其他的数据增强方式,只使用违禁品训练集进行训练。模型在违禁品验证集上的精度见表1,mmAP有45.8%,mAP达到83%。
表1 基准模型和空背景训练后的模型在违禁品验证集上
**框级别精度**
对比
||mmAP(AP@IoU=0.5:0.95)| mAP (AP@IoU=0.5)|
|:---|:---|:---|
|基准模型 | 45.8% | 83% |
|空背景训练后的模型 | 49.4% | 83.1% |
**(2) 空背景训练后的模型**
把无违禁品的X光图片按1:1分成无违禁品训练集和无违禁品验证集。我们将基准模型在无违禁品验证集进行测试,发现图片级别的误检率高达55.27%。为了降低该误检率,将基准模型在无违禁品训练集进行测试,挑选出被误检图片共663张,将这663张图片加入训练,训练参数配置与基准模型训练时一致。
空背景训练后的模型在违禁品验证集上的精度见表1,mmAP有49.4%,mAP达到83.1%。与基准模型相比,
**mmAP有3.6%的提升,mAP有0.1%的提升**
。空背景训练后的模型在无违禁品验证集的误检率仅有5.58%,与基准模型相比,
**误检率降低了49.68%**
。
此外,还测试了两个模型在有违禁品验证集上图片级别的召回率,见表2,与基准模型相比,空背景训练后的模型仅漏检了1张图片,召回率几乎是无损的。
表2 基准模型和空背景训练后的模型在违禁品验证集上
**图片级别的召回率**
、无违禁品上
**图片级别的误检率**
对比
||违禁品图片级别的召回率| 无违禁品图片级别的误检率|
|:---|:--------------------|:------------------------|
|基准模型 | 98.97% | 55.27% |
|空背景训练后的模型 | 97.75% | 5.59% |
【解释】图片级别的召回率:只要在有目标的图片上检测出目标(不论框的个数),该图片被认为召回。批量有目标图片中被召回图片所占的比例,即为图片级别的召回率。
【解释】图片级别的误检率:只要在无目标的图片上检测出目标(不论框的个数),该图片被认为误检。批量无目标图片中被误检图片所占的比例,即为图片级别的误检率。
空背景训练代码示例:
```
import
os
os
.
environ
[
'CUDA_VISIBLE_DEVICES'
]
=
'0'
from
paddlex
.
det
import
transforms
import
paddlex
as
pdx
#
定义训练和验证时的
transforms
train_transforms
=
transforms
.
Compose
([
transforms
.
RandomHorizontalFlip
(),
transforms
.
Normalize
(),
transforms
.
ResizeByShort
(
short_size
=
600
,
max_size
=
1000
),
transforms
.
Padding
(
coarsest_stride
=
32
)
])
eval_transforms
=
transforms
.
Compose
([
transforms
.
Normalize
(),
transforms
.
ResizeByShort
(
short_size
=
600
,
max_size
=
1000
),
transforms
.
Padding
(
coarsest_stride
=
32
),
])
#
定义训练所用的数据集
train_dataset
=
pdx
.
datasets
.
CocoDetection
(
data_dir
=
'jinnan2_round1_train_20190305/restricted/'
,
ann_file
=
'jinnan2_round1_train_20190305/train.json'
,
transforms
=
train_transforms
,
shuffle
=
True
,
num_workers
=
2
)
#
训练集中加入无目标背景图片
train_dataset
.
append_backgrounds
(
'jinnan2_round1_train_20190305/normal_train_back/'
)
#
定义验证所用的数据集
eval_dataset
=
pdx
.
datasets
.
CocoDetection
(
data_dir
=
'jinnan2_round1_train_20190305/restricted/'
,
ann_file
=
'jinnan2_round1_train_20190305/val.json'
,
transforms
=
eval_transforms
,
num_workers
=
2
)
#
初始化模型,并进行训练
model
=
pdx
.
det
.
FasterRCNN
(
num_classes
=
len
(
train_dataset
.
labels
)
+
1
)
model
.
train
(
num_epochs
=
17
,
train_dataset
=
train_dataset
,
eval_dataset
=
eval_dataset
,
train_batch_size
=
8
,
learning_rate
=
0.01
,
lr_decay_epochs
=[
13
,
16
])
```
## 实例分割
### 空背景训练
实例分割中空背景训练使用方式与目标检测一致,请参考目标检测空背景训练代码示例。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录