def test_getLabelableList(self): print("testing getLabelableList") sys.stdout.flush() labelList = easy.getLabelableList("easyTestData") '''verify that the labels are correct They should be , the root directory "easyTestData", "kitchen" and "MITmountain" ''' for entry in labelList: print("label name " + entry.lab.name) if entry.lab.name != "easyTestData" and \ entry.lab.name != "kitchen" and \ entry.lab.name != "MITmountain": raise RuntimeError( "Not a valid label name in test getLabelableList") if entry.lab.name == "kitchen": # should find easyTestData, inside, house properties if "easyTestData" not in entry.lab.properties: raise RuntimeError("easyTestData not in properties") if "inside" not in entry.lab.properties: raise RuntimeError("inside not in properties") if "house" not in entry.lab.properties: raise RuntimeError("house not in properties") ''' verify that we can make a runset and use it with the labelableList ''' runset = cvac.RunSet() posPurpose = easy.getPurpose('pos') easy.addToRunSet(runset, labelList, posPurpose) if not easy.isProperRunSet(runset): raise RuntimeError( "test getLabelableList failed with an invalid runset") labelList = easy.getLabelableList("easyTestData", recursive=False) ''' should only have one label "easyTestData" ''' for entry in labelList: if entry.lab.name != "easyTestData": raise RuntimeError( "recursive option failed in test getLabelableList") if len(entry.lab.properties) > 0: raise RuntimeError("labelable should not have any properties") if not easy.isProperRunSet(runset): raise RuntimeError( "test getLabelableList failed with an invalid runset with non-recursive call" )
def test_getLabelableList(self): print("testing getLabelableList") sys.stdout.flush() labelList = easy.getLabelableList("easyTestData") '''verify that the labels are correct They should be , the root directory "easyTestData", "kitchen" and "MITmountain" ''' for entry in labelList: print ("label name " + entry.lab.name) if entry.lab.name != "easyTestData" and \ entry.lab.name != "kitchen" and \ entry.lab.name != "MITmountain": raise RuntimeError("Not a valid label name in test getLabelableList") if entry.lab.name == "kitchen": # should find easyTestData, inside, house properties if "easyTestData" not in entry.lab.properties: raise RuntimeError("easyTestData not in properties") if "inside" not in entry.lab.properties: raise RuntimeError("inside not in properties") if "house" not in entry.lab.properties: raise RuntimeError("house not in properties") ''' verify that we can make a runset and use it with the labelableList ''' runset = cvac.RunSet() posPurpose = easy.getPurpose('pos') easy.addToRunSet(runset, labelList, posPurpose) if not easy.isProperRunSet(runset): raise RuntimeError("test getLabelableList failed with an invalid runset") labelList = easy.getLabelableList("easyTestData", recursive=False) ''' should only have one label "easyTestData" ''' for entry in labelList: if entry.lab.name != "easyTestData": raise RuntimeError("recursive option failed in test getLabelableList") if len(entry.lab.properties) > 0: raise RuntimeError("labelable should not have any properties") if not easy.isProperRunSet(runset): raise RuntimeError("test getLabelableList failed with an invalid runset with non-recursive call")
# a simple RunSet with just one unlabeled image; # remember that paths are relative to CVAC.DataDir rs1 = easy.createRunSet( "testImg/italia.jpg" ) print("=== RunSet 1: ==="); easy.printRunSetInfo( rs1, printLabels=True ) # to give samples a purpose, state the purpose: rs2 = easy.createRunSet( "testImg/italia.jpg", "POSITIVE" ) print("\n=== RunSet 2: ==="); easy.printRunSetInfo( rs2, printLabels=True ) # add more samples to a runset; anything starting with "pos" # will be added into the POSITIVE sequence of labeled items easy.addToRunSet( rs2, "testImg/TestKrFlag.jpg", "POS" ) easy.addToRunSet( rs2, "testImg/TestCaFlag.jpg", "neg" ) easy.addToRunSet( rs2, "testImg/TestUsFlag.jpg", "0" ) print("\n=== RunSet 2, after appending: ==="); easy.printRunSetInfo( rs2, printLabels=True ) # create a runset from a folder with sub-folders rs3 = easy.createRunSet( "trainImg" ) print("\n=== RunSet 3: ==="); easy.printRunSetInfo( rs3, printLabels=True ) # you can check wether the runset has been properly constructed: if easy.isProperRunSet( rs3 ): print("correctly constructed runset") else: print("improperly constructed runset")
categories, lablist = easy.getDataSet( corpus, corpusServer=cs ) print('Obtained {0} labeled artifact{1} from corpus "{2}":'.format( len(lablist), ("s","")[len(lablist)==1], corpus.name )); easy.printCategoryInfo( categories ) # if desired, you can draw the images and their annotations, # one image at a time, at a given maximum size (width, height) #easy.drawLabelables( lablist, (512, 512) ) print("==== Training runset: ====") posPurpose = easy.getPurpose('pos') negPurpose = easy.getPurpose('neg') trainset = cvac.RunSet() easy.addToRunSet(trainset, categories[objname], posPurpose); #trainset = easy.createRunSet( categories, purpose=posPurpose ); correct = easy.isProperRunSet(trainset, deleteInvalid=True) if not correct: print("failed Integrity test!!!!") exit() #trainset = easy.createRunSet( categories, purpose=posPurpose ); #easy.printRunSetInfo( trainset, printLabels=True ) easy.printRunSetInfo( trainset ) # # Connect to the trainer for a Bag of Words algorithm, then # train with the given runset # #trainer = easy.getTrainer( "BOW_Trainer") trainer = easy.getTrainer( "BOW_Trainer:default -p 10103") trainedModel = easy.train( trainer, trainset ) zipfname = easy.getFSPath( trainedModel )
categories, lablist = easy.getDataSet(corpus, corpusServer=cs) print('Obtained {0} labeled artifact{1} from corpus "{2}":'.format( len(lablist), ("s", "")[len(lablist) == 1], corpus.name)) easy.printCategoryInfo(categories) # if desired, you can draw the images and their annotations, # one image at a time, at a given maximum size (width, height) #easy.drawLabelables( lablist, (512, 512) ) print("==== Training runset: ====") posPurpose = easy.getPurpose('pos') negPurpose = easy.getPurpose('neg') trainset = cvac.RunSet() easy.addToRunSet(trainset, categories[objname], posPurpose) #trainset = easy.createRunSet( categories, purpose=posPurpose ); correct = easy.isProperRunSet(trainset, deleteInvalid=True) if not correct: print("failed Integrity test!!!!") exit() #trainset = easy.createRunSet( categories, purpose=posPurpose ); #easy.printRunSetInfo( trainset, printLabels=True ) easy.printRunSetInfo(trainset) # # Connect to the trainer for a Bag of Words algorithm, then # train with the given runset # #trainer = easy.getTrainer( "BOW_Trainer") trainer = easy.getTrainer("BOW_Trainer:default -p 10103") trainedModel = easy.train(trainer, trainset) zipfname = easy.getFSPath(trainedModel)