The Accord.NET Framework
Accord.NET is a framework for scientific computing in .NET. The framework builds upon AForge.NET, an also popular framework for image processing, supplying new tools and libraries. Those libraries encompass a wide range of scientific computing applications, such as statistical data processing, machine learning, pattern recognition, including but not limited to, computer vision and computer audition. The framework offers a large number of probability distributions, hypothesis tests, kernel functions and support for most popular performance measurements techniques.
The framework is divided in libraries, available either through an executable installer, standalone compressed archives and NuGet packages. Those libraries include:
- Accord.Math Contains a matrix extension library, along with a suite of numerical matrix decomposition methods, numerical optimization algorithms for constrained and unconstrained problems, special functions and other tools for scientific applications.
- Accord.Statistics Probability distributions, statistical models and methods such as Linear and Logistic regression, Hidden Markov Models, (Hidden) Conditional Random Fields, Principal Component Analysis, Partial Least Squares, Discriminant Analysis, Kernel methods and functions and many other related techniques.
- Accord.MachineLearning Support Vector Machines, Decision Trees, Naive Bayesian models, K-means, Gaussian Mixture models and general algorithms such as RANSAC, Cross-validation and Grid-Search for machine-learning applications.
- Accord.Neuro Neural learning algorithms such as Levenberg-Marquardt, Parallel Resilient Backpropagation, initialization procedures such as Nguyen-Widrow and other neural network related methods.
Signal and Image Processing
- Accord.Imaging Interest point detectors (Harris, SURF and FAST), image matching and image stitching methods. Can create integral images and other image transformations, plus additional image filters for image processing a applications.
- Accord.Audio Process, transforms, filters and handle audio signals for machine learning and statistical applications.
- Accord.Vision Real-time face detection and tracking, as well as general methods for detecting, tracking and transforming objects in image streams. Contains cascade definitions, Camshift and Dynamic Template Matching trackers.
- Accord.Controls Histograms, scatter-plots and tabular data viewers for scientific applications.
- Accord.Controls.Imaging Windows Forms controls to show and handle images. Contains a convenient ImageBox control which mimics the traditional MessageBox behavior for quickly displaying or inspecting images.
- Accord.Controls.Audio Windows Forms controls to display waveforms and audio-related information.
- Accord.Controls.Vision Windows Forms components and controls to track head, face and hand movements and other computer vision related tasks.
Some features that might interest you:
- A matrix library based on extension methods over standard .NET structures, giving room for increased code reuse and allowing the gradual change of already existing algorithms;
- More than 40 different statistical distributions which can be plugged in the most varying statistical methods, such as Hidden Markov Models and mixture models;
- More than 30 hypothesis tests, including one-sample, two-sample, multiple-sample tests, contingency table tests for performance assessment and ANOVA tests;
- More than 38 kernel functions ready to be plugged into any of the available kernel methods, such as Kernel Support Vector Machines, Kernel Principal Components and Kernel Discriminant Analysis.
The framework comes with a library of sample applications so you can start writing code earlier. Applications range from statistics data preprocessing (statistical analysis, including PCA, KDA, LDA, PLS), image processing (image categorization, corners detection, image stitching), audio processing (data gathering, blind source separation), to video processing (depth image analysis with Microsoft's Kinect).
Two sample applications are shown below:
Real-world, academical and practical applications
Here is a list of published works using the Accord.NET Framework, including academical publications, hobby and commercial products, research projects and teaching material.