投稿

IBRNet: Learning Multi-View Image-Based Rendering (CVPR2021)

イメージ
 以前紹介した NeRF は,Radiance Fieldを学習することで高品質な自由視点映像を生成することが可能だが,Radiance Fieldの学習には多くの計算コストを必要とするという問題がある.そのため,解像度を上げることや大規模なシーンへの適用が難しいというスケーラビリティの問題があった.IBRNetはこのようなNeRFのスケーラビリティの問題を解決するためのアルゴリズムとなっている. IBRNet: Learning Multi-View Image-Based Rendering https://ibrnet.github.io/ IBRNetはNeRFなどの多くの学習ベースの自由視点画像生成アルゴリズムで必要となる対象シーン毎の学習が不要なアルゴリズムである.NeRFでは対象となるシーンの学習に十数時間から数日の時間を要していたのに対して,IBRNetでは即座に自由視点画像の生成を行うことができる.(ただし,Rendering部分はほぼ同じなので,リアルタイム処理は実現できないと思う) 基本的なアイデアは,Classicalな自由視点画像生成アルゴリズムであるImage-based renderingのように生成する視点の周辺で撮影されている画像群のみを用いて新視点画像を生成するというものである.これを実現するために,近傍の視点画像のブレンディングによってVolume Renderingに必要なRGB-σの情報を生成するネットワークを構築するというものである.ネットワークの概要は以下のようになっている. 各視点画像のカメラパラメータ(内部,外部)は既知で,各視点画像はRGBの色情報の他にU-Net上のネットワークを用いて抽出されたDense Feature f を持っている.IBRNetでは,対象となる視点から光線を飛ばし,この光線上をサンプルした点の位置,方向に対応するRGB-σの値を出力する.RGB-σの値は,まず,サンプルした点を近傍の視点画像上へ投影し対応する画像特徴を算出する.各画像特徴は局所的な特徴を表現しているが,自由視点画像を生成するためには大局的な特徴も重要であるため,画像特徴の各要素の平均 μ と分散 v を算出しネットワークの入力にする.これにより局所的,大局的双方を考慮し...

Learning Formation of Physically-Based Face Attributes (CVPR2020)

イメージ
 高品質な顔の三次元モデルを生成する研究.モデルは顔の外形(形状とテクスチャ)と目や歯などのアセットに分けて生成される.この論文では顔の外形の生成に着目し,Neural Networkを用いて4k画質のテクスチャを生成することを実現している. Learning Formation of Physically-Based Face Attributes https://vgl.ict.usc.edu/Research/Deep3DMM/ 顔のモデル生成では幾何形状とテクスチャをそれぞれ別で生成し,後から統合する方法が主流だが,この研究では双方を同時に生成するアプローチとなっている.モデルの生成はLatent Vectorを用いて制御され,直感的な操作を実現するために学習の際はブレンドシェイプの重みとLatent Vectorが出来るだけ対応するように工夫がなされている. また,顔形状に関しては,各頂点の位置をHDR画像の画素の値として保持することで,Neural Networkで処理をおこなっている.生成されるモデルは形状,Diffuse map, Specular map, Displacement mapでテクスチャマップは4k解像度となっている.この解像度は映像制作の場で必要とされる最低限の解像度を満たしているとのこと. コードは公開されていないが,学習によって得られたモデルはICT-Facekitとしてgithub上で公開されている.ただし,テクスチャの生成は公開されているモデルには含まれておらず,幾何形状のみの生成が可能となっている. ICT-FaceKit https://github.com/ICT-VGL/ICT-FaceKit

RGB2Hands: Real-Time Tracking of 3D Hand Interactions from Monocular RGB Video (SIGGRAPH Asia 2020)

イメージ
 RGB2HandsはComputer Graphics関連のトップ会議SIGGRAPH Asia 2020で発表された論文で,単眼カメラ映像から両手の位置と姿勢をリアルタイムで推定するアルゴリズムである. RGB2Hands: Real-Time Tracking of 3D Hand Interactions from Monocular RGB Video https://handtracker.mpi-inf.mpg.de/projects/RGB2Hands/ 動画を見てわかるように,他方の手でオクルージョン(遮蔽)が起こった場合にも頑健にトラッキングが出来ていることが分かる. 手のテンプレートモデルを利用したトラッキングアルゴリズムとなっているが,以下のような工夫がなされている. 単眼カメラからの奥行推定 モデルとの密なマッチング 手のキーポイントの利用 左右の手の判定 また,推定された奥行からは両手の間の距離(Inter-Hand)と各手首からの距離(Intra-Hand)特徴を抽出し利用している.これらの情報を統合することで,頑健かつリアルタイムのトラッキング処理を実現している.

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020)

イメージ
 このブログでは,Computer Vision (CV)やComputer Graphics (CG)関連の論文について,(できれば)1日1本簡単に紹介していけれぼと思っています. ということで,初回は,昨年の3月に論文が公開され,話題となったNeRF: Representing Scenes as Neural Radiance Fields for View Synthesisについて簡単に紹介しようと思います. https://www.matthewtancik.com/nerf NeRFはarXivに論文が公開されたのは2020年3月でしたが,発表自体は2020年8月のEuropean Conference on Computer Vision (ECCV)でした.ただし,早々にコードもgithubに公開されていたことから,2021年3月現在でかなり多くの発展手法が提案されています. https://github.com/yenchenlin/awesome-NeRF また,NeRFの著者自身も,NeRFの改良手法を色々と提案しています.(このスピード感は凄まじい...) https://jonbarron.info/ NeRFは新視点画像生成の研究で,従来の新視点画像生成と異なり,対象となるシーンの3次元形状を陽に求めることなく,対象となる空間の5次元(位置x, y, zと方向θ, Φ)に対応するRadiance Field (色RGBとその透過度σ)をNeural Networkによって学習する手法となっています. 入力としては,複数枚の撮影画像とその画像を撮影したカメラのパラメータ(位置,姿勢などの外部パラメータと焦点距離などの内部パラメータ)となっています.NeRFでは新視点画像生成にVolume Renderingのアルゴリズムを利用することを想定しており,学習時にはデータセットの中からいくつかの視点の画像をGround Truth (GT)の画像として利用し,生成した画像とGT画像が一致するように学習を進めていきます.学習時には,ターゲットとなる視点における各画素に対応する光線上の点をサンプリングし,各サンプル点の位置と視点への方向に応じたRGB-σを推定していきます.この際に,位置,方向をそのまま利用すると生成画像において高周波成分が...

NeRF--: Neural Radiance Fields Without Known Camera Parameters

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (ECCV2020) の発展版でNeRFと異なりカメラの内部、外部パラメータも推定する手法の提案。NeRFに関する説明は、既に色々とあるのでそちらを参照。 [解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 三次元空間のニューラルな表現とNeRF 基本的には、NeRFなどの新視点画像を生成の研究では、多くの場合、前処理としてStructure-from-Motionなどによって撮影画像のカメラの内部パラメータ(焦点距離や画像中心座標など)および外部パラメータ(回転、併進)を推定しておくことが必要となっている。これに対して、 NeRF--: Neural Radiance Fields Without Known Camera Parameters では新視点画像を生成するためのネットワークの学習時にカメラの内部、外部パラメータも推定してしまおうという研究。 アイデアは単純でカメラの内部、外部パラメータも推定対象としてネットワークを学習するというもの。ただし、内部パラメータは歪無し、光学中心と画像中心の座標は一致している、というもので内部パラメータは焦点距離fx,fyの2パラメータで表現されている。また、全てのフレームにおいて内部パラメータは共通(Shared Intrinsics)を仮定している。 推定処理は多段階になっており、各ステップでNeRFのモデルとカメラの内部、外部パラメータを推定する。ステップを進める際には、カメラのパラメータのみ推定値を保持し、NeRFのモデルについては初期化して学習を行う。これにより、カメラのパラメータが徐々に最適化される仕組みになっており、NeRFのモデルを各ステップで初期化して用いることで局所解の問題をできるだけ回避するようにしているらしい。 実験結果を見ると上手くパラメータの推定が出来ており、COLMAPの推定結果と比較しても同等の結果が得られていることが分かる。ただし、以下のような制約が現状はある模様。 カメラの運動に関しては、姿勢はあまり変化せず、併進が主で同一平面状を運動してい...

vcpkg: C++ パッケージ マネージャー

イメージ
これまでは、C++の開発をする際にOpenCVなどのライブラリを自前でビルドして準備し、リンクして使っていた。ただ、このやり方だと、バージョンやビルドオプションの問題が度々起き、時間を溶かすことが多かった。 今回、vcpkgというC++のパッケージマネージャーを使って開発環境を整えることをやってみた。vcpkgで提供されているライブラリは全てVisual Studio 2015、Visual Studio 2017、Visual Studio 2019 との互換性がテストされているそうで、Visual Studioを使って開発している自分にとってはとても都合が良い。 vcpkgを使うための手順は以下の通り。 vcpkgを以下より取得する。 https://github.com/Microsoft/vcpkg 取得したディレクトリにある"bootstrap-vcpkg.bat"を実行する。実行後に"vcpkg.exe"が生成される。 必要なライブラリをインストールする。以下はOpenCVの場合。 vcpkg install opencv4[cuda,world,openmp]:x64-windows Visual Studioに統合するために、コマンドプロンプトで以下を実行する。 vcpkg.exe integrate install Visual Studioで適当なプロジェクトを作成し、プロジェクトのプロパティを開くと以下のようにvcpkgの項目が見えるようになる。また、ヘッダのパスやライブラリのパスなどを手動で設定することなく、#include<opencv2/opencv.hpp>すると自動でヘッダが見つかりOpenCVが利用できるようになっていることが確認できる。 簡単に開発環境の準備が出来てとても良い。ただ、今回OpenCVをインストールしてみたけれど、かなり時間がかかった。(計測していないけれど1時間以上はかかる) また、バカみたいに容量が増えていくので、定期的にvcpkgのディレクトリにあるdownloadsやbuildtreesを削除した方が良いかも。

Photogrammetry (COLMAP + OpenMVS)

イメージ
 以前、Meshroomを使って複数枚の画像から三次元復元を行うPhotogrammetryを行った。 Photogrammetry:  https://moitkfm.blogspot.com/2019/08/photogrammetry.html 今回は、COLMAPとOpenMVSを使ってPhotogrammetryを行ってみる。というのも、以下の記事にあるように、カメラポーズの復元と疎な復元をCOLMAPで行い、密な復元をOpenMVSで行うという組み合わせが復元されるモデルの品質を向上させるためにはよさそうなため。これは、COLMAPはStructure-from-Motionのライブラリであり、疎な復元に特化しており、逆にOpenMVSは既知のカメラポーズを入力としたMulti-View Stereoに特化したライブラリだからだと思う。 COLMAP、OpenMVSはどちらもビルド済みの実行ファイルが公開されているので、上記のパイプラインを試すのはとても簡単。 COLMAPの実行ファイル:  https://github.com/colmap/colmap/releases OpenMVSの実行ファイル: https://github.com/cdcseacave/openMVS_sample/releases/tag/v0.7a また、COLMAPとOpenMVSを使ったパイプラインについては、以下のページにバッチファイルが公開されている。 COLMAP + OpenMVS scripts: https://peterfalkingham.com/2018/04/01/colmap-openmvs-scripts-updated/ ただし、27行目の"--export_path"となっている部分は"--output_path"と修正する必要がある。修正したスクリプトは以下の通り。12行目、15行目、18行目のCOLMAPとOpenMVSへのパス、作業ディレクトリへのパスは各自の環境に併せて修正する必要がある。 ::These parameters are specific to computer ::Store current Directory: set...