def inference_LoadProgram(self):
        MyRIPL = self.RIPL
        try:
            self.LoadProgram(explore_Joint=0)
        except ConnectionError:
            return -1

        MyRIPL.observe(
            lisp_parser.parse(
                "(noisy-image-compare test-image rendered-image pflip)"),
            "true")

        r = openGLText.openGLText(self.filename)

        logsArray = []
        pxdisagreeArr = []
        lettercountArr = []
        globalBlurArr = []
        blurArr = dict()
        for i in range(MAX_LETTERS):
            blurArr[i] = []

        pflipArr = []
        baselineIm = Image.open(self.filename).convert("L")
        baselineIm = asarray(baselineIm)

        chrs = self.predictCharacteres()

        cnt = 0
        ## directory to hold all plots
        now = SEED + '_MAX_LETTERS_' + str(MAX_LETTERS) + '_' + str(
            datetime.datetime.now())
        dst = "dump/" + now
        os.makedirs(dst)
        os.makedirs(dst + '/composite')
        os.makedirs(dst + '/logscore')
        os.makedirs(dst + '/pxdisagree')
        os.makedirs(dst + '/globalblur')
        os.makedirs(dst + '/variance')
        os.makedirs(dst + '/blur')
        os.makedirs(dst + '/lettercount')
        os.makedirs(dst + '/images')
        os.makedirs(dst + '/pickle')
        while cnt < 352:
            MyRIPL.infer(100)

            pflip = MyRIPL.report_value(self._pflip)
            global_blur = MyRIPL.report_value(self._global_blur)
            globalBlurArr.append(global_blur)
            things = []

            letter_count = 0
            for i in range(MAX_LETTERS):
                posx, posy, size_x, size_y, rotate_z, _id, blur, present = self.reportCharacters(
                    chrs, i)
                print present, pflip
                if present == True:
                    letter_count += 1
                    things.append({
                        'id': chr(int(_id) + 65),
                        'size_x': size_x,
                        'size_y': size_y,
                        'rotate_z': rotate_z,
                        'left': posx,
                        'top': posy,
                        'blur_sigsq': blur
                    })
                    #print "left():",posx," top():", posy," size_x:", size_x, " size_y:", size_y, " rotate_z:", rotate_z,chr(_id+65)," blur: ",blur,"| pflip:", pflip, '\n'
                    blurArr[i].append(blur)
                else:
                    blurArr[i].append(0)

            cnt = cnt + 1

            im = r.get_rendered_image(things, global_blur)
            scipy.misc.imsave(dst + str('/images/') + str(cnt) + '.png', im)
            logscore = MyRIPL.logscore()
            logsArray.append(logscore['logscore'])
            print 'LOGSCORE:', logscore, "|", cnt
            diff = sum(abs(im - baselineIm))
            pxdisagreeArr.append(diff)
            pflipArr.append(pflip)
            lettercountArr.append(letter_count)

            ###################################### PLOTTING HARNESS ############################################
            self.composite(baselineIm, im, range(cnt), logsArray,
                           pxdisagreeArr, globalBlurArr, pflipArr,
                           dst + str('/composite/') + str(cnt) + '.png')

            if cnt % 30 == 0:
                OBJ = {
                    'logscore': logsArray,
                    'pxdisagree': pxdisagreeArr,
                    'variance': pflipArr,
                    'letter-count': lettercountArr,
                    'global-blur': globalBlurArr,
                    'letter-blur': blurArr
                }
                pickle.dump(
                    OBJ, open(dst + str('/pickle/') + str(cnt) + '.pkl', 'wb'))
                self.savePlot(range(cnt), logsArray, "LOG-SCORE", "Iterations",
                              "logscore",
                              dst + str('/logscore/') + str(cnt) + '.png')
                self.savePlot(range(cnt), pxdisagreeArr, "PX-DISAGREE",
                              "Iterations", "pxdisagree",
                              dst + str('/pxdisagree/') + str(cnt) + '.png')
                self.savePlot(range(cnt), pflipArr, "VARIANCE", "Iterations",
                              "variance",
                              dst + str('/variance/') + str(cnt) + '.png')
                self.savePlot(range(cnt), lettercountArr, "LETTER-COUNT",
                              "Iterations", "letter count",
                              dst + str('/lettercount/') + str(cnt) + '.png')
                self.savePlot(range(cnt), globalBlurArr, "GLOBAL-BLUR",
                              "Iterations", "blur",
                              dst + str('/globalblur/') + str(cnt) + '.png')

                for jj in range(MAX_LETTERS):
                    self.savePlot(
                        range(cnt), blurArr[jj], "BLUR-LETTER-" + str(jj),
                        "Iterations", "blur", dst + str('/blur/') + str(cnt) +
                        '_' + str(jj) + '.png')
Exemple #2
0
  def LoadProgram(self):
    MyRIPL = self.RIPL
    
    MyRIPL.clear() # To delete previous sessions data.

    chrs = self.createCharacter()
    (_alpha,tmp) = MyRIPL.assume("alpha", lisp_parser.parse("(uniform-continuous 0.01 8)"))
    (_pflip,tmp)= MyRIPL.assume("pflip", lisp_parser.parse("(uniform-continuous 0.0 1.0)"))


    MyRIPL.assume("LOAD-IMAGE", lisp_parser.parse("1"))
    MyRIPL.assume("RENDER-IMAGE", lisp_parser.parse("10"))
    MyRIPL.assume("NOISY-COMP", lisp_parser.parse("3"))

    MyRIPL.assume("load-image", lisp_parser.parse("(load-remote-xrp 4444 LOAD-IMAGE)"))    
    MyRIPL.assume("render-image", lisp_parser.parse("(load-remote-xrp 4444 RENDER-IMAGE)"))    
    MyRIPL.assume("noisy-image-compare", lisp_parser.parse("(load-remote-xrp 4444 NOISY-COMP)"))    

    MyRIPL.assume("test-image", lisp_parser.parse("(load-image 0 0 0 0 0)")) #FIXME - dynamic args
    
    arguments = ""
    for i in range(NUM_LETTERS):
        arguments += " posx"+str(i)+" "+"posy"+str(i)+" "+"id"+str(i)+" "+"size"+str(i)+" "+"blur"+str(i) + " 1"
    MyRIPL.assume("rendered-image", lisp_parser.parse("(render-image " + arguments + ")")) #FIXME - dynamic args

    MyRIPL.observe(lisp_parser.parse("(noisy-image-compare test-image rendered-image pflip)"), "true")

    r = openGLText.openGLText()

    logsArray = []
    pxdisagreeArr = []
    blurArr = []
    pflipArr = []
    baselineIm = Image.open("cvprtext.png").convert("L")
    baselineIm = asarray(baselineIm)

    cnt = 0
    while cnt < 200:
        MyRIPL.infer(50)

        pflip = MyRIPL.report_value(_pflip)
        alpha = MyRIPL.report_value(_alpha)
        
        things = []

        for i in range(len(chrs)):
            posx,posy,size,_id,blur = self.reportCharacters(chrs[i])
            things.append({'id':chr(int(_id)+65), 'size':size, 'left':posx, 'top':posy,'blur_sigsq':blur})
            print "left():",posx," top():", posy," size():", size,chr(_id+65)," blur: ",blur,"| pflip:", pflip, "|", alpha
        print "####\n"

        im = r.get_rendered_image(things)
        scipy.misc.imsave('inference.jpg', im)
        logscore = MyRIPL.logscore()
        logsArray.append(logscore['logscore'])

        compound = im+baselineIm
        intersection_ones = len(where(compound == 2)[0])
        intersection_zeros = len(where(compound == 0)[0])
        intersection = intersection_zeros + intersection_ones
        pxdisagreeArr.append(float(RES-intersection)/RES)

        pflipArr.append(pflip)
        blurArr.append(blur)

        print 'LOGSCORE:', logscore, "|", cnt
        cnt = cnt + 1

        #self.initPlottingHarness(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,pflipArr,blurArr,cnt)
        self.demoPlotting(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,pflipArr,blurArr,cnt)


    """ # add directives needed
  def LoadProgram(self):
    MyRIPL = self.RIPL
    
    MyRIPL.clear() # To delete previous sessions data.
    
    MyRIPL.assume("flip-relax", lisp_parser.parse("(mem (lambda(letter-id) (beta 1 2)))"))
    MyRIPL.assume("letter-present", lisp_parser.parse("(mem (lambda(letter-id) (bernoulli (flip-relax letter-id) )))"))

    """MyRIPL.assume("flip-relax-relax", lisp_parser.parse("(mem (lambda(letter-id) (uniform-continuous 1.0 3.0)))"))
    MyRIPL.assume("flip-relax", lisp_parser.parse("(mem (lambda(letter-id) (beta 10 (flip-relax-relax letter-id))))"))
    MyRIPL.assume("letter-present", lisp_parser.parse("(mem (lambda(letter-id) (bernoulli (flip-relax letter-id) )))"))"""
    
    self.RIPL.assume("posx", lisp_parser.parse("(mem (lambda (letter-id) (uniform-discrete 0 150)))")) #0 -140 captcha
    self.RIPL.assume("posy", lisp_parser.parse("(mem (lambda (letter-id) (uniform-discrete 0 150)))")) #0 - 100 captcha #56-64 ocr
    self.RIPL.assume("size_x", lisp_parser.parse("(mem (lambda (letter-id) (uniform-discrete 30 70)))")) #30-70 captcha
    self.RIPL.assume("size_y", lisp_parser.parse("(mem (lambda (letter-id) (size_x letter-id)))")) #30-70 captcha
    self.RIPL.assume("rotate_z", lisp_parser.parse("(mem (lambda (letter-id) (uniform-continuous -40.0 40.0)))")) #30-70 captcha    
    self.RIPL.assume("id", lisp_parser.parse("(mem (lambda (letter-id) (uniform-discrete 0 2)))")) #0 -2
    #self.RIPL.assume("blur", lisp_parser.parse("(mem (lambda (letter-id) (gamma 1 1)))")) # 0 - 10
    self.RIPL.assume("blur", lisp_parser.parse("(* 10 (beta 1 10))")) # 0 - 10

    (_alpha,tmp) = MyRIPL.assume("alpha", lisp_parser.parse("(uniform-continuous 0 20)"))
    (_pflip,tmp)= MyRIPL.assume("pflip", lisp_parser.parse("(/ (beta 1 5) 2)")) #beta 6 1 works reasonably


    MyRIPL.assume("LOAD-IMAGE", lisp_parser.parse("1"))
    MyRIPL.assume("RENDER-IMAGE", lisp_parser.parse("10"))
    MyRIPL.assume("NOISY-COMP", lisp_parser.parse("3"))

    MyRIPL.assume("load-image", lisp_parser.parse("(load-remote-xrp 4444 LOAD-IMAGE)"))    
    MyRIPL.assume("render-image", lisp_parser.parse("(load-remote-xrp 4444 RENDER-IMAGE)"))    
    MyRIPL.assume("noisy-image-compare", lisp_parser.parse("(load-remote-xrp 4444 NOISY-COMP)"))    

    MyRIPL.assume("test-image", lisp_parser.parse("(load-image 0 0 0 0 0)")) #FIXME - dynamic args
    
    arguments = ""
    for i in range(MAX_LETTERS):
        #arguments += " (posx "+str(i)+") " + " (posy "+str(i)+") " + " (id "+str(i)+") " + " (size_x "+str(i)+") " + " (size_y "+str(i)+") " + " (rotate_z "+str(i)+") " + " (blur "+str(i)+") " + " (letter-present "+str(i)+") "
        arguments += " (posx "+str(i)+") " + " (posy "+str(i)+") " + " (id "+str(i)+") " + " (size_x "+str(i)+") " + " (size_y "+str(i)+") " + " (rotate_z "+str(i)+") " + " blur" + " (letter-present "+str(i)+") "
        

    MyRIPL.assume("rendered-image", lisp_parser.parse("(render-image " + arguments + ")")) #FIXME - dynamic args

    MyRIPL.observe(lisp_parser.parse("(noisy-image-compare test-image rendered-image pflip)"), "true")

    r = openGLText.openGLText()
    r.loadImage("")

    logsArray = []
    pxdisagreeArr = []
    blurArr = []
    pflipArr = []
    baselineIm = Image.open("demo.jpg").convert("L")
    baselineIm = asarray(baselineIm)

    chrs = self.predictCharacteres()

    cnt = 0
    while cnt < 200:
        MyRIPL.infer(100)

        pflip = MyRIPL.report_value(_pflip)
        things = []

        for i in range(MAX_LETTERS):
            posx,posy,size_x,size_y,rotate_z,_id,blur,present = self.reportCharacters(chrs,i)
            print present, pflip
            if present == True:
                things.append({'id':chr(int(_id)+65), 'size_x':size_x, 'size_y':size_y, 'rotate_z':rotate_z, 'left':posx, 'top':posy,'blur_sigsq':blur})
                print "left():",posx," top():", posy," size_x:", size_x, " size_y:", size_y, " rotate_z:", rotate_z,chr(_id+65)," blur: ",blur,"| pflip:", pflip
        print "####\n"

        im = r.get_rendered_image(things)
        scipy.misc.imsave('inference.jpg', im)
        logscore = MyRIPL.logscore()
        logsArray.append(logscore['logscore'])

        compound = im+baselineIm
        intersection_ones = len(where(compound == 2)[0])
        intersection_zeros = len(where(compound == 0)[0])
        intersection = intersection_zeros + intersection_ones
        pxdisagreeArr.append(float(RES-intersection)/RES)

        pflipArr.append(pflip)
        blurArr.append(blur)

        print 'LOGSCORE:', logscore, "|", cnt
        cnt = cnt + 1

        self.initPlottingHarness(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,pflipArr,blurArr,cnt)
        #self.demoPlotting(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,pflipArr,blurArr,cnt)


    """ # add directives needed
Exemple #4
0
    def LoadProgram(self):
        MyRIPL = self.RIPL

        MyRIPL.clear()  # To delete previous sessions data.

        chrs = self.createCharacter()
        (_alpha,
         tmp) = MyRIPL.assume("alpha",
                              lisp_parser.parse("(uniform-continuous 0.01 8)"))
        (_pflip, tmp) = MyRIPL.assume(
            "pflip", lisp_parser.parse("(uniform-continuous 0.0 1.0)"))

        MyRIPL.assume("LOAD-IMAGE", lisp_parser.parse("1"))
        MyRIPL.assume("RENDER-IMAGE", lisp_parser.parse("10"))
        MyRIPL.assume("NOISY-COMP", lisp_parser.parse("3"))

        MyRIPL.assume("load-image",
                      lisp_parser.parse("(load-remote-xrp 4444 LOAD-IMAGE)"))
        MyRIPL.assume("render-image",
                      lisp_parser.parse("(load-remote-xrp 4444 RENDER-IMAGE)"))
        MyRIPL.assume("noisy-image-compare",
                      lisp_parser.parse("(load-remote-xrp 4444 NOISY-COMP)"))

        MyRIPL.assume(
            "test-image",
            lisp_parser.parse("(load-image 0 0 0 0 0)"))  #FIXME - dynamic args

        arguments = ""
        for i in range(NUM_LETTERS):
            arguments += " posx" + str(i) + " " + "posy" + str(
                i) + " " + "id" + str(i) + " " + "size" + str(
                    i) + " " + "blur" + str(i) + " 1"
        MyRIPL.assume("rendered-image",
                      lisp_parser.parse("(render-image " + arguments +
                                        ")"))  #FIXME - dynamic args

        MyRIPL.observe(
            lisp_parser.parse(
                "(noisy-image-compare test-image rendered-image pflip)"),
            "true")

        r = openGLText.openGLText()

        logsArray = []
        pxdisagreeArr = []
        blurArr = []
        pflipArr = []
        baselineIm = Image.open("cvprtext.png").convert("L")
        baselineIm = asarray(baselineIm)

        cnt = 0
        while cnt < 200:
            MyRIPL.infer(50)

            pflip = MyRIPL.report_value(_pflip)
            alpha = MyRIPL.report_value(_alpha)

            things = []

            for i in range(len(chrs)):
                posx, posy, size, _id, blur = self.reportCharacters(chrs[i])
                things.append({
                    'id': chr(int(_id) + 65),
                    'size': size,
                    'left': posx,
                    'top': posy,
                    'blur_sigsq': blur
                })
                print "left():", posx, " top():", posy, " size():", size, chr(
                    _id + 65), " blur: ", blur, "| pflip:", pflip, "|", alpha
            print "####\n"

            im = r.get_rendered_image(things)
            scipy.misc.imsave('inference.jpg', im)
            logscore = MyRIPL.logscore()
            logsArray.append(logscore['logscore'])

            compound = im + baselineIm
            intersection_ones = len(where(compound == 2)[0])
            intersection_zeros = len(where(compound == 0)[0])
            intersection = intersection_zeros + intersection_ones
            pxdisagreeArr.append(float(RES - intersection) / RES)

            pflipArr.append(pflip)
            blurArr.append(blur)

            print 'LOGSCORE:', logscore, "|", cnt
            cnt = cnt + 1

            #self.initPlottingHarness(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,pflipArr,blurArr,cnt)
            self.demoPlotting(baselineIm, im, range(cnt), logsArray,
                              pxdisagreeArr, pflipArr, blurArr, cnt)
        """ # add directives needed
  def inference_LoadProgram(self):
    MyRIPL = self.RIPL
    try:
        self.LoadProgram(explore_Joint=0)
    except ConnectionError:
        return -1

    MyRIPL.observe(lisp_parser.parse("(noisy-image-compare test-image rendered-image pflip)"), "true")

    r = openGLText.openGLText(self.filename)

    logsArray = []
    pxdisagreeArr = []
    lettercountArr = []
    globalBlurArr =[]
    blurArr = dict()
    for i in range(MAX_LETTERS):
        blurArr[i] = []

    pflipArr = []
    baselineIm = Image.open(self.filename).convert("L")
    baselineIm = asarray(baselineIm)

    chrs = self.predictCharacteres()

    cnt = 0
    ## directory to hold all plots
    now = SEED + '_MAX_LETTERS_'+ str(MAX_LETTERS)+ '_' + str(datetime.datetime.now())
    dst = "dump/"+now
    os.makedirs(dst);
    os.makedirs(dst+'/composite');os.makedirs(dst+'/logscore');os.makedirs(dst+'/pxdisagree');os.makedirs(dst+'/globalblur');
    os.makedirs(dst+'/variance');os.makedirs(dst+'/blur');os.makedirs(dst+'/lettercount');os.makedirs(dst+'/images');
    os.makedirs(dst+'/pickle');
    while cnt < 352:
        MyRIPL.infer(100)

        pflip = MyRIPL.report_value(self._pflip)
        global_blur = MyRIPL.report_value(self._global_blur)
        globalBlurArr.append(global_blur)
        things = []

        letter_count = 0
        for i in range(MAX_LETTERS):
            posx,posy,size_x,size_y,rotate_z,_id,blur,present = self.reportCharacters(chrs,i)
            print present, pflip
            if present == True:
                letter_count += 1
                things.append({'id':chr(int(_id)+65), 'size_x':size_x, 'size_y':size_y, 'rotate_z':rotate_z, 'left':posx, 'top':posy,'blur_sigsq':blur})
                #print "left():",posx," top():", posy," size_x:", size_x, " size_y:", size_y, " rotate_z:", rotate_z,chr(_id+65)," blur: ",blur,"| pflip:", pflip, '\n'
                blurArr[i].append(blur)
            else:
                blurArr[i].append(0)

        cnt = cnt + 1

        im = r.get_rendered_image(things,global_blur)
        scipy.misc.imsave(dst+str('/images/')+str(cnt)+'.png', im)
        logscore = MyRIPL.logscore()
        logsArray.append(logscore['logscore'])
        print 'LOGSCORE:', logscore, "|", cnt
        diff = sum(abs(im-baselineIm))
        pxdisagreeArr.append(diff)
        pflipArr.append(pflip)
        lettercountArr.append(letter_count)

        ###################################### PLOTTING HARNESS ############################################
        self.composite(baselineIm,im,range(cnt),logsArray,pxdisagreeArr,globalBlurArr,pflipArr,dst+str('/composite/')+str(cnt)+'.png')

        if cnt%30 == 0:
            OBJ = {'logscore': logsArray, 'pxdisagree':pxdisagreeArr, 'variance':pflipArr, 'letter-count':lettercountArr, 'global-blur':globalBlurArr, 'letter-blur': blurArr }
            pickle.dump(OBJ, open(dst+str('/pickle/')+str(cnt)+'.pkl','wb'))
            self.savePlot(range(cnt),logsArray,"LOG-SCORE","Iterations","logscore", dst+str('/logscore/')+str(cnt)+'.png')
            self.savePlot(range(cnt),pxdisagreeArr,"PX-DISAGREE","Iterations","pxdisagree", dst+str('/pxdisagree/')+str(cnt)+'.png')
            self.savePlot(range(cnt),pflipArr,"VARIANCE","Iterations","variance", dst+str('/variance/')+str(cnt)+'.png')
            self.savePlot(range(cnt),lettercountArr,"LETTER-COUNT","Iterations","letter count", dst+str('/lettercount/')+str(cnt)+'.png')
            self.savePlot(range(cnt),globalBlurArr,"GLOBAL-BLUR","Iterations","blur", dst+str('/globalblur/')+str(cnt)+'.png')

            for jj in range(MAX_LETTERS):
                self.savePlot(range(cnt),blurArr[jj],"BLUR-LETTER-"+str(jj),"Iterations","blur", dst+str('/blur/')+str(cnt)+'_'+str(jj)+'.png')