AutoAlbument是一种自动搜索数据最佳增强策略的工具。AutoAlbument是一种AutoML工具,它使用更快的自动增强算法从数据中学习图像增强策略。它使用户无需手动选择增强和调整其参数。简而言之,这个想法是使用一种类似GAN的架构,其中生成器对一些输入图像应用增强,鉴别器必须确定图像是否增强。此过程有助于找到将生成与原始图像相似的图像的增强策略。
AutoAlbument的实现是以Faster AutoAugment论文为理论的(Faster AutoAugment的论文可以参考以下链接),是albumentations-team既albumentations之外的又一个开源库。AutoAlbument支持图像分类和语义分割任务。AutoAlbument为模型涨点提供了新的思路,当模型性能无法再度提升时可以考虑使用AutoAlbument生成数据增强策略,让模型的性能再度上一个台阶。
AutoAlbument的源代码和问题追溯可在https://github.com/albumentations-team/autoalbument
AutoAlbument安装命令:
pip install -U albumentations
AutoAlbument的官网地址:How to use AutoAlbument - Albumentations Documentation
1、AutoAlbument的示例效果
使用AutoAlbument生成的数据扩充策略训练模型,可以使模型的精度再一次起飞,其有益的效果可以查看官网示例。
Classification任务的精度提升
Dataset | Baseline Top-1 Accuracy | AutoAlbument Top-1 Accuracy |
---|---|---|
CIFAR10 | 91.79 | 96.02 |
SVHN | 98.31 | 98.48 |
ImageNet | 73.27 | 75.17 |
Semantic segmentation任务的精度提升
Dataset | Baseline mIOU | AutoAlbument mIOU |
---|---|---|
Pascal VOC | 73.34 | 75.55 |
Cityscapes | 79.47 | 79.92 |
2、基本使用说明
1.您需要创建一个带有AutoAlbument参数的配置文件和一个Python文件,该文件为您的数据实现了自定义PyTorch数据集。
2.接下来,您需要将这些文件传递给AutoAlbument。AutoAlbunt将使用生成对抗网络来发现增强策略,然后创建包含这些策略的文件。
3.最后,您可以使用AutoAlbument从文件中加载增强策略,并在计算机视觉pipeline中使用它们。
在后面章节将会详细描述AutoAlbument的使用流程
3、定义数据加载器和配置文件
3.1 创建包含配置文件的目录
命令: autoalbument-create --config-dir </path/to/directory> --task <deep_learning_task> --num-classes <num_classes>
,
示例:autoalbument-create --config-dir ~/experiments/autoalbument-search-cifar10 --task classification --num-classes 10
.
--config-dir
选项的值为目录。AutoAlbument将创建此目录并将两个文件(dataset.py和search.yaml)放入其中。search.yaml中--task的值应该包含深度学习任务的名称。支持的task类型是classification
和semantic_segmentation,--num-classes选项的值应包含分类或分段数据集中不同类的数量。
默认情况下,AutoAlbument会创建search.yaml
,
只包含最重要的配置参数的文件。要探索所有可用的参数,您可以创建一个配置文件,通过提供--generate-full-config参数,例如。autoalbument-create --config-dir ~/experiments/autoalbument-search-cifar10 --task classification --num-classes 10
--generate-full-config
3.2 配置dataset.py的详细内容
在步骤2.1中 autoalbument-create创建的dataset.py文件中,并不包含加载数据的详情,因此需要补充__len__,__getitem__两个方法的具体实现方式。
分类任务的数据集应返回图像和类标签。分割任务的数据集应返回图像和相关掩码。
3.3 调整search.yaml的参数
您可能需要更改AutoAlbument将用于搜索扩充策略的参数。为此,您需要编辑search.yaml(文件被autoalbument-create创建于步骤2.1)。每个配置参数都包含一个说明设置含义的注释。请参阅“优化搜索参数”部分,其中包含对最关键参数的描述。
4、使用AutoAlbument搜索扩充策略
运行: autoalbument-search --config-dir </path/to/directory>
, 即可搜索扩充策略
示例: autoalbument-search --config-dir ~/experiments/autoalbument-search-cifar10
.
--config-dir
的值应该和 autoalbument-create 在步骤2.1创建的一样
autoalbument-search
将会创建输出目录 (目录格式为 <config_dir>/outputs/<current_date>/<current_time>
, 我们可以在 search.yaml指定输出目录的格式)。这个目录将包含在每个搜索阶段的epoch中找到的策略(保存为JSON文件)。
autoalbument-search
是一个被 来自于Hydra的@hydra.main
包裹修饰的命令行参数,调用此命令时,可以使用Hydra的所有功能。
AutoAlbument使用Pythorch搜索扩充策略。您可以使用支持CUDA的GPU来加速搜索。
5、使用策略进行扩充
AutoAlbument 生成的JSON 包含数据扩充策略,可以使用Albumentations加载策略
import albumentations as A
transform = A.load("/path/to/policy.json")
例如,要为分类任务扩充图像:
transformed = transform(image=image)
transformed_image = transformed["image"]
要为语义分割任务扩充图像和掩码,请执行以下操作:
transformed = transform(image=image, mask=mask)
transformed_image = transformed["image"]
transformed_mask = transformed["mask"]
本文绝大部分内容参考自How to use AutoAlbument - Albumentations Documentation