Skip to content

Instantly share code, notes, and snippets.

@sberryman
Last active July 8, 2019 14:25
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sberryman/6770363f02336af82cb175a83b79de33 to your computer and use it in GitHub Desktop.
Save sberryman/6770363f02336af82cb175a83b79de33 to your computer and use it in GitHub Desktop.
OpenPose 1.2.1 Dockerfile example using OpenCV/Contrib 3.2.0, CUDA 8, CuDNN 5
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
# start with the nvidia container for cuda 8 with cudnn 5
# ensure `/etc/docker/daemon.json` file is
# modified to use nvidia runtime by default
FROM nvidia/cuda:8.0-cudnn5-devel
# install dependencies
RUN apt-get update && \
apt-get install -y \
build-essential \
cmake \
git \
pkg-config \
libjpeg8-dev \
libtiff5-dev \
libjasper-dev \
libpng12-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libx264-dev \
libx265-dev \
libatlas-base-dev \
gfortran \
python3.5-dev \
libboost-all-dev \
libgflags-dev \
libgoogle-glog-dev \
libprotobuf-lite9v5 \
libprotobuf-dev \
protobuf-compiler \
wget \
unzip \
python3-pip \
libhdf5-serial-dev \
libleveldb-dev \
liblmdb-dev \
libsnappy-dev \
yasm && \
rm -rf /var/lib/apt/lists/*
# upgrade pip(3)
RUN pip3 install --upgrade pip && \
pip3 install numpy scipy
# opencv (3.2 specifically)
# ensure dnn is NOT enabled, this will cause problems!
RUN cd ~ && \
export OPENCV_CHECKSUM=7a7d2eb8cf617f58d610d856e531f3d92b89bc42 && \
export OPENCV_CONTRIB_CHECKSUM=9f34aef18d05cf7136d6b251c794cfdfcdb2e78d && \
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.2.0.zip && \
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.2.0.zip && \
echo "${OPENCV_CHECKSUM} opencv.zip" | sha1sum -c && \
echo "${OPENCV_CONTRIB_CHECKSUM} opencv_contrib.zip" | sha1sum -c && \
unzip opencv.zip && \
unzip opencv_contrib.zip && \
rm -f opencv.zip && \
rm -f opencv_contrib.zip
RUN cd ~/opencv-3.2.0/ && \
mkdir build && \
cd build && \
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_opencv_dnn=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_EXAMPLES=OFF .. && \
make -j"$(nproc)" && \
make install -j"$(nproc)" && \
ldconfig && \
cd ~ && \
rm -rf opencv-3.2.0 && \
rm -rf opencv_contrib-3.2.0
RUN cd /opt && \
export OPENPOSE_CHECKSUM=9f34aef18d05cf7136d6b251c794cfdfcdb2e78d && \
wget -O openpose.zip https://github.com/CMU-Perceptual-Computing-Lab/openpose/archive/v1.2.1.zip && \
&& echo "${OPENCV_CHECKSUM} opencv.zip" | sha1sum -c && \
unzip openpose.zip && \
rm -f openpose.zip && \
mv openpose-1.2.1 openpose-master
ENV CAFFE_ROOT=/opt/openpose-master/3rdparty/caffe
# caffe
RUN cd /opt/openpose-master && \
rm -rf 3rdparty/caffe && \
git clone --depth 1 https://github.com/CMU-Perceptual-Computing-Lab/caffe.git 3rdparty/caffe && \
cd 3rdparty/caffe/ && \
cp Makefile.config.Ubuntu16_cuda8.example Makefile.config && \
sed -i '/\# OPENCV_VERSION := 3/c\OPENCV_VERSION := 3' Makefile.config && \
sed -i '/\# PYTHON_LIBRARIES := boost_python3 python3.5m/c\PYTHON_LIBRARIES := boost_python3 python3.5m' Makefile.config && \
sed -i '/\# PYTHON_INCLUDE := \/usr\/include\/python3.5m \\/c\PYTHON_INCLUDE := \/usr\/include\/python3.5m \\' Makefile.config && \
sed -i '/\# \/usr\/lib\/python3.5\/dist-packages\/numpy\/core\/include/c\ \/usr\/local\/lib\/python3.5\/dist-packages\/numpy\/core\/include' Makefile.config && \
cd python && \
for req in $(cat requirements.txt) pydot; do pip install $req; done && \
cd .. && \
ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python3.so && \
make all -j"$(nproc)"
ENV PYCAFFE_ROOT $CAFFE_ROOT/python
ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH
ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH
RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig
# and distribute
RUN cd /opt/openpose-master/3rdparty/caffe/ && \
make distribute -j"$(nproc)"
# compile openpose
ENV OPENPOSE_ROOT /opt/openpose-master
RUN cd /opt/openpose-master && \
cp ubuntu/Makefile.config.Ubuntu16_cuda8.example Makefile.config && \
sed -i '/\# OPENCV_VERSION := 3/c\OPENCV_VERSION := 3' Makefile.config && \
make all -j"$(nproc)"
# your app goes here...
# sample
# CMD ["/opt/openpose-master/build/examples/openpose/openpose.bin", "--keypoint_scale 3"]
@leVirve
Copy link

leVirve commented Feb 4, 2018

Thanks for your example script, however, there may be some typos, extra && in L53-54 and L83 should be removed. Finally, I got it run. thanks!

@cloudlakecho
Copy link

@leVirve you mentioned you fixed some typops. How about line 83?
&& echo "${OPENCV_CHECKSUM} opencv.zip" | sha1sum -c && \
Shouldn't it be
&& echo "${OPENPOSE_CHECKSUM} openpose.zip" | sha1sum -c && \?

@kdemon1011
Copy link

@sberryman i am getting this error while running the openpose

Cuda check failed (35 vs. 0): CUDA driver version is insufficient for CUDA runtime version

Then i checked for nvidia-smi but it said command not found. i have used the same nvidia image.

@sberryman
Copy link
Author

sberryman commented Jul 8, 2019

@ketulparikh it sounds like you have not installed nvidia-docker. Does nvidia-smi work on the host but not in the docker container? Follow the install guide for nvidia-docker https://github.com/NVIDIA/nvidia-docker

That gets installed after docker has been installed on the host.

Edit: I should mention that editing the daemon.json file is not necessary but it saves you from including the --runtime=nvidia argument when you wish to use the nvidia runtime.

@sberryman
Copy link
Author

sberryman commented Jul 8, 2019

@leVirve Well over a year late but the typo's have been fixed. Thanks for pointing them out

@kdemon1011
Copy link

@sberryman I forgot use --runtime flag while running the docker. The issue got fixed, thnx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment