hzxie/CityDreamer

The official implementation of "CityDreamer: Compositional Generative Model of Unbounded 3D Cities". (CVPR 2024)

CityDreamer – 無限の3D都市を生成する生成モデル

何ができるか – CityDreamerは、研究用の構成的生成モデルで、無制限かつ写実的な3D都市景観を合成できます。これは、3つの学習済みモジュールを組み合わせることで実現されます:

  1. 無限のレイアウト生成器 – VQ-VAE + 自己回帰サンプラーを使用して、グローバルな都市レイアウト(道路網、街区配置)を生成します。
  2. 背景要素生成器 – 地形、植生、空、建物以外の要素をレイアウトに埋め込みます。
  3. 建物インスタンス生成器 – 各街区に対して詳細な建物ジオメトリとテクスチャを生成します。

このシステムはPyTorch(1.13.1 + CUDA 11.7でテスト済み)に基づいており、推論には1台の高メモリGPU(例:RTX 3090)で動作します。トレーニングはマルチGPU環境を前提としています。


クイックスタート(推論)

  1. インストール – 必要なPyTorchバージョンをインストールし、リポジトリをクローンして pip install -r requirements.txt を実行します。
  2. CUDA拡張のコンパイルextensions/ 内の拡張をコンパイルします(各サブフォルダは pip install . でインストール)。
  3. デモの実行
    python -m demo.run   # http://localhost:3186 でWeb UIが開きます
    
    またはCLIを使用:
    python -m scripts.inference   # output/rendering.mp4 が出力されます
    
    GPUのVRAMが24GB未満の場合、--patch_height / --patch_width を調整してください。

トレーニング(研究用途)

  1. データセット – CityDreamerは2つの大規模データセットを同梱しています:
    • OSM(OpenStreetMap)の道路網データ。
    • GoogleEarthの航空画像とインスタンスセグメンテーションマスク(SEEMで生成)。 両方とも提供されたゲートウェイリンクからダウンロード可能です。
  2. GoogleEarthのアノテーションの準備(約1TB) – SEEMセグメンテーションスクリプトを実行し、その後 scripts/dataset_generator.py を実行します。
  3. 3つのモジュールのトレーニング(各モジュールは torchrun を使用した run.py エントリポイントを使用):
    • レイアウト用VQ-VAE → 4GPU。
    • レイアウト用サンプラー → 2GPU(VQ-VAEチェックポイントを読み込み)。
    • 背景要素生成器 → 8GPU(BUILDING_MODE=False を設定)。
    • 建物インスタンス生成器 → 8GPU(BUILDING_MODE=True を設定)。 設定のカスタマイズは各セクションのREADMEに記載されています。

事前学習済みモデルとリソース

コンポーネント チェックポイント(ダウンロード)
レイアウト生成器(サンプラー) LayoutGen.pth
背景要素生成器 CityDreamer-Bgnd.pth
建物インスタンス生成器 CityDreamer-Fgnd.pth

ライブデモはHugging Face Spacesでホストされており、短いスポットライト動画はYouTubeにリンクされています。


ライセンス

コードは NTU S-Lab License 1.0(リポジトリ内の LICENSE を参照)の下でリリースされています。再配布はこのライセンスの条項に従う必要があります。


開発者

南洋理工大学のS-Labで、謝浩哲、陳兆熙、洪方舟、劉子威が開発しました。本研究はCVPR 2024で発表され、続編(CityDreamer4D)はTPAMIに採択されています。


まとめ – CityDreamerは、大規模かつプロシージャルなリアルな3D都市環境の生成に興味を持つ研究者向けに、データ準備、トレーニングスクリプト、推論デモを含む完全なパイプラインを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト