Permalink
Browse files

Added boxed features

Signed-off-by: Brandyn A. White <bwhite@dappervision.com>
  • Loading branch information...
1 parent d734099 commit 3488290d609e06fe559fb461ad2695f1a9e4e576 @bwhite committed Apr 26, 2012
@@ -49,5 +49,9 @@ def test_synthetic(self):
import vidfeat
vidfeat.SyntheticFrameFeature(load_module='vidfeat.models.synthetic_frame_model0')
+ def test_boxed(self):
+ import vidfeat
+ vidfeat.BoxedFrameFeature(load_module='vidfeat.models.boxed_frame_model0')
+
if __name__ == '__main__':
unittest.main()
View
@@ -19,14 +19,11 @@ class FrameFeature(Feature):
def __init__(self, *args, **kw):
super(FrameFeature, self).__init__(*args, **kw)
- def __call__(self, frame):
+ def check_frame(self, frame):
"""Compute a feature on a single frame
Args:
frame: numpy array (height, width, 3) bgr with dtype=np.uint8
-
- Returns:
- Numpy array of the feature with dtype=np.float64
"""
assert isinstance(frame, np.ndarray)
assert frame.ndim == 3
@@ -36,19 +33,20 @@ def __call__(self, frame):
class ClassifierFrameFeature(FrameFeature):
- def __init__(self, classifier=None, feature=None, load_module=None, *args, **kw):
+ def __init__(self, classifier=None, feature=None, load_module=None, binary=True,
+ *args, **kw):
super(ClassifierFrameFeature, self).__init__(*args, **kw)
+ self._binary = binary
+ self._feature = feature
if load_module is None:
self._classifier = classifier
- self._feature = feature
else:
mod = __import__(load_module, fromlist=['blah'])
- self._classifier, self._feature = mod.classifier, mod.feature
+ self._classifier = mod.classifier
def save_module(self, output_path):
save_to_py(output_path,
- classifier=self._classifier,
- feature=self._feature)
+ classifier=self._classifier)
def train(self, label_frames):
"""Compute feature and train classifier
@@ -82,8 +80,11 @@ def xval(self, label_frames):
return sklearn.cross_validation.cross_val_score(self._classifier, *self._compute_features_labels(label_frames))
def __call__(self, frame):
- super(ClassifierFrameFeature, self).__call__(frame)
- return np.array(self._classifier.predict(self._feature(frame)))
+ super(ClassifierFrameFeature, self).check_frame(frame)
+ if self._binary:
+ return self._classifier.predict(self._feature(frame)) == 1
+ else:
+ return np.array(self._classifier.decision_function(self._feature(frame))[0])
class FrameRegionFeature(Feature):
@@ -158,5 +159,9 @@ def save_to_py(output_path, **kw):
from _synthetic import SyntheticFrameFeature
from _blurry import BlurryFrameFeature
-
+from _boxed import BoxedFrameFeature
+from _horizontal_boxed import HorizontalBoxedFrameFeature
+from _vertical_boxed import VerticalBoxedFrameFeature
+from _visible_lens import VisibleLensFrameFeature
+import models
View
@@ -0,0 +1,18 @@
+import vidfeat
+import imfeat
+import sklearn.svm
+
+
+class BoxedFrameFeature(vidfeat.ClassifierFrameFeature):
+
+ def __init__(self, *args, **kw):
+ feature = imfeat.GridStats()
+ classifier = sklearn.svm.LinearSVC()
+ super(BoxedFrameFeature, self).__init__(classifier=classifier,
+ feature=feature,
+ *args, **kw)
+
+if __name__ == '__main__':
+ data_root = '/home/brandyn/playground/boxed_data'
+ c = BoxedFrameFeature().train(vidfeat.load_label_frames(data_root))
+ c.save_module('models/boxed_frame_model0.py')
@@ -0,0 +1,18 @@
+import vidfeat
+import imfeat
+import sklearn.svm
+
+
+class HorizontalBoxedFrameFeature(vidfeat.ClassifierFrameFeature):
+
+ def __init__(self, *args, **kw):
+ feature = imfeat.GridStats()
+ classifier = sklearn.svm.LinearSVC()
+ super(HorizontalBoxedFrameFeature, self).__init__(classifier=classifier,
+ feature=feature,
+ *args, **kw)
+
+if __name__ == '__main__':
+ data_root = '/home/brandyn/playground/horizontal_boxed_data'
+ c = HorizontalBoxedFrameFeature().train(vidfeat.load_label_frames(data_root))
+ c.save_module('models/horizontal_boxed_frame_model0.py')
View
@@ -0,0 +1,18 @@
+import vidfeat
+import imfeat
+import sklearn.svm
+
+
+class VerticalBoxedFrameFeature(vidfeat.ClassifierFrameFeature):
+
+ def __init__(self, *args, **kw):
+ feature = imfeat.GridStats()
+ classifier = sklearn.svm.LinearSVC()
+ super(VerticalBoxedFrameFeature, self).__init__(classifier=classifier,
+ feature=feature,
+ *args, **kw)
+
+if __name__ == '__main__':
+ data_root = '/home/brandyn/playground/vertical_boxed_data'
+ c = VerticalBoxedFrameFeature().train(vidfeat.load_label_frames(data_root))
+ c.save_module('models/vertical_boxed_frame_model0.py')
View
@@ -0,0 +1,18 @@
+import vidfeat
+import imfeat
+import sklearn.svm
+
+
+class VisibleLensFrameFeature(vidfeat.ClassifierFrameFeature):
+
+ def __init__(self, *args, **kw):
+ feature = imfeat.MetaFeature(imfeat.TinyImage())
+ classifier = sklearn.svm.LinearSVC()
+ super(VisibleLensFrameFeature, self).__init__(classifier=classifier,
+ feature=feature,
+ *args, **kw)
+
+if __name__ == '__main__':
+ data_root = '/home/brandyn/playground/visible_lens_data'
+ c = VisibleLensFrameFeature().train(vidfeat.load_label_frames(data_root))
+ c.save_module('models/visible_lens_frame_model0.py')
@@ -0,0 +1,6 @@
+import blurry_frame_model0
+import synthetic_frame_model0
+import boxed_frame_model0
+import horizontal_boxed_frame_model0
+import vertical_boxed_frame_model0
+import visible_lens_frame_model0
@@ -1,3 +1,2 @@
import zlib, base64, cPickle
classifier = cPickle.loads(zlib.decompress(base64.b64decode("eJx1UUFrE0EU3k3Sptk01Ri1Nq3eCiloDiKlRaWFCBG3rKC8ImgZNptJdnGyu29mNiUHQQ/V9CB4Ef9Aj4IX9SYb9ezJo3jxJHrx6EHRySaoOfhgHszM9973ve/dTTniNqM296ui26k6zBaCCmPL89Xb9e2agfrKPUzdwXQFMiwQAjOQYmdxCvSaBVnh2IySGk73IdulvBEIillTg0wzshnO9KHQ8iTxfEm5Q0OJOYUjIrS5whn7kEvqm6RGMF/f+KYlAYVEBdmlXtuVBGcdP+qEvaoTcFrtREx6Nud2zyCcOoEvJI8caWBhhDL85ugX50xtD/TGg2t4qGLq6jIGNGUvpAYehlRrzdRMXQGKFTMN+gXLsq78UpEkU5ONfVAJsiH1bSZ7eMSdgnwigCQKsQTpoMvxKOS4vUucgLYIHnML7l/q40Nq3czdd4t9uPxz5+at/Pni5ukvdPvSQWnw+vvBx6eL2mB+7e169ONz/PzRZvwS3sdka/2Z034Vf1i+euPiyuO43noXPnkTxDsPF1bxxdxAiUrLgOF8faO8+unrUu0MTDO7QRnBExP0C0P61J6rhvXOjYct/3fYmaH7ujqqf2liB+PmixPNl0a2uuWRTbP/VuBJC4p/1k6Ga/b8Np4y9ahR/Q0xvN2G")))
-feature = cPickle.loads(zlib.decompress(base64.b64decode("eJxrYErOzE1LTSzRi08vSkzJTM0ric/ILC7hcofyPICcfKBULlcho2ZjIVNtIXMoF1hJPEhbIUtyPMQAsBhEJZIeVqAetuIkPQDPYSVp")))
@@ -0,0 +1,2 @@
+import zlib, base64, cPickle
+classifier = cPickle.loads(zlib.decompress(base64.b64decode("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")))
@@ -0,0 +1,2 @@
+import zlib, base64, cPickle
+classifier = cPickle.loads(zlib.decompress(base64.b64decode("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")))
@@ -1,3 +1,2 @@
import zlib, base64, cPickle
-classifier = cPickle.loads(zlib.decompress(base64.b64decode("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")))
-feature = cPickle.loads(zlib.decompress(base64.b64decode("eJxrYErOzE1LTSzRi89NLUnk8gUSbkBuaVEqVyGjZmMhU20hs0Yoa3xeflFuIYtfKGd8bmJFfHFmSmohK4iXBlFcXMgWW8iuATcsvSgxJTM1ryQ+I7O4hMsdyvMAcvKBUrlchRxAszlrC7lCucBKwOYUcifHQwwAi0FUIunhAerhLU7KANF8qaVJegCCLkIb")))
+classifier = cPickle.loads(zlib.decompress(base64.b64decode("eJztWHlUU1caT2JYEmQTWQ0qrUBAyVRt2eUyE5AlBMryQD1oSMKDwIQkLwkJi2BFRFDK4hQrYgeDWxmpIotoGb2AIFVRgSO4oPVEqRWXyKqiKIPgdMZjaZie/jH29HfOu++8977fd7/vfnd55/cZgSv5Kx9liwU0iSyBxuWzJRJUQg6IE0y8Cw2nkzG83UaMkIbNoiJEvlAiwYgIgb8M00Dw9EBES8Jl81EWHdPMRrRkqJgjlKCYFgOHEKMT2XxMOxvRjYmTsuIEUlTMRUVSjDRhx5KI2OIJO3IOQprkR7PoLEzHB/TjJoHoTkbBkqNxsTwpC5vNFSQmiJJpXKEYpSUk8qVxbLGYnUxmiVGuUCCRihO5UjKmO2VFFkRPfcX0GLjNCJ6zJQTTpzLwEw9vDKKlySKUjBkghBhnBo6BnzAwpDJmIXj3wMBA//EJTDYMnJSTg0w0iJYIFbD50mRsDk8D0ZkMgDUZIWaEzBLKxNhchCRmy1lcIRrDwox5urz/dG3yums8k0TI4hlmh/ka4HCSvT19C7qvQ65HMyW39xkc+vLjvENJ90DbWZMaL6dekF3wqkWVcRHohFaExRhtguujrM0WaCSCHwJ6x1NfpAPc7xS96w+Mf1B0G+7a2Oi4l90/4zxLmgxuV/2NCfPol7scvrsBXXxP/zMwa3zG/JN4/TKNhY7weGbTjQ2dTNg6dsTUxHID/HVZ/AFRaxVzHcUCPGWkC80cxjxmyqtC59zyT+iHvAj6PkUnoQEL1Fy6xo6qtg4VPi5fHU69DKN2OAlwOs/gOeclQ27f6jas23jC35tY8Iv8BpP79UpTY+GyS1x4poh4sTp1I9y/Dg6WsW/BOq0CxzDTsj/mwf8IE+97K1QBufCZyrzslLuf2nW4Nc9KR3G0Al7iKh108gbg7s407Xj9H8E25Z4YUZziF8c/sqe1vvNqwVzdxS/AK8Zsu3Z8H6TgikP4Jtdg3adDej709p/nW22oz7KpJHMoGYAlt3IKX54IWKmZtZ4V26Fq8Qe0DNkVeOkvZ+Rn153++fi1OW40/SRTpz7uT9/TwpNR21pXOHV/fkpd3r83dChsam/P/xA6NuNkfo8GwSnblOBBwFVb/6X2NkY1d9ohvmqRu2JLFwj/nMFvL3kFS4/VOnich9PWfycRtQ0jGcLq/a113ypGQAY5/vLCUSV8FD04oPlgFHrt8XjSZX99mvrn19ebZwxvzj8G8AqiufPaAlAuRBraIlaBYrJ1bGdOFQTN8cyVC++8E/+PnnfnmHRag/KA/Pag56PApnDu0KfxYcCNuDqgmpMJo05UNiVX74fj8kr8oaONYK2c+1S0zPq9O7df1XtFnveNn/k5fGXvw9I6EfjzwVQzy51JICWI6Rcy8kQtP7vyprfe4ypovB2utlpxD6hMacf8U1sBtcN3hUTRCtMicqnfXye846chqLs0i+MH55dYzauYOwJ+SOF+7TmmhBHy48UrR4bgkYEk4TDlGjT7MtLIOjL9nXlwdzBoFbNyCXj5colf3dkE8BFORR0gtgAqM3aQXq4EwyO3uAfp9fC+vuvJI+W73+FvCs8WWJrpAgtZReMyDRHIbb6oDDrUDb4Ap7qxLU1wDWqxjWi6D1x47NrUcH/wvau/rfc3w9coaaDsJu6qRmiN2vh97mvLV/zpKXCx9GtQOhZBf0ltTse+UHjuTP+uXuA8LT+k1Fzre7vTMOHwdyp58XX4qLawTSUoBaz0f+Dai5qgq+bsxQqjomn5q9M+NPYh1cAhb4/+j77phLytPc0ttHswaWnE3/M6e2Csncbdmi2Kafnn+nabvWi0Ac4t+dHU1sdA5rLgfIhqEHxywKCOprUP5q6UxRZ3HJx2H5rjNBCTku0FPF3XyNzsrQE7L8GuepHgvf9veChzor+09wLBhDXu7Z+Mqq2/zQHrdNHRPfAJoXeX3q0TUOyFUK8OJMGsjnjlLvuoafkk3cyjF+Qi+PzFk7AozwfwZBvHLvhsL6D54b4oSjsOV3XlnNxWXjwtf21wvfT4aQnYuqpSd2zzRRAnI31F2vEQrt8R3FcY1APTmM7Lt19Rvw8FpmgHR3ReAstNLoSjBp+/d+v1t8bwnf2GsTf0oQ8Jpj6OdFc7Hnxf+ZnEssOwhCmP3elbAss2rTdaxOBDnxu2X3sUqj9HIua1jNvGdkDEwXjDzeingHIZqegea4eHXM4HN1ZXquXbsVv1pG5dwFEZOVqVeQX2b63WNwktg//OY6Z5/7/DoK3ErTC/C0o5yCypkI+Z+gALx9sPKHQHRJPP5qB8Fmb2lgRh/lqCIGzmGSCEuI/fCB4W0woe2q/7wE9cE/6N3tJh3jif95ZzypS0wrOYkkpm/zcDswxEDH+SflivpZ44QSw2n4FP5ND+BVRXMHw=")))
Oops, something went wrong.

0 comments on commit 3488290

Please sign in to comment.