Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
d2l-zh
提交
dfc7e29f
D
d2l-zh
项目概览
OpenDocCN
/
d2l-zh
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
dfc7e29f
编写于
11月 18, 2017
作者:
A
Aston Zhang
提交者:
Mu Li
11月 17, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zeng qiang -> zeng guang (#103)
上级
f4d884d6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
17 deletion
+17
-17
chapter_computer-vision/image-augmentation.md
chapter_computer-vision/image-augmentation.md
+15
-15
chapter_computer-vision/kaggle-gluon-cifar10.md
chapter_computer-vision/kaggle-gluon-cifar10.md
+1
-1
chapter_computer-vision/kaggle-gluon-dog.md
chapter_computer-vision/kaggle-gluon-dog.md
+1
-1
未找到文件。
chapter_computer-vision/image-augmentation.md
浏览文件 @
dfc7e29f
# 图片增
强
# 图片增
广
AlexNet当年能取得巨大的成功,其中图片增
强功不可没。图片增强通过一系列的随机变化生成大量“新”的样本,从而减低过拟合的可能。现在在深度卷积神经网络训练中,图片增强
是必不可少的一部分。
AlexNet当年能取得巨大的成功,其中图片增
广功不可没。图片增广通过一系列的随机变化生成大量“新”的样本,从而减低过拟合的可能。现在在深度卷积神经网络训练中,图片增广
是必不可少的一部分。
## 常用增
强
方法
## 常用增
广
方法
我们首先读取一张$400
\t
imes 500$的图片作为样例
...
...
@@ -15,7 +15,7 @@ img = image.imdecode(open('../img/cat1.jpg', 'rb').read())
plt.imshow(img.asnumpy())
```
接下来我们定义一个辅助函数,给定输入图片
`img`
的增
强
方法
`aug`
,它会运行多次并画出结果。
接下来我们定义一个辅助函数,给定输入图片
`img`
的增
广
方法
`aug`
,它会运行多次并画出结果。
```
{.python .input n=2}
from mxnet import nd
...
...
@@ -36,7 +36,7 @@ def apply(img, aug, n=3):
### 变形
水平方向翻转图片是最早也是最广泛使用的一种增
强
。
水平方向翻转图片是最早也是最广泛使用的一种增
广
。
```
{.python .input n=3}
# 以.5的概率做翻转
...
...
@@ -44,7 +44,7 @@ aug = image.HorizontalFlipAug(.5)
apply(img, aug)
```
样例图片里我们关心的猫在图片正中间,但一般情况下可能不是这样。前面我们提到池化层能弱化卷积层对目标位置的敏感度,但也不能完全解决这个问题。一个常用增
强
方法是随机的截取其中的一块。
样例图片里我们关心的猫在图片正中间,但一般情况下可能不是这样。前面我们提到池化层能弱化卷积层对目标位置的敏感度,但也不能完全解决这个问题。一个常用增
广
方法是随机的截取其中的一块。
注意到随机截取一般会缩小输入的形状。如果原始输入图片过小,导致没有太多空间进行随机裁剪,通常做法是先将其放大的足够大的尺寸。所以如果你的原始图片足够大,建议不要事先将它们裁到网络需要的大小。
...
...
@@ -81,13 +81,13 @@ apply(img, aug)
## 如何使用
通常使用时我们会将数个增
强方法一起使用。注意到图片增强
通常只是针对训练数据,对于测试数据则用得较小。后者常用的是做5次随机剪裁,然后讲5张图片的预测结果做均值。
通常使用时我们会将数个增
广方法一起使用。注意到图片增广
通常只是针对训练数据,对于测试数据则用得较小。后者常用的是做5次随机剪裁,然后讲5张图片的预测结果做均值。
下面我们使用CIFAR10来演示图片增
强对训练的影响。我们这里不使用前面一直用的FashionMNIST,这是因为这个数据的图片基本已经对齐好了,而且是黑白图片,所以不管是变形还是变色增强
效果都不会明显。
下面我们使用CIFAR10来演示图片增
广对训练的影响。我们这里不使用前面一直用的FashionMNIST,这是因为这个数据的图片基本已经对齐好了,而且是黑白图片,所以不管是变形还是变色增广
效果都不会明显。
### 数据读取
我们首先定义一个辅助函数可以对图片按顺序应用数个增
强
:
我们首先定义一个辅助函数可以对图片按顺序应用数个增
广
:
```
{.python .input n=8}
def apply_aug_list(img, augs):
...
...
@@ -109,7 +109,7 @@ test_augs = [
]
```
然后定义数据读取,这里跟前面的FashionMNIST类似,但在
`transform`
中加入了图片增
强
:
然后定义数据读取,这里跟前面的FashionMNIST类似,但在
`transform`
中加入了图片增
广
:
```
{.python .input n=10}
from mxnet import gluon
...
...
@@ -179,27 +179,27 @@ def train(train_augs, test_augs, learning_rate=.1):
train_data, test_data, net, loss, trainer, ctx, num_epochs)
```
使用增
强
:
使用增
广
:
```
{.python .input n=14}
train(train_augs, test_augs)
```
不使用增
强
:
不使用增
广
:
```
{.python .input n=15}
train(test_augs, test_augs)
```
可以看到使用增
强
后,训练精度提升更慢,但测试精度比不使用更好。
可以看到使用增
广
后,训练精度提升更慢,但测试精度比不使用更好。
## 总结
图片增
强
可以有效避免过拟合。
图片增
广
可以有效避免过拟合。
## 练习
尝试换不同的增
强
方法试试。
尝试换不同的增
广
方法试试。
**吐槽和讨论欢迎点**
[
这里
](
https://discuss.gluon.ai/t/topic/1666
)
chapter_computer-vision/kaggle-gluon-cifar10.md
浏览文件 @
dfc7e29f
...
...
@@ -141,7 +141,7 @@ reorg_cifar10_data(data_dir, label_file, train_dir, test_dir, input_dir, valid_r
## 使用Gluon读取整理后的数据集
为避免过拟合,我们在这里使用
`image.CreateAugmenter`
来
加强
数据集。例如我们设
`rand_mirror=True`
即可随机对每张图片做镜面反转。我们也通过
`mean`
和
`std`
对彩色图像RGB三个通道分别做
[
标准化
](
../chapter_supervised-learning/kaggle-gluon-kfold.md
)
。以下我们列举了该函数里的所有参数,这些参数都是可以调的。
为避免过拟合,我们在这里使用
`image.CreateAugmenter`
来
增广
数据集。例如我们设
`rand_mirror=True`
即可随机对每张图片做镜面反转。我们也通过
`mean`
和
`std`
对彩色图像RGB三个通道分别做
[
标准化
](
../chapter_supervised-learning/kaggle-gluon-kfold.md
)
。以下我们列举了该函数里的所有参数,这些参数都是可以调的。
```
{.python .input n=4}
from mxnet import autograd
...
...
chapter_computer-vision/kaggle-gluon-dog.md
浏览文件 @
dfc7e29f
...
...
@@ -137,7 +137,7 @@ else:
## 使用Gluon读取整理后的数据集
为避免过拟合,我们在这里使用
`image.CreateAugmenter`
来
加强
数据集。例如我们设
`rand_mirror=True`
即可随机对每张图片做镜面反转。以下我们列举了该函数里的所有参数,这些参数都是可以调的。
为避免过拟合,我们在这里使用
`image.CreateAugmenter`
来
增广
数据集。例如我们设
`rand_mirror=True`
即可随机对每张图片做镜面反转。以下我们列举了该函数里的所有参数,这些参数都是可以调的。
```
{.python .input n=4}
from mxnet import autograd
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录