[opengm] 237/386: minor improvements

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Aug 31 08:37:57 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/master
in repository opengm.

commit f9041d979c95d99a1387d770f7a13538209cec5b
Author: DerThorsten <thorsten.beier at iwr.uni-heidelberg.de>
Date:   Wed Jan 14 17:22:52 2015 +0100

    minor improvements
---
 fubar/brown_horse2.py           | 136 ++++++++++++++++++++++++++++++++
 fubar/brown_horse_sp.py         | 161 ++++++++++++++++++++++++++++++++++++++
 fubar/make_mc_dset.py           |  19 +++++
 fubar/noisy_squares_3_labels.py | 125 ++++++++++++++++++++++++++++++
 fubar/simple_sp.py              | 167 ++++++++++++++++++++++++++++++++++++++++
 5 files changed, 608 insertions(+)

diff --git a/fubar/brown_horse2.py b/fubar/brown_horse2.py
new file mode 100644
index 0000000..89f3ddb
--- /dev/null
+++ b/fubar/brown_horse2.py
@@ -0,0 +1,136 @@
+import numpy
+import opengm
+from opengm import learning
+import vigra
+from progressbar import *
+import glob
+import os
+from functools import partial
+from opengm.learning import secondOrderImageDataset, getPbar
+
+
+
+def posiFeatures(img):
+    shape = img.shape[0:2]
+    x = numpy.linspace(0, 1, shape[0])
+    y = numpy.linspace(0, 1, shape[1])
+    xv, yv = numpy.meshgrid(y, x)
+    xv -=0.5
+    yv -=0.5
+
+    rad = numpy.sqrt(xv**2 + yv**2)[:,:,None]
+    erad = numpy.exp(1.0 - rad)
+    xva = (xv**2)[:,:,None]
+    yva = (yv**2)[:,:,None]
+
+    res = numpy.concatenate([erad, rad,xva,yva,xv[:,:,None],yv[:,:,None]],axis=2)
+    assert res.shape[0:2] == img.shape[0:2]
+    return res
+
+#i = numpy.ones([7, 5])
+#
+#print posiFeatures(i).shape
+#
+# where is the dataset stored
+dsetRoot = '/home/tbeier/datasets/weizmann_horse_db/'
+imgPath = dsetRoot + 'brown_horse/'
+gtBasePath = dsetRoot + 'figure_ground/'
+
+imgFiles = glob.glob(imgPath+'*.jpg')
+takeNth = 2
+imgs = []
+gts = []
+pbar = getPbar(len(imgFiles), 'Load Image')
+pbar.start()
+for i,path in enumerate(imgFiles):
+    gtPath =  gtBasePath + os.path.basename(path)
+    rgbImg  = vigra.impex.readImage(path)
+    gtImg  = vigra.impex.readImage(gtPath).astype('uint32')[::takeNth,::takeNth]
+    gtImg[gtImg<125] = 0
+    gtImg[gtImg>=125] = 1
+    cEdgeImg = vigra.analysis.regionImageToCrackEdgeImage(gtImg+1)
+    cEdgeImg[cEdgeImg>0] = 1
+    cEdgeImg = vigra.filters.discErosion(cEdgeImg.astype('uint8'),2)
+    gtImg = cEdgeImg.astype(numpy.uint64)
+
+    if i ==0:
+        vigra.imshow(cEdgeImg)
+        vigra.show()
+    rgbImg = vigra.resize(rgbImg, [gtImg.shape[0],gtImg.shape[1]])
+    imgs.append(rgbImg)
+    gts.append(gtImg)
+    pbar.update(i)
+pbar.finish()
+
+def getSelf(img):
+    return img
+
+
+def labHessianOfGaussian(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.hessianOfGaussianEigenvalues(l, sigma)
+
+def labStructTensorEv(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.structureTensorEigenvalues(l, sigma, 2*sigma)
+
+fUnary = [
+    #posiFeatures,
+    #getSelf,
+    vigra.colors.transform_RGB2XYZ,
+    vigra.colors.transform_RGB2Lab,
+    vigra.colors.transform_RGB2Luv,
+    partial(labHessianOfGaussian, sigma=1.0),
+    partial(labHessianOfGaussian, sigma=2.0),
+    partial(labStructTensorEv, sigma=1.0),
+    partial(labStructTensorEv, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+]
+
+fBinary = [
+    #posiFeatures,
+    vigra.colors.transform_RGB2XYZ,
+    vigra.colors.transform_RGB2Lab,
+    vigra.colors.transform_RGB2Luv,
+    partial(labHessianOfGaussian, sigma=1.0),
+    partial(labHessianOfGaussian, sigma=2.0),
+    partial(labStructTensorEv, sigma=1.0),
+    partial(labStructTensorEv, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+]
+
+
+dataset,test_set = secondOrderImageDataset(imgs=imgs, gts=gts, numberOfLabels=2, 
+                                          fUnary=fUnary, fBinary=fBinary, 
+                                          addConstFeature=False)
+
+
+
+
+learner =  learning.subgradientSSVM(dataset, learningRate=0.1, C=1000, 
+                                    learningMode='batch',maxIterations=1000)
+
+#learner = learning.structMaxMarginLearner(dataset, 0.1, 0.001, 0)
+
+
+learner.learn(infCls=opengm.inference.QpboExternal, 
+              parameter=opengm.InfParam())
+
+
+
+# predict on test test
+for (rgbImg, gtImg, gm) in test_set :
+    # infer for test image
+    inf = opengm.inference.QpboExternal(gm)
+    inf.infer()
+    arg = inf.arg()
+    arg = arg.reshape( numpy.squeeze(gtImg).shape)
+
+    vigra.imshow(arg)
+    #vigra.segShow(rgbImg, arg+2)
+    vigra.show()
+
diff --git a/fubar/brown_horse_sp.py b/fubar/brown_horse_sp.py
new file mode 100644
index 0000000..eb6f90d
--- /dev/null
+++ b/fubar/brown_horse_sp.py
@@ -0,0 +1,161 @@
+import numpy
+import opengm
+from opengm import learning
+import vigra
+from progressbar import *
+import glob
+import os
+from functools import partial
+from opengm.learning import secondOrderImageDataset, getPbar,superpixelDataset
+
+
+
+def posiFeatures(img):
+    shape = img.shape[0:2]
+    x = numpy.linspace(0, 1, shape[0])
+    y = numpy.linspace(0, 1, shape[1])
+    xv, yv = numpy.meshgrid(y, x)
+    xv -=0.5
+    yv -=0.5
+
+    rad = numpy.sqrt(xv**2 + yv**2)[:,:,None]
+    erad = numpy.exp(1.0 - rad)
+    xva = (xv**2)[:,:,None]
+    yva = (yv**2)[:,:,None]
+
+    res = numpy.concatenate([erad, rad,xva,yva,xv[:,:,None],yv[:,:,None]],axis=2)
+    assert res.shape[0:2] == img.shape[0:2]
+    return res
+
+#i = numpy.ones([7, 5])
+#
+#print posiFeatures(i).shape
+#
+# where is the dataset stored
+dsetRoot = '/home/tbeier/datasets/weizmann_horse_db/'
+imgPath = dsetRoot + 'brown_horse/'
+gtBasePath = dsetRoot + 'figure_ground/'
+
+imgFiles = glob.glob(imgPath+'*.jpg')
+takeNth = 1
+
+imgs = []
+sps = []
+gts = []
+
+
+pbar = getPbar(len(imgFiles), 'Load Image')
+pbar.start()
+for i,path in enumerate(imgFiles):
+    gtPath =  gtBasePath + os.path.basename(path)
+    rgbImg  = vigra.impex.readImage(path)
+    gtImg  = vigra.impex.readImage(gtPath).astype('uint32')[::takeNth,::takeNth]
+    gtImg[gtImg<125] = 0
+    gtImg[gtImg>=125] = 1
+    rgbImg = vigra.resize(rgbImg, [gtImg.shape[0],gtImg.shape[1]])
+    
+
+    #vigra.imshow(gtImg.astype('float32'))
+    #vigra.show()
+
+    labImg = vigra.colors.transform_RGB2Lab(rgbImg.astype('float32'))
+    sp,nSeg  = vigra.analysis.slicSuperpixels(labImg, intensityScaling=20.0, seedDistance=5)
+    sp = vigra.analysis.labelImage(sp)-1
+
+    #vigra.segShow(rgbImg, sp)
+    #vigra.show()
+    gg  = vigra.graphs.gridGraph(rgbImg.shape[0:2])
+    rag = vigra.graphs.regionAdjacencyGraph(gg,sp)
+
+    gt,qtq = rag.projectBaseGraphGt(gtImg)
+
+    #rag.show(rgbImg, gt)
+    #vigra.show()
+
+
+    imgs.append(rgbImg)
+    gts.append(gt)
+    sps.append(sp)
+
+    pbar.update(i)
+
+
+pbar.finish()
+
+def getSelf(img):
+    return img
+
+
+def labHessianOfGaussian(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.hessianOfGaussianEigenvalues(l, sigma)
+
+def labStructTensorEv(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.structureTensorEigenvalues(l, sigma, 2*sigma)
+
+fUnary = [
+    posiFeatures,
+    getSelf,
+    vigra.colors.transform_RGB2XYZ,
+    vigra.colors.transform_RGB2Lab,
+    vigra.colors.transform_RGB2Luv,
+    partial(labHessianOfGaussian, sigma=1.0),
+    partial(labHessianOfGaussian, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+]
+
+fBinary = [
+    posiFeatures,
+    vigra.colors.transform_RGB2XYZ,
+    vigra.colors.transform_RGB2Lab,
+    vigra.colors.transform_RGB2Luv,
+    partial(labHessianOfGaussian, sigma=1.0),
+    partial(labHessianOfGaussian, sigma=2.0),
+    partial(labStructTensorEv, sigma=1.0),
+    partial(labStructTensorEv, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+]
+
+
+dataset,test_set = superpixelDataset(imgs=imgs,sps=sps, gts=gts, numberOfLabels=2, 
+                                          fUnary=fUnary, fBinary=fBinary, 
+                                          addConstFeature=True)
+
+
+
+
+
+learner =  learning.subgradientSSVM(dataset, learningRate=0.1, C=100, 
+                                    learningMode='batch',maxIterations=1000, averaging=-1)
+
+
+#learner = learning.structMaxMarginLearner(dataset, 0.1, 0.001, 0)
+
+
+learner.learn(infCls=opengm.inference.QpboExternal, 
+              parameter=opengm.InfParam())
+
+
+
+# predict on test test
+for (rgbImg, sp, gm) in test_set :
+    # infer for test image
+    inf = opengm.inference.QpboExternal(gm)
+    inf.infer()
+    arg = inf.arg()+1
+
+    arg  = numpy.concatenate([[0],arg])
+
+    gg  = vigra.graphs.gridGraph(rgbImg.shape[0:2])
+    rag = vigra.graphs.regionAdjacencyGraph(gg,sp)
+
+    seg = rag.projectLabelsToBaseGraph(arg.astype('uint32'))
+
+    vigra.segShow(rgbImg, seg+2)
+    vigra.show()
+
diff --git a/fubar/make_mc_dset.py b/fubar/make_mc_dset.py
new file mode 100644
index 0000000..9fc4cc8
--- /dev/null
+++ b/fubar/make_mc_dset.py
@@ -0,0 +1,19 @@
+import numpy
+import opengm
+from opengm import learning
+import vigra
+from progressbar import *
+from functools import partial
+
+
+getPbar
+
+
+def make_mmwc_dataset(nSemanticClasses, modelSizes, edges, nodeFeatures, edgeFeatures, allowCutsWithin):
+
+    assert len(modelSize)==len(edges)
+    assert len(edges) == len(nodeFeatures)
+    assert len(edges) == len(nodeFeatures)
+    
+    for modelSize,edge
+
diff --git a/fubar/noisy_squares_3_labels.py b/fubar/noisy_squares_3_labels.py
new file mode 100644
index 0000000..acd70e1
--- /dev/null
+++ b/fubar/noisy_squares_3_labels.py
@@ -0,0 +1,125 @@
+import numpy
+import opengm
+from opengm import learning
+import vigra
+from progressbar import *
+import glob
+import os
+from functools import partial
+from opengm.learning import secondOrderImageDataset, getPbar
+
+numpy.random.seed(42)
+
+nImages = 8 
+shape = [30, 30]
+noise = 2.0
+imgs = []
+gts = []
+
+
+for i in range(nImages):
+
+    gtImg = numpy.zeros(shape)
+    gtImg[0:shape[0]/2,:] = 1
+
+    gtImg[shape[0]/4: 3*shape[0]/4, shape[0]/4: 3*shape[0]/4]  = 2
+
+    ra = numpy.random.randint(180)
+    #print ra 
+
+    gtImg = vigra.sampling.rotateImageDegree(gtImg.astype(numpy.float32),int(ra),splineOrder=0)
+
+    if i<2 :
+        vigra.imshow(gtImg)
+        vigra.show()
+
+    img = gtImg + numpy.random.random(shape)*float(noise)
+    if i<2 :
+        vigra.imshow(img)
+        vigra.show()
+
+    imgs.append(img.astype('float32'))
+    gts.append(gtImg)
+
+
+
+
+
+
+
+def getSelf(img):
+    return img
+
+
+def getSpecial(img, sigma):
+    simg = vigra.filters.gaussianSmoothing(img, sigma=sigma)
+
+    img0  = simg**2
+    img1  = (simg - 1.0)**2
+    img2  = (simg - 2.0)**2
+
+    img0=img0[:,:,None]
+    img1=img1[:,:,None]
+    img2=img2[:,:,None]
+
+
+    return numpy.concatenate([img0,img1,img2],axis=2)
+
+
+fUnary = [
+    partial(getSpecial, sigma=0.5),
+    partial(getSpecial, sigma=1.0)
+]
+
+fBinary = [
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=0.5),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.5),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=3.0),
+]
+
+
+dataset,test_set = secondOrderImageDataset(imgs=imgs, gts=gts, numberOfLabels=3, 
+                                          fUnary=fUnary, fBinary=fBinary, 
+                                          addConstFeature=True)
+
+
+
+
+
+
+
+learningModi = ['normal','reducedinference','selfFusion','reducedinferenceSelfFusion']
+lm = 0
+
+
+infCls = opengm.inference.TrwsExternal
+param = opengm.InfParam()
+
+if False:
+    print "construct learner"
+    learner = learning.maxLikelihoodLearner(dataset)
+    print "start to learn"
+    learner.learn()
+    print "exit"
+
+else:
+   learner =  learning.subgradientSSVM(dataset, learningRate=0.5, C=100, learningMode='batch',maxIterations=500,averaging=-1,nConf=0)
+   learner.learn(infCls=infCls,parameter=param,connectedComponents=True,infMode='n')
+
+
+# predict on test test
+for (rgbImg, gtImg, gm) in test_set :
+    # infer for test image
+    inf = opengm.inference.TrwsExternal(gm)
+    inf.infer()
+    arg = inf.arg()
+    arg = arg.reshape( numpy.squeeze(gtImg.shape))
+
+    vigra.imshow(rgbImg)
+    vigra.show()
+
+    vigra.imshow(arg+2)
+    vigra.show()
+
diff --git a/fubar/simple_sp.py b/fubar/simple_sp.py
new file mode 100644
index 0000000..dfecc33
--- /dev/null
+++ b/fubar/simple_sp.py
@@ -0,0 +1,167 @@
+import numpy
+import opengm
+from opengm import learning
+import vigra
+from progressbar import *
+import glob
+import os
+from functools import partial
+from opengm.learning import secondOrderImageDataset, getPbar,superpixelDataset
+
+
+
+
+nImages = 20 
+shape = [100, 100]
+noise = 15.0
+imgs = []
+gts = []
+sps = []
+
+
+
+pbar = getPbar((nImages), 'Load Image')
+pbar.start()
+
+for i in range(nImages):
+
+    gtImg = numpy.zeros(shape)
+    gtImg[0:shape[0]/2,:] = 1
+
+    gtImg[shape[0]/4: 3*shape[0]/4, shape[0]/4: 3*shape[0]/4]  = 2
+
+    ra = numpy.random.randint(180)
+    #print ra 
+
+    gtImg = vigra.sampling.rotateImageDegree(gtImg.astype(numpy.float32),int(ra),splineOrder=0)
+
+    if i<1 :
+        vigra.imshow(gtImg)
+        vigra.show()
+
+    img = gtImg + numpy.random.random(shape)*float(noise)
+    if i<1 :
+        vigra.imshow(img)
+        vigra.show()
+
+
+
+    sp,nSeg  = vigra.analysis.slicSuperpixels(gtImg, intensityScaling=0.2, seedDistance=5)
+    sp = vigra.analysis.labelImage(sp)-1
+
+
+    if i<1:
+        vigra.segShow(img, sp+1,edgeColor=(1,0,0))
+        vigra.show()
+
+
+    gg  = vigra.graphs.gridGraph(gtImg.shape[0:2])
+    rag = vigra.graphs.regionAdjacencyGraph(gg,sp)
+
+    gt,qtq = rag.projectBaseGraphGt(gtImg)
+
+    #rag.show(img, gt)
+    #vigra.show()
+
+
+    imgs.append(img.astype('float32'))
+    gts.append(gt)
+    sps.append(sp)
+
+    pbar.update(i)
+
+
+pbar.finish()
+
+def getSelf(img):
+    return img
+
+
+def labHessianOfGaussian(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.hessianOfGaussianEigenvalues(l, sigma)
+
+def labStructTensorEv(img, sigma):
+    l = vigra.colors.transform_RGB2Lab(img)[:,:,0]
+    l = vigra.taggedView(l,'xy')
+    return vigra.filters.structureTensorEigenvalues(l, sigma, 2*sigma)
+
+
+def getSelf(img):
+    return img
+
+
+def getSpecial(img, sigma):
+    simg = vigra.filters.gaussianSmoothing(img, sigma=sigma)
+
+    img0  = simg**2
+    img1  = (simg - 1.0)**2
+    img2  = (simg - 2.0)**2
+
+    img0=img0[:,:,None]
+    img1=img1[:,:,None]
+    img2=img2[:,:,None]
+
+
+    return numpy.concatenate([img0,img1,img2],axis=2)
+
+
+fUnary = [
+    partial(getSpecial, sigma=0.5),
+    partial(getSpecial, sigma=1.0)
+]
+
+fBinary = [
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=0.5),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=1.5),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=2.0),
+    partial(vigra.filters.gaussianGradientMagnitude, sigma=3.0),
+]
+
+
+dataset,test_set = superpixelDataset(imgs=imgs,sps=sps, gts=gts, numberOfLabels=3, 
+                                          fUnary=fUnary, fBinary=fBinary, 
+                                          addConstFeature=True)
+
+
+
+
+
+learner =  learning.subgradientSSVM(dataset, learningRate=0.1, C=100, 
+                                    learningMode='batch',maxIterations=1000, averaging=-1)
+
+
+#learner = learning.structMaxMarginLearner(dataset, 0.1, 0.001, 0)
+
+
+learner.learn(infCls=opengm.inference.TrwsExternal, 
+              parameter=opengm.InfParam())
+
+
+
+# predict on test test
+for (rgbImg, sp, gm) in test_set :
+    # infer for test image
+    inf = opengm.inference.TrwsExternal(gm)
+    inf.infer()
+    arg = inf.arg()+1
+
+
+
+    assert sp.min() == 0
+    assert sp.max() == arg.shape[0] -1
+
+    gg  = vigra.graphs.gridGraph(rgbImg.shape[0:2])
+    rag = vigra.graphs.regionAdjacencyGraph(gg,sp)
+
+    seg = rag.projectLabelsToBaseGraph(arg.astype('uint32'))
+
+    vigra.imshow(rgbImg)
+    vigra.show()
+
+
+    vigra.imshow(seg)
+    vigra.show()
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/opengm.git



More information about the debian-science-commits mailing list