Commit f20e20ce929a607605431705dfd3959802fbd1cb
1 parent
5ec38adb
Exists in
master
and in
2 other branches
staged.
Showing
24 changed files
with
91 additions
and
15 deletions
Show diff stats
.idea/ImageR.iml
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <module type="PYTHON_MODULE" version="4"> | 2 | <module type="PYTHON_MODULE" version="4"> |
3 | <component name="NewModuleRootManager"> | 3 | <component name="NewModuleRootManager"> |
4 | <content url="file://$MODULE_DIR$" /> | 4 | <content url="file://$MODULE_DIR$" /> |
5 | - <orderEntry type="jdk" jdkName="Python 2.7.8 virtualenv at ~/.virtualenvs/env1" jdkType="Python SDK" /> | 5 | + <orderEntry type="jdk" jdkName="Python 2.7.6 virtualenv at ~/.virtualenvs/env0" jdkType="Python SDK" /> |
6 | <orderEntry type="sourceFolder" forTests="false" /> | 6 | <orderEntry type="sourceFolder" forTests="false" /> |
7 | </component> | 7 | </component> |
8 | </module> | 8 | </module> |
9 | \ No newline at end of file | 9 | \ No newline at end of file |
common.pyc
No preview for this file type
mdata/CV.pyc
No preview for this file type
mdata/MSR.pyc
No preview for this file type
mdata/__init__.pyc
No preview for this file type
mfeat/HOG.pyc
No preview for this file type
mfeat/IntraBlockDiff.pyc
No preview for this file type
mfeat/__init__.pyc
No preview for this file type
mjpeg/__init__.pyc
No preview for this file type
mjpeg/base.pyc
No preview for this file type
mjpeg/dct.pyc
No preview for this file type
mmodel/SVM.py
@@ -8,6 +8,7 @@ chunkplus@gmail.com | @@ -8,6 +8,7 @@ chunkplus@gmail.com | ||
8 | from mfeat import * | 8 | from mfeat import * |
9 | from mmodel import * | 9 | from mmodel import * |
10 | from svmutil import * | 10 | from svmutil import * |
11 | +from mspark import SC | ||
11 | 12 | ||
12 | from common import * | 13 | from common import * |
13 | import numpy as np | 14 | import numpy as np |
@@ -25,10 +26,13 @@ dict_featbuf = {} | @@ -25,10 +26,13 @@ dict_featbuf = {} | ||
25 | 26 | ||
26 | 27 | ||
27 | class ModelSVM(ModelBase): | 28 | class ModelSVM(ModelBase): |
28 | - def __init__(self): | 29 | + def __init__(self, toolset='sklearn'): |
29 | ModelBase.__init__(self) | 30 | ModelBase.__init__(self) |
31 | + self.toolset = toolset | ||
32 | + self.sparker = None | ||
30 | 33 | ||
31 | - def _train_lib(self, X, Y): | 34 | + |
35 | + def _train_libscm(self, X, Y): | ||
32 | X, Y = list(X), list(Y) | 36 | X, Y = list(X), list(Y) |
33 | 37 | ||
34 | prob = svm_problem(Y, X) | 38 | prob = svm_problem(Y, X) |
@@ -41,7 +45,7 @@ class ModelSVM(ModelBase): | @@ -41,7 +45,7 @@ class ModelSVM(ModelBase): | ||
41 | 45 | ||
42 | return m | 46 | return m |
43 | 47 | ||
44 | - def _predict_lib(self, feat, model=None): | 48 | + def _predict_libsvm(self, feat, model=None): |
45 | if model is None: | 49 | if model is None: |
46 | if self.model != None: | 50 | if self.model != None: |
47 | model = self.model | 51 | model = self.model |
@@ -54,7 +58,7 @@ class ModelSVM(ModelBase): | @@ -54,7 +58,7 @@ class ModelSVM(ModelBase): | ||
54 | return label | 58 | return label |
55 | 59 | ||
56 | 60 | ||
57 | - def _test_lib(self, X, Y, model=None): | 61 | + def _test_libsvm(self, X, Y, model=None): |
58 | if model is None: | 62 | if model is None: |
59 | if self.model != None: | 63 | if self.model != None: |
60 | model = self.model | 64 | model = self.model |
@@ -67,7 +71,7 @@ class ModelSVM(ModelBase): | @@ -67,7 +71,7 @@ class ModelSVM(ModelBase): | ||
67 | 71 | ||
68 | return p_acc | 72 | return p_acc |
69 | 73 | ||
70 | - def _train_sk(self, X, Y): | 74 | + def _train_sklearn(self, X, Y): |
71 | lin_clf = svm.LinearSVC() | 75 | lin_clf = svm.LinearSVC() |
72 | lin_clf.fit(X, Y) | 76 | lin_clf.fit(X, Y) |
73 | with open('res/svm_sk.model', 'wb') as modelfile: | 77 | with open('res/svm_sk.model', 'wb') as modelfile: |
@@ -78,7 +82,7 @@ class ModelSVM(ModelBase): | @@ -78,7 +82,7 @@ class ModelSVM(ModelBase): | ||
78 | return lin_clf | 82 | return lin_clf |
79 | 83 | ||
80 | 84 | ||
81 | - def _predict_sk(self, feat, model=None): | 85 | + def _predict_sklearn(self, feat, model=None): |
82 | """N.B. sklearn.svm.base.predict : | 86 | """N.B. sklearn.svm.base.predict : |
83 | Perform classification on samples in X. | 87 | Perform classification on samples in X. |
84 | Parameters | 88 | Parameters |
@@ -99,7 +103,7 @@ class ModelSVM(ModelBase): | @@ -99,7 +103,7 @@ class ModelSVM(ModelBase): | ||
99 | 103 | ||
100 | return model.predict(feat) | 104 | return model.predict(feat) |
101 | 105 | ||
102 | - def _test_sk(self, X, Y, model=None): | 106 | + def _test_sklearn(self, X, Y, model=None): |
103 | if model is None: | 107 | if model is None: |
104 | if self.model != None: | 108 | if self.model != None: |
105 | model = self.model | 109 | model = self.model |
@@ -107,12 +111,12 @@ class ModelSVM(ModelBase): | @@ -107,12 +111,12 @@ class ModelSVM(ModelBase): | ||
107 | with open('res/svm_sk.model', 'rb') as modelfile: | 111 | with open('res/svm_sk.model', 'rb') as modelfile: |
108 | model = pickle.load(modelfile) | 112 | model = pickle.load(modelfile) |
109 | 113 | ||
110 | - result_Y = np.array(self._predict_sk(X, model)) | 114 | + result_Y = np.array(self._predict_sklearn(X, model)) |
111 | 115 | ||
112 | return np.mean(Y == result_Y) | 116 | return np.mean(Y == result_Y) |
113 | 117 | ||
114 | 118 | ||
115 | - def _train_cv(self, X, Y): | 119 | + def _train_opencv(self, X, Y): |
116 | svm_params = dict(kernel_type=cv2.SVM_LINEAR, | 120 | svm_params = dict(kernel_type=cv2.SVM_LINEAR, |
117 | svm_type=cv2.SVM_C_SVC, | 121 | svm_type=cv2.SVM_C_SVC, |
118 | C=2.67, gamma=5.383) | 122 | C=2.67, gamma=5.383) |
@@ -128,7 +132,7 @@ class ModelSVM(ModelBase): | @@ -128,7 +132,7 @@ class ModelSVM(ModelBase): | ||
128 | return svm | 132 | return svm |
129 | 133 | ||
130 | 134 | ||
131 | - def _predict_cv(self, feat, model=None): | 135 | + def _predict_opencv(self, feat, model=None): |
132 | if model is None: | 136 | if model is None: |
133 | if self.model != None: | 137 | if self.model != None: |
134 | model = self.model | 138 | model = self.model |
@@ -140,7 +144,7 @@ class ModelSVM(ModelBase): | @@ -140,7 +144,7 @@ class ModelSVM(ModelBase): | ||
140 | return model.predict(feat) | 144 | return model.predict(feat) |
141 | 145 | ||
142 | 146 | ||
143 | - def _test_cv(self, X, Y, model=None): | 147 | + def _test_opencv(self, X, Y, model=None): |
144 | if model is None: | 148 | if model is None: |
145 | if self.model != None: | 149 | if self.model != None: |
146 | model = self.model | 150 | model = self.model |
@@ -156,14 +160,43 @@ class ModelSVM(ModelBase): | @@ -156,14 +160,43 @@ class ModelSVM(ModelBase): | ||
156 | return np.mean(Y == result_Y) | 160 | return np.mean(Y == result_Y) |
157 | 161 | ||
158 | 162 | ||
163 | + def _train_spark(self, X, Y): | ||
164 | + if self.sparker == None: | ||
165 | + self.sparker = SC.Sparker(host='HPC-server', appname='ImageCV', master='spark://HPC-server:7077') | ||
166 | + | ||
167 | + self.model = self.sparker.train_svm(X, Y) | ||
168 | + return svm | ||
169 | + | ||
170 | + def _predict_spark(self, feat, model=None): | ||
171 | + return self.sparker.predict_svm(feat, model) | ||
172 | + | ||
173 | + def _test_spark(self, X, Y, model=None): | ||
174 | + return self.sparker.test_svm(X, Y, model) | ||
175 | + | ||
176 | + | ||
159 | def train(self, X, Y): | 177 | def train(self, X, Y): |
160 | - return self._train_sk(X, Y) | 178 | + try: |
179 | + return locals()["self._train_" + self.toolset](X, Y) | ||
180 | + except Exception as expt: | ||
181 | + print "Exception when training!" | ||
182 | + raise | ||
161 | 183 | ||
162 | def predict(self, feat, model=None): | 184 | def predict(self, feat, model=None): |
163 | - return self._predict_sk(feat, model) | 185 | + |
186 | + try: | ||
187 | + return locals()["self._predict_" + self.toolset](X, Y) | ||
188 | + except Exception as expt: | ||
189 | + print "Exception when predicting!" | ||
190 | + raise | ||
191 | + | ||
164 | 192 | ||
165 | def test(self, X, Y, model=None): | 193 | def test(self, X, Y, model=None): |
166 | - return self._test_sk(X, Y, model) | 194 | + |
195 | + try: | ||
196 | + return locals()["self._test_" + self.toolset](X, Y) | ||
197 | + except Exception as expt: | ||
198 | + print "Exception when predicting!" | ||
199 | + raise | ||
167 | 200 | ||
168 | 201 | ||
169 | 202 |
mmodel/SVM.pyc
No preview for this file type
mmodel/__init__.pyc
No preview for this file type
mmodel/libsvm.pyc
No preview for this file type
mmodel/svmutil.pyc
No preview for this file type
mspark/SC.py
mspark/SC.pyc
No preview for this file type
mspark/__init__.pyc
No preview for this file type
mspark/dependencies.pyc
No preview for this file type
msteg/__init__.pyc
No preview for this file type
msteg/steganalysis/MPB.pyc
No preview for this file type
msteg/steganalysis/__init__.pyc
No preview for this file type
@@ -0,0 +1,40 @@ | @@ -0,0 +1,40 @@ | ||
1 | + def train(self, X, Y): | ||
2 | + try: | ||
3 | + | ||
4 | + if self.toolset == 'sklearn': | ||
5 | + return self._train_sklearn(X, Y) | ||
6 | + elif self.toolset == 'opencv': | ||
7 | + return self._train_opencv(X, Y) | ||
8 | + elif self.toolset == 'libsvm': | ||
9 | + return self._train_libscm(X, Y) | ||
10 | + elif self.toolset == 'spark': | ||
11 | + return self._train_spark(X, Y) | ||
12 | + else: | ||
13 | + raise Exception("Unknown toolset!") | ||
14 | + | ||
15 | + def predict(self, feat, model=None): | ||
16 | + | ||
17 | + if self.toolset == 'sklearn': | ||
18 | + return self._predict_sklearn(feat, model) | ||
19 | + elif self.toolset == 'opencv': | ||
20 | + return self._predict_opencv(feat, model) | ||
21 | + elif self.toolset == 'libsvm': | ||
22 | + return self._predict_libsvm(feat, model) | ||
23 | + elif self.toolset == 'libsvm': | ||
24 | + return self._predict_spark(feat, model) | ||
25 | + else: | ||
26 | + raise Exception("Unknown toolset!") | ||
27 | + | ||
28 | + | ||
29 | + def test(self, X, Y, model=None): | ||
30 | + | ||
31 | + if self.toolset == 'sklearn': | ||
32 | + return self._test_sklearn(X, Y, model) | ||
33 | + elif self.toolset == 'opencv': | ||
34 | + return self._test_opencv(X, Y, model) | ||
35 | + elif self.toolset == 'libsvm': | ||
36 | + return self._test_libsvm(X, Y, model) | ||
37 | + elif self.toolset == 'libsvm': | ||
38 | + return self._test_spark(X, Y, model) | ||
39 | + else: | ||
40 | + raise Exception("Unknown toolset!") | ||
0 | \ No newline at end of file | 41 | \ No newline at end of file |