【问题标题】:What type of data is used for CNN?CNN 使用什么类型的数据?
【发布时间】:2019-07-05 12:52:11
【问题描述】:

我正在尝试了解 CNN 及其工作原理。我有一个非常基本的问题。从 kaggle 下载数据集后,它有两个测试文件夹和训练文件夹,其中包含几张图像。它还有一个 csv 文件,其中包含图像名称以及标签“1”和“0”。所以我的困惑是是否从火车文件夹或csv或两者中加载图像?

【问题讨论】:

  • 图像是输入,0 或 1 是输出。
  • 例如,如果您的图像是一群猫和狗,那么您试图预测image1 是正类1 还是负类0。 (根据设置,1/0 在此示例中将是 cat/not a catdog/not a dog
  • 欢迎来到 SO;如果某个答案解决了您的问题,请接受(答案会占用受访者的宝贵时间)- 请参阅What should I do when someone answers my question?

标签: machine-learning keras conv-neural-network


【解决方案1】:

训练集

训练数据集是用于学习的示例数据集,即 以拟合例如分类器的参数(例如权重)。


测试集

因此,测试集是一组示例,仅用于评估 完全指定的分类器的性能(即泛化)。

from wikipedia

虽然您想训练图像分类器以识别 0 或 1 类,但使用监督学习方法,您需要显示 图像 数据和 相关类(csv文件数据)作为模型的练习。

然后在测试模型准确性时使用模型从未见过的数据。

【讨论】:

    【解决方案2】:

    所以你有一个这样的数据集

    ..train/
        ../img1.jpg
        ../img2.jpg
        ../img3.jpg
        ..........
        ../imgn.jpg
    
    ..test/
        ../test1.jpg
        ../test2.jpg
        ../test3.jpg
        ............
        ../testn.jpg
    

    另外,您有一个 train.csv 文件,其中包含这样的数据

    file_name    label
    img1.jpg       0
    img2.jpg       0
    img3.jpg       1
    img4.jpg       1
    .......
    .......
    imgn.jpg       0
    

    为了以监督的方式训练一个 CNN 模型,你需要在 from 中有一个标记的数据集

    image1 - label1
    image2 - label2
    image3 - label3
    image4 - label4
    

    在您的/train/ 文件夹中,您有图像,它们的相应标签在train.csv 文件中提供。

    因此,您必须从\train\ 文件夹中加载图像数据,并从csv 文件中加载相应的标签。

    在 python 中,假设您的图像是.jpg,您可以像这样轻松地做到这一点,

    import cv2
    import pandas as pd
    import numpy as np
    from tqdm import tqdm
    
    # function to read image using opencv
    def read_img(img_path):
        img = cv2.imread(img_path, cv2.IMREAD_COLOR)
        img = cv2.resize(img, (300, 300))
        return img
    
    # path for the folder with train images
    TRAIN_PATH = 'train_img/'
    
    # reading train.csv file
    train = pd.read_csv('train.csv')
    
    # reading the image data 
    train_img = []
    for img_path in tqdm(train['file_name'].values):
        train_img.append(read_img(TRAIN_PATH + img_path + '.jpg'))
    
    # assigning labels from the csv file
    train_label = train['label'].tolist()
    

    我使用tqdm得到一个简洁的进度条来指示操作的进度,如果数据集太大,没有进度条知道进度、剩余时间等会很痛苦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多