Flow_Fake_Demo / augmentations_clip.py
davjoython's picture
Upload 68 files
30a7879 verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the Apache License, Version 2.0
# found in the LICENSE file in the root directory of this source tree.
# import logging
from torchvision import transforms
import torch
import cv2
from PIL import Image
import numpy as np
from my_transforms import (
GaussianBlur,
make_normalize_transform,
make_normalize_transform_clip,
)
def add_gaussian_noise(tensor, mean=0.0, std=0.1):
noise = torch.randn(tensor.size()).cuda() * std + mean
return tensor + noise
class DataAugmentationCLIP(object):
def __init__(
self,
global_crops_scale,
local_crops_scale,
local_crops_number,
global_crops_size=224,
local_crops_size=96,
):
self.source_trans = transforms.Compose([
# transforms.RandomCrop(224),
# transforms.CenterCrop(224),
transforms.ToTensor(),
make_normalize_transform_clip(),
])
# self.crop = transforms.Compose([
# transforms.CenterCrop(224),
# ])
self.crop = transforms.Compose([
transforms.Resize(224), # 将短边缩放到 224,长边会按比例缩放
transforms.RandomCrop(224), # 然后裁剪到 224x224
])
self.centercrop = transforms.Compose([
transforms.CenterCrop(224),
])
self.randomcrop = transforms.Compose([
transforms.RandomCrop(224),
])
self.local_crops_number = local_crops_number
def __call__(self, image):
output = {}
output["source"] = []
if np.array(image).shape[0]<224 or np.array(image).shape[1]<224:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
else:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
for crops_image in crops_all:
output["source"].append(self.source_trans(crops_image)) #单独使用好一些
output["offsets"] = ()
return output
class DataAugmentationDINO(object):
def __init__(
self,
global_crops_scale,
local_crops_scale,
local_crops_number,
global_crops_size=224,
local_crops_size=96,
):
self.source_trans = transforms.Compose([
# transforms.RandomCrop(224),
# transforms.CenterCrop(224),
transforms.ToTensor(),
make_normalize_transform(),
])
# self.crop = transforms.Compose([
# transforms.CenterCrop(224),
# ])
self.crop = transforms.Compose([
transforms.Resize(224), # 将短边缩放到 224,长边会按比例缩放
transforms.CenterCrop(224), # 然后裁剪到 224x224
])
self.centercrop = transforms.Compose([
transforms.CenterCrop(224),
])
self.local_crops_number = local_crops_number
def __call__(self, image):
output = {}
output["source"] = []
if np.array(image).shape[0]<224 or np.array(image).shape[1]<224:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
else:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
for crops_image in crops_all:
output["source"].append(self.source_trans(crops_image)) #单独使用好一些
output["offsets"] = ()
return output
class DataAugmentationResNet_test(object):
def __init__(
self,
global_crops_scale,
local_crops_scale,
local_crops_number,
global_crops_size=224,
local_crops_size=96,
):
self.source_trans = transforms.Compose([
# transforms.RandomCrop(224),
# transforms.CenterCrop(224),
transforms.ToTensor(),
make_normalize_transform(),
])
# self.crop = transforms.Compose([
# transforms.CenterCrop(224),
# ])
self.crop = transforms.Compose([
transforms.Resize(224), # 将短边缩放到 224,长边会按比例缩放
transforms.CenterCrop(224), # 然后裁剪到 224x224
])
self.centercrop = transforms.Compose([
transforms.CenterCrop(224),
])
self.local_crops_number = local_crops_number
def __call__(self, image):
output = {}
output["source"] = []
if np.array(image).shape[0]<224 or np.array(image).shape[1]<224:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
else:
crops_all = [
self.centercrop(image) for _ in range(self.local_crops_number)
]
for crops_image in crops_all:
output["source"].append(self.source_trans(crops_image)) #单独使用好一些
output["offsets"] = ()
return output
class DataAugmentationCLIP_gen(object):
def __init__(
self,
global_crops_scale,
local_crops_scale,
local_crops_number,
global_crops_size=224,
local_crops_size=96,
):
self.source_trans = transforms.Compose([
# transforms.RandomCrop(224),
# transforms.CenterCrop(224),
transforms.ToTensor(),
make_normalize_transform_clip(),
])
# self.crop = transforms.Compose([
# transforms.RandomCrop(224),
# ])
self.crop = transforms.Compose([
transforms.Resize(224), # 将短边缩放到 224,长边会按比例缩放
transforms.CenterCrop(224), # 然后裁剪到 224x224
])
self.centercrop = transforms.Compose([
transforms.CenterCrop(224),
])
self.local_crops_number = local_crops_number
def __call__(self, image):
output = {}
output["source"] = []
# if np.array(image).shape[0]<224 or np.array(image).shape[1]<224:
# crops_all = [
# self.crop(self.centercrop(image)) for _ in range(self.local_crops_number)
# ]
# else:
crops_all = [
self.crop(image) for _ in range(self.local_crops_number)
]
for crops_image in crops_all:
output["source"].append(self.source_trans(crops_image)) #单独使用好一些
output["offsets"] = ()
return output