PyTorch中通过Dataloader加载图片,使用十分方便。但当加载图片较多并且需要做较多变换时,加载的速度很慢,会出现加载数据过慢(即使已经使用了多个worker),GPU空闲等待数据加载的情况。这篇文章就和大家分享一下怎么给Dataloader提提速。
1、读取jpg图片加速
加载数据慢的一个很重要的原因的读取图片本身就比较慢,尤其是jpg图片解码更是耗时。如果你是读取jpg图片的话建议使用jpeg4py进行读取,只需要替换一行代码就搞定了。
具体的使用例子:
import jpeg4py as jpeg
import cv2
if __name__ == "__main__":
img_path = '1.jpg'
img = jpeg.JPEG(img_path).decode()
cv2.imshow('img', img)
cv2.waitKey(0)
解码出来的直接就是numpy数组,可以直接用opencv显示并进行相应的操作,但需要注意的是通道顺序是RGB,opencv默认的BGR。
自己在小数据上测试了一下,使用opencv读取一个epoch需要7.5s,使用jpeg4py只需要3~4s,提速了近一倍。
ajkxyz/jpeg4pygithub.com