我试图了解CNN及其工作方式。我有一个非常基本的问题。从kaggle下载数据集后,它具有两个测试文件夹,其中包含多个图像进行训练。它还具有一个csv文件,其中包含图像名称,并带有标签“ 1”和“ 0”。所以我的困惑是是否要从火车文件夹或csv或两者中加载图像?
答案 0 :(得分:0)
培训集
培训数据集是用于学习的示例的数据集,即 以适合例如分类器的参数(例如权重)。
测试集
因此,测试集是一组示例,仅用于评估 完全指定的分类器的效果(即泛化)。
当您要训练图像分类器以识别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
来获得一个整洁的进度条来指示操作的进度,如果数据集如此之大,如果没有进度条就无法知道进度,剩余时间等,那将很痛苦。