def test_gibbs(self): infname = 'gibbs' param = opengm.inferenceParameter(self.gm, alg=infname) param.set(steps=2000, burnInSteps=20, variableProposal=opengm.VariableProposal.cyclic) param.isAcyclic = opengm.Tribool.maybe self.runAlgTester(infname, parameter=param)
def test_astar(self): infname='astar' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(heuristic=opengm.Heuristic.standard,maxHeapSize=2000000,numberOfOpt=1) self.runAlgTester(infname,optimal=True,parameter=param) param.heuristic=opengm.Heuristic.fast self.runAlgTester(infname,optimal=True,parameter=param) param.heuristic=opengm.Heuristic.default self.runAlgTester(infname,optimal=True,parameter=param)
for x4 in range(2): labelsum=x1+x2+x3+x4 if labelsum is not 2 and labelsum is not 0 : fClosedness[x1,x2,x3,x4]=high fidClosedness=gm.addFunction(fClosedness) # for each boundary in the grid, i.e. for each variable # of the model, add one 1st order functions # and one 1st order factor # and for each junction of four inter-pixel edges on the grid, # one factor is added that connects the corresponding variable # indices and refers to the closedness-function for yt in range(tGridSize[1]): for xt in range(tGridSize[0]): # unaries if (xt % 2 + yt % 2) == 1 : gradient = abs( data[xt / 2, yt / 2]- data[xt/ 2 + xt % 2, yt / 2 + yt % 2]) f=numpy.array([beta*gradient , (1.0-beta)*(1.0-gradient)],dtype=numpy.float32) print gm[gm.addFactor(gm.addFunction(f),[cToVi.convert(xt,yt)])].asNumpy() # high order factors (4.th order) if xt % 2 + yt % 2 == 2 : vi=[cToVi.convert(xt + 1, yt),cToVi.convert(xt - 1, yt),cToVi.convert(xt, yt + 1), cToVi.convert(xt, yt - 1)] vi=sorted(vi); gm.addFactor(fidClosedness,vi) param=opengm.inferenceParameter(gm=gm,alg="lf") param.set(maxSubgraphSize=4) inf=opengm.inferenceAlgorithm(gm=gm,alg="lf",parameter=param) inf.infer(verbose=True) arg=inf.arg() printSolution(data,arg)
def test_bp(self): infname='libdai-bp' param=opengm.inferenceParameter(self.gm,alg=infname) self.runAlgTester(infname,parameter=param)
def runAlgTester(self,algName,optimal=False,parameter=None): if parameter is None: parameter=opengm.inferenceParameter(self.gm,alg=algName) inf=opengm.inferenceAlgorithm(self.gm,alg=algName,parameter=parameter) checkInference(self.gm,inf,self.argOpt,optimal=optimal)
def test_lazyflipper(self): param=opengm.inferenceParameter(self.gm,alg='lf') param.maxSubgraphSize=2 self.runAlgTester('lf',parameter=param) param.maxSubgraphSize=3 self.runAlgTester('lf',parameter=param)
def test_icm(self): param=opengm.inferenceParameter(self.gm,alg='icm') param.moveType=opengm.MoveType.variable self.runAlgTester('icm',parameter=param) param.moveType=opengm.MoveType.factor self.runAlgTester('icm',parameter=param)
def test_trbp(self): infname='trbp' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(isAcyclic=opengm.Tribool.false,steps=100) param.isAcyclic=opengm.Tribool.maybe self.runAlgTester(infname,parameter=param)
def test_bp(self): infname='bp' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(isAcyclic=opengm.Tribool.false) param.isAcyclic=opengm.Tribool.false self.runAlgTester(infname,parameter=param)
def test_cplex(self): infname='lpcplex' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(integerConstraint=True) self.runAlgTester(infname,parameter=param)
def test_junction_tree(self): infname='libdai-jt' param=opengm.inferenceParameter(self.gm,alg=infname) param.set() self.runAlgTester(infname,parameter=param) param.set(updateRule=opengm.JunctionTreeUpdateRule.shsh,heuristic=opengm.JunctionTreeHeuristic.minfill)
def test_trbp(self): infname='libdai-trbp' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(steps=100,updateRule=opengm.BpUpdateRule.parall,tolerance=0.0001,damping=0.01,ntrees=0) self.runAlgTester(infname,parameter=param)
def test_gibbs(self): infname='gibbs' param=opengm.inferenceParameter(self.gm,alg=infname) param.set(steps=2000) param.isAcyclic=opengm.Tribool.maybe self.runAlgTester(infname,parameter=param)
print "get regions pixels" regionPixels=[ ] regionFeatures=numpy.ones([rag.numberOfRegions(),3],dtype=numpy.float64) for r in range(rag.numberOfRegions()): regionPixels.append(rag.regionPixels(r)) print "build model" gm=buildGM(img=img,rag=rag,dataImage=seedMapTemp2,numLabels=numLabels,boundaryPixels=boundaryPixels,regionPixels=regionPixels,beta=beta,sigma=sigma,verbose=False) print "start inference" alg='trbp' param=opengm.inferenceParameter(gm=gm,alg=alg) param.set(steps=6,damping=0.1) #arg=inferAndWriteResult(printNth=1,alg=alg,param=param,img=imgRGB,rag=rag,prefix=outprefix,filename=basename,boundaryPixels=boundaryPixels,regionPixels=regionPixels,verbose=verboseInf) alg='bp' param=opengm.inferenceParameter(gm=gm,alg=alg) param.set(steps=1,damping=0.6) arg=inferAndWriteResult(printNth=1,alg=alg,param=param,img=imgRGB,rag=rag,prefix=outprefix,filename=basename,boundaryPixels=boundaryPixels,regionPixels=regionPixels,verbose=verboseInf) alg='icm' param=opengm.inferenceParameter(gm=gm,alg=alg) param.set() #arg=inferAndWriteResult(printNth=1000,alg=alg,param=param,img=imgRGB,rag=rag,prefix=outprefix,filename=basename,boundaryPixels=boundaryPixels,regionPixels=regionPixels,verbose=verboseInf,startingPoint=arg) alg='gibbs' param=opengm.inferenceParameter(gm=gm,alg=alg)