All Projects → DrewNF → Build Deep Learning Env With Tensorflow Python Opencv

DrewNF / Build Deep Learning Env With Tensorflow Python Opencv

Licence: mit
Tutorial on how to build your own research envirorment for Deep Learning with OpenCV, Python, Tensorfow

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Build Deep Learning Env With Tensorflow Python Opencv

Dynamicfusion
Implementation of Newcombe et al. CVPR 2015 DynamicFusion paper
Stars: ✭ 267 (+304.55%)
Mutual labels:  opencv, cuda
Caer
High-performance Vision library in Python. Scale your research, not boilerplate.
Stars: ✭ 452 (+584.85%)
Mutual labels:  opencv, cuda
Hackintosh Installer University
Open source tutorial & information collector for hackintosh installation.
Stars: ✭ 3,815 (+5680.3%)
Mutual labels:  tutorial, mac
Opencv Python Tutorial
OpenCV问答群不再维护。有问题,自己去搜索。Google能找到大部分答案。
Stars: ✭ 2,603 (+3843.94%)
Mutual labels:  tutorial, opencv
Opencv Tutorials
Tutorials for learning OpenCV in Python from Scratch
Stars: ✭ 36 (-45.45%)
Mutual labels:  tutorial, opencv
Caffe2 Ios
Caffe2 on iOS Real-time Demo. Test with Your Own Model and Photos.
Stars: ✭ 221 (+234.85%)
Mutual labels:  tutorial, opencv
Tensorflow Cmake
TensorFlow examples in C, C++, Go and Python without bazel but with cmake and FindTensorFlow.cmake
Stars: ✭ 418 (+533.33%)
Mutual labels:  opencv, cuda
Tutorial Ubuntu 18.04 Install Nvidia Driver And Cuda And Cudnn And Build Tensorflow For Gpu
Ubuntu 18.04 How to install Nvidia driver + CUDA + CUDNN + build tensorflow for gpu step by step command line
Stars: ✭ 91 (+37.88%)
Mutual labels:  tutorial, cuda
Object Detection And Location Realsensed435
Use the Intel D435 real-sensing camera to realize target detection based on the Yolov3 framework under the Opencv DNN framework, and realize the 3D positioning of the Objection according to the depth information. Real-time display of the coordinates in the camera coordinate system.ADD--Using Yolov5 By TensorRT model,AGX-Xavier,RealTime Object Detection
Stars: ✭ 36 (-45.45%)
Mutual labels:  opencv, cuda
Air drums
This project enables you to play virtual drums simply by using concepts of image processing and computer vision.
Stars: ✭ 31 (-53.03%)
Mutual labels:  tutorial, opencv
Invisibility cloak
This is a fun application of image processing which enables you to experience the magic of an invisibility cloak. Let's make our childhood fantasy of using an invisibility cloak come true.
Stars: ✭ 176 (+166.67%)
Mutual labels:  tutorial, opencv
Learningopencv
Source code for Learning OpenCV 《学习OpenCV》源码及 Mac 运行工程
Stars: ✭ 57 (-13.64%)
Mutual labels:  opencv, mac
Tensorflow Object Detection Tutorial
The purpose of this tutorial is to learn how to install and prepare TensorFlow framework to train your own convolutional neural network object detection classifier for multiple objects, starting from scratch
Stars: ✭ 113 (+71.21%)
Mutual labels:  tutorial, cuda
Opencv Python Series
An OpenCV & Python Tutorial Series and Reference.
Stars: ✭ 262 (+296.97%)
Mutual labels:  tutorial, opencv
Aruco Markers
Working examples/tutorial for detection and pose estimation of ArUco markers with C++
Stars: ✭ 112 (+69.7%)
Mutual labels:  tutorial, opencv
Gocv
Go package for computer vision using OpenCV 4 and beyond.
Stars: ✭ 4,511 (+6734.85%)
Mutual labels:  opencv, cuda
Macos Egpu Cuda Guide
Set up CUDA for machine learning (and gaming) on macOS using a NVIDIA eGPU
Stars: ✭ 187 (+183.33%)
Mutual labels:  mac, cuda
Pine
🌲 Aimbot powered by real-time object detection with neural networks, GPU accelerated with Nvidia. Optimized for use with CS:GO.
Stars: ✭ 202 (+206.06%)
Mutual labels:  opencv, cuda
Neuralsuperresolution
Real-time video quality improvement for applications such as video-chat using Perceptual Losses
Stars: ✭ 18 (-72.73%)
Mutual labels:  opencv, cuda
Face Mask Detection
Face masks are crucial in minimizing the propagation of Covid-19, and are highly recommended or even obligatory in many situations. In this project, we develop a pipeline to detect unmasked faces in images. This can, for example, be used to alert people that do not wear a mask when entering a building.
Stars: ✭ 37 (-43.94%)
Mutual labels:  tutorial, opencv

Build Deep Learning Env with Tensorflow Python OpenCV

(Version 0.1, Last Update 14/06/2016)

Tutorial on how to build your own research envirorment for Deep Learning with OpenCV, Python, Tensorfow on Linux Machine and MacintoshOSX. This Repository try to be a clear summary of the many guides you can find online (I will link in Referencies all the guides, I used to compose this Repository-Tutorial)

The Project follow the below index:

  1. Introduction to the Problem;
  2. Possible Solutions;
  3. Virtual Environment
    1. Virtual Environment & Python;
    2. OpenCV;
    3. Tensorflow;
    4. CUDA;
    5. Other Libraries;
  4. Conclusions;
  5. References;
  6. Copyright.

##1. Introduction to the Problem

Nowadays, the Deep Learning Area use lots of different libraries, dependicies, script languages, some of the most known are:

So Develop & Research on Deep Learning, now means struggle with lots of error, compilation, installation, and some times most of them comes from updates, new library dependecies, let's see which are the possible solutions.

##2. Possible Solutions

Mainly we have three solutions:

  • Install on own machine;
  • Install in a server (Use the environment remotly);
  • Install on Virtual Environment. This last one is the one, covered in this Tutorial.

##3. Virtual Environment

Why Virtual Environment?

Why is easy: Virtual Envirorments lets us to have different dependencies, libraries, updates, of the same or different software, without struggling with error due to mislink or new apis.

The tutorial code consider you are the owner and have all grants to run sudo , if you wanna apply the tutorial to a server you have to ask your administrator to install OpenCV & CUDA on the machine and give you the path to export into the bashrc file, for VirtualEnv, Tensorflow, Python nothing change.

Let's see a four step set up installation for our Research Envirorment with Tensorflow, OpenCV, Python, CUDA and all the libraries that we could need:

i.Virtual Environment & Python

Preparing Linux Machine

Open up a terminal and update the apt-get package manager followed by upgrading any pre-installed packages:

$ sudo apt-get update 
$ sudo apt-get upgrade

Now we need to install our developer tools:

$ sudo apt-get install build-essential cmake git pkg-config

The pkg-config is likely already installed, but be sure to include it just in case. We’ll be using git to pull down the OpenCV repositories from GitHub. The cmake package is used to configure our build.

OpenCV needs to be able to load various image file formats from disk, including JPEG, PNG, TIFF, etc. In order to load these image formats from disk, we’ll need our image I/O packages:

$ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

At this point, we have the ability to load a given image off of disk. But how do we display the actual image to our screen? The answer is the GTK development library, which the highgui  module of OpenCV depends on to guild Graphical User Interfaces (GUIs):

$ sudo apt-get install libgtk2.0-dev

We can load images using OpenCV, but what about processing video streams and accessing individual frames? We’ve got that covered here:

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

Install libraries that are used to optimize various routines inside of OpenCV:

$ sudo apt-get install libatlas-base-dev gfortran

Install pip, a Python package manager:

$ wget https://bootstrap.pypa.io/get-pip.py 
$ sudo python get-pip.py

Preparing Macintosh OSX Machine

Install Homebrew:

$ cd ~
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Update Homebrew:

$ brew update

Before we proceed, we need to update our PATH in our ~/.bash_profile file to indicate that we want to use Homebrew packages before any system libraries or packages. This is an absolutely critical step, so be sure not to skip it!

Open up your ~/.bash_profile (if it does not exist, create it), and append the following lines:

# Homebrew
export PATH=/usr/local/bin:$PATH

Then reload the our ~/.bash_profile:

$ source ~/.bash_profile

And test:

$ which python

### OUTPUT MUST BE ###
/usr/local/bin/python

First, we’ll use brew to install the required developers tools:

$ brew install cmake pkg-config
$ brew install jpeg libpng libtiff openexr
$ brew install eigen tbb

We are now ready to set up the Virtual Env

Set Up the Virtual Env

Install virtualenv and virtualenvwrapper.These two packages allow us to create separate Python environments for each project we are working on. While installing virtualenv  and virtualenvwrapper is not a requirement to get OpenCV 3.0 and Python 2.7+ up and running on your Ubuntu system, I highly recommend it and the rest of this tutorial will assume you have them installed!

### Linux

$ sudo pip install virtualenv virtualenvwrapper 
$ sudo rm -rf ~/.cache/pip

### Macintosh OSX

$ pip install virtualenv virtualenvwrapper

Now that we have virtualenv  and virtualenvwrapper  installed, we need to update our ~/.bashrc/ file:

### Linux

$ export WORKON_HOME=$HOME/.virtualenvs 

### Linux & Macintosh OSX

$ source /usr/local/bin/virtualenvwrapper.sh

This quick update will ensure that both virtualenv  and virtualenvwrapper  are loaded each time you login. To make the changes to our ~/.bashrc or ~/.bash_profile file take effect, you can either (1) logout and log back in, (2) close your current terminal window and open a new one, or preferably, (3) reload the contents of your ~/.bashrc or ~/.bash_profile file:

### Linux 

$ source ~/.bashrc

### Macintosh OSX

$ source ~/.bash_profile

Lastly, we can create our cv  virtual environment where we’ll be doing our computer vision development and OpenCV 3.0 + Python 2.7+ installation:

### Linux & Macintosh OSX

$ mkvirtualenv cv

As I mentioned above, this tutorial covers how to install OpenCV 3.0 and Python 2.7+, so we’ll need to install our Python 2.7 development tools:

### Linux

$ sudo apt-get install python2.7-dev

Since OpenCV represents images as multi-dimensional NumPy arrays, we better install NumPy into our cv  virtual environment:

### Linux & Macintosh OSX

$ pip install numpy

ii.OpenCV

Our environment is now all setup, we can proceed to change to our home directory, pull down OpenCV from GitHub, and checkout the 3.0.0  version:

### Linux & Macintosh OSX

$ cd ~ $ git clone https://github.com/Itseez/opencv.git
$ cd opencv 
$ git checkout 3.0.0

You can replace the 3.0.0  version with whatever the current release is. Be sure to check OpenCV.org for information on the latest release.

We also need the opencv_contrib repo as well. Without this repository, we won’t have access to standard keypoint detectors and local invariant descriptors (such as SIFT, SURF, etc.) that were available in the OpenCV 2.4.X version. We’ll also be missing out on some of the newer OpenCV 3.0 features like text detection in natural images:

### Linux & Macintosh OSX

$ cd ~ 
$ git clone https://github.com/Itseez/opencv_contrib.git 
$ cd opencv_contrib 
$ git checkout 3.0.0

Again, make sure that you checkout the same version for opencv_contrib that you did for opencv above, otherwise you could run into compilation errors. Time to setup the build:

### Linux & Macintosh OSX

$ cd ~/opencv 
$ mkdir build 
$ cd build 

### Linux 

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..

### Macintosh OSX

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
	-D PYTHON2_PACKAGES_PATH=~/.virtualenvs/cv/lib/python2.7/site-packages \
	-D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin \
	-D PYTHON2_INCLUDE_DIR=/usr/local/Frameworks/Python.framework/Headers \
	-D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \
	-D BUILD_EXAMPLES=ON \
	-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..

Here some very important options, read carefully :

CMAKE_BUILD_TYPE : This option indicates that we are building a release binary of OpenCV.
CMAKE_INSTALL_PREFIX : The base directory where OpenCV will be installed.
PYTHON2_PACKAGES_PATH : The explicit path to where our site-packages  directory lives in our cv  virtual environment.
PYTHON2_LIBRARY : Path to our Hombrew installation of Python.
PYTHON2_INCLUDE_DIR : The path to our Python header files for compilation.
INSTALL_C_EXAMPLES : Indicate that we want to install the C/C++ examples after compilation.
INSTALL_PYTHON_EXAMPLES : Indicate that we want to install the Python examples after complication.
BUILD_EXAMPLES : A flag that determines whether or not the included OpenCV examples will be compiled or not.
OPENCV_EXTRA_MODULES_PATH : This option is extremely important — here we supply the path to the opencv_contrib repo 
				that we pulled down earlier, indicating that OpenCV should compile the extra modules as well.

The compiling options changes depending on the version of python and most depending on how we are installing all the libraries and the dependencies.

In order to build OpenCV 3.1.0, you need to set -D INSTALL_C_EXAMPLES=OFF (rather than ON) in the cmake command. There is a bug in the OpenCV v3.1.0 CMake build script that can cause errors if you leave this switch on. Once you set this switch to off, CMake should run without a problem.

Now we can finally compile OpenCV:

### Linux & Macintosh OSX

$ make -j4

Where you can replace the 4 with the number of available cores on your processor to speedup the compilation.

OpenCV Linking: If we have installed OpenCV globally on your PC and you want to link it to the virtualenv, we need to export the two following paths:

  • ** export PYTHONPATH="${PYTHONPATH}:/my/other/path"** (Example of path: /opt/amd64/opencv-3.1.0/lib/python2.7/dist-packages)
  • ** export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/my/other/path"** (Example of path: /opt/amd64/opencv-3.1.0/lib)

Assuming that OpenCV compiled without error, you can now install it on your Ubuntu system:

### Linux & Macintosh OSX

$ sudo make install 
$ sudo ldconfig

If you’ve reached this step without an error, OpenCV should now be installed in ** /usr/local/lib/python2.7/site-packages**. However, our cv virtual environment is located in our home directory — thus to use OpenCV within our cv environment, we first need to sym-link OpenCV into the site-packages directory of the cv virtual environment:

### Linux 

$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/ 
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

### Macintosh OSX

 	
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
$ ls -l cv2.so 
-rwxr-xr-x  1 adrian  staff  2013052 Jun  5 15:20 cv2.so

Congratulations! You have successfully installed OpenCV 3.0 with Python 2.7+ bindings on your Linux/MacintoshOSX system! To confirm your installation, simply ensure that you are in the cv virtual environment, followed by importing cv2:

### Linux 

$ workon cv 
$ python 

### Macintosh OSX

(cv)$ python 

Your output should be:

>>> import cv2
>>> cv2.__version__ '3.0.0'

iii.Tensorflow

For the installation of TensorFlow we can follow the instruction in the Official Turorial, linked at the end, for the Ubuntu case, after activate the envirorment:

### Linux 64-bit, CPU only, Python 2.7

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0rc0-cp27-none-linux_x86_64.whl

### Linux 64-bit, GPU enabled, Python 2.7 
## Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0rc0-cp27-none-linux_x86_64.whl

### Mac OS X, CPU only, Python 2.7:

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0rc0-py2-none-any.whl

### Linux 64-bit, CPU only, Python 3.4

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0rc0-cp34-cp34m-linux_x86_64.whl

###  Linux 64-bit, GPU enabled, Python 3.4 
## Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0rc0-cp34-cp34m-linux_x86_64.whl

### Linux 64-bit, CPU only, Python 3.5

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0rc0-cp35-cp35m-linux_x86_64.whl

### Linux 64-bit, GPU enabled, Python 3.5 
## Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0rc0-cp35-cp35m-linux_x86_64.whl

### Mac OS X, CPU only, Python 3.4 or 3.5:

(cv)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0rc0-py3-none-any.whl

### Linux & Macintosh OSX

# Python 2
(tensorflow)$ sudo pip install --upgrade $TF_BINARY_URL

# Python 3
(tensorflow)$ sudo pip3 install --upgrade $TF_BINARY_URL

Test the installation, open a terminal and type the following:

### Linux 

$ workon cv 
$ python

### Linux & Macintosh OSX

(cv)$ python

...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>

Let’s run a Model:

### Linux & Macintosh OSX

$ python -m tensorflow.models.image.mnist.convolutional

iv.CUDA

Here is covered only the setup of a the preinstalled CUDA, for an indeep tutorial follow the Official One for TensorfFlow or for MAC OSX (Both linked at the end) :

####Setup GPUs

#####1) Download cuDNN 6.5

### Linux & Macintosh OSX

$ cd ~
$ wget https://s3-eu-west-1.amazonaws.com/christopherbourez/public/cudnn-6.5-linux-x64-v2.tgz

#####2) Add to your .bashrc

### Linux & Macintosh OSX

$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-7.0/lib64:/home/users/N!OMUSUARI/cudnn-6.5-linux-x64-v2"
$ export CUDA_HOME=/usr/local/cuda-7.0

v.Other Libraries

To install other libraries, with the Virtual Environment activated you have just to type:

### Linux & Macintosh OSX

$ pip install packege-name

### Macintosh OSX

$ pip install packege-name

Some usefull, could be:

(I will update the list when i found someone useful)

##4. Conclusions

At the end of the guide we have OpenCV, VirtualEnv and CUDA globally installed on our machine. Then we have Python and Tensorflow installed and working on the VirtualEnv, in this way we have the global and fixed libraries installed correctly and inside the environment all the python Libraries and Tensorflow to not get in conflict with the global ones.

##5. References Here below all the usefull link to tutorial, guides that I used:

##6. Copyright

According to the LICENSE file of the original code,

  • Me and original author hold no liability for any damages;
  • Do not use this on commercial!.
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].