This project implements efficient 3D reconstruction and novel view synthesis using TensoRF, a tensor decomposition-based variant of Neural Radiance Fields (NeRF).
TensoRF significantly accelerates training and rendering by replacing NeRF’s dense MLP with compact tensor factorization, while maintaining high-quality reconstruction.
We use this framework to reconstruct real-world objects from multi-view images captured with a handheld smartphone, and visualize the reconstruction via novel view rendering.
The real-world dataset used in this project, along with COLMAP-processed poses and the resulting outputs, can be downloaded via the following link:
🔗 Baidu Netdisk Download – TensoRF Dataset and Results (extraction code: 9buk
)
🔗 Official TensoRF repo: https://github.com/apchenstu/TensoRF
-
train.py
The main training script that initializes the tensor field, sets up loss functions, and performs optimization over iterations. -
renderer/
Contains rendering utilities and volumetric rendering logic using the decomposed tensor components. -
models/
Implements the TensorVMSplit and TensorCP models used for representing the radiance field via low-rank tensor factorization. -
opt/
Contains optimization tools, learning rate schedulers, and loss functions, including:- TV Loss for regularizing appearance and density fields.
- SSIM and PSNR tracking for quality evaluation.
-
configs/
YAML configuration files for different experiments (resolution, backbone, dataset, loss weights, etc.). -
scripts/
Shell scripts or command-line examples for launching training on different datasets. -
test/
Contains rendering and evaluation scripts for novel view synthesis after training.
- Capture multi-view images of an object with overlapping views using a handheld smartphone.
- Use COLMAP to compute accurate camera poses.
- Organize the images and camera intrinsics in NeRF-compatible format (e.g., LLFF-style or synthetic layout).
- Resize images to a consistent resolution (optional, for speed).
- Split dataset into training and test sets (e.g., 80/20).
-
Edit the YAML config (e.g.,
configs/hotcrush_tensorf.yaml
) to specify:- Dataset path
- Model type:
TensorVMSplit
orTensorCP
- Number of iterations
- Loss weights for TV, appearance, and density
- Logging intervals
-
Run training:
python train.py --config configs/hotcrush_tensorf.yaml