jev-aleks's picture
scenedino init
9e15541
import numpy as np
import torch
import matplotlib.pyplot as plt
def draw_bbox(im, size):
b, c, h, w = im.shape
h2, w2 = (h - size) // 2, (w - size) // 2
marker = np.tile(np.array([[1.0], [0.0], [0.0]]), (1, size))
marker = torch.FloatTensor(marker)
im[:, :, h2, w2 : w2 + size] = marker
im[:, :, h2 + size, w2 : w2 + size] = marker
im[:, :, h2 : h2 + size, w2] = marker
im[:, :, h2 : h2 + size, w2 + size] = marker
return im
def plot_image_grid(
images, rows, cols, directions=None, imsize=(2, 2), title=None, show=True
):
fig, axs = plt.subplots(
rows,
cols,
gridspec_kw={"wspace": 0, "hspace": 0},
squeeze=True,
figsize=(rows * imsize[0], cols * imsize[1]),
)
for i, image in enumerate(images):
axs[i % rows][i // rows].axis("off")
if directions is not None:
axs[i % rows][i // rows].arrow(
32,
32,
directions[i][0] * 16,
directions[i][1] * 16,
color="red",
length_includes_head=True,
head_width=2.0,
head_length=1.0,
)
axs[i % rows][i // rows].imshow(image, aspect="auto")
plt.subplots_adjust(hspace=0, wspace=0)
if title is not None:
fig.suptitle(title, fontsize=12)
if show:
plt.show()
return fig
def show_save(save_path, show=True, save=False):
if show:
plt.show()
if save:
plt.savefig(save_path)
def color_tensor(tensor: torch.Tensor, cmap, norm=False):
if norm:
tensor = (tensor - tensor.min()) / (tensor.max() - tensor.min())
map = plt.cm.get_cmap(cmap)
# tensor = torch.tensor(map(tensor.cpu().numpy()), device=tensor.device)[..., :3] ## default
tensor = torch.tensor(map(tensor.cpu().numpy()))[
..., :3
] ## This is when the input tensor is numpy array already
return tensor