-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathtrain_old.py
More file actions
93 lines (75 loc) · 2.19 KB
/
train_old.py
File metadata and controls
93 lines (75 loc) · 2.19 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import os
import glob
import numpy as np
from sklearn import svm
from sklearn.externals import joblib
import cv2
import preprocessing
from defs import *
def load_data(desc):
X = None
Y = None
for piece_dir in pieces:
piece_class = piece_classes[piece_dir]
for filename in glob.glob(os.path.join("feature_data", desc, piece_dir, "*.npy")):
data = np.load(filename)
if X is None:
X = np.array(data)
Y = np.array([piece_class])
else:
X = np.vstack( (X, data) )
Y = np.hstack( (Y, [piece_class]) )
return (X, Y)
########################################################
#### ####
#### SIFT ####
#### ####
########################################################
def train_sift():
X, Y = load_data("SIFT")
weights = {0: 10, 1: 2}
clf = svm.SVC(class_weight=weights)
clf.fit(X, Y)
joblib.dump(clf, "classifiers/classifier_sift.pkl")
########################################################
#### ####
#### Dense SIFT ####
#### ####
########################################################
def train_dsift():
X, Y = load_data("DSIFT")
clf = svm.SVC(class_weight=piece_weights)
clf.fit(X, Y)
joblib.dump(clf, "classifiers/classifier_dsift.pkl")
########################################################
#### ####
#### HOG ####
#### ####
########################################################
def train_hog():
aspect_ratios = ["1"]
for ratio in aspect_ratios:
X, Y = load_data_hog(ratio)
clf = svm.SVC(class_weight=piece_weights)
clf.fit(X, Y)
joblib.dump(clf, "classifiers/classifier_hog_" + ratio + ".pkl")
def load_data_hog(ratio):
ratio_to_piece = {"1": pieces_aspect_ratio_1}
X = None
Y = None
for piece_dir in ratio_to_piece[ratio]:
piece_class = piece_classes[piece_dir]
for filename in glob.glob(os.path.join("feature_data", "HOG", ratio,
piece_dir, "*.npy")):
data = np.load(filename)
if X is None:
X = np.array(data.transpose())
Y = np.array([piece_class])
else:
X = np.vstack( (X, data.transpose()) )
Y = np.hstack( (Y, [piece_class]) )
return (X, Y)
if __name__ == "__main__":
train_sift()
train_dsift()
train_hog()