在keras中制作自定义生成器以进行预测

时间:2017-10-23 14:08:36

标签: python keras generator

我正在为我的大型数据库预测约100万张图像。对于每个图像,我有一些代码可以将图像切割成~200个较小的图像,并将它们作为numpy数组传递给keras进行预测。

我想避免不必要的读写硬盘,所以我不想保存所有这些较小的图像并使用flow_from_directory。相反,我希望读取一个图像,用我现有的代码将其删除,然后将较小的图像作为批处理全部存入我的网络中,然后对许多图像重复此过程。

这是Keras能够处理的吗?如果是这样,我怀疑我需要制作自己的自定义生成器,但我不知道该怎么做,我找不到任何好的例子。有没有人有一个如何实现自定义生成器的例子?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

dpath='path to test folder'
ids=os.listdir(dpath+"test/")
for id in ids:
    x_batch=[]
    img = cv2.imread(dpath+'test/{}.jpg'.format(id))  #jpg if image in jpg format
    img = cv2.resize(img, (224, 224), interpolation = cv2.INTER_CUBIC) #if resize is needed

    chopped_image= your code that chops image
        x_batch.append(chopped_image)

    x_batch = np.array(x_batch, np.float32) 
    preds=(model.predict_on_batch(x_batch))
    if first==1:
        predsA=preds.copy()
        first=0
    else:
        predsA=np.append(predsA,preds,axis=0)