【问题标题】:How to add data via directories for training images如何通过目录添加数据以训练图像
【发布时间】:2018-01-03 18:26:08
【问题描述】:

我一直在通过 flyyufelix "https://github.com/flyyufelix/cnn_finetune" 浏览 git 存储库来微调 inception v3 网络我想训练网络来检测疾病,所以我有 2 组图像,一个有疾病,一个没有疾病。 git 说 X_train, Y_train, X_valid, Y_valid = load_data() 他加载了 cifar 数据集,git 要求我们创建自己的 load_data() 函数。作者的代码如下

import cv2
import numpy as np

from keras.datasets import cifar10
from keras import backend as K
from keras.utils import np_utils

nb_train_samples = 3000 # 3000 training samples
nb_valid_samples = 100 # 100 validation samples
num_classes = 10

def load_cifar10_data(img_rows, img_cols):

    # Load cifar10 training and validation sets
    (X_train, Y_train), (X_valid, Y_valid) = cifar10.load_data()

    # Resize trainging images
    if K.image_dim_ordering() == 'th':
        X_train = np.array([cv2.resize(img.transpose(1,2,0), (img_rows,img_cols)).transpose(2,0,1) for img in X_train[:nb_train_samples,:,:,:]])
        X_valid = np.array([cv2.resize(img.transpose(1,2,0), (img_rows,img_cols)).transpose(2,0,1) for img in X_valid[:nb_valid_samples,:,:,:]])
    else:
        X_train = np.array([cv2.resize(img, (img_rows,img_cols)) for img in X_train[:nb_train_samples,:,:,:]])
        X_valid = np.array([cv2.resize(img, (img_rows,img_cols)) for img in X_valid[:nb_valid_samples,:,:,:]])

    # Transform targets to keras compatible format
    Y_train = np_utils.to_categorical(Y_train[:nb_train_samples], num_classes)
    Y_valid = np_utils.to_categorical(Y_valid[:nb_valid_samples],num_classes)
return X_train, Y_train, X_valid, Y_valid

我能知道如何生成一个加载的函数吗 数据 X_train, Y_train, X_valid, Y_valid = load_data() 当我在 pc 中有目录时

【问题讨论】:

  • keras ImageDataGeneratorflow_from_directory 方法应该适用于您的用例:keras.io/preprocessing/image
  • 我将如何向 Y_train 和 Y_valid 添加标签,我有两个文件夹 @filippo 一个包含疾病图像的文件夹和一个包含无疾病图像的文件夹。我知道我必须进入一种热编码格式,通过这样做 Y = np_utils.to_categorical(labels, num_classes)。但我很困惑你怎么知道前 100 个标签应该有病,而接下来的 200 个没有病等
  • 查看其他答案,您应该能够从目录结构中推断出标签

标签: python git numpy keras


【解决方案1】:

使用Keras' ImageDataGenerator() 类并在其上调用flow_from_directory()。标签将自动从目录名称中推断出来。因此,如果您有一个名为“疾病”的目录,那么 Keras 会推断该目录中的所有图像都被标记为“疾病”,例如,另一个名为“无疾病”的目录也是如此。

我在this video 中演示了如何准备用于在 Keras 中训练 CNN 的图像数据。视频的前半部分是关于磁盘上的图像组织,然后后半部分经历了上述过程。

【讨论】:

【解决方案2】:

按照本教程进行一次,您的所有疑问都会得到解决。 https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2017-02-18
    • 2013-06-29
    • 2016-04-26
    • 2021-10-24
    相关资源
    最近更新 更多