Just as a followup modified the script for loading and comparing multiple images
Even for loading 19 images at once loading tensor greatly outperform other methods
from PIL import Image
import torch
import torchvision.transforms as transforms
import timeit
import cv2

K = 19

x = torch.zeros(3, 224, 224).uniform_(0, 1)
img = transforms.ToPILImage()(x)

for i in range(K):
	img.save(str(i) + ".png")


x = x.unsqueeze(0).expand(K,3,224,224)
torch.save(x, 'tensor_images.pth')

def loading1():
	torch.load('tensor_images.pth')

def loading2():
	for i in range(K):
		Image.open(str(i) + ".png")

def loading3():
	for i in range(K):
		cv2.imread(str(i) + ".png")


And the outputs
>>> timeit.timeit(loading1, number=100000)
14.435413494997192
>>> timeit.timeit(loading2, number=100000)
95.70677890698425