[3D 再構成] [ディープラーニング] Instant-nsr-pl 公式コード Windows 10 での Pytorch 実装

[3D 再構成] [ディープラーニング] Instant-nsr-pl 公式コード Windows 10 での Pytorch 実装

ヒント: Instant-NGP および Pytorch-Lightning フレームワークに基づくニューラル サーフェスの再構築



序文

NeRF は、記事「NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis [ECCV 2020]」の中で、カリフォルニア大学バークレー校のミルデンホール、ベニらによって提案された 5D 神経放射場ですポーズを含むまばらなマルチアングル画像を入力する の暗黙的表現は、神経放射場モデルを取得するためにトレーニングされます。簡単に言うと、同じシーンの異なる視点からの2次元画像とカメラポーズを入力することでシーンの3次元暗黙的モデリングを実行し、ボクセルレンダリング方程式を通じて任意の新しい視点からのシーン画像の合成を実現します。

NeuS は、香港大学の Wang、P らによって論文「NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction [NeurIPS 2021]」[論文アドレス] で提案された新しい神経表面再構成手法です。 2D 画像入力からオブジェクトとシーンを高忠実度に再構築します。簡単に言えば、新しい一次のほぼ不偏な定式化が提案され、マスク監視なしでもより正確な表面再構成が可能になります。

Instant-nsr-pl ネットワークを詳細に分析する前に、最初のタスクは、元のNeRFおよびNeuSの原理とコード分析を理解し、モデルのトレーニングとテスト作業を完了することです。仕事を始めてください。
[独自のデータセットをトレーニングする]


instant-nsr-pl モデルの実行

ソースコードをダウンロードして環境をインストールする

win10環境にanaconda環境をインストールすることで、 Instant-nsr-plモデル専用の仮想環境を簡単に構築できます。
[ pytorch コードのオリジナルのリファレンス チュートリアル]
[ pytorch コードの推奨リファレンス チュートリアル (Windows 環境) ]

pytorch の GPU バージョンのインストールに関するチュートリアル. pytorch-gpu バージョンについては、お使いのコンピューターに応じて、対応するバージョンをインストールする必要があります。

# 创建虚拟环境
conda create -n instant-nsr-pl python=3.8
# 查看新环境是否安装成功
conda env list
# 激活环境
activate instant-nsr-pl
# windows一定要通过网站直接下载
# 下载githup源代码到合适文件夹,并cd到代码文件夹内(科学上网)
git clone https://github.com/bennyguo/instant-nsr-pl.git
# 具体看个人下载的位置xxxxx/instant-nsr-pl
cd instant-nsr-pl
# 安装pytorch包
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 通过清华源,安装其他包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

tiny-cuda-nn のインストールは特殊です。vs2019 または vs2022 をインストールする必要があります。注意: 手順を実行するには、「x64 Native Tools Command Prompt for VS 2019」を管理者モードで開く必要があります。x86 と混同しないでください。エラーは報告されます!

# 个人将tiny-cuda-nn下载在xxxxx/instant-nsr-pl的目录下
cd instant-nsr-pl
git clone --recursive https://github.com/nvlabs/tiny-cuda-nn
cd tiny-cuda-nn/bindings/torch
# 同样需要激活环境
activate instant-nsr-pl
# 安装
python setup.py install

git のダウンロードが常に失敗する場合は、[ tiny-cuda-nn 詳細チュートリアル] の方法を試して tiny-cuda-nn を正常にインストールできます。

tiny-cuda-nn をインストールする場合、対応する cuda は、仮想環境の cuda バージョンではなく、物理マシンに実際にインストールされている cuda バージョン (環境変数に設定された cuda) であることに注意してください。したがって、cuda の物理バージョンと仮想バージョンが一致しないと仮定すると、tiny-cuda-nn が正常にインストールされたとしても、その後トレーニング命令を実行するとエラーが報告されます。

# 查看所有安装的包
pip list
conda list

すべてのパッケージの最終インストール。

torch のバージョンを確認し、torch-gpu のバージョンがインストールされていることを確認します。

# 查看pytorch版本
import torch
print(torch.__version__)
# 查看cuda版本
print(torch.version.cuda)
# 查看cuda是否可用
print(torch.cuda.is_available())
# 查看可用cuda数量
print(torch.cuda.device_count())

トレインインスタント NSR-PL

1. データセットをダウンロードします: [ Google Cloud Disk (ダウンロード アドレス) ] 構成ファイル内のデータに指定されたストレージ パスに従って、Instant-NeuS プロジェクトにロード/フォルダーを作成し、ダウンロードしたオープン ソース データを次の形式に解凍します。ロード/フォルダー。

2. NeRF のトレーニング:

# 训练bmvs_clock数据集
python launch.py --config configs/nerf-blender.yaml --gpu 0 --train dataset.scene=lego tag=lego

トレーニング後の結果は、exp ディレクトリ内の対応するデータ フォルダーに保存されます。

ブロガーは、簡単に表示できるようにビデオを GIF に変換しました。

Meshlab を使用してモデルを表示します。

nerf-blender.yaml を開き、model->mlp_network_config->otype の下の FullyFusedMLP を VanillaMLP に変更して、プライ モデルを作成します。それ以外の場合、プライ ファイルは空の 0 ビット ファイルになります。

3. NeuS のトレーニング:

# 带有mask
python launch.py --config configs/neus-blender.yaml --gpu 0 --train dataset.scene=lego tag=lego 
# 没有mask
python launch.py --config configs/neus-blender.yaml --gpu 0 --train dataset.scene=lego tag=lego system.loss.lambda_mask=0.0

マスク
パースペクティブを使用した表示 (GIF ファイルも非常に大きく、ブログ ファイルで指定されたサイズを超えています):

メッシュラボを使用してモデルを表示:

マスクなし(感覚は同じ)
パース表示:

メッシュラボを使用してモデルを表示:

発生する可能性のある問題

  • 「ImportError: 'torchmetrics.utilities.imports' から名前 '_compare_version' をインポートできません」。torchmetrics パッケージをダウングレードする必要があります。

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torchmetrics==0.11.1
    
  • 「提供された lr スケジューラはMultiStepLRPyTorch の LRScheduler API に従っていません。LightningModule.lr_scheduler_stepカスタム LR スケジューラを使用している場合は、独自のロジックでフックをオーバーライドする必要があります。」、これは torch 2.0 で発生するエラーです。(依存関係パッケージのソース コードを変更してください) ) instant-neus\Lib\site-packages\pytorch_lightning\utilities\types.py コンテンツ:
    ここに画像の説明を挿入します

    LRSchedulerTypeTuple = (torch.optim.lr_scheduler._LRScheduler, torch.optim.lr_scheduler.ReduceLROnPlateau)
    修改为
    LRSchedulerTypeTuple = (torch.optim.lr_scheduler.LRScheduler, torch.optim.lr_scheduler.ReduceLROnPlateau)
    
  • "subprocess.CalledProcessError: Command '['where', 'cl']' returns non-zero exit status 1. "、cl.exe 環境変数を設定します。

    独自のインストール パスに従って環境を構成します。

    # 在环境变量中Path添加路径(博主的):
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64;
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE
    # 在环境变量中新建INCLUDE变量,再添加(英文分号隔开):
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE;
    C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;
    C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;
    C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
    # 在环境变量中新建LIB变量,再添加(英文分号隔开):
    C:\Windows Kits\10\Include\10.0.19041.0\shared
    C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;
    C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64
    


    cl on cmd と入力して、構成が成功したかどうかを確認します。

  • 最初のプロンプトは「subprocess.CalledProcessError: Command '['ninja', '-v']' returns non-zero exit status 1.」で、その後に「ninja: build stop: subcommand failed.」が続き、仮想メモリを増やします。 :

    システム設定で仮想メモリ サイズを変更し、ホストを再起動して有効にします。

  • 前のプロンプトは「OSError: [WinError 1455] ページ ファイルが小さすぎるため操作を完了できません。」同様に、仮想メモリを増やすか、以前に追加した仮想メモリでは不十分です。

  • include/tiny-cuda-nn/cutlass_matmul.h:332 status failed with error Error Internal」。ブロガーの状況はホストごとに異なるため、構成 yaml ファイル内の FullyFusedMLP のすべて (または一部) を VanillaMLP に置き換えるだけです。 、 奇妙な。


要約する

instant-nsr-pl のインストール プロセスをできるだけ簡単かつ詳細に紹介し、インストール プロセス中に発生する可能性のある問題を解決します。後で、私が学んだ知識と個人的な理解に基づいて、Instant-nsr-pl の原理とコードを説明します。

おすすめ

転載: blog.csdn.net/yangyu0515/article/details/131945195