All Projects → mbeyeler → Opencv Machine Learning

mbeyeler / Opencv Machine Learning

Licence: mit
M. Beyeler (2017). Machine Learning for OpenCV: Intelligent image processing with Python. Packt Publishing Ltd., ISBN 978-178398028-4.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Opencv Machine Learning

Face mask detection
Face mask detection system using Deep learning.
Stars: ✭ 168 (-75.76%)
Mutual labels:  jupyter-notebook, opencv
Deeplearning cv notes
📓 deepleaning and cv notes.
Stars: ✭ 223 (-67.82%)
Mutual labels:  jupyter-notebook, opencv
Road lane line detection
Find lane lines on the road using Python and OpenCV, applying Canny edge detectors and Hough line transforms
Stars: ✭ 202 (-70.85%)
Mutual labels:  jupyter-notebook, opencv
Scriptsdump
The biggest dump of scripts ever!
Stars: ✭ 114 (-83.55%)
Mutual labels:  jupyter-notebook, opencv
Powerai Counting Cars
Run a Jupyter Notebook to detect, track, and count cars in a video using Maximo Visual Insights (formerly PowerAI Vision) and OpenCV
Stars: ✭ 282 (-59.31%)
Mutual labels:  jupyter-notebook, opencv
Yolo Powered robot vision
Stars: ✭ 133 (-80.81%)
Mutual labels:  jupyter-notebook, opencv
Learnopencv
Learn OpenCV : C++ and Python Examples
Stars: ✭ 15,385 (+2120.06%)
Mutual labels:  jupyter-notebook, opencv
Phormatics
Using A.I. and computer vision to build a virtual personal fitness trainer. (Most Startup-Viable Hack - HackNYU2018)
Stars: ✭ 79 (-88.6%)
Mutual labels:  jupyter-notebook, opencv
Drowsiness detection
Stars: ✭ 250 (-63.92%)
Mutual labels:  jupyter-notebook, opencv
Mozart
An optical music recognition (OMR) system. Converts sheet music to a machine-readable version.
Stars: ✭ 241 (-65.22%)
Mutual labels:  jupyter-notebook, opencv
Nvidia Gpu Tensor Core Accelerator Pytorch Opencv
A complete machine vision container that includes Jupyter notebooks with built-in code hinting, Anaconda, CUDA-X, TensorRT inference accelerator for Tensor cores, CuPy (GPU drop in replacement for Numpy), PyTorch, TF2, Tensorboard, and OpenCV for accelerated workloads on NVIDIA Tensor cores and GPUs.
Stars: ✭ 110 (-84.13%)
Mutual labels:  jupyter-notebook, opencv
Autocrop
😌 Automatically detects and crops faces from batches of pictures.
Stars: ✭ 320 (-53.82%)
Mutual labels:  jupyter-notebook, opencv
Selfdrivingcar
A collection of all projects pertaining to different layers in the SDC software stack
Stars: ✭ 107 (-84.56%)
Mutual labels:  jupyter-notebook, opencv
Repo 2018
Deep Learning Summer School + Tensorflow + OpenCV cascade training + YOLO + COCO + CycleGAN + AWS EC2 Setup + AWS IoT Project + AWS SageMaker + AWS API Gateway + Raspberry Pi3 Ubuntu Core
Stars: ✭ 163 (-76.48%)
Mutual labels:  jupyter-notebook, opencv
Curved Lane Lines
detect curved lane lines using HSV filtering and sliding window search.
Stars: ✭ 100 (-85.57%)
Mutual labels:  jupyter-notebook, opencv
Raspberrypi Facedetection Mtcnn Caffe With Motion
MTCNN with Motion Detection, on Raspberry Pi with Love
Stars: ✭ 204 (-70.56%)
Mutual labels:  jupyter-notebook, opencv
Ds and ml projects
Data Science & Machine Learning projects and tutorials in python from beginner to advanced level.
Stars: ✭ 56 (-91.92%)
Mutual labels:  jupyter-notebook, opencv
Vehicle Detection And Tracking
Udacity Self-Driving Car Engineer Nanodegree. Project: Vehicle Detection and Tracking
Stars: ✭ 60 (-91.34%)
Mutual labels:  jupyter-notebook, opencv
Deeppicar
Deep Learning Autonomous Car based on Raspberry Pi, SunFounder PiCar-V Kit, TensorFlow, and Google's EdgeTPU Co-Processor
Stars: ✭ 242 (-65.08%)
Mutual labels:  jupyter-notebook, opencv
Car Finding Lane Lines
Finding Lane Lines using Python and OpenCV
Stars: ✭ 299 (-56.85%)
Mutual labels:  jupyter-notebook, opencv

Machine Learning for OpenCV

Google group Binder DOI

This is the Jupyter notebook version of the following book:


Michael Beyeler
Machine Learning for OpenCV
Intelligent Image Processing with Python

14 July 2017
Packt Publishing Ltd., London, England
Paperback: 382 pages
ISBN 978-178398028-4

The content is available on GitHub. The code is released under the MIT license.

The book is also available as a two-part video course:

For questions, discussions, and more detailed help please refer to the Google group.

If you use either book or code in a scholarly publication, please cite as:

M. Beyeler, (2017). Machine Learning for OpenCV. Packt Publishing Ltd., London, England, 380 pages, ISBN 978-178398028-4.

Or use the following bibtex:

@book{MachineLearningOpenCV,
	title = {{Machine Learning for OpenCV}},
	subtitle = {{Intelligent image processing with Python}},
	author = {Michael Beyeler},
	year = {2017},
	pages = {380},
	publisher = {Packt Publishing Ltd.},
	isbn = {978-178398028-4}
}

Scholarly work referencing this book:

  • S Lynch (2018). Image Processing with Python. Dynamical Systems with Applications using Python, Springer.
  • MQG Quiroz (2018). Inductive Machine Learning with Image Processing for Objects Detection of a Robotic Arm with Raspberry PI. International Conference on Technology Trends.
  • A Konate (2018). Un aperçu sur quelques méthodes en apprentissage automatique supervisé. HAL 01946237.

Table of Contents

Preface

Foreword by Ariel Rokem

  1. A Taste of Machine Learning

  2. Working with Data in OpenCV

  3. First Steps in Supervised Learning

  4. Representing Data and Engineering Features

  5. Using Decision Trees to Make a Medical Diagnosis

  6. Detecting Pedestrians with Support Vector Machines

  7. Implementing a Spam Filter with Bayesian Learning

  8. Discovering Hidden Structures with Unsupervised Learning

  9. Using Deep Learning to Classify Handwritten Digits

  10. Combining Different Algorithms Into an Ensemble

  11. Selecting the Right Model with Hyper-Parameter Tuning

  12. Wrapping Up

Running the Code

There are at least two ways you can run the code:

  • Using Binder (no installation required).
  • Using Jupyter Notebook on your local machine.

The code in this book was tested with Python 3.5, although Python 3.6 and 2.7 should work as well.

Using Binder

Binder allows you to run Jupyter notebooks in an interactive Docker container. No installation required!

Launch the project: mbeyeler/opencv-machine-learning

Using Jupyter Notebook

You basically want to follow the installation instructions in Chapter 1 of the book.

In short:

  1. Download and install Python Anaconda. On Unix, when asked if the Anaconda path should be added to your PATH variable, choose yes. Then either open a new terminal or run $ source ~/.bashrc.

  2. Fork and clone the GitHub repo:

    • Click the Fork button in the top-right corner of this page.
    • Clone the repo, where YourUsername is your actual GitHub user name:
    $ git clone https://github.com/YourUsername/opencv-machine-learning
    $ cd opencv-machine-learning
    
    • Add the following to your remotes:
    $ git remote add upstream https://github.com/mbeyeler/opencv-machine-learning
    
  3. Add Conda-Forge to your trusted channels (to simplify installation of OpenCV on Windows platforms):

    $ conda config --add channels conda-forge
    
  4. Create a conda environment for Python 3 with all required packages:

    $ conda create -n Python3 python=3.6 --file requirements.txt
    
  5. Activate the conda environment. On Linux / Mac OS X:

    $ source activate Python3
    

    On Windows:

    $ activate Python3
    

    You can learn more about conda environments in the Managing Environments section of the conda documentation.

  6. Launch Jupyter notebook:

    $ jupyter notebook
    

    This will open up a browser window in your current directory. Navigate to the folder opencv-machine-learning. The README file has a table of contents. Else navigate to the notebooks folder, click on the notebook of your choice, and select Kernel > Restart & Run All from the top menu.

Getting the latest code

If you followed the instructions above and:

  • forked the repo,
  • cloned the repo,
  • added the upstream remote repository,

then you can always grab the latest changes by running a git pull:

$ cd opencv-machine-learning
$ git pull upstream master

Errata

The following errata have been reported that apply to the print version of the book. Some of these are typos, others are bugs in the code. Please note that all known bugs have been fixed in the code of this repository.

  • p.32: Out[15] should read '3' instead of 'int_arr[3]'.
  • p.32: Out[22] should read array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) instead of array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]).
  • p.33: In the sentence: "Here, the first dimension defines the color channel...", the order of color channels should read "blue, green, and red in OpenCV" instead of "red, green, blue, green, and red".
  • p.36: The range of x values should read "0 <= x <= 10" instead of "0 <= x < 10", since np.linspace by default includes the endpoint.
  • p.51: In [15] shoud read precision = true_positive / (true_positive + false_positive) instead of precision = true_positive / (true_positive + true_negative).
  • p.51: Out[15] should read 0.2 instead of 1.0.
  • p.72: In [6] should read ridgereg = linear_model.Ridge() instead of ridgereg = linear_model.RidgeRegression().
  • p.85: The first line of In [8] should read min_max_scaler = preprocessing.MinMaxScaler(feature_range=(-10,10)) instead of min_max_scaler = preprocessing.MinMaxScaler(feature_range (-10,10)).
  • p.91: The last paragraph should read We also specify an empty array, np.array([]), for the mean argument, which tells OpenCV to compute the mean from the data: instead of We also specify an empty array, np.array([]), for the mask argument, which tells OpenCV to use all data points in the feature matrix:.
  • p.112: In [3] should read vec.get_feature_names()[:5] instead of function:vec.get_feature_names()[:5].
  • p.120: In [16] should read dtree = cv2.ml.DTrees_create() instead of dtree = cv2.ml.dtree_create().
  • p.122: In [26] should read with open("tree.dot", 'w'): f = tree.export_graphviz(dtc, out_file=f, feature_names=vec.get_feature_names(), class_names=['A', 'B', 'C', 'D']) instead of with open("tree.dot", 'w'): f = tree.export_graphviz(clf, out_file=f). Also, the second line should be indented.
  • p.147: The first occurrences of X_hypo = np.c_[xx.ravel().astype(np.float32), yy.ravel().astype(np.float32)] and _, zz = svm.predict(X_hypo) should be removed, as they mistakenly appear twice.
  • p.193: In [28] is missing from sklearn import metrics.
  • p.197: The sentence right below In [3] should read "Then we can pass the preceding data matrix (X) to cv2.kmeans", not cv2.means.
  • p.201: Indentation in bullet points 2-4 are wrong. Please refer to the Jupyter notebook for the correct indentation.
  • p.228: The last sentence in the middle paragraph should read "[...] thus hopefully classifying the sample as y_{hat}=+1" instead of "[...] thus hopefully classifying the sample as y_{hat}=-1".
  • p.230: In [2] has wrong indentation: class Perceptron(object) correctly has indentation level 1, but def __init__ should have indentation level 2, and the two commands self.lr = lr; self.n_iter = n_iter should have indentation level 3.
  • p.260: In [5] should read from keras.models import Sequential instead of from keras.model import Sequential.
  • p.260: In [6] should read model.add(Conv2D(n_filters, (kernel_size[0], kernel_size[1]), padding='valid', input_shape=input_shape)) instead of model.add(Convolution2D(n_filters, kernel_size[0], kernel_size[1], border_mode='valid', input_shape=input_shape)).
  • p.260: In [8] should read model.add(Conv2D(n_filters, (kernel_size[0], kernel_size[1]))) instead of model.add(Convolution2D(n_filters, (kernel_size[0], kernel_size[1]))).
  • p.261: In [12] should read model.fit(X_train, Y_train, batch_size=128, epochs=12, verbose=1, validation_data=(X_test, Y_test)) instead of model.fit(X_train, Y_train, batch_size=128, nb_epoch=12, verbose=1, validation_data=(X_test, Y_test)).
  • p.275, in bullet point 2 it should say ret = classifier.predict(X_hypo) instead of zz = classifier.predict(X_hypo); zz = zz.reshape(xx.shape).
  • p.285: plt.imshow(X[i, :].reshape((64, 64)), cmap='gray') should be indented so that it is aligned with the previous line.
  • p.288: In [14] should read _, y_hat = rtree.predict(X_test) instead of _, y_hat = tree.predict(X_test).
  • p.305: The first paragraph should read "...and the remaining folds (1, 2, and 4) for training" instead of "...and the remaining folds (1, 2, and 4) for testing".
  • p.306: In [2] should read from sklearn.model_selection import train_test_split instead of from sklearn.model_selection import model_selection.
  • p.310: In [18] should read knn.train(X_boot, cv2.ml.ROW_SAMPLE, y_boot) instead of knn.train(X_train, cv2.ml.ROW_SAMPLE, y_boot).
  • p.311: In [20] should have a line model.train(X_boot, cv2.ml.ROW_SAMPLE, y_boot) instead of knn.train(X_boot, cv2.ml.ROW_SAMPLE, y_boot), as well as _, y_hat = model.predict(X_oob) instead of _, y_hat = knn.predict(X_oob).
  • p.328: In [5] is missing the statement from sklearn.preprocessing import MinMaxScaler.
  • p.328: In [5] should have a line pipe = Pipeline([("scaler", MinMaxScaler()), ("svm", SVC())]) instead of pipe = Pipeline(["scaler", MinMaxScaler(), ("svm", SVC())]).

Acknowledgment

This book was inspired in many ways by the following authors and their corresponding publications:

These books all come with their own open-source code - check them out when you get a chance!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].