Processingで機械学習!? (RunwayML + Processing)
はじめに
Processingアドベントカレンダー2020 3日目の記事です.
RunwayMLとは,クリエイターのための機械学習ツールです.すでに複数の学習モデルが用意されており,それらを使うことで機械学習アート(勝手に命名)を創作できます.
このRunwayMLの良いところは,その出力結果をProcessingに送信できるという点です.すでにProcessingのサンプルが用意されており,今すぐ機械学習を用いたプログラム作成ができます.今回はRunwayMLと通信するためのセットアップの方法とサンプルの一部を紹介します.
目標
試した環境
- Mac OS Catalina 10.15.7
- RunwayML 0.15.0
- Processing 3.5.4
セットアップ
1. RunwayMLソフトウェアをダウンロード
RunwayMLはWeb上で体験することが可能です.しかし,Processingとの通信には専用ソフトウェアをダウンロードする必要があります. ダウンロードは以下のリンクから行うことができます. runwayml.com
2. RunwayMLにサインアップ
RunwayMLのソフトウェアを入れたらサインアップします
3. Processingにライブラリをインポートする
今回使うサンプルを使うにはRunwayライブラリとOSCライブラリが必要です.
「ライブラリを追加」からそれらを検索し,インストールしてください.

サンプルを動かしてみよう!
今回はポーズキャプチャするプログラムを使ってみます.
libraries > examples > OSC > PoseNetWebcam > PoseNetWebcam.pdeです
場所がわからない方は以下のリンク先にあるコードをコピペしてください.
1. RunwayMLでポーズキャプチャモデルを探す

2. ポーズキャプチャモデルを起動する
モデルを選択すると以下の画像のような画面が表示されます.
右下にあるRunボタンを押すとポーズキャプチャが実行します.

3. PoseNetWebcam.pdeを実行する
そしてPoseNetWebcam.pdeを実行します.
するとProcessingの実行画面にポーズキャプチャの様子が描画されます.
コードの解説
PoseNetWebcam.pde起動時にProcessingとRunwayMLはこんな感じで通信しています.
runway.query()とrunwayDataEvent(),runwayInfoEvent(),runwayErrorEvent()はRunwayライブラリに標準搭載している関数たちです.
基本的にrunwayDataEvent()で,RunwayMLが送信した基本的なデータ(今回は体パーツの座標)を非同期で取得しています.
この命令は他の学習モデルにも適用することができます.
他のサンプル
他には顔のパーツ(FaceLadmark)を取得することもできます.
また,画像を写実的に表現することもでき,それは以下の記事で細かく解説していました.
おわりに
自分は機械学習に詳しくないので,このような作品を思いついても制作することができませんでした.RuwayMLによってProcessingにもその技術を応用できるようになり,創作するコンテンツの幅が広がるような気がします.
この記事を読んだ方々もぜひ機械学習を用いた創作にチャレンジしてみてください!