TypeError:无法pickle cv2.xfeatures2d_SIFT对象(在使用joblib.Parallel期间发生)

时间:2018-05-31 01:03:26

标签: python parallel-processing joblib

我正在尝试将我的代码转换为并行代码,并将joblib.Parallel用于此目的。我在功能计算阶段得到了上述错误。这是我的代码。

from utils import FeatureGetter
#some code

Class model:
#initialize

def getDescriptors(image):
    descriptors = self.feature_getter.get_features(image)
    return descriptors

def train():
#some code
    self.feature_getter = FeatureGetter()
    descriptors_list = Parallel(n_jobs=-1)(delayed(self.getDescriptors)(image) for image in self.X_train)

完成错误日志

Traceback (most recent call last):
  File "test_parallel.py", line 375, in <module>
    bow.trainModel()
  File "test_parallel.py", line 144, in trainModel
    self.desc_list = Parallel(n_jobs=-1)(delayed(self.getDescriptors)(image) for image in self.X_train)
  File "/home/vamsi.muthireddy/miniconda3/lib/python3.6/site-packages/joblib/parallel.py", line 779, in __call__
    while self.dispatch_one_batch(iterator):
  File "/home/vamsi.muthireddy/miniconda3/lib/python3.6/site-packages/joblib/parallel.py", line 620, in dispatch_one_batch
    tasks = BatchedCalls(itertools.islice(iterator, batch_size))
  File "/home/vamsi.muthireddy/miniconda3/lib/python3.6/site-packages/joblib/parallel.py", line 127, in __init__
    self.items = list(iterator_slice)
  File "test_parallel.py", line 144, in <genexpr>
    self.desc_list = Parallel(n_jobs=-1)(delayed(self.getDescriptors)(image) for image in self.X_train)
  File "/home/vamsi.muthireddy/miniconda3/lib/python3.6/site-packages/joblib/parallel.py", line 183, in delayed
    pickle.dumps(function)
TypeError: can't pickle cv2.xfeatures2d_SIFT objects

0 个答案:

没有答案