首页 > 解决方案 > 未根据使用 imagedatagenerator 和 flow 定义的范围创建的图像

问题描述

我已经编写了用于数据增强和仅保存图像的代码。尚未创建模型。我计划先创建增强图像,然后再训练我的模型。问题是并非所有图像都被用于增强和保存。我有 275 张图像,范围为 50,这意味着应该创建总共 13750 张图像,但是我只从增强中获得了大约 7500 张图像。我尝试调试并发现在读取图像以及增强图像方面没有问题,而是在. 跟随方法不保存图像。当save_format参数选择为 jpeg 时,情况会变得更糟。我想知道为什么会发生这种情况,更重要的是是否有解决方案或解决这个问题。(注意:-我只是这个领域的初学者)。

import cv2
import glob
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.preprocessing.image import ImageDataGenerator


types=('*.png','*.jpg','*.jpeg','*.jfif','*.bmp')
path2="C:\\Users\\Cato\\Desktop\\BE project\\Augmented data\\hugging"
#path2="C:\\Users\\Cato\\Desktop\\output"
datagen=ImageDataGenerator(rotation_range=40,width_shift_range=0.27,height_shift_range=0.27,zoom_range=[0.9,1.5],brightness_range=[0.3,1.0],horizontal_flip=True,vertical_flip=False)
i=0;
for files in types:
    path1="C:\\Users\\Cato\\Desktop\\BE project\\Augmented data\\grayscale\\hugging\\"+str(files)
    #path1="C:\\Users\\Cato\\Desktop\\input\\"+str(files)
    i=i+1;
    for file in glob.glob(path1):
        i=i+1;
        image = np.expand_dims(cv2.imread(file), 0)
        datagen.fit(image)
        for x,val in zip(datagen.flow(image,save_to_dir=path2),range(50)):
            pass


print("Augmentation completed")

标签: opencvtensorflowmachine-learningkerascomputer-vision

解决方案


有 2 个问题导致此问题出现。首先是使用 flow_from_directory,其次我不知道为什么,但是以 jpeg 格式保存图像解决了这个问题。由于未知原因,我猜测代码背后的保存机制不适用于 png 格式。尽管应该指出它在很大程度上解决了问题,但并非完全解决了问题。这意味着如果我想从数据生成器生成 15000 张图像,它现在会生成 13500 张图像。如果图像以 png 格式保存,则此图像计数将减少到 7-8k 图像。


推荐阅读