From 5b4706409f0abf4e2902d75397c6d0ba32221852 Mon Sep 17 00:00:00 2001 From: Scott Klum Date: Tue, 14 Apr 2015 17:43:25 -0400 Subject: [PATCH] Updates to trainable transforms --- openbr/plugins/distance/fuse.cpp | 43 +++++++++++++------------------------------ openbr/plugins/distance/neglogplusone.cpp | 7 ++++++- openbr/plugins/distance/pipe.cpp | 8 ++++++++ openbr/plugins/distance/sum.cpp | 8 ++++++++ 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/openbr/plugins/distance/fuse.cpp b/openbr/plugins/distance/fuse.cpp index 09667d7..9fb8f55 100644 --- a/openbr/plugins/distance/fuse.cpp +++ b/openbr/plugins/distance/fuse.cpp @@ -18,6 +18,8 @@ #include +#include + namespace br { @@ -31,26 +33,25 @@ class FuseDistance : public Distance { Q_OBJECT Q_ENUMS(Operation) - Q_PROPERTY(QStringList descriptions READ get_descriptions WRITE set_descriptions RESET reset_descriptions STORED false) + Q_PROPERTY(QList distances READ get_distances WRITE set_distances RESET reset_distances) Q_PROPERTY(Operation operation READ get_operation WRITE set_operation RESET reset_operation STORED false) Q_PROPERTY(QList weights READ get_weights WRITE set_weights RESET reset_weights STORED false) - QList distances; - public: /*!< */ enum Operation {Mean, Sum, Max, Min}; private: - BR_PROPERTY(QStringList, descriptions, QStringList() << "L2") + BR_PROPERTY(QList, distances, QList()) BR_PROPERTY(Operation, operation, Mean) BR_PROPERTY(QList, weights, QList()) - void init() + bool trainable() { - for (int i=0; itrainable()) + return true; + return false; } void train(const TemplateList &src) @@ -62,10 +63,10 @@ private: QList partitionedSrc = src.partition(split); // Train on each of the partitions - for (int i=0; itrain(partitionedSrc[i]); - } + QFutureSynchronizer futures; + for (int i=0; istore(stream); - } - - void load(QDataStream &stream) - { - int numDistances; - stream >> numDistances; - for (int i=0; iload(stream); - } - - } }; BR_REGISTER(Distance, FuseDistance) diff --git a/openbr/plugins/distance/neglogplusone.cpp b/openbr/plugins/distance/neglogplusone.cpp index ae92db2..edff385 100644 --- a/openbr/plugins/distance/neglogplusone.cpp +++ b/openbr/plugins/distance/neglogplusone.cpp @@ -24,12 +24,17 @@ namespace br * \brief Returns -log(distance(a,b)+1) * \author Josh Klontz \cite jklontz */ -class NegativeLogPlusOneDistance : public UntrainableDistance +class NegativeLogPlusOneDistance : public Distance { Q_OBJECT Q_PROPERTY(br::Distance* distance READ get_distance WRITE set_distance RESET reset_distance STORED false) BR_PROPERTY(br::Distance*, distance, NULL) + bool trainable() + { + return distance->trainable(); + } + void train(const TemplateList &src) { distance->train(src); diff --git a/openbr/plugins/distance/pipe.cpp b/openbr/plugins/distance/pipe.cpp index 523868f..1548815 100644 --- a/openbr/plugins/distance/pipe.cpp +++ b/openbr/plugins/distance/pipe.cpp @@ -36,6 +36,14 @@ class PipeDistance : public Distance Q_PROPERTY(QList distances READ get_distances WRITE set_distances RESET reset_distances) BR_PROPERTY(QList, distances, QList()) + bool trainable() + { + for (int i=0; itrainable()) + return true; + return false; + } + void train(const TemplateList &data) { QFutureSynchronizer futures; diff --git a/openbr/plugins/distance/sum.cpp b/openbr/plugins/distance/sum.cpp index 07a9853..03bfbf4 100644 --- a/openbr/plugins/distance/sum.cpp +++ b/openbr/plugins/distance/sum.cpp @@ -32,6 +32,14 @@ class SumDistance : public UntrainableDistance Q_PROPERTY(QList distances READ get_distances WRITE set_distances RESET reset_distances) BR_PROPERTY(QList, distances, QList()) + bool trainable() + { + for (int i=0; itrainable()) + return true; + return false; + } + void train(const TemplateList &data) { QFutureSynchronizer futures; -- libgit2 0.21.4