Composition Rendering:Blenderによる学習データ生成ツール

機械学習手法が進化して学習画像の要件が従来とは変わってきたのか、ここ最近は360度周回画像(動画)やCGレンダリングの各成分を学習データとして書き出すツールが増えてきましたね。

Composition RenderingはBlenderをラップしたPythonツール。

Composition Rendering (Blender Data Generator)

平面上に複数の3Dオブジェクトを配置し、BlenderのCyclesでレンダリングして合成画像データセットを生成します。このパイプラインは、オブジェクトのランダム配置、マテリアル、HDRI環境ライティング、数種類のカメラ/ライトのモーションモードをサポートしています。
RGB画像に加え、各成分(法線、深度、アルベド、粗さ、メタリック)とフレームごとのメタデータの出力に対応しています。
生成されたデータはDiffusion RendererUniRelightLuxDiTなどの生成レンダリングモデルの学習に使用できます。

注: このリポジトリは、Diffusion Rendererで使用されるデータ生成パイプラインをBlenderベースで再実装したものです。一部のレンダリングバッファは元の実装と異なる場合があります。


主な機能

  • アセットの組み合わせ:GLB/GLTF/OBJアセットに加え、オプションの基本シェイプを衝突無くグリッド状に地面上に配置できます。
  • ライティング:HDRI環境マップ(EXR/HDR)をサンプリングし、オプションで反転、回転、露出のスケーリングが可能です。
  • カメラ/モーション:周回カメラ、振動カメラ、周回環境ライト、オブジェクトの回転、オブジェクトの垂直移動、ドリー/ズームが可能です。
  • 出力:RGB、法線、深度、アルベド、粗さ、メタリック、カメラと環境パラメータを含むmeta.json。オプションで(環境投影、配置グリッド、.blend)もデバッグ出力できます。
  • 物理演算ベースのオブジェクト落下シミュレーション:Blenderの剛体シミュレーションを使用して、シーン内のオブジェクトを地面に落下させ、短いシーケンスをレンダリングできます。



Blenderの機能をPythonモジュールとして呼び出せるAPI bpyモジュールをラップした簡易ライブラリもいくつかありますが、


bpy-renderer:レンダリング用Pythonパッケージ
機械学習用のデータセット作成にBlenderが利用されるケースは多いのだろうか。以前もBlender(bpyモジュール)をラップしたライブラリを紹介しましたが、bpy-rendererはRGB、法線、深度、セマンティックマップ、3Dシーンや...


Blender自体をラップする方がデバッグ時にGUIを利用できて便利なのだろうか。(だいぶ強引な実装方法にも感じるけど)
BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール
機械学習用の画像データをCGで生成するのもData Augmentation(データ拡張)の範疇でしょうか。物体や風景画像だけでなく、Depthや物体ラベル、Semantic Segmentation用のアノテーション画像も必要となると、C...


BlenderはGUIアプリケーションだけど、コマンドラインからオプション引数を使ってヘッドレスに動作させることもできて、ファイルを渡したりScriptをBlender内部のPython環境で実行できるから、活用範囲は広い。
https://caretdashcaret.com/2015/05/19/how-to-run-blender-headless-from-the-command-line-without-the-gui/
https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html

そういえば以前BlenderのPython環境にPyTorchをインストールしてみたことがあったな。
BlenderのPython環境にPyTorchをインストールする
多くのDCCツールがPythonスクリプト環境を提供している反面、対応しているのはPython2.x系ばかりで最近流行りのディープラーニングフレームワークが使えない。(Python2.x系は2020年1月1日でサポート終了のはずだが)そんな...

関連記事

OpenCVで動画の手ぶれ補正

Fast R-CNN:ディープラーニングによる一般物体検出手...

Gource:バージョン管理の履歴を可視化するツール

ラクガキの立体化 進捗

Iridescence:プロトタイピング向け軽量3D可視化ラ...

3D映画のポストプロダクション 2D-3D変換

3DCG Meetup #4に行ってきた

OpenMesh:オープンソースの3Dメッシュデータライブラ...

ZBrushでアヴァン・ガメラを作ってみる

NumSharp:C#で使えるNumPyライクな数値計算ライ...

OpenGVの用語

ZBrush 2021.6のMesh from Mask機能...

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン ...

Math Inspector:科学計算向けビジュアルプログラ...

2012のメイキングまとめ(途中)

スクラッチで既存のキャラクターを立体化したい

SIGGRAPH論文へのリンクサイト

Unreal Engine 5の情報が公開された!

映画『ミュータント・タートルズ』を観てきた

ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ...

物理ベースレンダリングのためのマテリアル設定チートシート

ZBrushの作業環境を見直す

科学技術計算向けスクリプト言語『Julia』

konashiのサンプルコードを動かしてみた

iOSで使えるJetpac社の物体認識SDK『DeepBel...

Faster R-CNN:ディープラーニングによる一般物体検...

Mechanizeで要認証Webサイトをスクレイピング

3Dグラフィックスの入門書

オープンソースの顔認識フレームワーク『OpenBR』

第20回 文化庁メディア芸術祭『3DCG表現と特撮の時代』

Mean Stack開発の最初の一歩

Unity ARKitプラグインサンプルのドキュメントを読む

ZBrushで仮面ライダー3号を造る 仮面編 Dam Sta...

この連休でZBrushの スキルアップを…

ブログをGoogle App EngineからAmazon ...

ZBrushのZmodelerとDynamic Subdiv...

Cartographer:オープンソースのSLAMライブラリ

グローバルイルミネーションに手を出す前に、やり残したことがあ...

Geogram:C++の3D幾何アルゴリズムライブラリ

AmazonEC2のインスタンスをt1.microからt2....

Shader.jp:リアルタイム3DCG技術をあつかうサイト

顔画像処理技術の過去の研究

コメント