neuralangelo论文复现(Nvidia)

记录在论文复现过程中遇到的一些问题和解决方法

文献:https://research.nvidia.com/labs/dir/neuralangelo/?ref=blog.runpod.io

github代码:https://github.com/nvlabs/neuralangelo?tab=readme-ov-file

这里需要强调一下,本项目的显存需求大,低性能卡带不动,我是用的是RTX 3090显卡

1.项目安装

# 1.将项目克隆到本地
git clone https://github.com/NVlabs/neuralangelo
cd neuralangelo

# 2.安装虚拟环境和依赖
conda env create --file neuralangelo.yaml
conda activate neuralangelo

安装虚拟环境和依赖我选择Anaconda安装虚拟环境,出错易修改;
这里遇到两个问题:

1.依赖库的版本冲突,根据文件neuralangelo.yaml安装的虚拟环境里面已经安装了python3.8,这里我的系统python是3.7,在查询python版本时还是3.7,因此这里需要在.bashrc中配置环境变量,重新启用虚拟环境时就是python3.8了;

vim ~/.bashrc
# 插入
export PATH="~/anaconda3/envs/neurangelo/bin":$PATH
source ~/.bashrc

2.安装tiny-cuda-nn失败,失败的代码块就是这行;

# neuralangelo.yaml
  - pip:
    - -r requirements.txt
# requirement.txt
git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

这里失败的原因是gcc版本太低,需要升级高版本的gcc,我的系统是Ubuntu18.04,gcc版本是7.5.0,这里需要更新到9.0以上版本,并不是官方文档的8.0以上版本就行,服务器在没有root权限下升级gcc可以参考这篇文章:https://blog.csdn.net/weixin_52703185/article/details/141964767。

2.数据预处理

(1)首先安装colmap,我是用的是conda安装,在训练过程中暂时没遇到问题;

conda install colmap

(2)初始化colmap模块

git submodule update --init --recursive

(3)预处理,将视频文件放到neurlangelo文件中

SEQUENCE=lego
PATH_TO_VIDEO=lego.mp4
DOWNSAMPLE_RATE=2
SCENE_TYPE=object
bash projects/neuralangelo/scripts/preprocess.sh ${SEQUENCE} ${PATH_TO_VIDEO} ${DOWNSAMPLE_RATE} ${SCENE_TYPE}

3.运行neurangelo

EXPERIMENT=toy_example
GROUP=example_group
NAME=example_name
CONFIG=projects/neuralangelo/configs/custom/${EXPERIMENT}.yaml
GPUS=4  # use >1 for multi-GPU training!
torchrun --nproc_per_node=${GPUS} train.py \
    --logdir=logs/${GROUP}/${NAME} \
    --config=${CONFIG} \
    --show_pbar

这里的训练过程是不会自动结束,因为在配置文件中设置的迭代次数是9999999999999,需要手动结束,结束后也可以回复训练,需要添加–chechpoiont和–resume参数:

EXPERIMENT=toy_example
GROUP=example_group
NAME=example_name
CONFIG=projects/neuralangelo/configs/custom/${EXPERIMENT}.yaml
CHECKPOINT_PATH=logs/example_group/example_name/xxx.pt
GPUS=4  # use >1 for multi-GPU training!
torchrun --nproc_per_node=${GPUS} train.py \
    --logdir=logs/${GROUP}/${NAME} \
    --config=${CONFIG} \
    --show_pbar
    --checkpoint=${CHECKPOINT_PATH} \
    --resume

4.isosurface extraction

CHECKPOINT=logs/${GROUP}/${NAME}/xxx.pt
OUTPUT_MESH=xxx.ply
CONFIG=logs/${GROUP}/${NAME}/config.yaml
RESOLUTION=2048
BLOCK_RES=128
GPUS=4  # use >1 for multi-GPU mesh extraction
torchrun --nproc_per_node=${GPUS} projects/neuralangelo/scripts/extract_mesh.py \
    --config=${CONFIG} \
    --checkpoint=${CHECKPOINT} \
    --output_file=${OUTPUT_MESH} \
    --resolution=${RESOLUTION} \
    --block_res=${BLOCK_RES}

最后生成.ply文件,可以使用MeshLab打开,到这就可以看到一个效果了。

作为AI语言模型,我无法直接为您复现SCI论文,但我可以提供以下有关电力负荷预测的SCI论文及其实现的参考: 1. Li, X., Yang, L., & Zhang, Q. (2017). Short-term load forecasting using extreme learning machine and a hybrid approach. Electric Power Systems Research, 142, 11-20. 该论文采用极限学习机和混合方法进行短期负载预测。极限学习机是一种基于单个隐含层前向反馈神经网络的快速学习算法。混合方法结合了时序分解和回归方法,通过分析负载数据的季节性和趋势性变化来预测负载。 2. Wang, J., Wang, Q., Lu, X., Huang, Z., & Wu, Y. (2016). A new short-term load forecasting method based on extreme learning machine and multi-objective optimization algorithm. Energy, 114, 1141-1149. 该论文提出了一种基于极限学习机和多目标优化算法的新型短期负载预测方法。该方法使用多目标优化算法对模型进行调优,并采用交叉验证和残差分析来验证模型的预测性能。 3. Chen, J., Hong, T., & Pinson, P. (2018). Probabilistic load forecasting using deep learning feed-forward neural networks. IEEE Transactions on Smart Grid, 9(2), 770-779. 该论文采用深度学习前馈神经网络技术进行随机负载预测。该方法将负载数据看作是随机变量,通过训练神经网络来学习每个随机变量的概率分布,从而实现概率负载预测。 4. Akter, M., & Mahmud, M. A. (2019). Electrical load forecasting using artificial neural network and particle swarm optimization: A comparative study. Alexandria Engineering Journal, 58(3), 997-1006. 该论文对比了采用人工神经网络和粒子群优化的电力负载预测方法。研究表明,采用粒子群优化的方法可以提高预测精度,并降低误差率。 以上是一些常见的电力负荷预测SCI论文及其方法介绍,您可以结合自己的研究方向和需求进行选择和参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值