PILLOW
由PIL发展而来,PIL已经不更新了
pillow-simd
推荐安装avx2指令集,更快,查看cpu是否支持avx2指令集:
gcc -mavx2 -dM -E - < /dev/null | egrep “SSE|AVX” | sort
SCIKIT-IMAGE
由numpy和scipy发展而来,针对numpy数组操作
OPENCV
计算机视觉库,更底层
速度测试
测试pillow-simd,scikit-image,torchvision.transform(用的pillow)时间:
begin = time.time()
for i in range(100):
a = Image.open(img)
a = a.resize((120,160))
a = a.crop((0,0,100,100))
a = np.array(a, dtype=float)
a -= [100,100,100]
a /= [1,1,1]
a/=255
pil = time.time()
for j in range(100):
a = skimage.data.imread(img)
a = skimage.transform.resize(a, (120,160))
a = a[0:100,0:100,:]
a -= [100,100,100]
a /= [1,1,1]
a/=255
ski = time.time()
for k in range(100):
transform = transforms.Compose([
transforms.Scale((120,160)),
transforms.RandomSizedCrop(100),
transforms.ToTensor(),
transforms.Normalize((100/255,100/255,100/255), (0.2,0.2,0.2))
])
a = Image.open(img)
a = transform(a)
tra = time.time()
print(pil-begin)
print(ski-pil)
print(tra-ski)
结果
0.15108823776245117
0.5605413913726807
0.24411320686340332
推荐方案:
a = Image.open(img)
a = a.resize((120, 160), Image.NEAREST)
a = a.crop((0, 0, 100, 100))
a = np.array(a, dtype=float)
a = (a-[100, 100, 100])/[255, 255, 255]