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 |