diff --git a/doc/installation_jetson_tx2_jetpack3.3.md b/doc/installation_jetson_tx2_jetpack3.3.md new file mode 100644 index 0000000000000000000000000000000000000000..822427ed15fb7138208e56dd0ff3d0b7e02e7a29 --- /dev/null +++ b/doc/installation_jetson_tx2_jetpack3.3.md @@ -0,0 +1,48 @@ +OpenPose - Installation on Nvidia Jetson TX2 +==================================== +Note that OpenPose for Nvidia Jetson TX2 was developed and it is maintained by the community. The OpenPose authors will not be able to provide official support for it. + + + +## Contents +1. [Requirements and Dependencies](#requirements-and-dependencies) +2. [Installation](#installation) +3. [Usage](#usage) + + + +## Requirements and Dependencies +Jetson TX2 just flashed with [JetPack 3.3](https://developer.nvidia.com/embedded/jetpack) + +Notes: + +- Installation is similar to Jetson TX1 and you can follow this [step by step tutorial](https://docs.nvidia.com/jetson/archives/jetpack-archived/jetpack-33/index.html#jetpack/3.3/install.htm%3FTocPath%3D_____3). +- If you are installing from a virtual machine host, installation may need to be done in two steps, please refer to [this solution](https://devtalk.nvidia.com/default/topic/1002081/jetson-tx2/jetpack-3-0-install-with-a-vm/). +- Be sure to complete both OS flashing and CUDA / cuDNN installation parts before installation. + +**Dependencies**: + + - OpenCV (3.X versions are compatible). + - Caffe and all its dependencies. + - The demo and tutorials additionally use GFlags. + + + +## Installation +Use the following script for installation of both caffe and OpenPose: +``` +./ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.3.sh +``` + + +## Usage +It is for now recommended to use an external camera with the demo. To get to decent FPS you need to lower the net resolution: +``` +./build/openpose/openpose.bin -camera_resolution 640x480 -net_resolution 128x96 +``` + +To activate hand or face resolution please complete this command with the following options (warning, both simultaneously will cause out of memory error): +``` +--hand -hand_net_resolution 256x256 +--face -face_net_resolution 256x256 +``` \ No newline at end of file diff --git a/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe b/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe new file mode 100644 index 0000000000000000000000000000000000000000..6f89509d1260e2c057bacc4624792210ede6247c --- /dev/null +++ b/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe @@ -0,0 +1,129 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# cuDNN acceleration switch (uncomment to build with cuDNN). +USE_CUDNN := 1 + +# CPU-only switch (uncomment to build without GPU support). +# CPU_ONLY := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# BLAS choice: +# atlas for ATLAS (default) +# mkl for MKL +# open for OpenBlas +BLAS := atlas +# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. +# Leave commented to accept the defaults for your choice of BLAS +# (which should work)! +# BLAS_INCLUDE := /path/to/your/blas +# BLAS_LIB := /path/to/your/blas + +# Homebrew puts openblas in a directory that is not on the standard search path +# BLAS_INCLUDE := $(shell brew --prefix openblas)/include +# BLAS_LIB := $(shell brew --prefix openblas)/lib + +# This is required only if you will compile the matlab interface. +# MATLAB directory should contain the mex binary in /bin. +# MATLAB_DIR := /usr/local +# MATLAB_DIR := /Applications/MATLAB_R2012b.app + +# NOTE: this is required only if you will compile the python interface. +# We need to be able to find Python.h and numpy/arrayobject.h. +PYTHON_INCLUDE := /usr/include/python2.7 \ + /usr/lib/python2.7/dist-packages/numpy/core/include \ + /usr/local/lib/python2.7/dist-packages/numpy/core/include +# Anaconda Python distribution is quite popular. Include path: +# Verify anaconda location, sometimes it's in root. +# ANACONDA_HOME := $(HOME)/anaconda +# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ + # $(ANACONDA_HOME)/include/python2.7 \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include + +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + +# We need to be able to find libpythonX.X.so or .dylib. +PYTHON_LIB := /usr/lib /usr/local/lib +# PYTHON_LIB := $(ANACONDA_HOME)/lib + +# Homebrew installs numpy in a non standard path (keg only) +# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include +# PYTHON_LIB += $(shell brew --prefix numpy)/lib + +# Uncomment to support layers written in Python (will link against Python libs) +# WITH_PYTHON_LAYER := 1 + +# Whatever else you find you need goes here. +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial +LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +# N.B. both build and distribute dirs are cleared on `make clean` +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_openpose b/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_openpose new file mode 100644 index 0000000000000000000000000000000000000000..ded57f37ca3f36fa2afcc52fd3d57669dc63e186 --- /dev/null +++ b/ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_openpose @@ -0,0 +1,95 @@ +## Refer to http://caffe.berkeleyvision.org/installation.html +# Contributions simplifying and improving our build system are welcome! + +# CPU-only switch (comment to build without GPU support). +USE_CUDA := 1 + +# uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 +# USE_LEVELDB := 0 +# USE_LMDB := 0 + +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + +# Uncomment if you're using OpenCV 3 +OPENCV_VERSION := 3 + +# To customize your choice of compiler, uncomment and set the following. +# N.B. the default for Linux is g++ and the default for OSX is clang++ +# CUSTOM_CXX := g++ + +# CUDA directory contains bin/ and lib/ directories that we need. +CUDA_DIR := /usr/local/cuda +# On Ubuntu 14.04, if cuda tools are installed via +# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: +# CUDA_DIR := /usr + +# CUDA architecture setting: going with all of them. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. +CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=sm_50 \ + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 +# Deprecated +# CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ +# -gencode arch=compute_20,code=sm_21 \ +# -gencode arch=compute_30,code=sm_30 \ +# -gencode arch=compute_35,code=sm_35 \ +# -gencode arch=compute_50,code=sm_50 \ +# -gencode arch=compute_52,code=sm_52 \ +# -gencode arch=compute_60,code=sm_60 \ +# -gencode arch=compute_61,code=sm_61 \ +# -gencode arch=compute_61,code=compute_61 + +# Uncomment to enable op::Profiler +# PROFILER_ENABLED := 1 + +# DEEP_NET choice: +# caffe for Caffe (default and only option so far) +DEEP_NET := caffe + +# Caffe directory +CAFFE_DIR := 3rdparty/caffe/distribute + +# Faster GUI display +# WITH_OPENCV_WITH_OPENGL := 1 +# OpenPose 3-D Reconstruction +# WITH_3D_RENDERER := 1 +# WITH_CERES := 1 +# WITH_FLIR_CAMERA := 1 +# Eigen directory (Ceres) +# WITH_EIGEN := 1 +EIGEN_DIR := /usr/include/eigen3/ +# Spinnaker directory +SPINNAKER_DIR := /usr/include/spinnaker + +# Whatever else you find you need goes here. +INCLUDE_DIRS := /usr/local/include /usr/include/hdf5/serial +LIBRARY_DIRS := /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/hdf5/serial + +# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies +# INCLUDE_DIRS += $(shell brew --prefix)/include +# LIBRARY_DIRS += $(shell brew --prefix)/lib + +# Uncomment to use `pkg-config` to specify OpenCV library paths. +# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) +# USE_PKG_CONFIG := 1 + +BUILD_DIR := build +DISTRIBUTE_DIR := distribute + +# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171 +# DEBUG := 1 + +# The ID of the GPU that 'make runtest' will use to run unit tests. +TEST_GPUID := 0 + +# enable pretty build (comment to see full commands) +Q ?= @ diff --git a/ubuntu/install_caffe_JetsonTX2_JetPack3.3.sh b/ubuntu/install_caffe_JetsonTX2_JetPack3.3.sh new file mode 100644 index 0000000000000000000000000000000000000000..22043cabe44c430caf87d95c3f289f3442368e26 --- /dev/null +++ b/ubuntu/install_caffe_JetsonTX2_JetPack3.3.sh @@ -0,0 +1,69 @@ +#!/bin/bash + + + +echo "------------------------- Installing Caffe -------------------------" +echo "NOTE: This script assumes that just flashed JetPack 3.3 : Ubuntu 16, CUDA 9, cuDNN 7 and OpenCV are already installed on your machine. Otherwise, it might fail." + + + +function exitIfError { + if [[ $? -ne 0 ]] ; then + echo "" + echo "------------------------- -------------------------" + echo "Errors detected. Exiting script. The software might have not been successfully installed." + echo "------------------------- -------------------------" + exit 1 + fi +} + + + +echo "------------------------- Checking Ubuntu Version -------------------------" +# If you respected the installation assumptions, nothing to do. +echo "------------------------- Ubuntu Version Checked -------------------------" +echo "" + + + +echo "------------------------- Checking Number of Processors -------------------------" +NUM_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu) +echo "$NUM_CORES cores" +exitIfError +echo "------------------------- Number of Processors Checked -------------------------" +echo "" + + + +echo "------------------------- Installing some Caffe Dependencies -------------------------" +# Basic +sudo apt-get --assume-yes update +sudo apt-get --assume-yes install build-essential +# General dependencies +sudo apt-get --assume-yes install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev +sudo apt-get --assume-yes install --no-install-recommends libboost-all-dev +sudo apt-get --assume-yes install libgflags-dev libgoogle-glog-dev liblmdb-dev +# Python libs +sudo apt-get --assume-yes install python-pip python-dev build-essential +sudo -H pip install --upgrade pip +sudo -H pip install --upgrade numpy protobuf +# OpenCV is provided for tegra in JetPack +exitIfError +echo "------------------------- Some Caffe Dependencies Installed -------------------------" +echo "" + + + +echo "------------------------- Compiling Caffe -------------------------" +cp Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe Makefile.config +make all -j$NUM_CORES && make distribute -j$NUM_CORES +# make test -j$NUM_CORES +# make runtest -j$NUM_CORES +exitIfError +echo "------------------------- Caffe Compiled -------------------------" +echo "" + + + +echo "------------------------- Caffe Installed -------------------------" +echo "" diff --git a/ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.3.sh b/ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.3.sh new file mode 100644 index 0000000000000000000000000000000000000000..0ecadd32e26866e491200c1e4b0d743ffaacc9cc --- /dev/null +++ b/ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.3.sh @@ -0,0 +1,52 @@ +#!/bin/bash + + + +echo "------------------------- Installing Caffe and OpenPose -------------------------" +echo "NOTE: This script assumes that just flashed JetPack 3.3 : Ubuntu 16, CUDA 9, cuDNN 7 and OpenCV are already installed on your machine. Otherwise, it might fail." + + + +function exitIfError { + if [[ $? -ne 0 ]] ; then + echo "" + echo "------------------------- -------------------------" + echo "Errors detected. Exiting script. The software might have not been successfully installed." + echo "------------------------- -------------------------" + exit 1 + fi +} + + + +function executeShInItsFolder { + # $1 = sh file name + # $2 = folder where the sh file is + # $3 = folder to go back + cd $2 + exitIfError + sudo chmod +x $1 + exitIfError + bash ./$1 + exitIfError + cd $3 + exitIfError +} + + +rm -r ./3rdparty/caffe +git submodule update --init --recursive +mv ./ubuntu/install_caffe_JetsonTX2_JetPack3.3.sh ./3rdparty/caffe/install_caffe_JetsonTX2_JetPack3.3.sh +mv ./ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe ./3rdparty/caffe/Makefile.config.Ubuntu16_cuda9_JetsonTX2_caffe +executeShInItsFolder "install_caffe_JetsonTX2_JetPack3.3.sh" "./3rdparty/caffe" "../.." +exitIfError + + + +executeShInItsFolder "install_openpose_JetsonTX2_JetPack3.3.sh" "./ubuntu" "./" +exitIfError + + + +echo "------------------------- Caffe and OpenPose Installed -------------------------" +echo "" diff --git a/ubuntu/install_openpose_JetsonTX2_JetPack3.3.sh b/ubuntu/install_openpose_JetsonTX2_JetPack3.3.sh new file mode 100644 index 0000000000000000000000000000000000000000..ed0bf6b8b1ce8f5962c13422303bc7a7efb31748 --- /dev/null +++ b/ubuntu/install_openpose_JetsonTX2_JetPack3.3.sh @@ -0,0 +1,76 @@ +#!/bin/bash + + + +echo "------------------------- Installing OpenPose -------------------------" +echo "NOTE: This script assumes that just flashed JetPack 3.1 : Ubuntu 16, CUDA 8, cuDNN 6 and OpenCV are already installed on your machine. Otherwise, it might fail." + +function exitIfError { + if [[ $? -ne 0 ]] ; then + echo "" + echo "------------------------- -------------------------" + echo "Errors detected. Exiting script. The software might have not been successfully installed." + echo "------------------------- -------------------------" + exit 1 + fi +} + + + +function executeShInItsFolder { + # $1 = sh file name + # $2 = folder where the sh file is + # $3 = folder to go back + cd $2 + exitIfError + sudo chmod +x $1 + exitIfError + ./$1 + exitIfError + cd $3 + exitIfError +} + + + +echo "------------------------- Checking Ubuntu Version -------------------------" +# If you respected the installation assumptions, nothing to do. +echo "------------------------- Ubuntu Version Checked -------------------------" +echo "" + + + +echo "------------------------- Checking Number of Processors -------------------------" +NUM_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu) +echo "$NUM_CORES cores" +exitIfError +echo "------------------------- Number of Processors Checked -------------------------" +echo "" + + + +echo "------------------------- Compiling OpenPose -------------------------" +# Go back to main folder +cd .. +# Copy Makefile & Makefile.config +cp ubuntu/Makefile.example_openpose Makefile +cp ubuntu/Makefile.config.Ubuntu16_cuda9_JetsonTX2_openpose Makefile.config +# Compile OpenPose +make all -j$NUM_CORES +exitIfError +echo "------------------------- OpenPose Compiled -------------------------" +echo "" + + + +echo "------------------------- Downloading OpenPose Models -------------------------" +executeShInItsFolder "getModels.sh" "./models" ".." +exitIfError +echo "Models downloaded" +echo "------------------------- OpenPose Models Downloaded -------------------------" +echo "" + + + +echo "------------------------- OpenPose Installed -------------------------" +echo ""