Ejemplo n.º 1
0
def evaluateFromFile(evalFile, sourceData, predictDir):
    evalData = None

    evalData = pomio.readEvaluationListFromCsv(evalFile)

    assert evalData != None, "Exception reading evaluation data from " + str(
        evalFile)

    print "\nINFO: Eval file list = " + str(evalFile)
    print "INFO: Source data = " + str(sourceData)
    print "\nINFO 1st element in eval result::", evalData[0]

    if predictDir.endswith("/") == False:
        predictDir = predictDir + "/"

    # Tells us what the elements of the results are
    headers = [
        "numCorrectPixels", "numberValidGroundTruthPixels",
        "numberVoidGroundTruthPixels", "numberPixelsInImage"
    ]

    results = None
    confMat = None

    # for each eval pair (prediction labels and ground truth labels) do pixel count

    for idx in range(0, len(evalData)):

        predictFile = evalData[idx][0]
        gtFile = evalData[idx][1]

        gt = loadReferenceGroundTruthLabels(sourceData, gtFile)
        predict = loadPredictionImageLabels(predictDir + predictFile)

        result = evaluatePrediction(predict, gt, gtFile)
        cmat = evaluateConfusionMatrix(predict, gt)

        if idx == 0:
            results = result
            confMat = cmat
        else:
            results += result
            confMat += cmat

    # Aggregate results
    perClass = evaluateClassPerformance(confMat)

    print "Processed total of ", len(evalData), "predictions:"
    print "  Average accuracy per pixel: ", 100.0 * results[0] / float(
        results[1])
    print "  Average accuracy per class: ", perClass.mean()
    print "  Accuracy per class: "
    print pandas.DataFrame( perClass.reshape((1,len(perClass))), \
                              columns=pomio.getClasses()[:-1] ).to_string()
    print ""
    print "  Confusion matrix (row=gt, col=predicted): "
    print pandas.DataFrame( confMat, columns=pomio.getClasses()[:-1], \
                              index=pomio.getClasses()[:-1] ).to_string()
    print "Processing complete."
def reportAccuracy( exptName, labs, predlabs ):
  print exptName, ' accuracy (frac correct) = ', np.mean(predlabs==labs)
  apc = accuracyPerClass( labs, predlabs )
  print '   - average accuracy per class = ', apc.mean()
  for i in range(pomio.getNumClasses()):
    print '      %s: %f' %( pomio.getClasses()[i], apc[i] )
  clp, clnum = classProportions( labs )
  print '   - class proportions in %s:' % exptName
  for i in range(pomio.getNumClasses()):
    print '      %15s: %.6f (%6d examples)' %( pomio.getClasses()[i], clp[i], clnum[i] )
def reportAccuracy(exptName, labs, predlabs):
    print exptName, ' accuracy (frac correct) = ', np.mean(predlabs == labs)
    apc = accuracyPerClass(labs, predlabs)
    print '   - average accuracy per class = ', apc.mean()
    for i in range(pomio.getNumClasses()):
        print '      %s: %f' % (pomio.getClasses()[i], apc[i])
    clp, clnum = classProportions(labs)
    print '   - class proportions in %s:' % exptName
    for i in range(pomio.getNumClasses()):
        print '      %15s: %.6f (%6d examples)' % (pomio.getClasses()[i],
                                                   clp[i], clnum[i])
if args.labs == None:
  labs = None
else:
  if args.labs.endswith('.pkl'):
      labs = pomio.unpickleObject( args.labs )
  else:
      labs = pomio.readMatFromCSV( args.labs ).astype(np.int32)


# show labels
if labs != None:
  plt.figure()
  plt.hist( labs, pomio.getNumClasses() )
  plt.title('Class counts')
  plt.xticks( range(pomio.getNumClasses()),
              pomio.getClasses()[:pomio.getNumClasses()],
              size='small' )


# show at most 9 features at once
fstarts = range( args.nstart, D, args.nshow )
plt.figure()

for fs in fstarts:
  fend = min(D-1,fs+args.nshow-1)
  print '  Displaying features %d-%d:' % (fs, fend)
  rng = range( fs, fend+1 )
  fnames = [ 'F%d' % x for x in rng ]
  amntools.gplotmatrix( ftrs[:,rng], labs, featureNames=fnames )
  plt.waitforbuttonpress()
Ejemplo n.º 5
0
if args.labs == None:
    labs = None
else:
    if args.labs.endswith('.pkl'):
        labs = pomio.unpickleObject(args.labs)
    else:
        labs = pomio.readMatFromCSV(args.labs).astype(np.int32)

# show labels
if labs != None:
    plt.figure()
    plt.hist(labs, pomio.getNumClasses())
    plt.title('Class counts')
    plt.xticks(range(pomio.getNumClasses()),
               pomio.getClasses()[:pomio.getNumClasses()],
               size='small')

# show at most 9 features at once
fstarts = range(args.nstart, D, args.nshow)
plt.figure()

for fs in fstarts:
    fend = min(D - 1, fs + args.nshow - 1)
    print '  Displaying features %d-%d:' % (fs, fend)
    rng = range(fs, fend + 1)
    fnames = ['F%d' % x for x in rng]
    amntools.gplotmatrix(ftrs[:, rng], labs, featureNames=fnames)
    plt.waitforbuttonpress()

plt.interactive(0)