Version 2.5: - We now include all of the LIBPMK extensions in this single package. This is because version numbers can get inconsistent, so it's better to keep them all in the same package. They still all compile independently. - Added libpmk_eth examples to the package. - Added the adaptive vocabulary tree extension (directory "avt") - Added a SURF binary to the feature extractor extension. - Added a demo UI to the ISM extension. - Fixed a bug in global-vg-pyramid-maker that caused inaccurate results due to not updating child nodes in the tree properly (thanks Popke Altenburg, Fabian Richter) - Fixed a bug in the ISM train-model example where it only used 1 image as training data instead of all of them (thanks Guo Xi) - Fixed 64-bit compilation problems (thanks Gal Frishman) - Fixed compilation on Cygwin (thanks Arvid Terzibaschian, Tom Yeh) Version 2.4: - Fix a logic bug in histogram.cc's distance computing functions. The impact was that many distance computations were underestimated, and, depending on the input, the output of these methods could have been much less than what they should have been. (thanks Ruihua Ma) Version 2.3: - Fix all compilation problems related to gcc 4.3. Version 2.2: - UniformPyramidMaker can now use a vector of PointRefs in addition to using a PointSet. - Read/WriteHeaderToStream now available for MultiResolutionHistogram. - Speedup in OnDiskPointSetList::GetPointRefs(). - Histogram can now compute chi-squared distances and sum-of-square distances. - SVMExperiment can now read/write itself to disk. - Adding RNNClusterer (reciprocal nearest neighbor clustering). Version 2.1: - Minor speedup in MultiResolutionHistogram. - Default tools now use InputSpecificPyramidMaker instead of GlobalPyramidMaker. - Add a function to PointSetList to allow it to get PointRefs for just one image. - PointRefs can now be copied (copy constructor added) Version 2.0 (breaking): - A lot of interface changes. Brief summary: * "Feature" has been renamed to "Point" * Simple getters and setters of a class are all lowercase. For instance, if a class has a data member called size, then the methods size() and set_size() will be there. If the data member is a vector or list, the methods member(int i), add_member(), and member_size() will be present. Please see the documentation for details. * The old Tree has been renamed to SparseTree (same with TreeNode and SparseTreeNode). Taking the place of Tree is a dense tree implementation. - The dense tree and associated TreeNode have been added, along with PointTreeNode which is a TreeNode that has a Point in it. A node in a dense tree no longer needs to store an entire path to identify it; a node now has a single integer ID (rather than LargeIndex which was used for sparse trees). - All tools have been updated to use the updated interface. Those may be a good starting point. - HierarchicalClusterer now uses a dense tree representation and is hopefully faster. Its new interface gives more intuitive access to the tree structure. Version 1.5: - Fix the behavior of GlobalVGPyramidMaker to explicitly compute furthest pairs for bin size calculations.(thanks Kristen Grauman) Version 1.4: - KMeansClusterer will now return fewer than K clusters if the input data contains less than K unique points (in such a case it will return a number of clusters equal to the number of unique points). - Fix bug in Tree::DeleteNode() when deleting an only child. - Fix potential access error in Histogram::SortBins() on some platforms (thanks Yiqun Hu) - New default behavior of Feature's constructor is to set the initial weight to 1, not 0 (thanks Ravi Kiran) Version 1.3: - Internal changes to Tree and TreeNode for faster processing. - Removed Tree::DepthFirstIterator and replaced it with PreOrderIterator and PostOrderIterator. - Added the ability to copy Trees. - Added Tree::DeleteNode(), which deletes a specified node as well as all children nodes. - Added a "merging" copy constructor to Tree which takes 2 trees and returns one big merged tree. - Minor fixes to Clusterer (more const member functions) - Clusterer has a new function, GetNumCenters(). - Allow a UniformPyramidMaker to be constructed with a vector of PointRefs (in addition to a PointSetList) - PointSets now have the ability to serialize themselves (before, that was all handled by PointSetList). - The pointsets-to-uniform-pyramids tool takes less memory by keeping all of the PointSetLists on disk. - Added more user-friendly output to the tools. - Fixed some compilation errors on gcc-4.1.1. Version 1.2: - Added depth-first and breadth-first iterators to Tree. - Added ReadFromFile() and WriteToFile() convenience functions for most classes that support serialization. Version 1.1: - KernelMatrix now uses doubles to store data, rather than floats. - Added a Matrix class, which is just a rectangular 2D array of doubles. - Added a new constructor to Experiment, which allows one to pass in data in two separate pieces (training and testing), so you no longer have to compute kernel values between the test examples if you know which ones they are. - Added ProbSVMExperiment, another SVM experiment example, which reports the posterior probabilities of each class for each test example. - Added a new Tree class template and TreeNode, which lets you create custom tree-like structures. MultiResolutionHistogram has been rewritten as a wrapper around Tree, but its interface has not changed (all changes are transparent). Version 1.0: - Initial release