[英]Loading images in Keras for CNN from directory but label in CSV file
我在目录train_images = './data/images'
和train_labels = './data/labels.csv'
有一组图像文件
例如 - train_images
有 1000 张图片为377.jpg,17814.jpg ....
等等。 并且它们对应的类保存在不同的 CSV 文件中。
编辑- 这是 CSV 文件中的几行 -
>>
ID Class
0 377.jpg MIDDLE
1 17814.jpg YOUNG
2 21283.jpg MIDDLE
3 16496.jpg YOUNG
4 4487.jpg MIDDLE
这里 ID 是图像文件名,类是它关联的类。
我可以使用非常平常的
ImageDataGenerator().flow_from_directory(train_images, class_mode='binary', batch_size=64)
但问题是标签在 CSV 文件中。 我能做的是使用os
重命名所有文件并将不同的文件放在不同的目录中,然后加载它,但它看起来如此不成熟和愚蠢。
如何在 Keras 中为 CNN 加载数据,其中每个图像的尺寸为(h,w,c)
?
这是我使用 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
所以使用pandas阅读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 上看到人们以各种方式这样做! 但这似乎是最简单的!
然后,您可以使用pandas
使用函数read_csv
将csv
文件作为DataFrame
read_csv
:
import pandas as pd
df = pd.read_csv('csvfilename', delimiter=',')
然后使用ImageDataGenerator
类的flow_from_dataframe
函数。
这个链接有教程
flow_from_dataframe(dataframe, directory=None, x_col='filename', y_col='class', weight_col=None, 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、interpolation='nearest'、validate_filenames=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.