我正在为我的大型数据库预测约100万张图像。对于每个图像,我有一些代码可以将图像切割成~200个较小的图像,并将它们作为numpy数组传递给keras进行预测。
我想避免不必要的读写硬盘,所以我不想保存所有这些较小的图像并使用flow_from_directory。相反,我希望读取一个图像,用我现有的代码将其删除,然后将较小的图像作为批处理全部存入我的网络中,然后对许多图像重复此过程。
这是Keras能够处理的吗?如果是这样,我怀疑我需要制作自己的自定义生成器,但我不知道该怎么做,我找不到任何好的例子。有没有人有一个如何实现自定义生成器的例子?
答案 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)