/READ

AAAI2023,implementation of "READ: Large-Scale Neural Scene Rendering for Autonomous Driving", the experimental results are significantly better than Nerf-based methods

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

READ: Large-Scale Neural Scene Rendering for Autonomous Driving

Commercial use is forbidden

Paper: https://arxiv.org/abs/2205.05509 (Old version)

Video: Bilibili Bilibili2 Youtube

Demo: (Use only one camera view for training)

All you need is a series of images or videos as input to get the following effect. Scenes are not only limited to driving scenes, but also can be used for tourism scenes, indoor scenes, objects, etc.

Overview:

This is the code release for our AAAI2023 paper, PyTorch implementation of Large-Scale Neural Scene Rendering for Autonomous Driving(READ), a large-scale neural rendering method is proposed to synthesize the autonomous driving scene~(READ), which makes it possible to synthesize large-scale driving scenarios on a PC. Our model can not only synthesize realistic driving scenes but also stitch and edit driving scenes. contents

Setup

The following instructions describe installation of conda environment. Please refer to requirement.

If you want to set it to headless mode(without X server enabled), see the MyRender in the src folder.

Note: This project needs to use the screen to run the script, if not, run the project in src folder.

Run this command to install python environment:

cd src/MyRender
pip install -v -e .  

Run

You can render one of the fitted scenes we provide right away in the real-time viewer or fit your own scene.

Download fitted scenes and universal rendering network weights from here and unpack in the Data directory.

We suppose that you have at least one GeForce GTX 1080 Ti for fitting and inference.

Use fitted scene

Here we show an example how to run fitted scenes in the viewer.

kitti6

python viewer.py --config downloads/kitti6.yaml

Viewer navigation:

  • Move forward: w
  • Move backward: s
  • Move left: a
  • Move right: d
  • Rise: q
  • Fall: e
  • Turn to the left: 1
  • Turn to the right: 2
  • Turn to the up: 3
  • Turn to the down: 4
  • Rotation: press left mouse button and drag
  • Move: press rigth mouse button and drug / scroll middle mouse botton
  • Pan: press middle mouse button and drug

Train

python train.py --config configs/train_example.yaml --pipeline READ.pipelines.ogl.TexturePipeline --crop_size 256x256

The size of crop_size depends on your GPU memory, and the parameter train_dataset_args can be adjusted in the configs folder.

Train with your own data

It's very simple. You just need a sequence of pictures to do it.

  1. Use metashape to obtain camera.xml, pointcloud.ply
  2. Place the above files and photos in the Data folder, for example, Data/image/xx.png, Data/camera.xml Data/pointcloud.ply
  3. Change the folder address in configs/paths_example.yaml and load net_ckpt/texture_ckpt model address in configs/train_example.yaml, if any.
  4. Run the code: python train.py --config configs/train_example.yaml --pipeline READ.pipelines.ogl.TexturePipeline --crop_size 256x256

Scene Editing:

READ can move and remove the cars in different views. A panorama with larger view can be synthesized by changing the camera parameters. contents

Scene Stitching:

READ is able to synthesize the larger driving scenes and update local areas with obvious changes in road conditions. contents

Novel View Synthesis:

contents

Acknowledgments

In this code we refer to the following implementations: npbg and MIMO. Great thanks to them!

Citation

If our work or code helps you, please consider to cite our paper. Thank you!

@inproceedings{li2022read,
  author = {Li, Zhuopeng and Li, Lu and Zhu, Jianke*},
  title = {READ: Large-Scale Neural Scene Rendering for Autonomous Driving},
  booktitle = {AAAI},
  year = {2023}
}