我正在使用以下代码调整存储在文件夹(两个类)中的RGB图像的大小:
from keras.preprocessing.image import ImageDataGenerator
dataset=ImageDataGenerator()
dataset.flow_from_directory('/home/1',target_size=(50,50),save_to_dir='/home/resized',class_mode='binary',save_prefix='N',save_format='jpeg',batch_size=10)
Run Code Online (Sandbox Code Playgroud)
我的数据树如下所示:
1/
1_1/
img1.jpg
img2.jpg
........
1_2/
IMG1.jpg
IMG2.jpg
........
resized/
1_1/ (here i want to save resized images of 1_1)
2_2/ (here i want to save resized images of 1_2)
Run Code Online (Sandbox Code Playgroud)
运行代码后,我得到以下输出,但没有图像:
Found 271 images belonging to 2 classes.
Out[12]: <keras.preprocessing.image.DirectoryIterator at 0x7f22a3569400>
Run Code Online (Sandbox Code Playgroud)
如何保存图像?
这是一个非常简单的版本,可以在任意位置保存一个图像的增强图像:
在这里,我们找出我们要对原始图像进行哪些更改并生成增强图像。
您可以在此处阅读有关差异效果的信息-https : //keras.io/preprocessing/image/
datagen = ImageDataGenerator(rotation_range=10, width_shift_range=0.1,
height_shift_range=0.1,shear_range=0.15,
zoom_range=0.1,channel_shift_range = 10, horizontal_flip=True)
Run Code Online (Sandbox Code Playgroud)
读入图像
image_path = 'C:/Users/Darshil/gitly/Deep-Learning/My
Projects/CNN_Keras/test_augment/caty.jpg'
image = np.expand_dims(ndimage.imread(image_path), 0)
Run Code Online (Sandbox Code Playgroud)
save_here = 'C:/Users/Darshil/gitly/Deep-Learning/My
Projects/CNN_Keras/test_augment'
Run Code Online (Sandbox Code Playgroud)
datagen.fit(image)
Run Code Online (Sandbox Code Playgroud)
for x, val in zip(datagen.flow(image, #image we chose
save_to_dir=save_here, #this is where we figure out where to save
save_prefix='aug', # it will save the images as 'aug_0912' some number for every new augmented image
save_format='png'),range(10)) : # here we define a range because we want 10 augmented images otherwise it will keep looping forever I think
pass
Run Code Online (Sandbox Code Playgroud)
该flow_from_directory方法为您提供了一个“迭代器”,如您的输出中所述。迭代器本身并没有真正做任何事情。它正在等待迭代,然后才会读取和生成实际数据。
Keras 中用于拟合的迭代器将像这样使用:
generator = dataset.flow_from_directory('/home/1',target_size=(50,50),save_to_dir='/home/resized',class_mode='binary',save_prefix='N',save_format='jpeg',batch_size=10)
for inputs,outputs in generator:
#do things with each batch of inputs and ouptus
Run Code Online (Sandbox Code Playgroud)
通常,您只需将生成器传递给一个fit_generator方法,而不是执行上面的循环。没有真正需要做一个 for 循环:
model.fit_generator(generator, ......)
Run Code Online (Sandbox Code Playgroud)
Keras 只会在图像加载并通过迭代生成器增强后保存图像。
小智 5
它只是一个声明,您必须使用该生成器,例如, .next()
from keras.preprocessing.image import ImageDataGenerator
dataset=ImageDataGenerator()
image = dataset.flow_from_directory('/home/1',target_size=(50,50),save_to_dir='/home/resized',class_mode='binary',save_prefix='N',save_format='jpeg',batch_size=10)
image.next()
Run Code Online (Sandbox Code Playgroud)
然后你会看到图像 /home/resized
| 归档时间: |
|
| 查看次数: |
6760 次 |
| 最近记录: |