diff --git a/openbr/core/eval.cpp b/openbr/core/eval.cpp index c2f94ea..8f5d242 100755 --- a/openbr/core/eval.cpp +++ b/openbr/core/eval.cpp @@ -310,6 +310,14 @@ float Evaluate(const Mat &simmat, const Mat &mask, const QString &csv, const QSt lines.append(qPrintable(QString("BC,0.001,%1").arg(QString::number(getTAR(operatingPoints, 0.001), 'f', 3)))); lines.append(qPrintable(QString("BC,0.01,%1").arg(QString::number(result = getTAR(operatingPoints, 0.01), 'f', 3)))); + // Attempt to read template size from enrolled gallery and write to output CSV + size_t maxSize(0); + if (target.endsWith(".gal")) { + foreach (const Template &t, TemplateList::fromGallery(target)) maxSize = max(maxSize, t.bytes()); + } + + lines.append(QString("TS,,%1").arg(QString::number(maxSize))); + // Write SD & KDE points = qMin(qMin(Max_Points, genuines.size()), impostors.size()); QList sampledGenuineScores; sampledGenuineScores.reserve(points); @@ -337,6 +345,7 @@ float Evaluate(const Mat &simmat, const Mat &mask, const QString &csv, const QSt } QtUtils::writeFile(csv, lines); + if (maxSize > 0) qDebug("Template Size: %i bytes", (int)maxSize); qDebug("TAR @ FAR = 0.01: %.3f",getTAR(operatingPoints, 0.01)); qDebug("TAR @ FAR = 0.001: %.3f",getTAR(operatingPoints, 0.001)); qDebug("TAR @ FAR = 0.0001: %.3f",getTAR(operatingPoints, 0.0001)); diff --git a/openbr/core/plot.cpp b/openbr/core/plot.cpp index 4781ab0..baebf17 100644 --- a/openbr/core/plot.cpp +++ b/openbr/core/plot.cpp @@ -157,6 +157,7 @@ struct RPlot "FT <- data[grep(\"FT\",data$Plot),-c(1)]\n" "CT <- data[grep(\"CT\",data$Plot),-c(1)]\n" "BC <- data[grep(\"BC\",data$Plot),-c(1)]\n" + "TS <- data[grep(\"TS\",data$Plot),-c(1)]\n" "CMC <- data[grep(\"CMC\",data$Plot),-c(1)]\n" "FAR$Error <- \"FAR\"\n" "FRR$Error <- \"FRR\"\n" @@ -173,6 +174,7 @@ struct RPlot "FT$Y <- as.numeric(as.character(FT$Y))\n" "CT$Y <- as.numeric(as.character(CT$Y))\n" "BC$Y <- as.numeric(as.character(BC$Y))\n" + "TS$Y <- as.character(TS$Y)\n" "CMC$Y <- as.numeric(as.character(CMC$Y))\n" "\n" "# Code to format FAR values\n" @@ -191,7 +193,13 @@ struct RPlot "mat <- matrix(CT$Y,nrow=6,ncol=length(algs),byrow=FALSE)\n" "colnames(mat) <- algs \n" "rownames(mat) <- c(\" Rank 1\", \"Rank 5\", \"Rank 10\", \"Rank 20\", \"Rank 50\", \"Rank 100\")\n" - "CMCtable <- as.table(mat)\n").arg(major.header))); + "CMCtable <- as.table(mat)\n" + "\n" + "# Code to format Template Size Table\n" + "mat <- matrix(TS$Y,nrow=1,ncol=length(algs),byrow=FALSE)\n" + "colnames(mat) <- algs\n" + "rownames(mat) <- c(\"Template Size (bytes):\")\n" + "TStable <- as.table(mat)\n").arg(major.header))); // Open output device file.write(qPrintable(QString("\n" @@ -222,7 +230,9 @@ struct RPlot "print(textplot(FTtable))\n" "print(title(\"Table of True Accept Rates at various False Accept Rates\"))\n" "print(textplot(CMCtable))\n" - "print(title(\"Table of retrieval rate at various ranks\"))\n"; + "print(title(\"Table of retrieval rate at various ranks\"))\n" + "print(textplot(TStable, cex=1.15))\n" + "print(title(\"Template Size by Algorithm\"))\n"; file.write(qPrintable(textplot.arg(PRODUCT_NAME, PRODUCT_VERSION))); }