<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SIGGRAPH on ながむしメモ</title><link>https://nagakagachi.github.io/categories/siggraph/</link><description>Recent content in SIGGRAPH on ながむしメモ</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Thu, 10 Dec 2020 22:29:11 +0900</lastBuildDate><atom:link href="https://nagakagachi.github.io/categories/siggraph/index.xml" rel="self" type="application/rss+xml"/><item><title>論文メモ Fast Eulerian Fluid Simulation In Games Using Poisson Filters (SCA 2020 Showcase)</title><link>https://nagakagachi.github.io/entry/2020/12/10/222911/</link><pubDate>Thu, 10 Dec 2020 22:29:11 +0900</pubDate><guid>https://nagakagachi.github.io/entry/2020/12/10/222911/</guid><description>&lt;p&gt;&lt;iframe width="480" height="270" src="https://www.youtube.com/embed/_3eyPUyqluc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.youtube.com/watch?v=_3eyPUyqluc"&gt;www.youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="概要"&gt;概要&lt;/h3&gt;&#10;&lt;p&gt;2次元Euler流体を用いた&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/2.5%BC%A1%B8%B5"&gt;2.5次元&lt;/a&gt;&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%BF%A5%E9%A5%AF%A5%C6%A5%A3%A5%D6"&gt;インタラクティブ&lt;/a&gt;流体エフェクトに関するShowcase。&lt;br /&gt;&#10;圧力Poisson方程式のJacobi法ソルバの反復数を大幅に削減し高速化するPoisson (Separable) Filterを提案。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="poisson-filter"&gt;Poisson Filter&lt;/h3&gt;&#10;&lt;p&gt;圧力Poisson方程式のJacobi反復は、前回の反復での圧力値に対して&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%BA%C6%B5%A2"&gt;再帰&lt;/a&gt;的に定数フィルタ&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/3x3"&gt;3x3&lt;/a&gt;をかけ合わせているものとみなせる(3次元なら3x3x3)。&lt;br /&gt;&#10;N回のJacobi反復を1回の畳み込みフィルタに解析的に変換することで反復数を削減することができる。&lt;br /&gt;&#10;事前計算でこの畳込みフィルタを求めておくことでランタイムでの圧力反復計算を大幅に高速化する。&lt;/p&gt;&#10;&lt;figure class="figure-image figure-image-fotolife" title="引用1"&gt;&lt;span itemscope itemtype="http://schema.org/Photograph"&gt;&lt;img src="images/b782c0befaec31ac9c69e592d0eb8c01c4c9c2a9f2c0a96e90194ce7f72bfd6a.png" alt="f:id:nagakagachi:20201210213053p:plain" title="" class="hatena-fotolife" itemprop="image"&gt;&lt;/span&gt;&lt;figcaption&gt;引用1&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;近傍の初期値にN回のフィルタを掛けた結果とおなじになるようなフィルタを事前計算して利用するということ。&lt;/p&gt;&#10;&lt;p&gt;定数重みを掛けて足し合わせるフィルタをN回掛けた場合の、近傍初期値の足し合わせ重みは地道に手計算することでも確認ができそう。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="poisson-separable-filter"&gt;Poisson Separable Filter&lt;/h3&gt;&#10;&lt;p&gt;畳み込みフィルタ化によって反復数を1回にすることができるが、N回分をまとめたことにより広範囲をサンプリングするフィルタとなり、計算量は非常に多くなってしまう。&lt;br /&gt;&#10;&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/canonical"&gt;canonical&lt;/a&gt; polyadic decomposition (CPD) でRank1のMatrixの和に変換し、それぞれを&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%C6%C3%B0%DB%C3%CD%CA%AC%B2%F2"&gt;特異値分解&lt;/a&gt;(SVD)で Nx1. 1x1, 1xN の行列積に変換する(1x1は特異値(Scalar)になる)。&lt;br /&gt;&#10;ここで特異値が最大のものだけを選ぶことで、元の行列の性質をある程度残しながらNx1と1xNの縦横に分離された Poisson Separable Filter が得られる。 &lt;/p&gt;&#10;&lt;figure class="figure-image figure-image-fotolife" title="引用"&gt;&lt;span itemscope itemtype="http://schema.org/Photograph"&gt;&lt;img src="images/217cc2d9a48813d6d84aeea3158513deedd331d69cd4a89ea9f75d7b27f63c25.png" alt="f:id:nagakagachi:20201210220549p:plain" title="" class="hatena-fotolife" itemprop="image"&gt;&lt;/span&gt;&lt;figcaption&gt;引用&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;このようにして得られた Filter は Total variance explained が83%以下にはならないらしい(これが元の性質をある程度残しているということ？)&lt;/p&gt;&#10;&lt;p&gt;このフィルタは中心部から離れた要素の重みが小さいため、それらを切り捨てることでさらにフィルタサイズを小さくすることができる(~80% redundant)。&lt;/p&gt;&#10;&lt;p&gt;また、重みが対称的であるため実際に必要とする重みデータは更に圧縮することができる。&lt;/p&gt;&#10;&lt;p&gt;反復数が1回になったこととフィルタサイズの削減により、反復数が小さい場合には4.5倍、100反復では30倍程度高速化することができた。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="25dシミュレーション"&gt;2.5Dシミュレーション&lt;/h3&gt;&#10;&lt;p&gt;シミュレーションは2D-Gridで実行しているが、カメラの向きに応じて高さや傾きを補正することであたかも3D空間でシミュレーションされているようにみせている。&lt;/p&gt;&#10;&lt;p&gt;外力や風は3Dから2Dへ投影することでシミュレーションに取り込まれる。&lt;/p&gt;&#10;&lt;figure class="figure-image figure-image-fotolife" title="引用"&gt;&lt;span itemscope itemtype="http://schema.org/Photograph"&gt;&lt;img src="images/54cee14cd29fac87afde0b55f0ac6e03de8026fe4ddc5f71f724ba734607f985.png" alt="f:id:nagakagachi:20201210221945p:plain" title="" class="hatena-fotolife" itemprop="image"&gt;&lt;/span&gt;&lt;figcaption&gt;引用&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure class="figure-image figure-image-fotolife" title="引用"&gt;&lt;span itemscope itemtype="http://schema.org/Photograph"&gt;&lt;img src="images/a49ca8b5a4257e077e7293d128ae6f69a50009e48543b3b6f69cfb89de1a2c31.png" alt="f:id:nagakagachi:20201210222014p:plain" title="" class="hatena-fotolife" itemprop="image"&gt;&lt;/span&gt;&lt;figcaption&gt;引用&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;3Dオブジェクトとの&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%EA%A5%B8%A5%E7%A5%F3"&gt;コリジョン&lt;/a&gt;は深度バッファベースの手法を利用している。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="アーティストワークフロー"&gt;アーティストワークフロー&lt;/h3&gt;&#10;&lt;p&gt;マスク画像によって炎や煙の生成部をコン&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%ED%A1%BC%A5%EB"&gt;トロール&lt;/a&gt;する。&lt;/p&gt;&#10;&lt;figure class="figure-image figure-image-fotolife" title="引用"&gt;&lt;span itemscope itemtype="http://schema.org/Photograph"&gt;&lt;img src="images/23e8b92c76ef118a0333d8f1e6e2c061449485d3530e447175ab27a3380df42f.png" alt="f:id:nagakagachi:20201210222216p:plain" title="" class="hatena-fotolife" itemprop="image"&gt;&lt;/span&gt;&lt;figcaption&gt;引用&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="what-is-next"&gt;What is Next?&lt;/h3&gt;&#10;&lt;p&gt;Poisson Filterの3次元への拡張&lt;br /&gt;&#10;Multi-Runk + Rank Selector ( 負荷と品質の&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%EC%A1%BC%A5%C9%A5%AA%A5%D5"&gt;トレードオフ&lt;/a&gt;ができるように )&lt;br /&gt;&#10;粘性拡散項への対応&lt;br /&gt;&#10;&lt;br /&gt;&#10;&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>論文メモ[CARL: Controllable Agent with Reinforcement Learning for Quadruped Locomotion](SIGGRAPH2020)</title><link>https://nagakagachi.github.io/entry/2020/05/16/193506/</link><pubDate>Sat, 16 May 2020 19:35:06 +0900</pubDate><guid>https://nagakagachi.github.io/entry/2020/05/16/193506/</guid><description>&lt;p&gt;&lt;iframe width="480" height="270" src="https://www.youtube.com/embed/t9CdF_Pl19Q?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.youtube.com/watch?v=t9CdF_Pl19Q"&gt;www.youtube.com&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;&#10;&lt;/p&gt;&#10;&lt;ul class="table-of-contents"&gt;&#10;&lt;li&gt;&lt;a href="#Paper"&gt;Paper&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Abstract"&gt;Abstract&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Proposed-Method"&gt;Proposed Method&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#関連研究"&gt;関連研究&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="Paper"&gt;Paper&lt;/h3&gt;&#10;&lt;p&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Finventec-ai-center.github.io%2Fprojects%2FCARL%2Findex.html" title="CARL: Controllable Agent with Reinforcement Learning for Quadruped Locomotion" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://inventec-ai-center.github.io/projects/CARL/index.html"&gt;inventec-ai-center.github.io&lt;/a&gt;&lt;/cite&gt;&lt;br /&gt;&#10;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="Abstract"&gt;Abstract&lt;/h3&gt;&#10;&lt;p&gt;本論文では物理ベース制御アニメーションで駆動するエージェントに対して、ユーザによる制御が可能且つダイナミックな環境に自然に反応する四足歩行エージェント「CARL」を提案する。本研究ではエージェントは段階的に学習する。まずアニメーションクリップを模倣して身体を制御するように学習する。次にユーザによる高度な制御に対して適切なアニメーションを対応させる行動分布を学習する。行動分布の獲得にはGenerative Adversarial Networksを用いる。さらに深層&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%B6%AF%B2%BD%B3%D8%BD%AC"&gt;強化学習&lt;/a&gt;によるfine-tuningによって、外部からの摂動から回復しつつ滑らかな遷移を可能にする。本研究では、ユーザの制御に対する追従性能を計測し、生成された動作を視覚的に分析することでその有効性を評価する。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="Introduction"&gt;Introduction&lt;/h3&gt;&#10;&lt;p&gt;(1)動的環境と物理的に相互作用する能力と，&lt;/p&gt;&#10;&lt;p&gt;(2)参照モーションクリップから学習した自然な動きを採用することで，データ駆動型の物理ベースの制御可能な四足歩行エージェントを提案する．&lt;/p&gt;&#10;&lt;p&gt;複数段階のプロセスからなり、はじめに模倣によってリファレンスモーションを学習、次に速度や向きなどの高度なユーザー制御をGenerative Adversarial Networksを用いたjoint-actionに&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%C3%A5%D4%A5%F3%A5%B0"&gt;マッピング&lt;/a&gt;することを学習する。&lt;/p&gt;&#10;&lt;p&gt;本研究の貢献をまとめると次のようになる。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;高次のユーザ制御と学習した自然な動きを効果的に&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%C3%A5%D4%A5%F3%A5%B0"&gt;マッピング&lt;/a&gt;するための GAN Supervision &lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF"&gt;フレームワーク&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;DRLを用いて訓練された四足歩行エージェントのための物理ベースのコントローラで、アクションラベルを必要とせずに意味のある反応を生成しながら、様々な外部摂動に適応することが可能&lt;/li&gt;&#10;&lt;li&gt;高レベルのナビゲーションモジュールをエージェントに接続する方法&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="Proposed-Method"&gt;Proposed Method&lt;/h3&gt;&#10;&lt;p&gt;本研究では、高度なユーザ制御に追従しながら、外部からの擾乱を受けて自然な動きや反応を生成する物理ベースのコントローラを設計することを目的とする。生成された動きは、リファレンスモーションの動きに似ていれば自然なものと評価する。そのために、コントローラを3段階に分けて学習させる。&lt;/p&gt;&#10;&lt;p&gt;第 1 段階では、リファレンスモーションクリップの自然な動きを模倣学習により物理ベースのコントローラに伝達することを目的としている。これは物理ベースのコントローラが従うべき行動分布を方策ネットワークで学習することで達成される。&lt;/p&gt;&#10;&lt;p&gt;この方策ネットワークはプリミティブネットワークと歩法ネットワークを含み、行動分布を低レベルプリミティブ分布に分解する。結果としてこの方策ネットワークは物理ベースのコントローラが自然な動きを作り出すことを可能にする行動分布を生成し、アニメーションと物理の橋渡しに成功した。&lt;/p&gt;&#10;&lt;p&gt;2つ目の学習段階ではGANコントローラーアダプタを採用し、高レベルの歩法ネットワークが先に学習した自然な行動分布を近似できるようにした。しかし、2つ目の訓練段階では外部摂動がないため、外部からのノイズに対応できない。&lt;/p&gt;&#10;&lt;p&gt;そこで最後に GAN regularized DRL fine-tuning を追加し、コントローラがそのような外部摂動の影響から回復できるようにする。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="関連研究"&gt;関連研究&lt;/h3&gt;&#10;&lt;p&gt;物理ベース制御アニメーションの具体的な方策や実装などについてはこちらのほうが詳しそう&lt;br /&gt;&#10;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fxbpeng.github.io%2Fprojects%2FMCP%2Findex.html" title="MCP: Learning Composable Hierarchical Control with Multiplicative Compositional Policies" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://xbpeng.github.io/projects/MCP/index.html"&gt;xbpeng.github.io&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;</description></item></channel></rss>