[3D再構成] [ディープラーニング] Windows10でのNeRFコードのPytorch実装

[3D再構成] [ディープラーニング] Windows10でのNeRFコードのPytorch実装

ヒント: 最近、[3D 再構築] に関する研究を開始し、関連する知識ポイントを記録し、研究中に遭遇した問題の解決策を共有します。



序文

NeRF は、カリフォルニア大学バークレー校の Mildenhall、Beni らによって、論文「NeRF: Representing Scenes as
Neural Radiance Fields for View Synthesis [ECCV 2020]」で提案されています。 [論文アドレス] 5D 神経放射場は、複雑なシーン の暗黙的表現 (入力はポーズを含むまばらなマルチアングル イメージ) は、神経放射場モデルを取得するためにトレーニングされます。簡単に言うと、同じシーンの異なる視点からの 2 次元画像とカメラ ポーズを入力することによって、シーンの 3 次元暗黙的モデリングが実行され、ボクセル レンダリング方程式を通じて任意の新しい視点でのシーン画像が合成されます。 。
NeRF ネットワークを詳細に分析する前に、最初のタスクはNeRF [Pytorch-デモ アドレス]に必要な動作環境を構築し、モデルのトレーニングとテストを完了することであり、その後の作業を開始することが意味があります。


NeRF モデルの実行

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

win10環境にanaconda環境をインストールし、 NeRFモデル専用の仮想環境の構築を容易にします。
[pytorch コード推奨リファレンス チュートリアル]

GPU 版の pytorch チュートリアルをインストールします。pytorch-gpu 版はパソコンに応じて対応するバージョンをインストールする必要があります。

# 创建虚拟环境
conda create -n nerf_mvs python=3.7
# 查看新环境是否安装成功
conda env list
# 激活环境
conda activate nerf_mvs 
# 下载githup源代码到合适文件夹,并cd到代码文件夹内(科学上网)
git clone https://github.com/yenchenlin/nerf-pytorch.git
cd nerf-pytorch
# 安装pytorch包
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
# 通过清华源,安装其他包(需要删除关于pytorch的部分)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 查看所有安装的包
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())

NeRFを訓練する

データセットのダウンロード: win10 システムではまだ少し面倒です。ホストに次の環境がインストールされていることを確認する必要があります。win10ではbashコマンドを実行する必要があるため、
win10でwgetを設定
win10でgitbashを設定

# 进入nerf-pytorch目录下,需要用linux的目录格式
cd /E/deep-learning-for-image-processing-master/nerf-pytorch
bash download_example_data.sh

# download_example_data.sh内容
wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/tiny_nerf_data.npz
mkdir -p data
cd data
wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/nerf_example_data.zip
unzip nerf_example_data.zip
cd ..


トレーニングネットワーク

# 开始训练网络(lego数据集)
python run_nerf.py --config configs/lego.txt

トレーニング用個人データセット

個人データセットの作成プロセスについては、ブロガーによる別のブログ投稿「COLMAP に基づいて独自の NeRF (LLFF 形式) データセットを作成する」を参照してください。
/nerf-pytorch/data/nerf_llff_data/ ディレクトリにある独自の画像データセットとポーズ ファイルを表示し、
/nerf-pytorch/configs/ ディレクトリにある対応する設定ファイルを表示します。

ナーフコードを実行する

# test_frame.txt:对应的数据集的配置文件
python run_nerf.py --config configs/test_frame.txt

トレーニングを開始する

Windows で考えられる問題:

  1. subprocess.CalledProcessError: コマンド 'cp ./data/nerf_llff_data/scene\images/* ./data/nerf_llff_data/XXXX\images_8' がゼロ以外の終了ステータス 1 を返しました。
  2. TypeError: 反復不可能な NoneType オブジェクトを解凍できません

原因: config/ ファイルの下の構成ファイル XXX.Xtxt は、factor=8 を設定します。これは、デフォルトで 8 回のダウンサンプリングを意味し、ダウンサンプリングされた画像は image_8 フォルダーに保存されます。このプロセスが完了すると、nerf は image_8 から開始されます。画像を作成し、トレーニングに使用します。この問題はダウンサンプリングのプロセスで発生します。システムの互換性の問題により、Windows システムは _minify 関数の一部のシステム命令を実行できず、最初のエラーが発生し、プロセス中に空のフォルダー image_8 が生成されます。コードを再度実行すると、 image_8 フォルダが存在すると判断した後、ダウンサンプリング処理をスキップして次のトレーニングに直接進むため、空の image_8 フォルダにデータを読み込むと 2 番目のエラーが発生します。
nerf-pytorch/load_llff.py ファイル内:
ここに画像の説明を挿入
コメントを変更:ダウンサンプリング コードを記述し、image_8 に保存します。

import cv2
import os
from PIL import Image

images_path = './data/nerf_llff_data/test_frame/images/' # 原图路径
output_dir = './data/nerf_llff_data/test_frame/images_8/' # resize后路径
factor = 8 # 降采样倍数
images_list = os.listdir(images_path)
img = Image.open(images_path + images_list[0])
(W,H) = (img.width,img.height) #[W,H]
print("image_size : ",(W ,H))
# 保存resize后的图片到新文件夹下
for image_name in images_list:
    img = cv2.imread(images_path+image_name)
    img_resize = cv2.resize(img, (int(W/factor), int(H/factor)))
    cv2.imwrite(output_dir + image_name, img_resize)
    print(image_name , " done")
print("all images done")

要約する

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

おすすめ

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