def train_combination(windows, classifiers, extractors, training1, procs=None): ''' Build a combination of operators using the provided feature extractor and classifiers. The `procs` parameter can be used to tune the number of parallel training jobs. ''' nwins = len(windows) ops = [ trios.WOperator(windows[i], classifiers[i], extractors[i]) for i in range(nwins) ] args = zip(ops, itertools.repeat(training1)) pool = mp.Pool(procs) trained_ops = pool.map(__train_parallel, args) pool.close() pool.join() del pool return CombinationPattern(*trained_ops)
def test_pickle_woperator_tree(self): win = np.ones((9, 3), np.uint8) ims = trios.Imageset.read("images/level1.set") wop = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), RAWFeatureExtractor) wop.train(ims) temp = tempfile.NamedTemporaryFile(delete=False) name = temp.name temp.close() gz = gzip.GzipFile(name, mode='w+b') pickle.dump(wop, gz, -1) gz.close() gz = gzip.GzipFile(name, mode='rb') wop2 = pickle.load(gz) gz.close() compare_window(wop.window, wop2.window) compare_raw_fe(wop.extractor, wop2.extractor) self.assertEqual(wop.trained, wop2.trained) self.assertEqual(type(wop.classifier.cls), type(wop2.classifier.cls))
import numpy as np import trios.shortcuts.persistence as p import trios.shortcuts.window as w if __name__ == '__main__': np.random.seed(10) images = trios.Imageset.read('images/level1.set') images2 = trios.Imageset.read('images/level2.set') test = trios.Imageset.read('images/test.set') domain = np.ones((7, 7), np.uint8) ops = [] for i in range(5): win = w.random_win(domain, 40, True) op = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), RAWFeatureExtractor) print('Training...', i) op.train(images) ops.append(op) comb = CombinationPattern(*ops) wop2 = trios.WOperator(comb.window, SKClassifier(DecisionTreeClassifier(), ordered=True), comb, batch=True) print('Training 2nd level') wop2.train(images2) # save trained operator p.save_gzip(wop2, 'dt-tl-jung.op')
from trios.contrib.kern_approx import NystromFeatures from trios.classifiers import SKClassifier from trios.feature_extractors import Aperture import trios import numpy as np from sklearn.svm import LinearSVC from aperture import training, testset if __name__ == '__main__': np.random.seed(10) domain = np.ones((11, 11), np.uint8) ap = Aperture(domain, k=10, mul=0.5) ka_features = NystromFeatures(ap, training, n_components=200, kernel='gaussian', gamma=0.01, batch_size=20000) svm = SKClassifier(LinearSVC(), partial=True) op = trios.WOperator(domain, svm, ka_features) op.train(training) print('Accuracy:', 1 - op.eval(testset[:2]))
from trios.classifiers import SKClassifier from sklearn.tree import DecisionTreeClassifier from trios.contrib.features.sobel import SobelExtractor import trios import numpy as np import trios.shortcuts.persistence as p drive_location = 'datasets/drive' training = trios.Imageset([ ('%s/training/images/%2d_training.tif'%(drive_location, i), '%s/training/1st_manual/%2d_manual1.gif'%(drive_location, i), '%s/training/mask/%2d_training_mask.gif'%(drive_location, i)) for i in range(21, 41)]) testset = trios.Imageset([ ('%s/test/images/%02d_test.tif'%(drive_location, i), '%s/test/1st_manual/%02d_manual1.gif'%(drive_location, i), '%s/test/mask/%02d_test_mask.gif'%(drive_location, i)) for i in range(1, 21)]) if __name__ == '__main__': win = np.ones((9,9), np.uint8) sobel = SobelExtractor(window=win) op = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), sobel) print('Training') op.train(training) print('Evaluating') print('Accuracy:', 1 - op.eval(testset))
from trios.classifiers.isi import ISI from trios.feature_extractors import RAWBitFeatureExtractor import trios import trios.shortcuts.window as trios_win if __name__ == '__main__': training_set = trios.Imageset.read('../jung-images/training.set') test = trios.Imageset.read('../jung-images/test.set') win = trios_win.rectangle(7, 7) # ISI requires features coded in the bits of an int32 op = trios.WOperator(win, ISI, RAWBitFeatureExtractor) op.train(training_set) print('Error: ', op.eval(test))
from trios.classifiers import SKClassifier from sklearn.tree import DecisionTreeClassifier from trios.feature_extractors import RAWFeatureExtractor import trios import numpy as np import trios.shortcuts.persistence as p import trios.shortcuts.window as trios_win if __name__ == '__main__': training_set = trios.Imageset.read('jung-images/training.set') test = trios.Imageset.read('jung-images/test.set') win = trios_win.rectangle(9, 7) classifier = SKClassifier(DecisionTreeClassifier()) fext = RAWFeatureExtractor(win) op = trios.WOperator(win, classifier, fext) op.train(training_set) p.save_gzip(op, 'basic-jung.op.gz') print('Error: ', op.eval(test))
if __name__ == '__main__': np.random.seed(10) images = trios.Imageset.read('../jung-images/level1.set') images2 = trios.Imageset.read('../jung-images/level2.set') test = trios.Imageset.read('../jung-images/test.set') domain = np.ones((9, 7), np.uint8) # Train all 50 transforms before starting NILC and apply them to images2 # This takes the fist 50 elements from the iterator and returns them. operators_50 = list( itertools.islice(operator_with_random_window(images, domain), 50)) comb = CombinationPattern(*operators_50) Z, y = comb.extract_dataset(images2, True) # nilc_precomputed requires the target vector coded in 0-1 labels y = y / 255 which_ops, cls2nd, progress = nilc_precomputed(Z, y, lamb=4.2, max_age=10) selected_transforms = [ op for i, op in enumerate(operators_50) if i in which_ops ] comb_final = CombinationPattern(*selected_transforms) op2 = trios.WOperator(domain, cls2nd, comb_final) print('Final error:', op2.eval(test)) print('Number of transforms:', len(op2.extractor)) plot_progress(progress)
from sklearn.tree import DecisionTreeClassifier from trios.contrib.features.fourier import FourierExtractor import trios import numpy as np import trios.shortcuts.persistence as p drive_location = 'datasets/drive' training = trios.Imageset([ ('%s/training/images/%2d_training.tif' % (drive_location, i), '%s/training/1st_manual/%2d_manual1.gif' % (drive_location, i), '%s/training/mask/%2d_training_mask.gif' % (drive_location, i)) for i in range(21, 41) ]) testset = trios.Imageset([ ('%s/test/images/%02d_test.tif' % (drive_location, i), '%s/test/1st_manual/%02d_manual1.gif' % (drive_location, i), '%s/test/mask/%02d_test_mask.gif' % (drive_location, i)) for i in range(1, 21) ]) if __name__ == '__main__': win = np.ones((9, 9), np.uint8) op = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), FourierExtractor) print('Training') op.train(training) print('Evaluating') print('Accuracy:', 1 - op.eval(testset))
from sklearn.tree import DecisionTreeClassifier from trios.contrib.features.moments import MomentsExtractor import trios import numpy as np import trios.shortcuts.persistence as p drive_location = 'datasets/' training = trios.Imageset([ ('%s/training/images/%2d_training.tif' % (drive_location, i), '%s/training/1st_manual/%2d_manual1.gif' % (drive_location, i), '%s/training/mask/%2d_training_mask.gif' % (drive_location, i)) for i in range(21, 41) ]) testset = trios.Imageset([ ('%s/test/images/%02d_test.tif' % (drive_location, i), '%s/test/1st_manual/%02d_manual1.gif' % (drive_location, i), '%s/test/mask/%02d_test_mask.gif' % (drive_location, i)) for i in range(1, 21) ]) if __name__ == '__main__': win = np.ones((9, 9), np.uint8) moments = MomentsExtractor(win, order=4) op = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), moments) print('Training') op.train(training) print('Evaluating') print('Accuracy:', 1 - op.eval(testset))
from sklearn.tree import DecisionTreeClassifier from trios.feature_extractors import RAWFeatureExtractor import trios import numpy as np import trios.shortcuts.persistence as p trios.show_eval_progress = False if __name__ == '__main__': np.random.seed(10) images = trios.Imageset.read('images/level1.set') win = np.ones((5, 5), np.uint8) # use Decision Tree Classifier and raw pixels as features. op = trios.WOperator(win, SKClassifier(DecisionTreeClassifier()), RAWFeatureExtractor) print('Training...') op.train(images) # save trained operator p.save_gzip(op, 'dt-jung.op') # and load it later op2 = p.load_gzip('dt-jung.op') # load image and apply operator. Second argument is application mask. img = p.load_image('images/jung-1a.png') print('Applying to image jung-1a.png') out = op.apply(img, img) p.save_image(out, 'out-dt-jung-1a.png') test = trios.Imageset.read('images/test.set')
from trios.classifiers import SKClassifier from sklearn import svm from sklearn.tree import DecisionTreeClassifier from trios.contrib.features.lbp import LBPExtractor from trios.contrib.features.featurecombination import FeatureCombinationExtractor from trios.feature_extractors import RAWFeatureExtractor import trios import numpy as np import trios.shortcuts.persistence as p if __name__ == '__main__': images = trios.Imageset.read('images/training.set') win = np.ones((5, 5), np.uint8) lbp = LBPExtractor(window=win, batch_size=1000) raw = RAWFeatureExtractor(window=win, batch_size=1000) feats = [] feats.append(lbp) feats.append(raw) combination = FeatureCombinationExtractor(*feats) op = trios.WOperator( win, SKClassifier(svm.LinearSVC(class_weight='balanced'), partial=True), combination) op.train(images) test = trios.Imageset.read('images/test.set') print('Accuracy', op.eval(test, procs=1))
import pyximport pyximport.install() from trios.classifiers import SKClassifier from sklearn.tree import DecisionTreeClassifier from sklearn import svm from trios.contrib.features.sobel import SobelExtractor import trios import numpy as np import trios.shortcuts.persistence as p if __name__ == '__main__': images = trios.Imageset.read('images/training.set') win = np.ones((5, 5), np.uint8) sobel = SobelExtractor(window=win, batch_size=1000) op = trios.WOperator(win, SKClassifier(svm.LinearSVC()), sobel) op.train(images) img= p.load_image('images/jung-1a.png') lbp = op.apply(img, img) p.save_image(lbp, 'sobel-out.png') test = trios.Imageset.read('images/test.set') print('Accuracy', op.eval(test, procs=7))
from sklearn.tree import DecisionTreeClassifier from trios.feature_extractors import RAWFeatureExtractor, CombinationPattern import trios import numpy as np import trios.shortcuts.persistence as p import trios.shortcuts.window as w if __name__ == '__main__': np.random.seed(10) # set this to select the same window everytime images = trios.Imageset.read('../jung-images/level1.set') images2 = trios.Imageset.read('../jung-images/level2.set') test = trios.Imageset.read('../jung-images/test.set') domain = np.ones((9, 7), np.uint8) windows = [w.random_win(domain, 40, True) for i in range(5)] ops = [] for i in range(5): op = trios.WOperator(windows[i], SKClassifier(DecisionTreeClassifier()), RAWFeatureExtractor) print('Training...', i) op.train(images) ops.append(op) comb = CombinationPattern(*ops) wop2 = trios.WOperator(comb.window, SKClassifier(DecisionTreeClassifier()), comb) print('Training 2nd level') wop2.train(images2) print('Error', wop2.eval(test))