forked from jialinding/ChessVision
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_old.py
112 lines (99 loc) · 3.85 KB
/
test_old.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import os
import glob
import numpy as np
import cv2
from sklearn.externals import joblib
from sklearn import svm
import preprocessing
from defs import *
########################################################
#### ####
#### SIFT ####
#### ####
########################################################
def test_sift():
print("SIFT: predict - actual")
clf = joblib.load("classifiers/classifier_sift.pkl")
centers = np.load("feature_data/SIFT/centers.npy")
detector = cv2.FeatureDetector_create("SIFT")
extractor = cv2.DescriptorExtractor_create("SIFT")
for piece_dir in pieces:
num_correct = float(0)
num_images = 0
for filename in glob.glob(os.path.join("test_images", piece_dir, "*.jpg")):
num_images = num_images + 1
image = cv2.imread(filename)
features = preprocessing.generateBOWFeatures(image, centers, detector, extractor)
prediction = clf.predict(features)
if prediction[0] == piece_classes[piece_dir]:
num_correct = num_correct + 1
print(str(prediction) + " - " + str(piece_classes[piece_dir]))
if num_images > 0:
print("Accuracy for " + piece_dir + ": " + str(num_correct/num_images))
########################################################
#### ####
#### Dense SIFT ####
#### ####
########################################################
def test_dsift():
print("DSIFT: predict - actual")
clf = joblib.load("classifiers/classifier_dsift.pkl")
centers = np.load("feature_data/DSIFT/centers.npy")
detector = cv2.FeatureDetector_create("Dense")
extractor = cv2.DescriptorExtractor_create("SIFT")
for piece_dir in pieces:
num_correct = float(0)
num_images = 0
for filename in glob.glob(os.path.join("test_images", piece_dir, "*.jpg")):
num_images = num_images + 1
image = cv2.imread(filename)
features = preprocessing.generateBOWFeatures(image, centers, detector, extractor)
prediction = clf.predict(features)
if prediction[0] == piece_classes[piece_dir]:
num_correct = num_correct + 1
print(str(prediction) + " - " + str(piece_classes[piece_dir]))
if num_images > 0:
print("Accuracy for " + piece_dir + ": " + str(num_correct/num_images))
########################################################
#### ####
#### HOG ####
#### ####
########################################################
def test_hog():
print("HOG: predict - actual")
# Aspect ratio 1:1 - pawns, rooks
clf = joblib.load("classifiers/classifier_hog_1.pkl")
winSize = (64, 64)
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,
histogramNormType,L2HysThreshold,gammaCorrection,nlevels)
for piece_dir in pieces_aspect_ratio_1:
num_correct = float(0)
num_images = 0
for filename in glob.glob(os.path.join("training_images", piece_dir, "*.jpg")):
num_images = num_images + 1
image = cv2.imread(filename)
image = cv2.resize(image, winSize)
features = hog.compute(image)
prediction = clf.predict(features.transpose())
if prediction[0] == piece_classes[piece_dir]:
num_correct = num_correct + 1
# print(str(prediction) + " - " + str(piece_classes[piece_dir]))
if num_images > 0:
print("Train accuracy for " + piece_dir + ": " + str(num_correct/num_images))
num_correct = float(0)
num_images = 0
for filename in glob.glob(os.path.join("test_images", piece_dir, "*.jpg")):
num_images = num_images + 1
image = cv2.imread(filename)
image = cv2.resize(image, winSize)
features = hog.compute(image)
prediction = clf.predict(features.transpose())
if prediction[0] == piece_classes[piece_dir]:
num_correct = num_correct + 1
print(str(prediction) + " - " + str(piece_classes[piece_dir]))
if num_images > 0:
print("Test accuracy for " + piece_dir + ": " + str(num_correct/num_images))
if __name__ == "__main__":
# test_sift()
# test_dsift()
test_hog()