Sample applications

César Souza edited this page Nov 26, 2017 · 81 revisions

This page enlists the sample applications that come with the framework, including their download links and source code locations. To see a version of this page with a better interface, please see http://accord-framework.net/samples.html.

Table of Contents

Audio

Audio beat detector

A simple beat detector that listens to an input device and tries to detect peaks in the audio signal. It is a statistics-based beat detector in the sense it searches local energy peaks which may contain a beat.

Audio beat detector and metronome sample application
Audio beat detector and metronome.

Spectrum analyzer (Fourier)

The Fourier sample application shows how to capture sounds from a capture device (such as a microphone jack) using the Accord.NET Framework. The signal can be analyzed, processed and transformed using the framework's Fourier and Hilbert transform functions.

Fourier spectrum analyzer sample application
Fourier spectrum analyzer sample application

Wave Recorder

The Wave Recorder sample application demonstrates how to use the IAudioOutput and IAudioSource interfaces to capture and output sound. This is just a sample application, however. The intent of the framework is not to allow building of audio players, but to support the use of audio signals in machine learning and statistics experiments.

Wave recorder sample application
Wave recorder sample application.

Fuzzy

Robot (Inference)

Robot navigation - inference
Robot navigation using Fuzzy logic sample application.

Sets (Fuzzy, Linguistic)

Fuzzy sets sample application
Fuzzy logic sample application.

Genetics

Genetic Programming

Genetic programming sample application
Genetic programming sample application.

Traveling Salesman (GP)

Travelling salesman with Genetic programming
Travelling salesman with Genetic programming.

Imaging

Classification (Bag-of-Words and SVM)

Shows how to perform image classification using the Bag-of-Visual-Words (BoW) model with SURF features and the Binary Split algorithm.

The BoW model is used to transform the many SURF feature points in a image in a single, fixed-length feature vector. The feature vector is then used to train Support Vector Machines (SVMs) using a variety of kernels.

Image classification sample application
Image classification sample application.

SURF features extracted from one of the images
SURF features extracted from one of the images.

Corners detection (FAST)

The FAST sample application demonstrates how to perform corners detection using the FAST corners detector. As the name implies, the FAST detector is one of the fastest corners detectors available.

Corner point detection with the FAST algorithm
Corner point detection with the FAST algorithm.

The current code is based on the excellent Edward Rosten's implementation, and is dual licensed under the permissive BSD license.

Corners detection (Harris)

The Harris sample application demonstrates how to perform corners detection using the Harris algorithm.

Corner point detection with the Harris algorithm
Corner point detection with the Harris algorithm.

The current implementation supports both Harris and Nobel corner measures. Harris can be enabled by checking the checkbox next to the ''k'' parameter, which is only needed for Harris. The Nobel measure does not require setting any parameters.

A suitable choice for the threshold parameter when using Harris measure may range around 10,000 to 30,000, while when using Nobel it may range around 20 to 100. Best sigma values are usually higher than 0.3 and lesser than 5.0.

Corners detection (SURF)

The SURF sample application shows how to use the Speeded-Up Robust Features (SURF) Detector.

Interest point detection with the SURF algorithm
Interest point detection and description with the SURF algorithm.

The current implementation is based on the excellent OpenSURF library by Christopher Evans. The framework version, however, comes with further performance optimizations.

Blobs detection

The Detection (blobs) sample application shows how to use the BlobCounter, Blob and GrahamConvexHull classes to obtain the shapes of different objects in an input image.

Blobs identification with the BlobCounter class
Blobs identification with the BlobCounter class.

Shape detection

The Detection (shapes) sample application shows how to use the SimpleShapeChecker to obtain the shapes of different objects in an input image.

Shape identification with the SimpleShapeChecker class
Object shape detection through blob identification.

Image filters

The image filters sample application shows how to use the more than 80 image filters currently available at Accord.Imaging.Fitlers.

Image filtering with the Accord.Imaging.Filters namespace
Image filter applications.

Hough Transform

Hough transform for straight line and/or circle detection
Hough transform for straight line and/or circle detection.

Image Viewer

Image viewer sample application
Image viewer sample application.

Image stitching (FREAK)

Demonstrates how to perform automatic image stitching by interest point matching. The actual stitching uses many parts of the framework, such as the FREAK feature detector, RANSAC, k-nearest neighbor matching, homography estimation and linear gradient image blending.

Image stitching using the FREAK feature detection and extraction algorithm.
Image stitching using the FREAK feature detection and extraction algorithm.

Image stitching (Harris)

Demonstrates how to perform automatic image stitching by interest point matching. The actual stitching uses many parts of the framework, such as the Harris corners detector, RANSAC, correlation window matching, homography estimation and linear gradient image blending.

Image stitching using Harris corners detection and correlation matching.
Image stitching using Harris corners detection and correlation matching.

For more details about the method, please be sure to read the accompanying article on how to perform automatic image stitching by interest point matching in C#.

Image stitching (SURF)

Demonstrates how to perform automatic image stitching by interest point matching. The actual stitching uses many parts of the framework, such as the SURF feature detector, RANSAC, k-nearest neighbor matching, homography estimation and linear gradient image blending.

Image stitching using SURF features and k-nearest neighbor matching.
Image stitching using SURF features and k-nearest neighbor matching.

Pose Estimation (POSIT)

Pose estimation with POSIT and coplanar POSIT algorithms
Pose estimation with POSIT and coplanar POSIT algorithms.

Texture

Texture generation
Texture generation.

Wavelets

The Wavelet sample application shows how to use the Wavelet transform filter to process images using wavelet transforms such as the Haar and CDF9/7.

Wavelets sample application.
Wavelets sample application.

Machine Learning

Animat (QLearning and Sarsa)

Animat example for QLearning and Sarsa
Animat example for QLearning and Sarsa.

Classification (Kernel SVMs)

This sample application shows how to use Kernel Support Vector Machines (kSVMs) to solve a classification problem. The sample application comes with default sample data with can be loaded in the File -> Open menu.

Data classification with SVMs
Sample nonlinear problem.

After a sample data has been loaded, one can configure the settings and create a learning machine in the second tab. The picture below shows the decision surface for the Ying-Yang classification data generated by a heuristically initialized Gaussian-kernel SVM after it has been trained using Sequential Minimal Optimization (SMO). The framework offers an extensive list of kernel functions to choose from.

Data classification with SVMs
Decision surface generated by a Gaussian SVM.

Sparse support vectors.
Sparse support vectors.

SVM Classification results
SVM Classification results.

Clustering (Gaussian Mixture Models)

This sample application shows how to use Gaussian Mixture Models to perform clustering and classification using soft-decision margins.

Clustering data with GMMs
Clustering data with GMMs.

Clustering (K-Means and MeanShift for color clustering)

This sample application shows how to use the K-Means clustering algorithm and the mean shift clustering algorithm to perform color clustering, reducing the number of distinct colors in a given image.

Color clustering with K-Means and MeanShift
Color clustering with K-Means and MeanShift.

Clustering 2D (K-Means, Mean-Shift, GMM)

This sample application shows how to use the K-Means, MeanShift, or Gaussian Mixture Models to perform clustering of data points in a 2D space.

Data clustering with K-Means, MeanShift and GMMs
Data clustering with K-Means, MeanShift and GMMs.

Classification (Decision Trees)

The Decision Trees sample application demonstrates how to create and use Decision Trees in C#. Decision trees are simple predictive models which map input attributes to a target value using simple conditional rules. Trees are commonly used in problems whose solutions must be readily understandable or explainable by humans, such as in computer-aided diagnostics and credit analysis.

Here is a detailed explanation on Decision Trees.

Data classification with decision trees
Data classification with Decision Trees.

Feature Selection (L1-regularized Logistic SVMs)

Feature selection using sparse L1-regularized logistic support vector machines. This sample application shows how to create special linear SVMs with logistic functions to perform feature selection.

A problem that can be perfectly separated using only X.
A problem that can be perfectly separated using only X.

The machine accurately says that X is the most important feature.
The machine accurately says that X is the most important feature.

RANdom SAmple Consensus (RANSAC)

This sample application shows how to use the Random Sample Consensus (RANSAC) algorithm to fit linear regression models. The algorithm works with any model or function, producing a robust version of the model which is less sensitive to outliers. Here is a detailed explanation on how RANSAC works.

Robust linear estimation with RANSAC
Robust linear estimation with RANSAC.

Gestures (Dynamic Time Warping SVMs)

Demonstrates how to use Support Vector Machines (SVMs) with the Dynamic Time Warping (DTW) kernel to recognize sequences of discrete observations.

Dynamic Time Warping sample application

Handwriting (Multi-class SVM)

This sample application shows how to teach Multi-class Support Vector Machines using Sequential Minimal Optimization to recognize handwritten digits from the UCI's Optdigits dataset.

Handwritten digits recognition with SVMs
Handwritten digits recognition with SVMs.

Liblinear (Linear SVMs)

This sample application shows how to recreate the liblinear.exe command line application using the SVM algorithms provided by the framework. The framework can perform almost all liblinear algorithms in C#, except for one. Those include:

  0 — L2-regularized logistic regression (primal)
  1 – L2-regularized L2-loss support vector classification (dual) 
  2 — L2-regularized L2-loss support vector classification (primal) 
  3 — L2-regularized L1-loss support vector classification (dual) 
  4 –
  5 — L1-regularized L2-loss support vector classification
  6 — L1-regularized logistic regression 
  7 — L2-regularized logistic regression (dual) for regression 
  11 — L2-regularized L2-loss support vector regression (primal)
  12 — L2-regularized L2-loss support vector regression (dual)
  13 — L2-regularized L1-loss support vector regression (dual)

The framework can perform also load to and from files stored in LibSVM's sparse format. This means it should be straightforward to create or learn your models using one tool and run it on the other, if that would be necessary. For example, given that Accord.NET can run on mobile applications, it is possible to create and learn your models in a computing grid using liblinear and then integrate it in your Windows Phone application by loading it in Accord.NET.

Liblinear in C#
Pure C# liblinear application.

Classification (Naive Bayes)

This application shows how to use Naive Bayes for binary classification tasks.

Data classification with Naive Bayes
Data classification with Naive Bayes.

Regression (Kernel SVM)

Function regression using (Kernel) Support Vector Machines.

Function regression with SVMs
Function regression with SVMs.

Mathematics

Matrices

Matrix usage examples
Matrix usage examples.

Pose Coordinates (POSIT)

Pose coordinates estimation using POSIT
Pose coordinates estimation using POSIT.

Quadratic Programming / Goldfarb-Idnani (QP) Solver

Quadratic Programming (QP) problem solving using the dual method of Goldfarb and Idnani. Translated from the original Fortran code by Berwin A. Turlach.

Quadratic Programming Solver
Quadratic Programming Solver.

Denavit-Hartenberg Kinematics

Demonstrates how to use Denavit-Hartenberg parameters and equations to model kinematic chains.

Denavit-Hartenberg forward kinematics sample application.
Denavit-Hartenberg forward kinematics sample application.

Neuro

Classification (Levenberg-Marquardt)

This sample application shows how to use the Levenberg-Marquardt learning algorithm together with Bayesian regularization to teach a feed-forward neural network.

Levenberg-Marquardt neural network learning
Data classification with Neural Networks using the Levenberg-Marquardt algorithm with and without Bayesian regularization.

Deep Belief Networks and Boltzmann Machines

This sample application shows how to learn Deep Belief Networks using Restricted Boltzmann Machines and the Contrastive-Divergence algorithm. However, please note that this approach has been deprecated in favor of learning Deep Neural Networks with ReLU and BatchNorm directly using SGD.

Deep neural network learning
Deep neural network learning.

Levenberg-Marquardt

An adaptation of the original AForge.NET Neuro sample applications to work with Levenberg-Marquardt instead of Backpropagation. Includes solutions for approximation, time-series prediction and the exclusive-or (XOR) problem using neural networks trained by Levenberg-Marquardt. For more information regarding the method of Levenberg-Marquardt, please take a look on Neural Network Learning by the Leveberg-Marquardt Algorithm with Bayesian Regularization.

Levenberg-Marquardt algorithm for Approximation, Time Series, and the XOR problems
Levenberg-Marquardt algorithm for Approximation, Time Series, and the XOR problems.

Perceptron

Delta rule learning, perceptron learning and multilayer perceptron learning
Delta rule learning, perceptron learning and multilayer perceptron learning.

Resilient Backpropagation (RProp)

An adaptation of the original AForge.NET Neuro sample applications to work with Resilient Backpropagation instead of Backpropagation. Includes solutions for approximation, time-series prediction and the exclusive-or (XOR) problem using neural networks trained by Resilient Backpropagation.

RProp algorithm for Approximation, Time Series, and the XOR problems
RProp algorithm for Approximation, Time Series, and the XOR problems.

Self-Organizing Maps (SOM)

Color clustering using Self-Organizing Map Networks
Color clustering using Self-Organizing Map Networks.

Traveling Salesman (SOM)

Delta rule learning, perceptron learning and multilayer perceptron learning
Delta rule learning, perceptron learning and multilayer perceptron learning.

Statistics

Handwriting recognition (KDA)

This sample application shows how to perform handwritten digit recognition using Kernel Discriminant Analysis and Linear Discriminant Analysis.

Recognition of handwritten digits with KDA

Recognition of handwritten digits with KDA

Recognition of handwritten digits with KDA

Handwritten digits with KDA sample application

Filters (Tables)

DataTable filters

Hidden Markov Models

Demonstrates how to use Hidden Markov Models (HMMs) and Accord.NET Markov Sequence Classifiers to recognize sequences of discrete observations.

Hidden Markov Model sample application

Hidden Markov Model sample application

Kernel Discriminant Analysis (KDA)

Sample application demonstrating how to use Kernel Discriminant Analysis (also known as KDA, or Non-linear (Multiple) Discriminant Analysis using Kernels) to perform non-linear transformation and classification. The sample datasets which can be used in the application are available under the Resources folder in the main directory of the application.

Kernel discriminant analysis

Kernel discriminant analysis

Kernel Principal Component Analysis (KPCA)

Sample application demonstrating how to use Kernel Principal Component Analysis (KPCA) to perform non-linear transformations and dimensionality reduction. The sample datasets which can be used in the application are available under the Resources folder in the main directory of the application.

Kernel principal component analysis

Kernel principal component analysis

Linear Discriminant Analysis (LDA)

Sample application demonstrating how to use Linear Discriminant Analysis (also known as LDA, or Fisher's (Multiple) Linear Discriminant Analysis) to perform linear transformations and classification. The sample datasets which can be used in the application are available under the Resources folder in the main directory of the application

Linear discriminant analysis

Linear discriminant analysis

Principal Component Analysis (PCA)

Sample application demonstrating how to use Principal Component Analysis (PCA) to perform linear transformations and dimensionality reduction. The sample datasets which can be used in the application are available under the Resources folder in the main directory of the application

Principal component analysis

Principal component analysis

Independent Component Analysis (ICA)

Sample application demonstrating how to use Independent Component Analysis (ICA) to perform blind source separation of audio signals. The audio is processed using the Accord.Audio modules of the framework.

Independent component analysis for blind source separation

Independent component analysis for blind source separation

Partial Least Squares (PLS)

Demonstrates how to use Partial Least Squares to fit a (multiple and multivariate) linear regression model from high-dimensionality data.

Partial Least Squares

Partial least squares analysis

Linear and Logistic Regression Analysis

Sample application for creating and fitting Logistic Regression models. Also fits a multiple linear regression model for comparison purposes, and performs chi-square tests and computes Wald's statistics for the logistic regression coefficients.

Linear and logistic regression

Multinomial Logistic Regression Analysis

Sample application demonstrating how to classify objects into different classes using Multinomial Logistic Regression Analsysis. Performs chi-square tests and computes Wald's statistics for the logistic regression coefficients.

Multinomial Logistic Regression Analysis

Eigenfaces (PCA)

Sample application demonstrating how to use Principal Component Analysis (PCA) to perform image classification. The application implements the Eigenfaces technique to distinguish between depth images of human hands in different shapes.

Eigenfaces

Principal component analysis

Receiver Operating Characteristic (ROC) Curves

Sample application demonstrating how to create and visualize Receiver-Operating Characteristic Curves from a given set of results from a test or a classification process.

ROC curve

Cox's Proportional Hazards

How to perform survival analysis using Cox's Proportional Hazards model for both regression and prediction of time-censured data.

Cox Proportional Hazards

Mouse Gesture Recognition

Learning and recognition of mouse gestures using hidden Markov model-based classifiers and Hidden Conditional Random Fields. Showcased in a series of CodeProject articles under the name Sequence Classifiers in C#.

Mouse gesture recognition with hidden Markov models

Mouse gesture recognition with hidden Markov models.

Statistics Workbench (distributions)

Statistics Workbench, a sample application demonstrating all probability distributions available in the framework
Statistics Workbench, a sample application demonstrating all probability distributions available in the framework.

Unity

Unity sample application

Sample application demonstrating how to use the Accord.NET Framework in Unity
Sample application demonstrating how to use the Accord.NET Framework in Unity.

Video

Kinect Capture

Kinect (v1) Capture sample application
Sample application demonstrating how to capture depth images using the first-generation Kinect.

Snapshot Maker

Snapshot maker sample application
Snapshot maker sample application.

Two Cameras

Sample application demonstrating how to record from two cameras at the same time using Accord.NET
Sample application demonstrating how to record from two cameras at the same time using Accord.NET

Video Player

Sample application demonstrating how to replay video from a local capture device, a JPEG stream, a MJPEG stream, or another video source
Sample application demonstrating how to replay video from a local capture device, a JPEG stream, a MJPEG stream, or another video source.

Ximea Sample

Sample application demonstrating how to control a Ximea camera and make the camera interact with C#/.NET.
Sample application demonstrating how to control a Ximea camera and make the camera interact with C#/.NET.

Screencast Capture Lite

Screencast Capture Lite is a tool for recording the desktop screen and saving it to a video file, preserving quality as much as possible. It is a real application, and also a demonstration of the use of the AForge.NET and Accord.NET Frameworks to build multimedia applications, capturing video and audio streams from different sources.

Screencast capture lite
Screencast Capture Lite.

Vision

Face Detection (Haar object detector)

Face detection using the Face detection based in Haar-like rectangular features method often known as the Viola-Jones method

Haar cascade face detection

Haar cascade face detection.

Face Tracking (Camshift)

Face (or object) tracking using Viola-Jones for face detection and Camshift as the object tracker. Can be used in RGB and HSL color spaces (may require some tuning for HSL)

Face tracking with the Camshift algorithm

Face tracking with the Camshift algorithm.

Head-based Controller

Sample application demonstrating how to use the Accord.Vision.Controls.Controller component to provide joystick-like controls for a Windows Form application. Its component design makes adding support for head-based controlling as easy as dragging and dropping a component into a Form.

Controlling a computer interface using computer vision

Controlling a computer interface using computer vision.

Color glove segmentation and tracking

How to segment and track color objects using a simple and inexpensive HSL-based color tracker.

Color-based video tracking Color-based video tracking.

Dynamic Virtual Wall

Dynamic virtual wall sample application
Dynamic virtual wall sample application.

Motion Detector

Motion detector sample application
Motion detector sample application.

  1. Accord.NET Framework
  2. Getting started
  3. Published books
  4. How to use
  5. Sample applications

Help improve this wiki! Those pages can be edited by anyone that would like to contribute examples and documentation to the framework.

Have you found this software useful? Consider donating only U$10 so it can get even better! This software is completely free and will always stay free. Enjoy!

Paypal:

Donate

Crypto:
  • BTC: 1FC5gxLs2TsvuiHPP1tRLh5mPboQJQghvZ
  • ETH: 0x36FDA635Ef5773d8B376037D7BAfF22FeB987d92
  • LTC: LNjkZkMdSyncUvg5WnnhDNirdux4Q95gdt
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.