torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍
Posted MarToony|名角
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍相关的知识,希望对你有一定的参考价值。
图片数据集中的图片之间的大小存在差异;希望进行预resize处理,但是纠结于以下三者的处理效率差异:
- 使用opencv中的resize;
- torchvison中的resize;
- tf.image.resize。
因此做了以下的实验,最终发现torchvision+PIL的方式似乎更胜一筹;
from torchvision import transforms
import tensorflow as tf
import cv2
import time
imgpath = "/home/night/PycharmProjects/wangyan/wyhaha/train_dataset/original/Gramian Angular Field/Beef/test_data_0.png"
start = time.time()
img = cv2.imread(imgpath)
resized = cv2.resize(img, (512, 512))
print("time::.4".format((time.time() - start) * 1000))
img = Image.open(imgpath).convert('RGB')
img = transforms.Resize([512, 512])(img) # 输入必须要求时Image
start = time.time()
print("time::.4".format((time.time() - start) * 1000))
img = Image.open(imgpath).convert('RGB')
img = tf.image.resize(img, [512, 512])
start = time.time()
print("time::.4".format((time.time() - start) * 1000))
# ============================================
time:7.104
time:0.0009537
time:0.002623
容易看出,torchvision的方式要快opencv近7000倍;
(之所以没有等到在__getitem___中进行transform,是因为希望将这些图片统一shape以转化为张量数据;但是确实,实际应用场景中,不适合在读取之后就进行一次resize,是不合理且会失去很多图像信息的。)
以上是关于torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍的主要内容,如果未能解决你的问题,请参考以下文章
极智AI | OpenCV and torchvision.transforms 实现图像等比例缩放方法
MNIST、torchvision 中的输出和广播形状不匹配