|
|
|
|
|
import cv2 |
|
import numpy as np |
|
from torchvision.transforms import transforms |
|
from torchvision.transforms.functional import to_tensor |
|
from transformers import CLIPProcessor |
|
|
|
from basicsr.utils import img2tensor |
|
|
|
|
|
class AddCannyFreezeThreshold(object): |
|
|
|
def __init__(self, low_threshold=100, high_threshold=200): |
|
self.low_threshold = low_threshold |
|
self.high_threshold = high_threshold |
|
|
|
def __call__(self, sample): |
|
|
|
x = sample['jpg'] |
|
img = cv2.cvtColor(np.array(x), cv2.COLOR_RGB2BGR) |
|
canny = cv2.Canny(img, self.low_threshold, self.high_threshold)[..., None] |
|
sample['canny'] = img2tensor(canny, bgr2rgb=True, float32=True) / 255. |
|
sample['jpg'] = to_tensor(x) |
|
return sample |
|
|
|
|
|
class AddCannyRandomThreshold(object): |
|
|
|
def __init__(self, low_threshold=100, high_threshold=200, shift_range=50): |
|
self.low_threshold = low_threshold |
|
self.high_threshold = high_threshold |
|
self.threshold_prng = np.random.RandomState() |
|
self.shift_range = shift_range |
|
|
|
def __call__(self, sample): |
|
|
|
x = sample['jpg'] |
|
img = cv2.cvtColor(np.array(x), cv2.COLOR_RGB2BGR) |
|
low_threshold = self.low_threshold + self.threshold_prng.randint(-self.shift_range, self.shift_range) |
|
high_threshold = self.high_threshold + self.threshold_prng.randint(-self.shift_range, self.shift_range) |
|
canny = cv2.Canny(img, low_threshold, high_threshold)[..., None] |
|
sample['canny'] = img2tensor(canny, bgr2rgb=True, float32=True) / 255. |
|
sample['jpg'] = to_tensor(x) |
|
return sample |
|
|
|
|
|
class AddStyle(object): |
|
|
|
def __init__(self, version): |
|
self.processor = CLIPProcessor.from_pretrained(version) |
|
self.pil_to_tensor = transforms.ToTensor() |
|
|
|
def __call__(self, sample): |
|
|
|
x = sample['jpg'] |
|
style = self.processor(images=x, return_tensors="pt")['pixel_values'][0] |
|
sample['style'] = style |
|
sample['jpg'] = to_tensor(x) |
|
return sample |
|
|