【发布时间】:2017-11-30 06:03:06
【问题描述】:
我有一个包含 100000 张图像的随机数据集。
我在同一个数据集上使用了以下代码,但处理速度非常慢(在 AWS GPU 实例中)。
import cv2
from progressbar import ProgressBar
pbar = ProgressBar()
def image_to_feature_vector(image, size=(128, 128)):
return cv2.resize(image, size).flatten()
imagePath = #path to dataset
data = []
#load images
for i in pbar(range(0,len(imagePath))):
image = cv2.imread(imagePath[i])
image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
features = image_to_feature_vector(image)
data.append(features)
如何提高处理速度?
【问题讨论】:
-
需要多长时间?
-
@ElisByberi 1 小时
-
~ 28 张图像/秒。你试过没有
ProgressBar()吗?也许它会更快! GPU 不会加速ProgressBar()! -
通常出于优化目的,您应该首先分析您的瓶颈是什么,然后尝试优化最慢的部分。使用profiler 找出哪个部分消耗后处理时间
-
你实际上需要在同一个输入上运行多少次?假设您保存结果,我的猜测只会是一次。如果是这样,优化它可能不是很有价值。最多您可能只想在较小的块上并行运行它,最后合并结果。