LoginSignup
4
3

More than 5 years have passed since last update.

openposeをpythonでサーバ化

Last updated at Posted at 2018-08-11

実装したもの

openposeのpython APIを利用して、server化してみる
画像を投げると、骨格推定の情報が埋め込まれた画像が返ってくるという簡単なもの

試した環境

  • Ubuntu 16.04.4
  • python 3.5.2
  • openpose revision: f49e18421da832ae441f75477035786126357401

ソース

実行

  1. openposeをpythonライブラリを利用するモードでインストール

    参考:OpenposeのPYTHON API

  2. 本repositoryをクローン
    $ git clone https://github.com/komorin0521/openpose_python_server.git

  3. config修正
    モデルファイルのパスとホストやポートなど、必要に応じて修正

  4. server起動
    $ ./run_server.sh

  5. POSTして確認
    openpose公式のgitからダウンロードした時に含まれる画像で試す場合

    $ (time) curl -XPOST -F file=@(path_to_openpose)/examples/media/COCO_val2014_000000000328.jpg http://localhost:3001/get_predict_image > pred.jpg

    res.jpg

苦労した点

最初、openposeのインスタンスをmainファンクションで作成して、
その後、OpenPoseServerのメンバ変数で定義してみたが、
下記のエラーが発生

The CPU/GPU pointer data cannot be accessed from a different thread.

なんとなく頭でデバッグはできたので、(=説明はできない)、
OpenPoseインスタンスをget_predict_image関数内で作成するようにしたら、案の定うまくいった。
レスポンスまでの時間も1秒程度だったから速度的には(個人的には)許容範囲かな。
メモリの観点では、250MBくらいメモリリークが発生するけど、
数回試したところ、それ以上は増えなかったので、これもまあ許容範囲かな

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3