Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MocapForAllと空き家総研の目指すところ

 MocapForAllと空き家総研の目指すところ

2021/6/11 トラッキング技術勉強会 #tratech

Ec122b66ddfb9af0fba980ec2d0b0de4?s=128

Kenji Asaba

June 11, 2021
Tweet

Transcript

  1. MocapForAllと空き家総合研究所 の目指すところ 2021/6/11 トラッキング技術勉強会 空き家総研VRラボ 麻場 健司

  2. 目次 • 心: MocapForAll と 空き家総研VRラボ の目的、 あるいは「オープンソース演劇」について • 技:

    システム構成と実装上のポイント • 体: 開発会社と開発者の自己紹介
  3. みなさん 「モーションキャプチャシステムさえ お家にあればなあ…… 」 と思ったこと、ありませんか? • 映像製作 • ゲーム製作 •

    VTuber活動 etc. 才能はあるのに、 お金だけがない…
  4. MocapForAll =万人のためのモーションキャプチャシステム • 特別な装置不要 • 2台以上のウェブカメラとPCがあればOK • 携帯をWi-Fiでつないでウェブカメラ化してもOK • 必要なPCスペックはミドルクラス

    • Surface Pro 7 で 17fps前後 • GTX1080Ti なら 30~100fps • 指の動きと顔の表情も取得可能 • ただし精度は低い & スペック要求高い • キャプチャ結果を公開仕様でLAN上にリアルタイム出力 • ゲームエンジンをはじめとした任意のアプリで利用可能
  5. MocapForAllの全体構成 Windows 10 PC MocapForAll.exe カメラ カメラ … 画像 PC

    Windows 10 PC PC Unreal Engine 4 MocapForAll Plugin for UE4 Actors トラッキング位置 または BoneのTransform (VMTフォーマット) Transforms ※Virtual Motion Tracker Steam VR VR Apps Tracker signal Tracker Unity MocapForAll Plugin for Unity Game Objects Transforms ※ “Virtual Motion Tracker” は gpsnmeajp様 により作成されたものです。 詳細は “https://github.com/gpsnmeajp/VirtualMotionTracker” をご覧ください。 メッセージのフォーマットはMocapForAllのReadme.txtをご覧ください。
  6. MocapForAllの用途 =モーションキャプチャがお手頃価格になることでできること • ゲーム製作・映像製作に使うキャラクターモーション作成 →特にインディーゲーム開発者や小規模スタジオ向け (かつてインディーズアニメーションを作っていた旧友に使ってほしい…) • SteamVRでフルボディトラッキング →フルトラが当たり前の世界へ (Virtual

    Motion Tracker経由。HMDは別途必要。HMDに比べて遅延があることに注意) • 予算が限られている教育目的や社内利用にも →インタラクティブアート、アバターを使ったVRミーティング、スポーツ、etc.
  7. MocapForAllの真の目的 = 演劇の大衆化のための「オープンソース演劇」構想 • 演劇をカラオケのような気軽な遊びにできないか? • 演劇は見るよりやる方が楽しい(「ごっこ遊び」) • 演劇をやるのはとても大変(時間、金、人) •

    演劇のパーツをデータ化し、GitHubにアップロードして、一つの演劇を作る構想 • 演劇のパーツ • 演技:MocapForAllや各種VR機器で記録 • 役者:3Dモデル • 大道具:3Dモデル • 小道具:3Dモデル • 音響:音声ファイル • 照明:ライティングの設定 • etc... • これらをゲームエンジン等で実行可能な形式で公開する • UnityのTimelineやUE4のSequencerで実行? • 各種素材の権利をどう守るかに課題(特に販売も視野に入れると)
  8. 「オープンソース演劇」による 新しい形の演劇・体験 • 鑑賞しつつ、登場人物の一人にもなり、それが鑑賞される体験 • 「ロールプレイ」のゲーム • 不特定多数の人と協力して一つの「演劇」を作る体験 • 地方の部員一人の演劇部でも活動できる

    • フォークして「n次創作」してもよし • 不特定多数の人と協力して一つの「役」を作る体験 • 体の動きはAさん、声はBさん、表情はCさん、殺陣のシーンはDさん… • 参加へのハードルを下げる効果 • (人間の仮想化…?) • (仮想化された人格の共有…?) • (他者の中に自己を見ること、自己の中に他者を見ることを、仕組みとして提供する…?) → UE4とUnityで、オープンソース演劇の仕様を考えたい(協力者募集)
  9. ここからは技術の話です

  10. システム構成 ・ほぼApache2.0ライセンスとMITライセンスの要素で構築(UE4は除く) ・OpenCVはUE4とメモリ管理で競合しないように改造 ・UE4のエンジン改造はなし UE4 Webcam OpenCV Onnx Runtime Webcam

    GPU CUDA TensorRT CPU DNN models OpenCV 1€ Filter IK Character 画像 射影行列 (Projection matrix) 画像 二次元 位置 三次元 位置 OpenCV (ChArUcoによるカメラ校正) (Affine変換) (DNNによる 推論実行) ・Baseline ・MediaPipe ・MoveNet (三角測量) (速度に比例して カットオフ周波数 が増加するローパ スフィルタ) (リターゲット) ChArUco 画像 VRM4U VRM
  11. システム構成 ・ほぼApache2.0ライセンスとMITライセンスの要素で構築(UE4は除く) ・OpenCVはUE4とメモリ管理で競合しないように改造 ・UE4のエンジン改造はなし UE4 Webcam OpenCV Onnx Runtime Webcam

    GPU CUDA TensorRT CPU DNN models OpenCV 1€ Filter IK Character 画像 射影行列 (Projection matrix) 画像 二次元 位置 三次元 位置 OpenCV (ChArUcoによるカメラ校正) (Affine変換) (DNNによる 推論実行) ・Baseline ・MediaPipe ・MoveNet (三角測量) (速度に比例して カットオフ周波数 が増加するローパ スフィルタ) (リターゲット) 画像 VRM4U VRM ChArUco ここと ここの話をします
  12. ChArUcoとは?(弊社通称:魔法陣) カメラ校正には「位置が既知の座標がカメラ画像上でどこにあるか」を知る必要がある。そこで使われるのがこれ。 • チェスボード: 角の位置(x,yが既知でz=0の点)をカメラ画像中で精密に決定するのに便利 • ArUco: カメラ画像中からパターンを探し出すのに便利 → 合体させればいい!

    https://docs.opencv.org/master/d9/d6d/tutorial_table_of_content_aruco.html
  13. カメラ校正って具体的に何? • カメラには、内部パラメータと外部パラメータがあります。(ピンホールカメラモデル) • 内部パラメータ: • カメラのレンズの焦点距離𝑓𝑥 , 𝑓𝑦 と光軸の中心𝑐𝑥

    , 𝑐𝑦 = カメラそれ自体の特性 • 「カメラ画像中の座標」と「カメラ座標系での座標」の関係を記述する行列で表される • 外部パラメータ: • カメラがどこにあって𝑇、どういう向きを向いているか𝑅 = カメラと世界の関係 • 「カメラ座標系での座標」と「世界座標系での座標」の関係を記述する行列で表される → これらの行列を決定し、その積である射影行列Pを求めるのがカメラ校正 • 「カメラ画像中の座標」と「世界座標系での座標」の関係がわかる! 𝑋𝑐𝑎𝑚𝑒𝑟𝑎 𝑌𝑐𝑎𝑚𝑒𝑟𝑎 𝑍𝑐𝑎𝑚𝑒𝑟𝑎 = 𝑟11 𝑟12 𝑟13 𝑡𝑥 𝑟21 𝑟22 𝑟23 𝑡𝑦 𝑟31 𝑟32 𝑟33 𝑡𝑧 𝑋𝑤𝑜𝑟𝑙𝑑 𝑌𝑤𝑜𝑟𝑙𝑑 𝑍𝑤𝑜𝑟𝑙𝑑 1 𝑠 𝑥𝑖𝑚𝑎𝑔𝑒 𝑦𝑖𝑚𝑎𝑔𝑒 1 = 𝑓 𝑥 0 𝑐𝑥 0 𝑓 𝑦 𝑐𝑦 0 0 1 𝑋𝑐𝑎𝑚𝑒𝑟𝑎 𝑌𝑐𝑎𝑚𝑒𝑟𝑎 𝑍𝑐𝑎𝑚𝑒𝑟𝑎 𝑠 𝑥𝑖𝑚𝑎𝑔𝑒 𝑦𝑖𝑚𝑎𝑔𝑒 1 = 𝑓 𝑥 0 𝑐𝑥 0 𝑓𝑦 𝑐𝑦 0 0 1 𝑟11 𝑟12 𝑟13 𝑡𝑥 𝑟21 𝑟22 𝑟23 𝑡𝑦 𝑟31 𝑟32 𝑟33 𝑡𝑧 𝑋𝑤𝑜𝑟𝑙𝑑 𝑌𝑤𝑜𝑟𝑙𝑑 𝑍𝑤𝑜𝑟𝑙𝑑 1 𝑋𝑐𝑎𝑚𝑒𝑟𝑎 𝑌𝑐𝑎𝑚𝑒𝑟𝑎 𝑍𝑐𝑎𝑚𝑒𝑟𝑎 𝑥𝑖𝑚𝑎𝑔𝑒 𝑦𝑖𝑚𝑎𝑔𝑒 𝑋𝑐𝑎𝑚𝑒𝑟𝑎 𝑌𝑐𝑎𝑚𝑒𝑟𝑎 𝑍𝑐𝑎𝑚𝑒𝑟𝑎 𝑋𝑤𝑜𝑟𝑙𝑑 𝑌𝑤𝑜𝑟𝑙𝑑 𝑍𝑤𝑜𝑟𝑙𝑑 𝑃
  14. ChArUcoでカメラ校正、どう実装する? • OpenCVに関数があります! • cv::aruco::detectMarkers • インプット画像からArUcoマーカー座標を見つける • cv::aruco::interpolateCornersCharuco •

    ArUcoマーカー座標からチェスボードの角の座標を見つける • cv::aruco::calibrateCameraCharuco • チェスボードの角の座標から、カメラ内部パラメータ行列を求める。n枚の画像が必要。 • cv::aruco::​ estimatePoseCharucoBoard • チェスボードの角の座標から、カメラ外部パラメータ行列を求める • カメラ内部パラメータ行列とカメラ外部パラメータ行列の積が、求める射影行列(Projection matrix)! 𝑓𝑥 0 𝑐𝑥 0 𝑓𝑦 𝑐𝑦 0 0 1 𝑟11 𝑟12 𝑟13 𝑡𝑥 𝑟21 𝑟22 𝑟23 𝑡𝑦 𝑟31 𝑟32 𝑟33 𝑡𝑧
  15. カメラ校正結果から、 どう三角測量する? • OpenCVに関数があります! • cv::sfm::triangulatePoints • In points2d, •

    In projection_matrices, • Out points3d • でも、信頼度(confidence)も使って評価したいですよね…? →独自実装しましょう!! 参考: Learnable Triangulation of Human Pose https://github.com/karfly/learnable-triangulation-pytorch (いくつかの手法を比較したりも)
  16. システム構成(再掲) ・なんとなく作れそうな気がしてきたのではないでしょうか! UE4 Webcam OpenCV Onnx Runtime Webcam GPU CUDA

    TensorRT CPU DNN models OpenCV 1€ Filter IK Character 画像 射影行列 (Projection matrix) 画像 二次元 位置 三次元 位置 OpenCV (ChArUcoによるカメラ校正) (Affine変換) (DNNによる 推論実行) ・Baseline ・MediaPipe ・MoveNet (三角測量) (速度に比例して カットオフ周波数 が増加するローパ スフィルタ) (リターゲット) ChArUco 画像 VRM4U VRM
  17. 最後に、 私たちの簡単な自己紹介

  18. 「株式会社空き家総合研究所」?? • 不動産屋です。 • 空き家を 「買って、直して、貸して、売って」 います。 • 社員6人の小さな会社です。

  19. なんで不動産屋がVRアプリやってるの? • 学生時代の演劇部の仲間で作った会社 →演劇をやりたい。それ以上に、演劇をやりたい人を応援したい。 • 演劇をデータ化することで、再利用性と収益性を高める →そのために、まずは演技のデータ化 = モーションキャプチャ …という趣味で作ってたアプリでしたが、会社としてまとまった

    お金が必要になったので販売することに →MocapForAllの収益のうち3000万円は、ひとり親世帯支援住宅の整備に充てられ る予定です。
  20. 開発担当者: 麻場 健司 • 前職はいわゆるシステムインテグレータ。Javaメインでした。 • C++、UE4、Python、AI を実製作で使ったのは今回が初めて。 →様々な方のブログ記事、動画等を参考にさせていただきました。 先人の皆さま、ありがとうございます

    (_ _)
  21. Reference • Open CV https://opencv.org/ • ONNX Runtime https://www.onnxruntime.ai/ •

    YOLOv4 https://github.com/AlexeyAB/darknet • Pytorch-YOLOv4 https://github.com/Tianxiaomo/pytorch-YOLOv4 • Learnable Triangulation of Human Pose https://github.com/karfly/learnable-triangulation-pytorch • MediaPipe https://mediapipe.dev/ • MediaPipe in PyTorch https://github.com/zmurez/MediaPipePyTorch • facemesh.pytorch https://github.com/thepowerfuldeez/facemesh.pytorch • irislandmarks.pytorch https://github.com/cedriclmenard/irislandmarks.pytorch • MoveNet https://tfhub.dev/google/movenet/singlepose/thunder/3 https://tfhub.dev/google/movenet/singlepose/lightning/3 • PINTO_model_zoo https://github.com/PINTO0309/PINTO_model_zoo • One Euro Filter plugin for Unreal https://github.com/DarioMazzanti/OneEuroFilterUnreal • Open Asset Import Library (assimp) https://github.com/assimp/assimp • VRM loader for UnrealEngine4 (VRM4U) https://github.com/ruyo/VRM4U • Virtual Motion Tracker https://github.com/gpsnmeajp/VirtualMotionTracker • アプリ明朝 https://flopdesign.booth.pm/items/1028558 • MocapForAll uses Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere. Unreal® Engine, Copyright 1998 – 2021, Epic Games, Inc. All rights reserved.
  22. ご清聴ありがとうございました!