2017年12月13日水曜日

OpenPose

# OpenPose

研究の方がたしかヤバくなっているB17のLuuvaです。
研究で使っている(使っていないかもしれない)OpenPoseを折角なので紹介します。

## OpenPoseの導入
Githubはこちら、[CMU-Perceptual-Computing-Lab](https://github.com/CMU-Perceptual-Computing-Lab/openpose)

ビルドするにはちょっとCaffeとかPython2系列とか入れる必要があったので、
既にバイナリで公開しているWindowsのDEMO版を使います。
http://posefs1.perception.cs.cmu.edu/OpenPose/OpenPose_demo_1.0.1.zip

その前にOpenPoseを動作させるには最低GTX10XXのグラボが必要です。

## OpenPose DEMOの動作
解凍したらまずはモデルデータを落としてきます。
models/getModels.bat or sh を実行すれば落ちてきます。

あとは端末等で
bin\OpenPoseDemo.exe --video examples\media\video.avi
とかで実行すれば動きます。

マニュアルならGithubに転がっているので参照してください。

## そもそもOpenPoseって
「DeepLearningを使った、単眼カメラでのスケルトン検出アルゴリズム」らしいです。
Webカメラを使ってリアルタイム(激重)で骨格データをjsonとかに吐き出してくれます。
現在取得できるデータは身体・手・顔の特徴点です。

## 研究の方
OpenPoseをそのまま動かすと激重なので、事前処理として動く物体を検知して、そのエリアだけ適応させる感じになっています。
結果としては毎フレーム0.03秒ぐらいですが早くなっています。
この勢いで学習データ無しで個人特定を行いたいとは思っています。

# VoiceroidAPI (再掲)
2017年度の三年生の方々に恐らく知られていない為、水増し的に再掲させていただきます。
VoiceroidをAPIサーバーとして外部に音声を出力する機構を作ってあります。
ライセンスの都合で外部公開はできないのですが、研究室のネットワークから使えるサーバーが動いていると思います。

![VOICEROID+ 結月ゆかり EX](https://lh3.googleusercontent.com/-8Pj3DV-7SgE/WVnFyNK_NvI/AAAAAAAAABM/IABZq2IZeoA_Ah5XJ9i0a6f0GfMfBbsIACEwYBhgL/w140-h51-p/mainimage.jpg "結月ゆかりさん")

## APIサーバーの使い方
以下のサイトにAPIドキュメントがあります。
[VoiceroidAPI(Network_KenA)](http://192.168.133.40:60334/)

動いていなかったらSlackの方(個人宛)へお願いします。
また、場合によってはアドレスが変更になる可能性があるので、ご了承ください。
# 実装
実体はWindows10で動いているPythonのサーバーです、
PythonのフレームワークはFalconを使いました。
Windows側ではVoiceroidのウィンドウを自動操作するプログラムが動いています。
流れとしては

1. リクエストされた文字列orファイルの内容を取得
2. 取得した文字列をVoiceroidのウィンドウにセット
3. 音声出力をしてファイル内容をBase64にしてjsonで返す

といった流れです。
出力された音声はWindows上で保存されます、
もしリクエストされた同じ文字列が以前に存在場合は上の手順の1,2番を飛ばしてすぐにjsonを返してくれます。

## SlackBot
namazu510くんがSlackで@ken-a のメンションでメッセージを投げると、研究室内のスピーカーからメッセージが流れます。
こちらの管理は私が行っている訳ではないのでノーサポートです、ご了承ください。
また、極稀にルイズコピペで無差別爆撃する方が居るらしいですが、やる際は時間と場合を考えて実行してください。

基本的に音声データは保存され、二回目以降はそれを送信する形となっているので、初回は少し遅延してメッセージが出力されます。

## 今後
時間とお金と需要があれば別のVoiceroidを導入したり、研究室内で手軽に音声データを出力できるサービスでも作ろうかなって。
また、ライセンス的にアレだけれどもRaccoon経由でAPIにアクセスできるように出来たらいいなって思っています。

## スペシャルサンクス
Voiceroid操作部分はsky先輩のソースコードを流用しています。
このAPIサーバーを作る際に参考にしたソースコードの作者が偶然にも先輩でした。
ありがとうございました。

# 終わりに
道理で知名度が低いと思ったらWikiの方のページが停電の際に消滅していました。
VoiceroidAPI、是非使ってみてください。
必要に応じて動作サンプル(Python限定)、サーバー部分、Voiceroid操作部分のプログラムを公開します。
また、私が大学にいる間は恐らく何かしらのサポートはできるはずです。


明日はyoshi2002さんの記事です、よろしくお願いします。









0 件のコメント:

コメントを投稿