def buildHistogram(path, level): # Read in vocabulary & data voc = utils.loadDataFromFile("Data/voc.pkl") Data = utils.readImages(path) # Transform each feature into histogram featureHistogram = [] labels = [] index = 0 for oneImage in Data: featureHistogram.append( voc.buildHistogramForEachImageAtDifferentLevels(oneImage, level)) return featureHistogram
def buildHistogram(path, level): # Read in vocabulary & data voc = utils.loadDataFromFile("Data/voc.pkl") trainData = utils.readImages("images/"+path) # Transform each feature into histogram featureHistogram = [] labels = [] index = 0 for oneImage in trainData: featureHistogram.append(voc.buildHistogramForEachImageAtDifferentLevels(oneImage, level)) labels.append(oneImage.label) index += 1 utils.writeDataToFile("Data/"+path+"HistogramLevel" +str(level)+ ".pkl", featureHistogram) utils.writeDataToFile("Data/"+path+"labels.pkl", labels)
def main(): # 1) build histograms at level 1 buildHistogram("testing", 2) buildHistogram("training", 2) # 2) calculate EMD distance matrix trainData = np.array( utils.loadDataFromFile("Data/trainingHistogramLevel2.pkl")) trainLabels = utils.loadDataFromFile("Data/traininglabels.pkl") testData = np.array( utils.loadDataFromFile("Data/testingHistogramLevel2.pkl")) testLabels = utils.loadDataFromFile("Data/testinglabels.pkl") trainData = trainData[::, 300:1500:] testData = testData[::, 300:1500:] # calculate EMD distance allData = np.vstack((trainData, testData)) row, column = allData.shape aligned_allDistance = np.zeros((row, row)) unaligned_allDistance = np.zeros((row, row)) for i in range(0, row, 1): tempOne = allData[i].reshape(4, 300) for j in range(i + 1, row, 1): tempTwo = allData[j].reshape(4, 300) unalignDis, alignedDis = EarthMoverDistance.C_EMD( tempOne, tempTwo, "EMDone") aligned_allDistance[i][j] = alignedDis aligned_allDistance[j][i] = alignedDis unaligned_allDistance[i][j] = unalignDis unaligned_allDistance[j][i] = unalignDis print "(" + str(i) + "," + str(j) + "): " + str( alignedDis) + "\t" + str(unalignDis) # 3) classify allLabels = trainLabels + testLabels train, test = utils.randomGenerateIndices(allLabels, 0.5) aligned_accuracyDict = {} unaligned_accuracyDict = {} for type in ["rbf", "lap", "id", "isd"]: aligned_accuracyDict[type] = [] unaligned_accuracyDict[type] = [] for type in ["rbf", "lap", "id", "isd"]: alignedAccuracy = classification.multiClassSVM(aligned_allDistance, train, test, allLabels, type) unalignedAccuracy = classification.multiClassSVM( unaligned_allDistance, train, test, allLabels, type) aligned_accuracyDict[type].append(alignedAccuracy) unaligned_accuracyDict[type].append(unalignedAccuracy) print " " print "Aligned ----------" for type in ["rbf", "lap", "id", "isd"]: alignedTest = aligned_accuracyDict[type] alignedTest = np.array(alignedTest) mean = np.mean(alignedTest) std = np.std(alignedTest) print type + ": " + str(mean) + u"\u00B1" + str(std) print " " print "Unaligned --------------" for type in ["rbf", "lap", "id", "isd"]: alignedTest = unaligned_accuracyDict[type] alignedTest = np.array(alignedTest) mean = np.mean(alignedTest) std = np.std(alignedTest) print type + ": " + str(mean) + u"\u00B1" + str(std)
def main(): # 1) build histograms at level 1 buildHistogram("testing", 2) buildHistogram("training", 2) # 2) calculate EMD distance matrix trainData = np.array(utils.loadDataFromFile("Data/trainingHistogramLevel2.pkl")) trainLabels = utils.loadDataFromFile("Data/traininglabels.pkl") testData = np.array(utils.loadDataFromFile("Data/testingHistogramLevel2.pkl")) testLabels = utils.loadDataFromFile("Data/testinglabels.pkl") trainData = trainData[::, 300:1500:] testData = testData[::, 300:1500:] # calculate EMD distance allData = np.vstack((trainData, testData)) row, column = allData.shape aligned_allDistance = np.zeros((row, row)) unaligned_allDistance = np.zeros((row, row)) for i in range(0, row, 1): tempOne = allData[i].reshape(4, 300) for j in range(i+1, row, 1): tempTwo = allData[j].reshape(4, 300) unalignDis, alignedDis = EarthMoverDistance.C_EMD(tempOne, tempTwo, "EMDone") aligned_allDistance[i][j] = alignedDis aligned_allDistance[j][i] = alignedDis unaligned_allDistance[i][j] = unalignDis unaligned_allDistance[j][i] = unalignDis print "("+str(i)+","+str(j)+"): "+str(alignedDis) +"\t"+ str(unalignDis) # 3) classify allLabels = trainLabels + testLabels train, test = utils.randomGenerateIndices(allLabels, 0.5) aligned_accuracyDict = {} unaligned_accuracyDict = {} for type in ["rbf", "lap", "id", "isd"]: aligned_accuracyDict[type] = [] unaligned_accuracyDict[type] = [] for type in ["rbf", "lap", "id", "isd"]: alignedAccuracy = classification.multiClassSVM(aligned_allDistance, train, test, allLabels, type) unalignedAccuracy = classification.multiClassSVM(unaligned_allDistance, train, test, allLabels, type) aligned_accuracyDict[type].append(alignedAccuracy) unaligned_accuracyDict[type].append(unalignedAccuracy) print " " print "Aligned ----------" for type in ["rbf", "lap", "id", "isd"]: alignedTest = aligned_accuracyDict[type] alignedTest = np.array(alignedTest) mean = np.mean(alignedTest) std = np.std(alignedTest) print type +": "+ str(mean) +u"\u00B1"+str(std) print " " print "Unaligned --------------" for type in ["rbf", "lap", "id", "isd"]: alignedTest = unaligned_accuracyDict[type] alignedTest = np.array(alignedTest) mean = np.mean(alignedTest) std = np.std(alignedTest) print type +": "+ str(mean) +u"\u00B1"+str(std)