-
Notifications
You must be signed in to change notification settings - Fork 41
ChangeLog
February 2019
This is our grand winter release which includes dense graphical models, supports Linux, OpenCV v.4.0, C++17 and has many other new features. The library interface has also undergone changes as massive refactoring was performed. The main emphasis of refactoring was on simplifying the user code needed to initialize and use the basic library classes. We have also started to monitor the quality of our code with CodeFactor and got grade score A (97,6%).
- DGM is now available for Linux (Ubuntu 18.04) operating system (many thanks to @Genj1n).
- DGM is now C++17 library and requires C++17-compliant compiler. However the roll-back to C++11 is straightforward.
- DGM now supports recently released OpenCV v.4.0 (many thanks to @TechnikEmpire). The support of OpenCV v.3.4 is still present.
- Two new tutorials:
- Demo Dense tutorial, which introduces new dense graphical models.
- Advanced Demo Param Estimation tutorial for using Powell search method.
- Almost 10 new tests were added
- Complete (dense) graphical models were added to the model:
- Graph classes: CGraphDense and auxiliary CGraphDenseExt and CGraphDenseKit.
- Inference for the dense graphs CInferDense
- Dense graph edge models IEdgeModel
- Graph extensions classes derived from CGraphExt, which significantly simplify building and filling the 2D graphical models used for image classification. In addition, with help of the CGraphPairwiseExt class the training of the graph edges was also simplified in terms of the required user code.
- Factory methods were added, which allow for creating objects of a library in a way such that it doesn’t have tight coupling with the class hierarchy of the library.
- Graph and dependent objects factory CGraphKit
- Node trainer factory CTrainNode::create()
- Edge trainer factory CTrainEdge::create()
- Refactored classes (with subsequent change of the interface). Refactoring mainly included substitution of pointers with references, raw pointers with smart pointers, protected member-variables with private
member-variables and removing friend classes.
- Added default and optional group id on adding new graph edge or arc
- CGraph and CGraphLayeredExt (renamed from IGraph and CGraphLayered respectively)
- CTrainEdge
- CDecode, CInfer and CInferExact
- CPowell
- Boost library was removed from the 3rdparty code. Subsequently CGraphBoost was moved to a separate branch.
- Visualization module now supports recently released glew v.2.1
July 2018
We are glad to present our next big release of DGM, v.1.6.0, which summarizes the v.1.5.x line with further improvements and bug fixes. This is the first cross-platform release: since now on the DGM library is available also for MacOS.
December 2017
In this update three new unary classifiers appear and the Google Test framework is incorporated into the DGM library. In order to use it with Visual Studio please use this Google Test Adapter.
- Three new unary classifiers were added:
- OpenCV Artificial Neural Network: CTrainNodeCvANN
- OpenCV k-Nearest Neighbors: CTrainNodeCvKNN
- OpenCV Support Vector Machine: CTrainNodeCvSVM (beta version)
- Unary classifier CTrainNodeKNN was optimized for speed and now is 2.3 times faster than in v.1.5.2
- Unary classifier CTrainNodeGMM was deeply revised:
- Bug "CKDGauss: Compound Plus Operator error" was fixed
- Bug in CTrainNodeGMM::getDivergence() was fixed
- Bug "CTrainNodeCvRF: serialization problem" was fixed in new OpenCV v.3.4.0
- Documentation for Average Precision was updated
June 2017
The library now has DGMConfig.cmake files to be easily integrated in other projects with CMake
- New advanced tutorial "Demo Random Model" was added
- Tutorials "Demo Train" and "Demo Visualization" were updated
- New unary classifier CTrainNodeKNN was added
- Support for partition function in getNodePotentials(..., float Z) methods was added
- New namespaces, containing useful in classification functions:
- New undelying classes:
- CSamplesAccumulator, for accumulating the training samples in memory
- CKDTree and CKDNode, implementing k-d tree data structure for efficient search of the nearest neighbors in the feature space
- Parallel implementation of sample sorting algorithm parallel::sortRows()
- GPU-based implementation of matrix multiplication calculation
- CTrainNodeCvRF::calculateNodePotentials() now normalizes potentials
- New block processing (compact notation) for image per-pixel classification:
- CV_32FC(nStates) = CTrainNode::getNodePotentials( CV_8UC(nFeatures) ) and
- CGraphExt::setNodes( CV_32FC(nStates) )
- CGraphLayered::fillNodes() is deprecated
- Support of the 16-bit data for Sparse Coding features
December 2016
- Support of the Multi-Layer graphical models: class CGraphLayered
- Block training for the Edges: CTrainEdge::addFeatureVecs() and Links: CTrainLink::addFeatureVec()
- Edge groups were introduced: defineEdgeGroup(), setGroupPot()
- New functions in the IGraph class interface: isEdgeExists(), isEdgeArc() and isArcExists()
- New tutorial in solving stereo correspondance problem: Demo Stereo
- The maxSamples functionality is enabled for the CTrainNodeMsRF and CTrainNodeCvGMM classes and deeply revised for the CTrainNodeCvRF class. Memory consumption is reduced
- New flag doClean: ITrain::train(bool doClean), allowing to automatic deletion of the training data after the training
- New Average Precision evaluation method is added
- Bug in parallel::gemm() was fixed
- Bug (memory leakage) in CTrainNode::addFeatureVec() was fixed
- Bug in destructors of CTrainNodeCvRF and CTrainNodeCvGMM was fixed
- Extraction of the global features was introduced
- New global namespace, collecting methods for the global features extraction
- New colorspaces namespace, collecting methods for color representation in different color spaces
- New SIFT feature extractor
- New CCommonFeatureExtractor::autoContrast() and CCommonFeatureExtractor::thresholding() auxiliary functions
- OpenGL 3D Graph Visualizer: showGraph3D() with user interaction
- The user interaction was also added to the histogram viewer: CMarkerHistogram::showHistogram()
September 2016
In this version the physical project structure of the library was deeply revised: now CMake is needed to build the project. Moreover, new visualization module VIS is added.
VIS module provides with a variety of tools for visualizing and analyzing used data as well as intermediate and final results. For user interaction capacity, there are functions, which allow for handling the mouse clicks over the figures. Please see our tutorial Demo Visualization for more details.
- new CGraphWeiss class
- class CRandom was deeply reworked
August 2016
- new CInfer::getConfidence()
- new CInferTRW (DGM inference implementation instead of Microsoft Research decoding implementation)
- new CGraphLayered::marginalize()
- Support of high-dimensional feature spaces (> 256)
- Significant memory usage reduction for CTrainNodeCvGMM and CTrainNodeCvRF classes
- Bug fixing in the Microsoft Sherwood library and enabling the parallel implementation for CTrainNodeMsRF class
- new Hue-Saturation-Value feature
- new [Sparse Coding](Fast Sparse Coding Features) feature
- documentation style update
- license change