File size: 2,795 Bytes
506da10 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# coding=utf-8
# Copyright 2021 The Deeplab2 Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""AutoAugment policy file.
This file contains found auto-augment policy.
Please cite or refer to the following papers for details:
- Ekin D Cubuk, Barret Zoph, Dandelion Mane, Vijay Vasudevan, and Quoc V Le.
"Autoaugment: Learning augmentation policies from data." In CVPR, 2019.
- Ekin D Cubuk, Barret Zoph, Jonathon Shlens, and Quoc V Le.
"Randaugment: Practical automated data augmentation with a reduced search
space." In CVPR, 2020.
"""
# Reduced augmentation operation space.
augmentation_reduced_operations = (
'AutoContrast', 'Equalize', 'Invert', 'Posterize',
'Solarize', 'Color', 'Contrast', 'Brightness', 'Sharpness')
augmentation_probabilities = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
def convert_policy(policy,
search_space=augmentation_reduced_operations,
probability_scale=1.0,
magnitude_scale=1):
"""Converts policy from a list of numbers."""
if len(policy) % 6:
raise ValueError('Policy length must be a multiple of 6.')
num_policies = len(policy) // 6
policy_list = [[] for _ in range(num_policies)]
for n in range(num_policies):
for i in range(2):
operation_id, prob_id, magnitude = (
policy[6 * n + i * 3 : 6 * n + (i + 1) * 3])
policy_name = search_space[operation_id]
policy_prob = (
augmentation_probabilities[prob_id] * probability_scale)
policy_list[n].append((policy_name,
policy_prob,
magnitude * magnitude_scale))
return policy_list
simple_classification_policy = [8, 2, 7, 7, 1, 10,
1, 0, 9, 6, 1, 10,
8, 1, 9, 5, 1, 9,
4, 1, 7, 1, 3, 9,
8, 1, 1, 1, 1, 7]
# All available policies.
available_policies = {
'simple_classification_policy_magnitude_scale_0.2': convert_policy(
simple_classification_policy,
augmentation_reduced_operations,
magnitude_scale=0.2),
'simple_classification_policy': convert_policy(
simple_classification_policy,
augmentation_reduced_operations,
magnitude_scale=1),
}
|