見出し画像

DockerでOpenposeのpython(3) APIを使う

openposeのpython APIについての調査

自分で実装したpose-estimationと比較したいなど,ちょっとopenposeをpython APIでかるーく使いたい場合などがあると思います.openposeをdockerで使う際に,install & buildがやや不安定で面倒であったこと,またpython APIを用いる際の注意点などを調査し,まとめました

openposeのversionについて

openposeは日々masterブランチに変更が付け加えられており,openposeを安定的に使いたい場合はversionを指定する必要がある.

2019年1月時点では,ver1.4.xが最新.ということで,ver1.4.0を用いる

install&buildについて

ちょっと前のversionでは,

bash ./ubuntu/install_caffe_and_openpose_if_cuda8.sh 

などと便利な実行ファイルがあったが,こうした .shファイルは廃止予定のようだ.ver1.4.0では,ubuntu_deprecatedフォルダに上記ファイルが存在しているので,こちらを使用する.(理由は後述)

↓↓↓
しかし,error.....
↓↓↓

ファイルパスなどがいくつかおかしいので,こうした .sh ファイルを確認し,書き換える必要がある.
具体的には,./ubuntu_deprecated/install_openpose_if_cuda8.sh ファイルの,ubuntu となっている文字列を,ubuntu_deprecatedに変更する必要がある.

変更後,

bash ./ubuntu_deprecated/install_caffe_and_openpose_if_cuda8.sh 

とすれば良い.

なお,ubuntu_deprecated/*のファイルを使用する理由としては,./ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.1.shというファイルがあるものの,モデルのinstallのところでerrorを吐いて止まってしまい,どうすることもできなかったからである.

python APIについて

openposeは,python APIでも使用できる.ただ,こちらもversionによって色々違うので注意が必要.
ポイントは,cmakeする時に,-DBUILD_PYTHON=trueとすることである.

cd build
cmake -DBUILD_PYTHON=true ..
make -j `nproc`
sudo make install

そして,PYTHONPATHを設定する.

PYTHONPATH=/usr/local/python/openpose 

Dockerfile

FROM nvidia/cuda:8.0-cudnn5-devel

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update -y \
    && apt-get install -y \
    build-essential \
    apt-utils \
    openssl \
    git \
    cmake \
    git \
    curl \
    vim \
    ca-certificates \
    libjpeg-dev \
    libfreetype6-dev \
    zlib1g-dev \
    openssh-client \
    bash \
    g++ \
    tzdata \
    mariadb-client \
    gcc \
    xz-utils \
    file \
    sudo \
    tmux \
    libmecab-dev \
    wget \
    unzip \
    lsof \
    lsb-core \
    libatlas-base-dev \
    libopencv-dev \
    python-opencv \
    python-pip \
    python3-pip \
    ffmpeg \
    zip \
    cython \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

ENV PYTHONPATH /usr/local/python/openpose

WORKDIR /root

# openpose
RUN git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
WORKDIR /root/openpose
RUN git checkout tags/v1.4.0 \
    && git submodule update --init --recursive \
    && sed -i -e "s/ubuntu\/Makefile.example/ubuntu_deprecated\/Makefile.example/g" ubuntu_deprecated/install_openpose_if_cuda8.sh \
    && sed -i -e "s/ubuntu\/Makefile.config/ubuntu_deprecated\/Makefile.config/g" ubuntu_deprecated/install_openpose_if_cuda8.sh \
    # && sed -i -e "s/git submodule update --init --recursive//g" ubuntu/install_caffe_and_openpose_JetsonTX2_JetPack3.1.sh \
    && sed -i -e "s/ubuntu/ubuntu_deprecated/g" ubuntu_deprecated/install_caffe_and_openpose_if_cuda8.sh \
    && sync \
    && sleep 1 \
    && bash ./ubuntu_deprecated/install_caffe_and_openpose_if_cuda8.sh

# python API
RUN cd build && cmake -DBUILD_PYTHON=true ..
RUN cd build && make -j `nproc`
RUN cd build && sudo make install

python(defaultでpython3なので注意してください)でどこからでも使えます.

from openpose import *

param = {
}

model = OpenPose(param)

なお,パラメタなどは,以下のファイルを参照すると良いと思います.
openpose/examples/tutorial_python/1_extract_pose.py

参考文献

- OpenPose Python Module and Demo
- OpenposeのPYTHON API

私が所属している株式会社ACESでは、Deep Learningを用いた画像認識技術を中心に、APIによるアルゴリズムパッケージの提供や、共同研究開発を行なっています。特に、ヒトの認識・解析に強みを持って研究開発を行っておりますので、ご興味のある方は、ぜひお問い合わせください!

【詳細・お問い合わせはこちら↓】



◆画像認識アルゴリズム「SHARON」について
ヒトの行動や感情の認識、モノの検知などを実現する画像認識アルゴリズムを開発しています。スポーツにおけるパフォーマンス分析やマーケティングにおけるヒトの心の動きの可視化、ストレスなどの可視化による健康状態の管理を始めとするAIアルゴリズムを提供しています。

いいなと思ったら応援しよう!