{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "\n", "*This notebook contains an excerpt from the book [Machine Learning for OpenCV](https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-opencv) by Michael Beyeler.\n", "The code is released under the [MIT license](https://opensource.org/licenses/MIT),\n", "and is available on [GitHub](https://github.com/mbeyeler/opencv-machine-learning).*\n", "\n", "*Note that this excerpt contains only the raw code - the book is rich with additional explanations and illustrations.\n", "If you find this content useful, please consider supporting the work by\n", "[buying the book](https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-opencv)!*" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "< [Understanding Perceptrons](09.01-Understanding-perceptrons.ipynb) | [Contents](../README.md) | [Getting Acquainted with Deep Learning](09.03-Getting-Acquainted-with-Deep-Learning.ipynb) >" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "# Implementing a Multi-Layer Perceptron (MLP) in OpenCV\n", "\n", "In order to create nonlinear decision boundaries, we can combine multiple perceptrons to\n", "form a larger network. This is also known as a multilayer perceptron (MLP). MLPs usually\n", "consist of at least three layers, where the first layer has a node (or neuron) for every input\n", "feature of the dataset, and the last layer has a node for every class label. The layer in\n", "between is called the hidden layer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading and preprocessing the data\n", "\n", "Implementing an MLP in OpenCV uses the same syntax that we have seen at least a dozen\n", "times before. In order to see how an MLP compares to a single perceptron, we will operate\n", "on the same toy data as before:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn.datasets.samples_generator import make_blobs\n", "X_raw, y_raw = make_blobs(n_samples=100, centers=2,\n", " cluster_std=5.2, random_state=42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preprocessing the data\n", "\n", "However, since we are working with OpenCV, this time, we want to make sure the input\n", "matrix is made up of 32-bit floating point numbers, otherwise the code will break:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "import numpy as np\n", "X = X_raw.astype(np.float32)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Furthermore, we need to think back to [Chapter 4](04.00-Representing-Data-and-Engineering-Features.ipynb), *Representing Data and Engineering and Features*, and remember how to represent categorical variables. We need to find a way to\n", "represent target labels, not as integers but with a one-hot encoding. The easiest way to\n", "achieve this is by using scikit-learn's `preprocessing` module:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn.preprocessing import OneHotEncoder\n", "enc = OneHotEncoder(sparse=False, dtype=np.float32)\n", "y = enc.fit_transform(y_raw.reshape(-1, 1))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Creating an MLP classifier in OpenCV\n", "\n", "The syntax to create an MLP in OpenCV is the same as for all the other classifiers:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "import cv2\n", "mlp = cv2.ml.ANN_MLP_create()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, now we need to specify how many layers we want in the network and how many\n", "neurons there are per layer. We do this with a list of integers, which specify the number of\n", "neurons in each layer. Since the data matrix `X` has two features, the first layer should also\n", "have two neurons in it (`n_input`). Since the output has two different values, the last layer\n", "should also have two neurons in it (`n_output`). In between these two layers, we can put as\n", "many hidden layers with as many neurons as we want. Let's choose a single hidden layer\n", "with an arbitrary number of eight neurons in it (`n_hidden`):" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "n_input = 2\n", "n_hidden = 8\n", "n_output = 2\n", "mlp.setLayerSizes(np.array([n_input, n_hidden, n_output]))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Customizing the MLP classifier\n", "\n", "Before we move on to training the classifier, we can customize the MLP classifier via a\n", "number of optional settings:\n", "- `mlp.setActivationFunction`: This defines the activation function to be used for every neuron in the network\n", "- `mlp.setTrainMethod`: This defines a suitable training method\n", "- `mlp.setTermCriteria`: This sets the termination criteria of the training phase\n", "\n", "Whereas our home-brewed perceptron classifier used a linear activation function, OpenCV\n", "provides two additional options:\n", "- `cv2.ml.ANN_MLP_IDENTITY`: This is the linear activation function, $f(x) = x$.\n", "- `cv2.ml.ANN_MLP_SIGMOID_SYM`: This is the symmetrical sigmoid function (also known as hyperbolic tangent), $f(x) = \\beta (1 - \\exp(-\\alpha x)) / (1 + \\exp(-\\alpha x))$. Whereas $\\alpha$ controls the slope of the function, $\\beta$ defines the upper and lower bounds of the output.\n", "- `cv2.ml.ANN_GAUSSIAN`: This is the Gaussian function (also known as the bell curve), $f(x) = \\beta \\exp(-\\alpha x^2)$. Whereas $α$ controls the slope of the function, $\\beta$ defines the upper bound of the output." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we will use a proper sigmoid function that squashes the input values into\n", "the range [0, 1]. We do this by choosing $\\alpha = 2.5$ and $\\beta = 1.0$:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "mlp.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM, 2.5, 1.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are curious what this activation function looks like, we can take a short excursion\n", "with Matplotlib:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alpha = 2.5\n", "beta = 1.0\n", "x_sig = np.linspace(-1.0, 1.0, 100)\n", "y_sig = beta * (1.0 - np.exp(-alpha * x_sig))\n", "y_sig /= (1 + np.exp(-alpha * x_sig))\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(x_sig, y_sig, linewidth=3)\n", "plt.xlabel('x')\n", "plt.ylabel('y')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As mentioned in the preceding part, a training method can be set via\n", "mlp.setTrainMethod. The following methods are available:\n", "- `cv2.ml.ANN_MLP_BACKPROP`: This is the backpropagation algorithm we talked about previously. You can set additional scaling factors via `mlp.setBackpropMomentumScale` and `mlp.setBackpropWeightScale`.\n", "- `cv2.ml.ANN_MLP_RPROP`: This is the Rprop algorithm, which is short for resilient backpropagation. We won't have time to discuss this algorithm, but you can set additional parameters of this algorithm via `mlp.setRpropDW0`, `mlp.setRpropDWMax`, `mlp.setRpropDWMin`, `mlp.setRpropDWMinus`, and `mlp.setRpropDWPlus`.\n", "\n", "In this example, we will choose backpropagation:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "mlp.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we can specify the criteria that must be met for training to end via\n", "`mlp.setTermCriteria`. This works the same for every classifier in OpenCV and is closely\n", "tied to the underlying C++ functionality. We first tell OpenCV which criteria we are going to\n", "specify (for example, the maximum number of iterations). Then we specify the value for this\n", "criterion. All values must be delivered in a tuple." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "term_mode = cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS\n", "term_max_iter = 300\n", "term_eps = 0.01\n", "mlp.setTermCriteria((term_mode, term_max_iter, term_eps))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Training and testing the MLP classifier\n", "\n", "This is the easy part. Training the MLP classifier is the same as with all other classifiers:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mlp.train(X, cv2.ml.ROW_SAMPLE, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same goes for predicting target labels:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "_, y_hat = mlp.predict(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The easiest way to measure accuracy is by using scikit-learn's helper function:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "0.83999999999999997" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import accuracy_score\n", "accuracy_score(y_hat.round(), y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like we were able to increase our performance from 81% with a single perceptron to\n", "84% with an MLP consisting of ten hidden-layer neurons and two output neurons. In order\n", "to see what changed, we can look at the decision boundary one more time:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "def plot_decision_boundary(classifier, X_test, y_test):\n", " # create a mesh to plot in\n", " h = 0.02 # step size in mesh\n", " x_min, x_max = X_test[:, 0].min() - 1, X_test[:, 0].max() + 1\n", " y_min, y_max = X_test[:, 1].min() - 1, X_test[:, 1].max() + 1\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", " \n", " X_hypo = np.c_[xx.ravel().astype(np.float32),\n", " yy.ravel().astype(np.float32)]\n", " _, zz = classifier.predict(X_hypo)\n", " zz = np.argmax(zz, axis=1)\n", " zz = zz.reshape(xx.shape)\n", " \n", " plt.contourf(xx, yy, zz, cmap=plt.cm.coolwarm, alpha=0.8)\n", " plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, s=200)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 6))\n", "plot_decision_boundary(mlp, X, y_raw)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And voila! The decision boundary is no longer a straight line. That being said, you might\n", "have expected a more drastic performance increase. But nobody said we have to stop here!\n", "\n", "There are at least two different things we can try from here on out:\n", "- We can add more neurons to the hidden layer. You can do this by replacing `n_hidden` on line 6 with a larger value and running the code again. Generally speaking, the more neurons you put in the network, the more powerful the MLP will be.\n", "- We can add more hidden layers. It turns out that this is where neural nets really get their power from.\n", "\n", "Hence, this is where I should tell you about deep learning." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "< [Understanding Perceptrons](09.01-Understanding-perceptrons.ipynb) | [Contents](../README.md) | [Getting Acquainted with Deep Learning](09.03-Getting-Acquainted-with-Deep-Learning.ipynb) >" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.3" } }, "nbformat": 4, "nbformat_minor": 0 }