mirror of
https://github.com/Laurent2916/REVA-QCAV.git
synced 2024-11-08 22:42:02 +00:00
4c0f0a7a7b
Former-commit-id: ff1ac0936c118d129bc8a8014958948d3b3883be
66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
import random
|
|
|
|
import numpy as np
|
|
|
|
|
|
def hwc_to_chw(img):
|
|
return np.transpose(img, axes=[2, 0, 1])
|
|
|
|
|
|
def resize_and_crop(pilimg, scale=0.5, final_height=None):
|
|
w = pilimg.size[0]
|
|
h = pilimg.size[1]
|
|
newW = int(w * scale)
|
|
newH = int(h * scale)
|
|
|
|
if not final_height:
|
|
diff = 0
|
|
else:
|
|
diff = newH - final_height
|
|
|
|
img = pilimg.resize((newW, newH))
|
|
img = img.crop((0, diff // 2, newW, newH - diff // 2))
|
|
ar = np.array(img, dtype=np.float32)
|
|
if len(ar.shape) == 2:
|
|
# for greyscale images, add a new axis
|
|
ar = np.expand_dims(ar, axis=2)
|
|
return ar
|
|
|
|
def batch(iterable, batch_size):
|
|
"""Yields lists by batch"""
|
|
b = []
|
|
for i, t in enumerate(iterable):
|
|
b.append(t)
|
|
if (i + 1) % batch_size == 0:
|
|
yield b
|
|
b = []
|
|
|
|
if len(b) > 0:
|
|
yield b
|
|
|
|
|
|
def split_train_val(dataset, val_percent=0.05):
|
|
dataset = list(dataset)
|
|
length = len(dataset)
|
|
n = int(length * val_percent)
|
|
random.shuffle(dataset)
|
|
return {'train': dataset[:-n], 'val': dataset[-n:]}
|
|
|
|
|
|
def normalize(x):
|
|
return x / 255
|
|
|
|
|
|
# credits to https://stackoverflow.com/users/6076729/manuel-lagunas
|
|
def rle_encode(mask_image):
|
|
pixels = mask_image.flatten()
|
|
# We avoid issues with '1' at the start or end (at the corners of
|
|
# the original image) by setting those pixels to '0' explicitly.
|
|
# We do not expect these to be non-zero for an accurate mask,
|
|
# so this should not harm the score.
|
|
pixels[0] = 0
|
|
pixels[-1] = 0
|
|
runs = np.where(pixels[1:] != pixels[:-1])[0] + 2
|
|
runs[1::2] = runs[1::2] - runs[:-1:2]
|
|
return runs
|