-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloaders.py
76 lines (68 loc) · 2.51 KB
/
loaders.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import pandas as pd
import numpy as np
import sys
from PIL import Image
import matplotlib.pyplot as plt
# progressInstalled = False
# try:
# from progress.bar import ChargingBar
# except:
# progressInstalled = False
sets = set(['a','b','c','d','e'])
def loadData(src,datasets= ['a','b','c','d','e'] , size=180, mode='RGB', rng=0):
m = {'RGB': 3, 'L': 1, '1': 1}
inputs = []
outputs = []
datasets = [i for i in datasets if i in sets]
if datasets == []:
datasets = ['a','b','c','d','e']
for dataset in datasets:
labels = pd.read_csv(src + "/training-{0}.csv".format(dataset))
if rng == 0:
labels = labels[['filename', 'digit']]
else:
labels = labels[['filename', 'digit']][rng[0]:rng[1]]
Y = np.array(labels['digit'],dtype=np.uint8)
length = len(labels)
X = np.zeros((length, size, size, m[mode]))
num = 0
# if progressInstalled:
# bar = ChargingBar('Loading Training Set {0}'.format(dataset),max = len(labels),
# suffix='%(index)d/%(max)d - %(percent).1f%% - %(eta)ds')
for i in labels['filename']:
img = Image.open(src + "/training-{0}/".format(dataset) + i)
c = img.resize((size, size))
c = np.array(c.convert(mode), dtype=np.uint8).reshape((size,size,m[mode]))
X[num, :, :, :] = c
num = num + 1
# if progressInstalled and (not num % max(1,(length / 200))):
# bar.index = num
# bar.update()
# else:
# if (not num % (length / 20)):
# print("Loaded Training Set {0}:. ".format(dataset) + str(num) + "/" + str(length))
if (not num % (length / 20)):
print("Loaded Training Set {0}:. ".format(dataset) + str(num) + "/" + str(length))
# if progressInstalled:
# bar.finish()
inputs.append(X)
outputs.append(Y)
X = np.concatenate(inputs,axis = 0)
Y = np.concatenate(outputs,axis = 0)
return (X, Y)
def show_digit(x,label):
plt.axis('off')
l = x.shape[1]
m = x.shape[2]
if m == 1:
plt.imshow(x.reshape((l,l)), cmap=plt.cm.gray)
else:
plt.imshow(x.reshape((l, l, m)))
#plt.title(label)
plt.show()
return
def vis_image(index, X, Y):
label = Y[index]
show_digit(X[index, :, :, :],label)
print("Label " + str(label))
return