コード例 #1
0
ファイル: two_level.py プロジェクト: trioslib/trios
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)
コード例 #2
0
ファイル: serialization_test.py プロジェクト: trioslib/trios
    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))
コード例 #3
0
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')
コード例 #4
0
ファイル: ka2.py プロジェクト: trioslib/trios
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]))
コード例 #5
0
ファイル: sobel.py プロジェクト: trioslib/trios
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))
コード例 #6
0
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))
コード例 #7
0
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))
コード例 #8
0
ファイル: nilc2.py プロジェクト: trioslib/trios
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)
コード例 #9
0
ファイル: fourier.py プロジェクト: trioslib/trios
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))
コード例 #10
0
ファイル: moments.py プロジェクト: trioslib/trios
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))
コード例 #11
0
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')
コード例 #12
0
ファイル: combination_test.py プロジェクト: trioslib/trios
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))
コード例 #13
0
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))
コード例 #14
0
ファイル: two-level.py プロジェクト: trioslib/trios
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))