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 | 2 | <module type="PYTHON_MODULE" version="4"> |
3 | 3 | <component name="NewModuleRootManager"> |
4 | 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 | 6 | <orderEntry type="sourceFolder" forTests="false" /> |
7 | 7 | </component> |
8 | 8 | </module> |
9 | 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 | 8 | from mfeat import * |
9 | 9 | from mmodel import * |
10 | 10 | from svmutil import * |
11 | +from mspark import SC | |
11 | 12 | |
12 | 13 | from common import * |
13 | 14 | import numpy as np |
... | ... | @@ -25,10 +26,13 @@ dict_featbuf = {} |
25 | 26 | |
26 | 27 | |
27 | 28 | class ModelSVM(ModelBase): |
28 | - def __init__(self): | |
29 | + def __init__(self, toolset='sklearn'): | |
29 | 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 | 36 | X, Y = list(X), list(Y) |
33 | 37 | |
34 | 38 | prob = svm_problem(Y, X) |
... | ... | @@ -41,7 +45,7 @@ class ModelSVM(ModelBase): |
41 | 45 | |
42 | 46 | return m |
43 | 47 | |
44 | - def _predict_lib(self, feat, model=None): | |
48 | + def _predict_libsvm(self, feat, model=None): | |
45 | 49 | if model is None: |
46 | 50 | if self.model != None: |
47 | 51 | model = self.model |
... | ... | @@ -54,7 +58,7 @@ class ModelSVM(ModelBase): |
54 | 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 | 62 | if model is None: |
59 | 63 | if self.model != None: |
60 | 64 | model = self.model |
... | ... | @@ -67,7 +71,7 @@ class ModelSVM(ModelBase): |
67 | 71 | |
68 | 72 | return p_acc |
69 | 73 | |
70 | - def _train_sk(self, X, Y): | |
74 | + def _train_sklearn(self, X, Y): | |
71 | 75 | lin_clf = svm.LinearSVC() |
72 | 76 | lin_clf.fit(X, Y) |
73 | 77 | with open('res/svm_sk.model', 'wb') as modelfile: |
... | ... | @@ -78,7 +82,7 @@ class ModelSVM(ModelBase): |
78 | 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 | 86 | """N.B. sklearn.svm.base.predict : |
83 | 87 | Perform classification on samples in X. |
84 | 88 | Parameters |
... | ... | @@ -99,7 +103,7 @@ class ModelSVM(ModelBase): |
99 | 103 | |
100 | 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 | 107 | if model is None: |
104 | 108 | if self.model != None: |
105 | 109 | model = self.model |
... | ... | @@ -107,12 +111,12 @@ class ModelSVM(ModelBase): |
107 | 111 | with open('res/svm_sk.model', 'rb') as modelfile: |
108 | 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 | 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 | 120 | svm_params = dict(kernel_type=cv2.SVM_LINEAR, |
117 | 121 | svm_type=cv2.SVM_C_SVC, |
118 | 122 | C=2.67, gamma=5.383) |
... | ... | @@ -128,7 +132,7 @@ class ModelSVM(ModelBase): |
128 | 132 | return svm |
129 | 133 | |
130 | 134 | |
131 | - def _predict_cv(self, feat, model=None): | |
135 | + def _predict_opencv(self, feat, model=None): | |
132 | 136 | if model is None: |
133 | 137 | if self.model != None: |
134 | 138 | model = self.model |
... | ... | @@ -140,7 +144,7 @@ class ModelSVM(ModelBase): |
140 | 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 | 148 | if model is None: |
145 | 149 | if self.model != None: |
146 | 150 | model = self.model |
... | ... | @@ -156,14 +160,43 @@ class ModelSVM(ModelBase): |
156 | 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 | 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 | 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 | 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 @@ |
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 | 41 | \ No newline at end of file | ... | ... |