我有一个功能,比较图像从同一个文件夹,对自己-与输出的相似性预测。该函数在python中运行良好,但我想利用pyspark parellelisation的功能。
在这里,我通过简单地并行化列表来使用Spark。把它变成RDD。
img_list = sc.parallelize(os.listdir(folder_dir))
f_img_list = img_list.filter(lambda f: f.endswith('.jpg') or f.endswith('.png'))
定义函数:
def compare_images(x1,x2):
#Preprocess images
img_array1 = preprocess_image2(x1)
img_array2 = preprocess_image2(x2)
pred = compare(img_array1 , img_array2)
return pred
在这一点上,我想应用RDD上的操作,并要求文件夹中的图像不应与其自身进行比较。
我的尝试是使用“Map”,但我不确定如何做到这一点。下面是我的尝试,但只假设一个参数:
prediction = f_img_list.map(compare_images)
prediction.collect()
我也知道,我的尝试不包括图像不应相互比较的要求-协助也将不胜感激。
1条答案
按热度按时间xytpbqjk1#
您可以创建一个不同图像文件名对的列表,然后并行化该列表,还可以修改compare_images函数以接受单个参数而不是两个参数。
edit:让我们尝试使用RDD的filter方法来过滤掉以'.jpg'或'.png'结尾的文件