创建图像数据的 pickeled 数据文件
Creating a pickeled data file of image data
我已经查看了本网站上关于创建我的图像数据的 pickled 数据文件的两个问题(类似于 mnist.pkl.gz)。尽管我知道酸洗不是必需的,但我还是想知道为什么我的数据在输入以下代码后没有被酸洗以执行相同的操作。
- 目前我正在使用 50 张 .bmp 图片(名称为 image1.bmp、image2.bmp 等)来测试 .pkl.gz 文件是否已形成。
- 我想把它们分成训练集、验证集和测试集。
- 这些图像与下面的代码位于同一目录中
- 文件trainLabels.csv是一个单列的csv文件,其列名为'Class',包含50张图片的50个标签。像这样:
Class
0
1
2
0
0
1
.
。等等。
这里的问题是只有 csv 文件(图像标签)被 pickle 而不是图像数据。
这些图像与下面的代码位于同一目录中。
from PIL import Image
from numpy import genfromtxt
import gzip, cPickle
import pickle
from glob import glob
import numpy as np
import pandas as pd
def dir_to_dataset(glob_files, loc_train_labels=""):
print("Gonna process:\n\t %s"%glob_files)
dataset = []
for file_count, file_name in enumerate( sorted(glob(glob_files),key=len) ):
print file_name
print 'Are we in the loop ?'
image = Image.open(file_name)
img = Image.open(file_name).convert('LA') #tograyscale
pixels = [f[0] for f in list(img.getdata())]
dataset.append(pixels)
if file_count % 10== 0:
print("\t %s files processed"%file_count)
# outfile = glob_files+"out"
# np.save(outfile, dataset)
if len(loc_train_labels) > 0:
df = pd.read_csv(loc_train_labels)
return np.array(dataset), np.array(df["Class"])
else:
return np.array(dataset)
Dataa, y = dir_to_dataset("image\*.bmp","trainLabels.csv")
# Data and labels are read
train_set_x = Dataa[:30]
val_set_x = Dataa[31:40]
test_set_x = Dataa[41:50]
train_set_y = y[:30]
val_set_y = y[31:40]
test_set_y = y[41:50]
# Divided dataset into 3 parts. I had 6281 images.
train_set = train_set_x, train_set_y
print 'Type of train_set_x',type(train_set_x)
print train_set_x
val_set = val_set_x, val_set_y
test_set = test_set_x, val_set_y
dataset = [train_set, val_set, test_set]
f = gzip.open('traffic_file.pkl.gz','wb')
pickle.dump(dataset, f, protocol=2)
f.close()
将正则表达式更改为 *.bmp 使其工作。
我已经查看了本网站上关于创建我的图像数据的 pickled 数据文件的两个问题(类似于 mnist.pkl.gz)。尽管我知道酸洗不是必需的,但我还是想知道为什么我的数据在输入以下代码后没有被酸洗以执行相同的操作。
- 目前我正在使用 50 张 .bmp 图片(名称为 image1.bmp、image2.bmp 等)来测试 .pkl.gz 文件是否已形成。
- 我想把它们分成训练集、验证集和测试集。
- 这些图像与下面的代码位于同一目录中
- 文件trainLabels.csv是一个单列的csv文件,其列名为'Class',包含50张图片的50个标签。像这样:
Class
0
1
2
0
0
1
.
。等等。
这里的问题是只有 csv 文件(图像标签)被 pickle 而不是图像数据。
这些图像与下面的代码位于同一目录中。
from PIL import Image
from numpy import genfromtxt
import gzip, cPickle
import pickle
from glob import glob
import numpy as np
import pandas as pd
def dir_to_dataset(glob_files, loc_train_labels=""):
print("Gonna process:\n\t %s"%glob_files)
dataset = []
for file_count, file_name in enumerate( sorted(glob(glob_files),key=len) ):
print file_name
print 'Are we in the loop ?'
image = Image.open(file_name)
img = Image.open(file_name).convert('LA') #tograyscale
pixels = [f[0] for f in list(img.getdata())]
dataset.append(pixels)
if file_count % 10== 0:
print("\t %s files processed"%file_count)
# outfile = glob_files+"out"
# np.save(outfile, dataset)
if len(loc_train_labels) > 0:
df = pd.read_csv(loc_train_labels)
return np.array(dataset), np.array(df["Class"])
else:
return np.array(dataset)
Dataa, y = dir_to_dataset("image\*.bmp","trainLabels.csv")
# Data and labels are read
train_set_x = Dataa[:30]
val_set_x = Dataa[31:40]
test_set_x = Dataa[41:50]
train_set_y = y[:30]
val_set_y = y[31:40]
test_set_y = y[41:50]
# Divided dataset into 3 parts. I had 6281 images.
train_set = train_set_x, train_set_y
print 'Type of train_set_x',type(train_set_x)
print train_set_x
val_set = val_set_x, val_set_y
test_set = test_set_x, val_set_y
dataset = [train_set, val_set, test_set]
f = gzip.open('traffic_file.pkl.gz','wb')
pickle.dump(dataset, f, protocol=2)
f.close()
将正则表达式更改为 *.bmp 使其工作。