Spaces:
Running
on
Zero
Running
on
Zero
import os | |
import numpy as np | |
# import cv2 | |
from PIL import Image | |
from utils import paramUtil | |
import math | |
import time | |
import matplotlib.pyplot as plt | |
from scipy.ndimage import gaussian_filter | |
def mkdir(path): | |
if not os.path.exists(path): | |
os.makedirs(path) | |
COLORS = [[255, 0, 0], [255, 85, 0], [255, 170, 0], [255, 255, 0], [170, 255, 0], [85, 255, 0], [0, 255, 0], | |
[0, 255, 85], [0, 255, 170], [0, 255, 255], [0, 170, 255], [0, 85, 255], [0, 0, 255], [85, 0, 255], | |
[170, 0, 255], [255, 0, 255], [255, 0, 170], [255, 0, 85]] | |
MISSING_VALUE = -1 | |
def save_image(image_numpy, image_path): | |
img_pil = Image.fromarray(image_numpy) | |
img_pil.save(image_path) | |
def save_logfile(log_loss, save_path): | |
with open(save_path, 'wt') as f: | |
for k, v in log_loss.items(): | |
w_line = k | |
for digit in v: | |
w_line += ' %.3f' % digit | |
f.write(w_line + '\n') | |
def as_minutes(s): | |
m = math.floor(s / 60) | |
s -= m * 60 | |
return '%dm %ds' % (m, s) | |
# def print_current_loss(start_time, niter_state, losses, epoch=None, inner_iter=None): | |
def print_current_loss(accelerator,start_time, niter_state, losses, epoch=None, inner_iter=None): | |
def as_minutes(s): | |
m = math.floor(s / 60) | |
s -= m * 60 | |
return '%dm %ds' % (m, s) | |
def time_since(since, percent): | |
now = time.time() | |
s = now - since | |
es = s / percent | |
rs = es - s | |
return '%s (- %s)' % (as_minutes(s), as_minutes(rs)) | |
if epoch is not None: | |
# print('epoch: %3d niter: %6d inner_iter: %4d' % (epoch, niter_state, inner_iter), end=" ") | |
accelerator.print('epoch: %3d niter: %6d inner_iter: %4d' % (epoch, niter_state, inner_iter), end=" ") | |
now = time.time() | |
message = '%s'%(as_minutes(now - start_time)) | |
for k, v in losses.items(): | |
message += ' %s: %.4f ' % (k, v) | |
# print(message) | |
accelerator.print(message) | |
def compose_gif_img_list(img_list, fp_out, duration): | |
img, *imgs = [Image.fromarray(np.array(image)) for image in img_list] | |
img.save(fp=fp_out, format='GIF', append_images=imgs, optimize=False, | |
save_all=True, loop=0, duration=duration) | |
def save_images(visuals, image_path): | |
if not os.path.exists(image_path): | |
os.makedirs(image_path) | |
for i, (label, img_numpy) in enumerate(visuals.items()): | |
img_name = '%d_%s.jpg' % (i, label) | |
save_path = os.path.join(image_path, img_name) | |
save_image(img_numpy, save_path) | |
def save_images_test(visuals, image_path, from_name, to_name): | |
if not os.path.exists(image_path): | |
os.makedirs(image_path) | |
for i, (label, img_numpy) in enumerate(visuals.items()): | |
img_name = "%s_%s_%s" % (from_name, to_name, label) | |
save_path = os.path.join(image_path, img_name) | |
save_image(img_numpy, save_path) | |
def compose_and_save_img(img_list, save_dir, img_name, col=4, row=1, img_size=(256, 200)): | |
# print(col, row) | |
compose_img = compose_image(img_list, col, row, img_size) | |
if not os.path.exists(save_dir): | |
os.makedirs(save_dir) | |
img_path = os.path.join(save_dir, img_name) | |
# print(img_path) | |
compose_img.save(img_path) | |
def compose_image(img_list, col, row, img_size): | |
to_image = Image.new('RGB', (col * img_size[0], row * img_size[1])) | |
for y in range(0, row): | |
for x in range(0, col): | |
from_img = Image.fromarray(img_list[y * col + x]) | |
# print((x * img_size[0], y*img_size[1], | |
# (x + 1) * img_size[0], (y + 1) * img_size[1])) | |
paste_area = (x * img_size[0], y*img_size[1], | |
(x + 1) * img_size[0], (y + 1) * img_size[1]) | |
to_image.paste(from_img, paste_area) | |
# to_image[y*img_size[1]:(y + 1) * img_size[1], x * img_size[0] :(x + 1) * img_size[0]] = from_img | |
return to_image | |
def list_cut_average(ll, intervals): | |
if intervals == 1: | |
return ll | |
bins = math.ceil(len(ll) * 1.0 / intervals) | |
ll_new = [] | |
for i in range(bins): | |
l_low = intervals * i | |
l_high = l_low + intervals | |
l_high = l_high if l_high < len(ll) else len(ll) | |
ll_new.append(np.mean(ll[l_low:l_high])) | |
return ll_new | |
def motion_temporal_filter(motion, sigma=1): | |
motion = motion.reshape(motion.shape[0], -1) | |
# print(motion.shape) | |
for i in range(motion.shape[1]): | |
motion[:, i] = gaussian_filter(motion[:, i], sigma=sigma, mode="nearest") | |
return motion.reshape(motion.shape[0], -1, 3) | |