From 6f6df3c435574eda5b09f304aedcbdb76c1faec3 Mon Sep 17 00:00:00 2001 From: liyong Date: Wed, 16 Sep 2020 11:00:33 +0800 Subject: [PATCH] fix autoaug doc --- .../advanced_use/auto_augmentation.md | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/tutorials/source_zh_cn/advanced_use/auto_augmentation.md b/tutorials/source_zh_cn/advanced_use/auto_augmentation.md index 9a159b0529..806e4d1eae 100644 --- a/tutorials/source_zh_cn/advanced_use/auto_augmentation.md +++ b/tutorials/source_zh_cn/advanced_use/auto_augmentation.md @@ -1,6 +1,6 @@ # 自动数据增强 -`Linux` `Ascend` `GPU` `CPU` `中级` `高级` +`Linux` `Ascend` `GPU` `CPU` `中级` `高级` `数据准备` @@ -15,11 +15,12 @@ ## 概述 -AutoAugment是在一系列图像增强子策略的搜索空间中通过搜索算法找到适合特定数据集的图像增强方案,针对ImageNet数据集的数据增强增强策略包含25条子策略,每条子策略中包含两种变换,针对一个batch中的每张图像随机挑选一个子策略的组合,以预定的概率来决定是否执行子策略中的每种变换。 +自动数据增强(AutoAugment)[1]是在一系列图像增强子策略的搜索空间中,通过搜索算法找到适合特定数据集的图像增强方案。MindSpore的`c_transforms`模块提供了丰富的C++算子来实现AutoAugment,用户也可以自定义函数或者算子来实现。 +更多MindSpore算子的详细说明参见[API文档](https://www.mindspore.cn/api/zh-CN/master/api/python/mindspore/mindspore.dataset.vision.html)。 -MindSpore的`c_transforms`模块提供了丰富的c_vision++算子来实现AutoAugment,用户也可以自定义函数或者算子来实现。更多MindSpore算子的详细说明参见[API文档](https://www.mindspore.cn/api/zh-CN/master/api/python/mindspore/mindspore.dataset.vision.html)。 +MindSpore算子和AutoAugment中的算子的对应关系如下: -| AutoAugment增强算子 | MindSpore算子 |描述 | +| AutoAugment算子 | MindSpore算子 |描述 | |:-------------------:|:------|--------------| |shearX|RandomAffine|横向剪切| |shearY|RandomAffine|纵向剪切| @@ -36,10 +37,9 @@ MindSpore的`c_transforms`模块提供了丰富的c_vision++算子来实现AutoA |equalize|Equalize|均衡图像直方图| |invert|Invert|反转图像| -ImageNet数据集的增强策略定义如下: - +MindSpore算子实现AutoAugment算子的示例如下: ```python -# define autoAugment operators +# define AutoAugment operators PARAMETER_MAX = 10 @@ -98,6 +98,16 @@ def brightness_impl(level): v = float_parameter(level, 1.8) + 0.1 return c_vision.RandomColorAdjust(brightness=(v, v)) +``` + +## ImageNet自动数据增强 +本教程以在ImageNet数据集上实现AutoAugment作为示例。 + +针对ImageNet数据集的数据增强策略包含25条子策略,每条子策略中包含两种变换,针对一个batch中的每张图像随机挑选一个子策略的组合,以预定的概率来决定是否执行子策略中的每种变换。 + +ImageNet数据集的增强策略定义如下: + +```python # define AutoAugment policy imagenet_policy = [ [(posterize_impl(8), 0.4), (rotate_impl(9), 0.6)], @@ -129,22 +139,23 @@ imagenet_policy = [ [(c_vision.Invert(), 0.6), (c_vision.Equalize(), 1.0)], [(color_impl(4), 0.6), (contrast_impl(8), 1.0)], [(c_vision.Equalize(), 0.8), (c_vision.Equalize(), 0.6)], - ] + ] + ``` +用户可以使用MindSpore中`c_transforms`模块的`RandomSelectSubpolicy`接口来实现AutoAugment, +在ImageNet分类训练中标准的数据增强方式分以下几个步骤: -## ImageNet自动数据增强 +一. `RandomCropDecodeResize`:随机裁剪后进行解码。 -用户可以使用Mindspore提供的`RandomSelectSubpolicy`接口来实现自动数据增强, -在ImageNet分类训练中标准的数据增强方式分以下几个步骤: +二. `RandomHorizontalFlip`:水平方向上随机翻转。 + +三. `Normalize`:归一化。 -1. `RandomCropDecodeResize`:随机裁剪后进行解码。 -2. `RandomHorizontalFlip`:水平方向上随机翻转。 -3. `Normalize`:归一化。 -4. `HWC2CHW`:shape变换。 +四. `HWC2CHW`:shape变换。 -在步骤1后插入AutoAugment变换,如下所示: +在步骤一后插入AutoAugment变换,如下所示: -1. 引入mindspore数据增强模块。 +1. 引入MindSpore数据增强模块。 ```python import mindspore.common.dtype as mstype @@ -223,12 +234,12 @@ imagenet_policy = [ plt.show() ``` - >为了更好演示效果从数据集中只读取5张图片并且不进行`shuffle`,并且为了更好显示图片不进行`Normalize`和`HWC2CHW`操作。 + >为了更好演示效果,从数据集中只读取5张图片并且不进行`shuffle`且不进行`Normalize`和`HWC2CHW`操作。 - 运行结果可以看到,batch中每张图像的增强效果,X方向表示1个batch的5张图像,Y方向表示5个bacth。 ![augment](./images/auto_augmentation.png) + 运行结果可以看到,batch中每张图像的增强效果,X方向表示1个batch的5张图像,Y方向表示5个bacth。 ## 参考文献 [1] [AutoAugment: Learning Augmentation Policies from Data](https://arxiv.org/abs/1805.09501) -- Gitee