我在目录train_images = './data/images'
和train_labels = './data/labels.csv'
中有一组图像文件
例如-train_images
中有377.jpg,17814.jpg ....
的1000张图像,依此类推。并且它们对应的类保存在另一个CSV文件中。
编辑-这是CSV文件中的几行-
>>
ID Class
0 377.jpg MIDDLE
1 17814.jpg YOUNG
2 21283.jpg MIDDLE
3 16496.jpg YOUNG
4 4487.jpg MIDDLE
此处I.D是图像文件名,而class是与之关联的类。
我本可以使用通常的
ImageDataGenerator().flow_from_directory(train_images, class_mode='binary', batch_size=64)
,但问题是标签在CSV文件中。我可以做的是使用os
重命名所有文件,然后将不同的文件放在不同的目录中,然后加载它,但看起来如此不成熟和愚蠢。
如何在Keras for CNN中加载数据,其中每个图像的尺寸为(h,w,c)
?
答案 0 :(得分:5)
这是我的示例,使用ImageDataGenerator和ImageDataGenerator的flow_from_dataframe函数,并使用Pandas读取CSV。我使用的CSV有两列:
x_col="Image"
y_col="Id"
因此第一列是文件名,例如xxxx.jpg,第二列是类。在这种情况下,由于是来自kaggle座头鲸的挑战,所以它是哪种鲸鱼。图像文件位于目录“ ../input/humpback-whale-identification/train/”中
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation,
Conv2D, Flatten, Dropout, MaxPooling2D, BatchNormalization
from tensorflow.keras.preprocessing.image import
ImageDataGenerator
from keras import regularizers, optimizers
import os
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
因此,请使用熊猫阅读CSV:
traindf=pd.read_csv('../input/humpback-whale-
identification/train.csv',dtype=str)
现在使用ImageDataGenerator
datagen=ImageDataGenerator(rescale=1./255.,validation_split=0.25)
train_generator=datagen.flow_from_dataframe(
dataframe=traindf,
directory="../input/humpback-whale-identification/train/",
x_col="Image",
y_col="Id",
subset="training",
batch_size=32,
seed=42,
shuffle=True,
class_mode="categorical",
target_size=(100,100))
现在,有时CSV中的文件名/ ID没有扩展名。因此,我使用以下代码向 他们:
def append_ext(fn):
return fn+".jpg"
traindf["Image"]=traindf["Image"].apply(append_ext)
希望对您有所帮助!这是我第一次尝试在这里回答问题:-)
Kaggle数据集/挑战在这里https://www.kaggle.com/c/humpback-whale-identification
注意:我已经看到人们在kaggle上以各种方式进行此操作!但这似乎是最简单的!
答案 1 :(得分:1)
然后,您可以使用pandas
使用csv
函数,以DataFrame
的形式读取read_csv
文件:
import pandas as pd
df = pd.read_csv('csvfilename', delimiter=',')
然后使用flow_from_dataframe
类的ImageDataGenerator
函数。
link上有一个教程
flow_from_dataframe(数据帧,目录=无,x_col ='文件名',y_col ='类',weight_col =无,target_size =(256,256),color_mode ='rgb',classes = None,class_mode ='categorical' ,batch_size = 32,shuffle = True,seed = None,save_to_dir = None,save_prefix ='',save_format ='png',subset = None,插值='nearest',validate_filenames = True)