プリッカソン#4でコーデを身体に映しだしてみた

prickathon.connpass.com

今日もプリッカソン行ってきた。U149の応募はがき今日の消印必要だなと気付いて,渋谷駅ダンジョンを迷いつつ消印確認してからの遅刻。

f:id:banjun:20180618000305j:plain

動画処理,画像分類,データAPI化,webpack静的配信化,vue化,AR,マップ,ゲーム+絵,楽曲アレンジ,など,いろんな領域での活動がされていてよかった。(プリパラ多様性がry)

今日はなにをやろうかと着いてから考えていて,Pripara-DBが若干手詰まり感はあるなぁとか,なかひこくんちゃんに分けてもらったらぁらLive2DモデルをAR顔認識と組み合わせた進捗をみせつつもモーションの作りかたが分からないしAppleによりOpenGLのdeprecate宣言が出るしということで,もうひとつ話題にしてたネタの,PoseNet的なやつで姿勢推定してコーデをオーバーレイするやつ,というのに着手することにした。

github.com

PoseNetはここにあり,ブラウザ(ブラウザを選ぶ)デモもある。 Core ML化した記事はQiitaにあった。ありがたい。

qiita.com

まずはこれをベースにつくるが,Core MLモデル以外のブラックボックスは減らして,活用できる自由度を学んだほうがいい,と考えてモデルファイルを新規プロジェクトにいれてVision.frameworkと繋ぐところから。ちなみにVisionのリクエストにすると,Core MLの入力のシェイプ(というかここでは画像で337x337)は,Visionで処理されるのでスクラッチの手数が減る(CVPixelBufferでリサイズをしなくてもいい)というとがわかった。

PoseNetの出力は3次元MultiArrayが4つでてくる。謎が多い。

  • そもそもクラス分類しかまともにみたことがないので,MultiArrayがなにを表すときに使うのか謎
  • VisionのRequestでは,4つ出てくるArrayの順序が謎。Core ML定義通りの順序ではないし,辞書ラベルも失なわれている。シェイプ違いは「見れば」わかるが,そもそも順序が違う意味がわからない
  • どうやらいくつかの後処理をかけないと,関節の座標すらとれないようだ。必要なものを順にiOS化されたときのプロジェクトから拾ってくる。結局内容詳細は不明のままだが,これがないと始まらないようなので。 GitHub - infocom-tpo/PoseNet-CoreML: I checked the performance by running PoseNet on CoreML

これで顔のポイントや,肩・肘のポイントは取れる。顔の鼻の位置と,目の間の距離をつかって,らぁらの顔を当てはめた。シェイプを合わせるためにスケールしていたり,カメラは回転しているしプレビューレイヤーは伸び縮みしているし,間違えていると思っていないaffine transformの一箇所が間違えていて,顔を置くのに時間をかけてしまった。しかもARKitのフェイストラッキングより相当にブレブレの結果しか出ないという。

さて顔だけでは精度的にも勝利にならないので,腰をつかっていく。どうやら顔や肩や肘とは違い,肩からさらに関節を辿っていかないと見えない構造の先に腰があるようだったので,そのコードももらってくる。そうすると,腰がみえているときは左右の腰の位置がわかるようになる。

結果はこんな感じ。ウィッシュリボンアイドルコーデすき。

f:id:banjun:20180618004327j:plain

f:id:banjun:20180618004332j:plain

しかし顔の位置と同様に腰の位置もブレブレであり,写っているほとんどのフレームでは間違った位置にあるようにみえる。 さらにアングルを連動させてみたりすると,ブレブレ感が増していくので,あまりなにもしないほうがいいのかもしれない。 何枚も撮影するといい感じの写真がとれるという具合なので,成果発表では,たくさん撮ってもらっていい感じにハマっているのを成功例として使ってもらうようにしたというものだった。

githubレポはこちら。一部画像リソースは含めていない。

github.com

振り返るとあやしい処理をしているところはありそうだし,精度はまだ上がるかもしれない。が,それでも画像上の二次元座標がとれるだけだと,身体がどちらを向いているかという情報は使えないかもしれない。ARKitで顔認識してその向きをつかったらどうかというアドバイスももらった。たしかに顔についてはARKitのほうが格段によさそうという印象だった。顔と身体の向きは違うかもしれないというのはある。 新しい領域の知見は得られたし,見た目にわかる系のものなので説明しやすくてよかった。

tweetとか

他のいろいろ

今日も会場はサポーターズの広い部屋で快適だった。プロジェクターが(持込みで)2台になったりして,広さを活用しはじめた感がある。

f:id:banjun:20180618000144j:plain

そしてついに,プリッカソンのステッカーが作られて配布された。MacBook Proに貼っているなかでもかなりかわいい。かわいいけどスッとしたシルエットでクール。スケート靴のPとかセンスの塊かと思った(スケート靴の時代のプリティーシリーズまだみてない。まずRLみなきゃ)。

f:id:banjun:20180618004835j:plain

懇親会はピザピザポテトピザ。梅干しはのってない。