Commit 725e25b445e6dbd171c1414a3626938f57298ace

Authored by Scott Klum
1 parent 04df7bef

Added some things related to leave one out cv

openbr/core/bee.cpp
@@ -305,11 +305,14 @@ cv::Mat BEE::makeMask(const br::FileList &targets, const br::FileList &queries, @@ -305,11 +305,14 @@ cv::Mat BEE::makeMask(const br::FileList &targets, const br::FileList &queries,
305 QList<int> targetPartitions = targets.crossValidationPartitions(); 305 QList<int> targetPartitions = targets.crossValidationPartitions();
306 QList<int> queryPartitions = queries.crossValidationPartitions(); 306 QList<int> queryPartitions = queries.crossValidationPartitions();
307 307
  308 + QList<bool> targetsOnly = File::get<bool>(queries, "targetOnly", false);
  309 +
308 Mat mask(queries.size(), targets.size(), CV_8UC1); 310 Mat mask(queries.size(), targets.size(), CV_8UC1);
309 for (int i=0; i<queries.size(); i++) { 311 for (int i=0; i<queries.size(); i++) {
310 const QString &fileA = queries[i]; 312 const QString &fileA = queries[i];
311 const QString labelA = queryLabels[i]; 313 const QString labelA = queryLabels[i];
312 const int partitionA = queryPartitions[i]; 314 const int partitionA = queryPartitions[i];
  315 + const bool targetOnly = targetsOnly[i];
313 316
314 for (int j=0; j<targets.size(); j++) { 317 for (int j=0; j<targets.size(); j++) {
315 const QString &fileB = targets[j]; 318 const QString &fileB = targets[j];
@@ -318,6 +321,7 @@ cv::Mat BEE::makeMask(const br::FileList &amp;targets, const br::FileList &amp;queries, @@ -318,6 +321,7 @@ cv::Mat BEE::makeMask(const br::FileList &amp;targets, const br::FileList &amp;queries,
318 321
319 Mask_t val; 322 Mask_t val;
320 if (fileA == fileB) val = DontCare; 323 if (fileA == fileB) val = DontCare;
  324 + else if (targetOnly) val = DontCare;
321 else if (labelA == "-1") val = DontCare; 325 else if (labelA == "-1") val = DontCare;
322 else if (labelB == "-1") val = DontCare; 326 else if (labelB == "-1") val = DontCare;
323 else if (partitionA != partition) val = DontCare; 327 else if (partitionA != partition) val = DontCare;
openbr/openbr_plugin.cpp
@@ -419,7 +419,7 @@ TemplateList TemplateList::fromGallery(const br::File &amp;gallery) @@ -419,7 +419,7 @@ TemplateList TemplateList::fromGallery(const br::File &amp;gallery)
419 Template leaveOneImageOutTemplate = newTemplates[labelIndices[j]]; 419 Template leaveOneImageOutTemplate = newTemplates[labelIndices[j]];
420 if (k!=leaveOneImageOutTemplate.file.get<int>("Partition")) { 420 if (k!=leaveOneImageOutTemplate.file.get<int>("Partition")) {
421 leaveOneImageOutTemplate.file.set("Partition", k); 421 leaveOneImageOutTemplate.file.set("Partition", k);
422 - leaveOneImageOutTemplate.file.set("testOnly", true); 422 + leaveOneImageOutTemplate.file.set("targetOnly", true);
423 newTemplates.insert(i+1,leaveOneImageOutTemplate); 423 newTemplates.insert(i+1,leaveOneImageOutTemplate);
424 } 424 }
425 } 425 }
openbr/plugins/validate.cpp
@@ -65,9 +65,9 @@ class CrossValidateTransform : public MetaTransform @@ -65,9 +65,9 @@ class CrossValidateTransform : public MetaTransform
65 const QString label = partitionedData.at(j).file.get<QString>("Label"); 65 const QString label = partitionedData.at(j).file.get<QString>("Label");
66 QList<int> subjectIndices = partitionedData.find("Label",label); 66 QList<int> subjectIndices = partitionedData.find("Label",label);
67 QList<int> removed; 67 QList<int> removed;
68 - // Remove test only data 68 + // Remove target only data
69 for (int k=subjectIndices.size()-1; k>=0; k--) 69 for (int k=subjectIndices.size()-1; k>=0; k--)
70 - if (partitionedData[subjectIndices[k]].file.getBool("testOnly")) { 70 + if (partitionedData[subjectIndices[k]].file.getBool("targetOnly")) {
71 removed.append(subjectIndices[k]); 71 removed.append(subjectIndices[k]);
72 subjectIndices.removeAt(k); 72 subjectIndices.removeAt(k);
73 } 73 }