【发布时间】:2019-02-21 01:09:23
【问题描述】:
我是深度学习的新手,想使用 Keras 实现一个简单的分类任务。我的数据集包含超过 2000 张图像,对于每张图像,我都有一个相应的 json 文件,其中包含该图像的标签。以下是加载 json 文件并创建 X(图像)和 Y(标签)数组的代码:
X = []
Y = []
with concurrent.futures.ProcessPoolExecutor() as executor:
# Get a list of files to process
str = jsonpath + '/*.json'
#print(str)
json_files = glob.glob(str)
for jsonfile,y in zip(json_files, executor.map(create_array, json_files)):
X.append(y[0])
Y.append(y[1])
其中函数create_array定义如下:
def create_array(jsonfile):
array_list = []
y_list = []
with open(jsonfile) as f:
data = json.load(f)
name = data['annotation']['data_filename']
img = cv2.imread(imgDIR + '/' + name)
array_list.append(img)
l = data['annotation']['data_annotation']['classification'][0]['classification_label']
y_list.append(l)
return array_list, y_list
它适用于少量图像,例如 15 张,但对于整个 2000 张图像集,程序会自动终止,或者有时会出现错误“MemoryError:内存不足”。 有没有一种有效的方法来做到这一点?如何加快此数据预处理部分的速度,以将其作为 keras 分类模型的输入?
【问题讨论】: