File size: 1,514 Bytes
a3a3ae4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import glob
import numpy as np
import random
from typing import Union

import cv2
import matplotlib.pyplot as plt
from PIL import Image
from PIL.Image import Image as PIL_image # for typing

from torchvision import transforms as pil_transforms
from torchvision.transforms import functional as F_pil
from opencv_transforms import transforms
from opencv_transforms import functional as F

from setup_testing_directory import get_testing_directory
from utils import L1

TOL = 1e-4

datadir = get_testing_directory()
train_images = glob.glob(datadir + '/**/*.JPEG', recursive=True)
train_images.sort()
print('Number of training images: {:,}'.format(len(train_images)))

random.seed(1)
imfile = random.choice(train_images)
pil_image = Image.open(imfile)
image = cv2.cvtColor(cv2.imread(imfile, 1), cv2.COLOR_BGR2RGB)


def test_resize():
    pil_resized = pil_transforms.Resize((224, 224))(pil_image)
    resized = transforms.Resize((224, 224))(image)
    l1 = L1(pil_resized, resized)
    assert l1 - 88.9559 < TOL

def test_rotation():
    random.seed(1)
    pil = pil_transforms.RandomRotation(10)(pil_image)
    random.seed(1)
    np_img = transforms.RandomRotation(10)(image)
    l1 = L1(pil, np_img)
    assert l1 - 86.7955 < TOL

def test_five_crop():
    pil = pil_transforms.FiveCrop((224, 224))(pil_image)
    cv = transforms.FiveCrop((224, 224))(image)
    pil_stacked = np.hstack([np.asarray(i) for i in pil])
    cv_stacked = np.hstack(cv)
    l1 = L1(pil_stacked, cv_stacked)
    assert l1 - 22.0444 < TOL