エンジニアの藤岡 ( @foka22ok ) です。

機械学習のポーズ推定・Style Transferを使って、TouchDesignerとリアルタイム連動して、富嶽三十六景風パーティクルで遊んでみました。

処理負荷を気にする

機械学習を連携させるコンテンツは最近では珍しくなくなってきており、機能に内蔵されていて知らぬ間に実は使っていた、というケースも多くなってきてると思います。

機械学習の仕組みを自分達で用意する場合もありますが、気を付けないといけないのが処理負荷です。

小さなモデルや、フレームレートが下がっても問題ない場合では、アプリケーション内に組み込んでも気にせず使えます。

解像度の高い映像を扱ったり、大きなモデルの場合など、機械学習自体の処理負荷が高くなる場合もあり、連携しているコンテンツのフレームレートまで低下してしまうことがあります。

その場合に負荷分散の検討が必要です。

NDIとSpoutを使って負荷分散

冒頭の富嶽三十六景風パーティクルでは、以下のような構成にしました。

ポーズ推定はそこまで大きな処理負荷にならなかったので、TouchDesignerと同一PCで動かしてます。

TouchDesigner内でもPythonを実行できますが、アプリケーションを分けて、Spoutという映像連携技術でTouchDesignerとPythonアプリケーションを連動させました。

Style Transferの方は、高解像度にするとこれだけでかなり処理負荷が高くなったので、処理PC自体を分離。

この時は、ポーズ推定もStyle TransferもどちらもSpoutで動くようにしていたので、NDIを間に挟んで別PC連動しています。

SpoutにはSpout to NDI、NDI to SpoutというSpoutとNDIを変換してくれるアプリが付属しているので、それを活用しました。

こうすることで、後からPCごと分離したい・やってみたらPCを分ける必要はなかった、などの場合でも大丈夫なように、アプリ・機材構成を柔軟に扱えるようにしました。

まとめ

スマホアプリだと同一アプリ内で機械学習も含めて動かす場合も多く、それはそれで意味がありますが、負荷分散としてできることは限られます。

PCだと、アプリを分ける・PC自体を分ける、など柔軟な負荷分散も検討できるので、アプリ単体ではできない特殊な応用にも使えるのが良いところです。


機械学習エンジニア募集中!

1→10は、AI技術・機械学習技術をXRなどの技術と組み合わせ、AI体験へと昇華させることを得意としています。

近年ではAIエージェントやそのアーキテクチャの開発、そしてマルチモーダルAIに注力しており、他にも GANやword2vec、Transformerなどの表現に関わる要素技術も積極的に研究しています。

弊社のAIに関する取り組みの詳細は、こちらのサイトをご覧ください。

ご興味のある方は、Wantedlyからご応募ください。ご応募、お待ちしています!