[Reconstrução 3D] [Aprendizado profundo] Implementação Pytorch do código NeRF no Windows10

[Reconstrução 3D] [Aprendizado profundo] Implementação Pytorch do código NeRF no Windows10

Dicas: Recentemente, comecei a realizar pesquisas sobre [reconstrução 3D], registrar os pontos de conhecimento relevantes e compartilhar as soluções para os problemas encontrados no estudo.



prefácio

O NeRF é proposto por Mildenhall, Beni et al. da University of California, Berkeley no artigo "NeRF: Representing Scenes as
Neural Radiance Fields for View Synthesis [ECCV 2020]" [Endereço do artigo] Um campo de radiação neural 5D é proposto como um cena complexa A representação implícita de , cuja entrada são imagens multiangulares esparsas com poses, é treinada para obter um modelo de campo de radiação neural. Simplificando, inserindo imagens bidimensionais e poses de câmera sob diferentes perspectivas da mesma cena, a modelagem implícita tridimensional da cena é realizada e a imagem da cena sob qualquer nova perspectiva é sintetizada por meio da equação de renderização de voxel .
Antes de analisar a rede NeRF em detalhes, a primeira tarefa é construir o ambiente operacional exigido pelo NeRF [Pytorch-demo address] e concluir o treinamento e teste do modelo, e é significativo iniciar o trabalho de acompanhamento.


execução do modelo NeRF

Baixe o código-fonte e instale o ambiente

Instale o ambiente anaconda no ambiente win10 para facilitar a construção de um ambiente virtual dedicado ao modelo NeRF.
[tutorial de referência recomendado pelo código pytorch]

Instale a versão GPU do tutorial pytorch , a versão pytorch-gpu precisa instalar a versão correspondente de acordo com o computador pessoal.

# 创建虚拟环境
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

Instalação final de todos os pacotes.

Verifique a versão da tocha, a versão da tocha-gpu foi instalada

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

Treinar NeRF

Baixando o conjunto de dados: Ainda é um pouco problemático no sistema win10, você precisa garantir que o host tenha instalado o seguinte ambiente! ! ! Porque você precisa executar o comando bash em win10,
win10 configura wget
win10 configura 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 ..


rede de treinamento

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

conjunto de dados pessoais de treinamento

Para o processo de produção do conjunto de dados pessoais, você pode consultar outra postagem de blog do blogueiro [ Criar seu próprio conjunto de dados NeRF (formato LLFF) baseado em COLMAP ].
Visualize seus próprios conjuntos de dados de imagem e arquivos de pose no diretório /nerf-pytorch/data/nerf_llff_data/;
visualize os arquivos de configuração correspondentes no diretório /nerf-pytorch/configs/.

executar código nerf

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

comece a treinar

Possíveis problemas no Windows:

  1. subprocess.CalledProcessError: Comando 'cp ./data/nerf_llff_data/scene\images/* ./data/nerf_llff_data/XXXX\images_8' retornou status de saída diferente de zero 1.
  2. TypeError: não é possível descompactar o objeto NoneType não iterável

Causa: O arquivo de configuração XXX.Xtxt sob o arquivo config/ define fator=8, o que significa redução de resolução de 8 vezes por padrão, e as imagens reduzidas serão salvas na pasta image_8. Depois que esse processo for concluído, o nerf será iniciado a partir de image_8 Read imagens e usá-las para treinamento. O problema surge no processo de downsampling. Devido a problemas de compatibilidade do sistema, o sistema Windows não pode executar algumas instruções do sistema na função _minify, resultando no primeiro erro, e uma pasta vazia image_8 é gerada durante o processo. Se o código Execute novamente sem modificação. Depois de julgar que a pasta image_8 existe, pule o processo de downsampling e prossiga diretamente para o treinamento subsequente. Portanto, o segundo erro ocorre quando os dados são lidos na pasta image_8 vazia.
No arquivo nerf-pytorch/load_llff.py:
insira a descrição da imagem aqui
altere comentários: escreva um código de redução de resolução e salve-o em 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")

Resumir

Da forma mais simples possível, apresenta detalhadamente o processo de instalação do NeRF e resolve os problemas que possam existir durante o processo de instalação. A seguir, explicarei os princípios e códigos do NeRF com base no conhecimento que adquiri e no meu entendimento pessoal.

Acho que você gosta

Origin blog.csdn.net/yangyu0515/article/details/131081754
Recomendado
Clasificación