如何使用 ImageDataGenerator.flow_from_directory 将每个 class/label 保存在其他子文件夹中?
How to use ImageDataGenerator.flow_from_directory to save each class/label in other subfolders?
编辑:
设置:
Win 10 x64
Python 3.8.7
TF version 2.4.0
Keras version 2.4.3 #not needed I think but
我的数据集的图像结构如下:
dataset/
class1/
img1class1.jpg
...
class2/
img1class2.jpg
...
我正在使用 tensorflow.keras.preprocessing.image.ImageDataGenerator
中的 flow_from_directory
方法,选项如下:
gen = imgen.flow_from_directory(
'dataset/',
target_size = (160, 120),
batch_size = 25,
class_mode = 'binary',
save_to_dir = 'new_dataset/',
save_prefix = 'new',
save_format = 'jpg'
)
但它会将每个 类 中的每张图片都放入一个文件夹中 new_dataset/
new_dataset/
new1.jpg #while that could be from class 1
new2.jpg # and that from class 2
...
是否可以 'force' flow_from_directory
将文件夹结构设为:
new_dataset/
class1/
new1.jpg
...
class2/
new1.jpg
...
是否也有可能 batch_size 将只有来自一个特定 img 的图像 'created',我的意思是 img1class1.jpg
将是整批但有其他转换?
我想从 1 张旧图像中提取 25 张新图像。
对不起我的英语,我希望你能理解(:
我找到了 'workaround',所以这里是:
import os
labels = {}
for i, one_class in enumerate(os.listdir('dataset')):
gen = idg.flow_from_directory(
'dataset',
target_size = (160, 120),
batch_size = 25,
class_mode = 'binary',
classes = [one_class],
save_to_dir = f'dataset/{one_class}',
save_prefix = 'new_image',
save_format = 'jpg'
)
...
labels[one_class] = i #If u need them...
编辑:
设置:
Win 10 x64
Python 3.8.7
TF version 2.4.0
Keras version 2.4.3 #not needed I think but
我的数据集的图像结构如下:
dataset/
class1/
img1class1.jpg
...
class2/
img1class2.jpg
...
我正在使用 tensorflow.keras.preprocessing.image.ImageDataGenerator
中的 flow_from_directory
方法,选项如下:
gen = imgen.flow_from_directory(
'dataset/',
target_size = (160, 120),
batch_size = 25,
class_mode = 'binary',
save_to_dir = 'new_dataset/',
save_prefix = 'new',
save_format = 'jpg'
)
但它会将每个 类 中的每张图片都放入一个文件夹中 new_dataset/
new_dataset/
new1.jpg #while that could be from class 1
new2.jpg # and that from class 2
...
是否可以 'force' flow_from_directory
将文件夹结构设为:
new_dataset/
class1/
new1.jpg
...
class2/
new1.jpg
...
是否也有可能 batch_size 将只有来自一个特定 img 的图像 'created',我的意思是 img1class1.jpg
将是整批但有其他转换?
我想从 1 张旧图像中提取 25 张新图像。
对不起我的英语,我希望你能理解(:
我找到了 'workaround',所以这里是:
import os
labels = {}
for i, one_class in enumerate(os.listdir('dataset')):
gen = idg.flow_from_directory(
'dataset',
target_size = (160, 120),
batch_size = 25,
class_mode = 'binary',
classes = [one_class],
save_to_dir = f'dataset/{one_class}',
save_prefix = 'new_image',
save_format = 'jpg'
)
...
labels[one_class] = i #If u need them...