Commit 1554801730aa0b590b124d29ae4b6f822535492a

Authored by Scott Klum
1 parent 38bc1dcb

Added DownsampleMetadata

openbr/core/eval.cpp
... ... @@ -993,12 +993,14 @@ void EvalRegression(const QString &predictedGallery, const QString &truthGallery
993 993 if (predicted[i].file.name != truth[i].file.name)
994 994 qFatal("Input order mismatch.");
995 995  
996   - float difference = predicted[i].file.get<float>(predictedProperty) - truth[i].file.get<float>(truthProperty);
  996 + if (predicted[i].file.contains(predictedProperty) && truth[i].file.contains(truthProperty)) {
  997 + float difference = predicted[i].file.get<float>(predictedProperty) - truth[i].file.get<float>(truthProperty);
997 998  
998   - rmsError += pow(difference, 2.f);
999   - maeError += fabsf(difference);
1000   - truthValues.append(QString::number(truth[i].file.get<float>(truthProperty)));
1001   - predictedValues.append(QString::number(predicted[i].file.get<float>(predictedProperty)));
  999 + rmsError += pow(difference, 2.f);
  1000 + maeError += fabsf(difference);
  1001 + truthValues.append(QString::number(truth[i].file.get<float>(truthProperty)));
  1002 + predictedValues.append(QString::number(predicted[i].file.get<float>(predictedProperty)));
  1003 + }
1002 1004 }
1003 1005  
1004 1006 QStringList rSource;
... ...
openbr/plugins/independent.cpp
... ... @@ -118,6 +118,40 @@ class DownsampleTrainingTransform : public Transform
118 118 };
119 119 BR_REGISTER(Transform, DownsampleTrainingTransform)
120 120  
  121 +class DownsampleMetadataTransform : public Transform
  122 +{
  123 + Q_OBJECT
  124 + Q_PROPERTY(br::Transform* transform READ get_transform WRITE set_transform RESET reset_transform STORED true)
  125 + Q_PROPERTY(QString inputVariable READ get_inputVariable WRITE set_inputVariable RESET reset_inputVariable STORED false)
  126 + BR_PROPERTY(br::Transform*, transform, NULL)
  127 + BR_PROPERTY(QString, inputVariable, "Label")
  128 +
  129 + Transform *simplify(bool &newTForm)
  130 + {
  131 + Transform *res = transform->simplify(newTForm);
  132 + return res;
  133 + }
  134 +
  135 + void project(const Template &src, Template &dst) const
  136 + {
  137 + transform->project(src,dst);
  138 + }
  139 +
  140 + void train(const TemplateList &data)
  141 + {
  142 + if (!transform || !transform->trainable)
  143 + return;
  144 +
  145 + TemplateList downsampled = data;
  146 + for (int i=downsampled.size()-1; i>=0; i--)
  147 + if (!downsampled[i].file.contains(inputVariable))
  148 + downsampled.removeAt(i);
  149 +
  150 + transform->train(downsampled);
  151 + }
  152 +};
  153 +BR_REGISTER(Transform, DownsampleMetadataTransform)
  154 +
121 155 /*!
122 156 * \ingroup transforms
123 157 * \brief Clones the transform so that it can be applied independently.
... ...