姿勢推定AIを使った『恋ダンス練習システム』でステイホームを乗り切ろう


##作ったもの
今更ですが、
<B>「恋ダンス」を練習するシステム</B>を作りました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「恋ダンス練習システム」のウェブアプリを公開しました。みなさんも練習できますので是非　⇒ <a href="https://t.co/iEnEhs7d8q">https://t.co/iEnEhs7d8q</a><br>作り方はこちら　⇒　<a href="https://t.co/z5WwErezg7">https://t.co/z5WwErezg7</a><a href="https://twitter.com/hashtag/%E6%81%8B%E3%83%80%E3%83%B3%E3%82%B9?src=hash&amp;ref_src=twsrc%5Etfw">#恋ダンス</a> <a href="https://twitter.com/hashtag/%E9%80%83%E3%81%92%E6%81%A5?src=hash&amp;ref_src=twsrc%5Etfw">#逃げ恥</a> <a href="https://twitter.com/hashtag/%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#リアルアバター</a> <a href="https://twitter.com/hashtag/stayhome?src=hash&amp;ref_src=twsrc%5Etfw">#stayhome</a> <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/posenet?src=hash&amp;ref_src=twsrc%5Etfw">#posenet</a> <a href="https://t.co/QUn04o5xXQ">pic.twitter.com/QUn04o5xXQ</a></p>&mdash; たつや @8/27 Developers Summit 2020 KANSAI (@tatsuya1970) <a href="https://twitter.com/tatsuya1970/status/1298632870378917889?ref_src=twsrc%5Etfw">August 26, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>




<br>
ウェブアプリとして公開してますので、誰でも練習できます。
これで、ステイホームを乗り切りましょう！
https://relaxed-jang-058d64.netlify.app/

<BR>

<B>※楽曲の使用について</B>
星野源さんは、2020年4月のオールナイトニッポンで「僕の音源は好きに使えますんで」と言われたとこのサイトに書かれてました。

[星野源「僕の音源は好きに使えますんで」YouTubeやSNSで踊ったり、BGMにしたり自由に楽しんで](https://www.danshihack.com/2020/05/03/junp/hoshinogen-stayhome.html)

私はこの記事を信じて、星野源さんの楽曲「恋」を使った動画を[YouTube](https://youtu.be/YLRThoMtPUg)、Twitter、Facebookにアップして約３ヶ月経過しましたが、今のところどこからも著作権侵害の連絡はありませんし、削除されていません。
<BR>

##システム説明
###使用技術
[Posenet](https://github.com/tensorflow/tfjs-models/tree/master/posenet)というTensorFlow.jsを使用した姿勢推定ディープラーニングモデルを使いました。

以下の2つのサイトから必要なコードを拝借して作成しました。
ありがとうございました。

- [「ポージングに対応した再生位置からMVを再生するシステムを作ってみた[Pose Mover]」]
(https://qiita.com/daiking1756/items/ba833e51b30421e760b5)

- [PosenetのGitHub](https://github.com/tensorflow/tfjs-models/tree/master/posenet)

### 仕組み
左側の動画が模範のダンスで、姿勢を水色で表しています。
右側のウェブカメラの前で踊ってる人の姿勢を左側の動画に赤色で被せます。
![スクリーンショット 2020-08-26 21.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/64153bcc-4716-c713-5433-b582a41fed8e.png)


水色と赤色の姿勢の誤差によって、画面にGOODと表示し、スコアをプラスします。
姿勢の誤差についてのロジックおよびコードも先ほどご紹介したQiitaの記事
 [「ポージングに対応した再生位置からMVを再生するシステムを作ってみた[Pose Mover]」]
(https://qiita.com/daiking1756/items/ba833e51b30421e760b5)　をそのまま拝借しました。ありがとうございました。

お手本動画とウェブカメラの映像から、肩から肘、肘から手首、腰から膝、膝から足首、左右合わせて8本の線分の角度の誤差平均を比較しています。

### コード

GitHubをご覧ください。
https://github.com/tatsuya1970/koidance

お恥ずかしいコードですが、よろしければ、プルリクエストなどでご指導いただければ幸いです。


## 反省点
- <B>CSSが全然ダメ</B>
 右と左のスクリーンの大きさ違う、スクリーンの間の空白は何？
CSS苦手です。

- <B>動画ファイルをそのままデプロイ</B>
ウェブアプリはGitHubの情報をNetlifyでデプロイして公開していますが、GitHub、Netlifyに20メガもある動画ファイル入れています。各サービスの既定容量の範囲内ですが、GitHubにこのような大容量の動画ファイルをアップしてる例をみたことがないので、GitHub民のしきたり的にこれでいいのか少し不安です。
当初はAWSのS3に保存して、そのURLを参照しようとしたのですが、こんなエラーが出て立ち往生し、諦めました。

```
Uncaught (in promise) DOMException: Failed to execute 'texImage2D' on 'WebGL2RenderingContext': Tainted canvases may not be loaded.
```




## その他

###恋ダンス動画について

- 環境： Unity 2019.2.21f1
- 恋ダンスのモーションは、virgo cat様<br>
https://www.nicovideo.jp/watch/sm32061522
- 初音ミクさんのアバターは、Tda様<br>
https://bowlroll.net/file/4576
- おっさんリアルアバターは、リアルアバター株式会社で作成<br>
https://www.real-avatar.com/
- 背景はTBS宣伝部より <br>
https://twitter.com/tbs_pr/status/1248579644355268609

###なぜ作ったのか？

現在受講中の[ProtoOut Studio](https://protoout.studio/) のアイデアワークショップの講義にて、キーワードから連想していくというアイデア創出法を学びました。

講義では
「ソーシャル・ディスタンス」というキーワードから始めました。
Aさんが「２メートル」という言葉を連想、
次はBさんが「２メートル」というキーワードから「ダルビッシュ選手」を連想
次の番の人は、ここで導き出された「ダルビッシュ選手」というワードからサービスのアイデアを考えなければいけません。
それにしても、まさか、ソーシャルディスタンスからダルビッシュ選手になるとは・・・

サービスのアイデアは、僅か5分で考えないといけません。それもイラスト付きで。
こうなると、もう脊髄反射でアイデアを出すしかなく、苦し紛れにこんなアイデアを出しました。
<IMG SRC="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/7d82e108-2b7c-8755-9e18-05d0bd296520.jpeg" width="50%">

すると、講師の方がこう言われました。
「tatsuya1970さん、よく出来ましたね。
　これを作るのが、あなたの今週の宿題ですよ」

という経緯です。

<BR>
その後なぜか、ダルビッシュ選手が「恋ダンス」になってしまいましたが・・・。

<BR><BR>