[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