CNN使用哪种类型的数据?

时间:2019-02-11 23:13:11

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

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

2 个答案:

答案 0 :(得分:0)

培训集

  

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


测试集

  

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

from wikipedia

当您要训练图像分类器以识别0或1个类别时,需要借助监督学习方法,您需要显示图像数据和相关类别 strong>(csv文件数据)作为模型的练习。

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

答案 1 :(得分:0)

所以您有一个像这样的数据集

..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模型,您需要在

中有一个标记数据集
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来获得一个整洁的进度条来指示操作的进度,如果数据集如此之大,如果没有进度条就无法知道进度,剩余时间等,那将很痛苦。