我正在使用python中的opencv2进行数据扩充。我正在使用的数据集包含大约4000张96x96单通道图像。
我正在使用一系列平移和缩放的仿射变换
cv2.warpAffine
。但是我注意到,随着代码遍历数据集,过程变得越来越慢。下面的旋转变换代码-我在每个图像上都调用它。
def augment_rotation(depth):
augment_rotate = []
rows,cols = depth.shape
for i in range(-180,181):
M = cv2.getRotationMatrix2D(((cols-1)/2.0,(rows-1)/2.0),i,1)
augment_rotate.append(cv2.warpAffine(depth,M,(cols,rows)))
return augment_rotate
这不限于我的计算机,因为我在其他计算机上尝试过并遇到相同的问题。任何想法如何解决这个问题或使其更快,这样我就不必等待数小时才能执行增强操作?
答案 0 :(得分:0)
我遇到了joblib
库内置的python。为此目的而设计。根据{{3}},joblib
帮助使用后端的multiprocessing
库并行执行循环。
文档说明了一个数值示例,用于并行执行一系列数字的简单数学运算。我能够将此功能扩展为处理图像。作为一个示例演示,我选择对我的桌面上的所有图像进行加权总和 和 without joblib
。
事实证明,对于14张总大小为58Mb的图像,我得到了以下信息:
('Using Joblib : ', 0.09400010108947754)
('Without Joblib : ', 15.386000156402588)
the documentation。我相信您也可以将其用于扩充!!
尝试一下,让我知道它的工作原理!