Commit ca4f10d5926ad1cd7ff04e3f82bf120f29208b62

Authored by Josh Klontz
1 parent bbfa70e5

serialization fixes

openbr/plugins/algorithms.cpp
@@ -42,7 +42,7 @@ class AlgorithmsInitializer : public Initializer @@ -42,7 +42,7 @@ class AlgorithmsInitializer : public Initializer
42 Globals->abbreviations.insert("OpenBR", "FaceRecognition"); 42 Globals->abbreviations.insert("OpenBR", "FaceRecognition");
43 Globals->abbreviations.insert("GenderEstimation", "GenderClassification"); 43 Globals->abbreviations.insert("GenderEstimation", "GenderClassification");
44 Globals->abbreviations.insert("AgeEstimation", "AgeRegression"); 44 Globals->abbreviations.insert("AgeEstimation", "AgeRegression");
45 - Globals->abbreviations.insert("FaceRecognitionHoG", "Open+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+Affine(64,64,0.25,0.35)+Gradient+Bin(0,360,8,true)+Merge+Integral+IntegralSampler+ProductQuantization(2,L1,true):ProductQuantization(true)"); 45 + Globals->abbreviations.insert("FaceRecognitionHoG", "{PP5Register+Affine(128,128,0.25,0.35)+Cvt(Gray)}+Gradient+Bin(0,360,9,true)+Merge+Integral+RecursiveIntegralSampler(4,2,8,LDA(.95)+Normalize(L1)+Div(3)+ProductQuantization(3,L1,true)[fraction=0.2]):ProductQuantization(true)");
46 46
47 // Generic Image Processing 47 // Generic Image Processing
48 Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)"); 48 Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)");
openbr/plugins/integral.cpp
@@ -248,7 +248,7 @@ class RecursiveIntegralSamplerTransform : public Transform @@ -248,7 +248,7 @@ class RecursiveIntegralSamplerTransform : public Transform
248 void store(QDataStream &stream) const 248 void store(QDataStream &stream) const
249 { 249 {
250 transform->store(stream); 250 transform->store(stream);
251 - stream << (subTransform == NULL); 251 + stream << (subTransform != NULL);
252 if (subTransform != NULL) 252 if (subTransform != NULL)
253 subTransform->store(stream); 253 subTransform->store(stream);
254 } 254 }
openbr/plugins/quantize.cpp
@@ -247,7 +247,7 @@ QVector&lt;Mat&gt; ProductQuantizationLUTs; @@ -247,7 +247,7 @@ QVector&lt;Mat&gt; ProductQuantizationLUTs;
247 /*! 247 /*!
248 * \ingroup distances 248 * \ingroup distances
249 * \brief Distance in a product quantized space \cite jegou11 249 * \brief Distance in a product quantized space \cite jegou11
250 - * \author Josh Klontz 250 + * \author Josh Klontz \cite jklontz
251 */ 251 */
252 class ProductQuantizationDistance : public Distance 252 class ProductQuantizationDistance : public Distance
253 { 253 {
@@ -278,6 +278,36 @@ class ProductQuantizationDistance : public Distance @@ -278,6 +278,36 @@ class ProductQuantizationDistance : public Distance
278 BR_REGISTER(Distance, ProductQuantizationDistance) 278 BR_REGISTER(Distance, ProductQuantizationDistance)
279 279
280 /*! 280 /*!
  281 + * \ingroup distances
  282 + * \brief Recurively computed distance in a product quantized space
  283 + * \author Josh Klontz \cite jklontz
  284 + */
  285 +class RecursiveProductQuantizationDistance : public Distance
  286 +{
  287 + Q_OBJECT
  288 +
  289 + float compare(const Template &a, const Template &b) const
  290 + {
  291 + float distance = 0;
  292 + for (int i=0; i<a.size(); i++) {
  293 + const int elements = a[i].total()-sizeof(quint16);
  294 + uchar *aData = a[i].data;
  295 + uchar *bData = b[i].data;
  296 + quint16 index = *reinterpret_cast<quint16*>(aData);
  297 + aData += sizeof(quint16);
  298 + bData += sizeof(quint16);
  299 +
  300 + const float *lut = (const float*)ProductQuantizationLUTs[index].data;
  301 + for (int j=0; j<elements; j++)
  302 + distance += lut[j*256*256 + aData[j]*256+bData[j]];
  303 + }
  304 + return distance;
  305 + }
  306 +};
  307 +
  308 +BR_REGISTER(Distance, RecursiveProductQuantizationDistance)
  309 +
  310 +/*!
281 * \ingroup transforms 311 * \ingroup transforms
282 * \brief Product quantization \cite jegou11 312 * \brief Product quantization \cite jegou11
283 * \author Josh Klontz \cite jklontz 313 * \author Josh Klontz \cite jklontz
@@ -461,7 +491,10 @@ private: @@ -461,7 +491,10 @@ private:
461 491
462 void load(QDataStream &stream) 492 void load(QDataStream &stream)
463 { 493 {
464 - stream >> index >> centers >> ProductQuantizationLUTs[index]; 494 + stream >> index >> centers;
  495 + while (ProductQuantizationLUTs.size() <= index)
  496 + ProductQuantizationLUTs.append(Mat());
  497 + stream >> ProductQuantizationLUTs[index];
465 } 498 }
466 }; 499 };
467 500