AMontiB
Your original commit message (now includes LFS pointer)
9c4b1c4
raw
history blame
4.74 kB
'''
Copyright 2024 Image Processing Research Group of University Federico
II of Naples ('GRIP-UNINA'). All rights reserved.
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.
'''
import torchvision.transforms.v2 as Tv2
def make_processing(opt):
opt = parse_arguments(opt)
transforms_list = list() # list of transforms
if opt.task == 'train':
transforms_aug = make_aug(opt) # make data-augmentation transforms
if transforms_aug is not None:
transforms_list.append(transforms_aug)
transforms_post = make_post(opt) # make post-data-augmentation transforms
if transforms_post is not None:
transforms_list.append(transforms_post)
transforms_list.append(make_normalize(opt)) # make normalization
t = Tv2.Compose(transforms_list)
return t
def add_processing_arguments(parser):
# parser is an argparse.ArgumentParser
#
# ICASSP2023: --cropSize 96 --loadSize -1 --resizeSize -1 --norm_type resnet --resize_prob 0.2 --jitter_prob 0.8 --colordist_prob 0.2 --cutout_prob 0.2 --noise_prob 0.2 --blur_prob 0.5 --cmp_prob 0.5 --rot90_prob 1.0 --hpf_prob 0.0 --blur_sig 0.0,3.0 --cmp_method cv2,pil --cmp_qual 30,100 --resize_size 256 --resize_ratio 0.75
# ICME2021 : --cropSize 96 --loadSize -1 --resizeSize -1 --norm_type resnet --resize_prob 0.0 --jitter_prob 0.0 --colordist_prob 0.0 --cutout_prob 0.0 --noise_prob 0.0 --blur_prob 0.5 --cmp_prob 0.5 --rot90_prob 1.0 --hpf_prob 0.0 --blur_sig 0.0,3.0 --cmp_method cv2,pil --cmp_qual 30,100
#
parser.add_argument("--resizeSize", type=int, default=224, help="scale images to this size post augumentation")
# data-augmentation probabilities
parser.add_argument("--resize_prob", type=float, default=0.0)
parser.add_argument("--cmp_prob", type=float, default=0.0)
# data-augmentation parameters
parser.add_argument("--cmp_qual", default="75")
parser.add_argument("--resize_size", type=int, default=256)
parser.add_argument("--resize_ratio", type=float, default=1.0)
# other
parser.add_argument("--norm_type", type=str, default="clip")
return parser
def parse_arguments(opt):
if not isinstance(opt.cmp_qual, list):
opt.cmp_qual = [int(s) for s in opt.cmp_qual.split(",")]
return opt
def make_post(opt):
transforms_list = list()
if opt.resizeSize > 0:
print("\nUsing Post Resizing\n")
transforms_list.append(Tv2.Resize(opt.resizeSize, interpolation=Tv2.InterpolationMode.BICUBIC))
transforms_list.append(Tv2.CenterCrop((opt.resizeSize, opt.resizeSize)))
if len(transforms_list) == 0:
return None
else:
return Tv2.Compose(transforms_list)
def make_aug(opt):
# AUG
transforms_list_aug = list()
if (opt.resize_size > 0) and (opt.resize_prob > 0): # opt.resized_ratio
transforms_list_aug.append(
Tv2.RandomApply(
[
Tv2.RandomResizedCrop(
size=opt.resize_size,
scale=(5/8, 1.0),
ratio=(opt.resize_ratio, 1.0 / opt.resize_ratio),
)
],
opt.resize_prob,
)
)
if opt.cmp_prob > 0:
transforms_list_aug.append(
Tv2.RandomApply(
[
Tv2.JPEG(
opt.cmp_qual
)
],
opt.cmp_prob,
)
)
if len(transforms_list_aug) > 0:
return Tv2.Compose(transforms_list_aug)
else:
return None
def make_normalize(opt):
transforms_list = list()
if opt.norm_type == "clip":
print("normalize CLIP")
transforms_list.append(Tv2.ToTensor())
transforms_list.append(
Tv2.Normalize(
mean=(0.48145466, 0.4578275, 0.40821073),
std=(0.26862954, 0.26130258, 0.27577711),
)
)
else:
assert False
return Tv2.Compose(transforms_list)