All Projects → mworchel → svbrdf-estimation

mworchel / svbrdf-estimation

Licence: MIT license
SVBRDF Estimation using a Physically-based Differentiable Renderer

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language
Batchfile
5799 projects
shell
77523 projects

Projects that are alternatives of or similar to svbrdf-estimation

platonicgan
Escaping Plato’s Cave: 3D Shape from Adversarial Rendering [ICCV 2019]
Stars: ✭ 40 (+150%)
Mutual labels:  computer-graphics, differentiable-rendering
dsge
Course on Dynamic Stochastic General Equilibrium (DSGE): Models, Solution, Estimation (graduate level)
Stars: ✭ 41 (+156.25%)
Mutual labels:  estimation
Multimodal-Shape-Completion
code for our ECCV 2020 spotlight paper "Multimodal Shape Completion via Conditional Generative Adversarial Networks"
Stars: ✭ 73 (+356.25%)
Mutual labels:  computer-graphics
ALIGNet
code to train a neural network to align pairs of shapes without needing ground truth warps for supervision
Stars: ✭ 58 (+262.5%)
Mutual labels:  computer-graphics
FunMirrors
This is a fun project I created to motivate computer vision enthusiasts and to highlight the importance of understanding fundamental concepts related to image formation in a camera.
Stars: ✭ 43 (+168.75%)
Mutual labels:  computer-graphics
Anime4K-rs
An attempt to write Anime4K in Rust
Stars: ✭ 104 (+550%)
Mutual labels:  computer-graphics
weekend-raytracer-zig
A Zig implementation of the "Ray Tracing in One Weekend" book
Stars: ✭ 74 (+362.5%)
Mutual labels:  computer-graphics
creative-coding-notebooks
🎨 An authorial collection of fundamental recipes on Creative Coding and Recreational Programming.
Stars: ✭ 17 (+6.25%)
Mutual labels:  computer-graphics
visionmagic
Collection of vision & graphics algorithms
Stars: ✭ 39 (+143.75%)
Mutual labels:  computer-graphics
DeepSIM
Official PyTorch implementation of the paper: "DeepSIM: Image Shape Manipulation from a Single Augmented Training Sample" (ICCV 2021 Oral)
Stars: ✭ 389 (+2331.25%)
Mutual labels:  computer-graphics
Texturize
A unified framework for example-based texture synthesis, developed alongside my master's thesis.
Stars: ✭ 15 (-6.25%)
Mutual labels:  computer-graphics
poinz
Distributed Planning Poker
Stars: ✭ 105 (+556.25%)
Mutual labels:  estimation
Im2Vec
[CVPR 2021 Oral] Im2Vec Synthesizing Vector Graphics without Vector Supervision
Stars: ✭ 229 (+1331.25%)
Mutual labels:  computer-graphics
Monte-Carlo-Path-Tracer
A realistic Monte Carlo Path Tracer project for CS230 (Virtual Reality and Interactive 3D Graphics Display), ACM Class, SJTU
Stars: ✭ 19 (+18.75%)
Mutual labels:  computer-graphics
Pulp-Fiction-ARKit
An experiment using Volume to reconstruct Pulp Fiction's dance scene in Augmented Reality
Stars: ✭ 46 (+187.5%)
Mutual labels:  computer-graphics
unity-raymarcher
Real-time ray marching shaders in Unity
Stars: ✭ 28 (+75%)
Mutual labels:  computer-graphics
cinema4d py sdk extended
The official Python API examples for Cinema 4D.
Stars: ✭ 95 (+493.75%)
Mutual labels:  computer-graphics
-
图形学书单
Stars: ✭ 84 (+425%)
Mutual labels:  computer-graphics
Metu-CENG
All the homeworks, studies and projects I've done at Metu-CENG
Stars: ✭ 32 (+100%)
Mutual labels:  computer-graphics
SoftwareRenderer
Soft-only 3d renderer.
Stars: ✭ 12 (-25%)
Mutual labels:  computer-graphics

SVBRDF Estimation using a Physically-based Differentiable Renderer

This is the repository to the WS 19/20 computer graphics project "SVBRDF Estimation using a Physically-based Differentiable Renderer" at Technische Universität Berlin (Technical University of Berlin).

In the course of this project, the differentiable path tracer Redner [1] was integrated into the deep network-based SVBRDF estimation pipeline by Deschaintre et al. [2][3].

This repository contains custom PyTorch implementations of the single-view [2] as well as the multi-view method [3]. I used the reference code as a guidance.

Getting Started

In order to use the code, you will first need to set up an environment containing the required dependencies.

If your are using conda, simply run

conda env create -f development/multiImage_pytorch/environment.yml

If you are using pip, you can install the requirements by running

pip install -r development/multiImage_pytorch/requirements.txt 

Warning: While you will be able to run the code using the official pip package of Redner, the custom patch sampling camera (see documentation) will not be used. In order to enable this feature, you need to manually build and install Redner from source using the full-patch-sample-camera branch which is based on Redner 0.3.14.

To run the training procedure on the toy dataset, execute the following scripts in the folder development/multiImage_pytorch

./train.bat # on Windows
./train.sh  # on Linux-based systems

The trained model can by tested by running

./test.bat # on Windows
./test.sh  # on Linux-based systems

Implementation Details

The folder development/multiImage_pytorch contains the main entry point of the custom implementation. The script main.py can be used for training und (very basic) testing of the single-view model. Its usage is roughly outlined in the scripts test.sh/bat and train.sh/bat. To list available options, run python main.py --help.

Here is a short overview of the most important modules:

  • dataset.py: Contains a class that implements the torch.utils.data.Dataset interface and is able to consume the single-view dataset (~80GB), the multi-view dataset (~1GB) and folders containing photographs
  • losses.py: Contains the loss functions used by the pipeline like rendering loss and mixed loss.
  • renderers.py: Contains a simple differentiable renderer implemented in PyTorch ("in-network") and a renderer that wraps Redner. Both renderers implement the same interface and can be plugged into the rendering loss.
  • environment.py: Contains classes to set up a scene that can be rendered.
  • models.py: Contains implementations of the single-view and multi-view networks that follow the torch.nn.Module interface.
  • persistance.py: Contains means to load and save a model for testing or (partitioned) training.

Note: The implementation is currently very rough around the edges and contains some legacy code or legacy naming (e.g. "multiImage_pytorch" itself is a misleading name as the code is mainly concerned with the single-view method)

Additional Material

On top of the code, the repository contains the four presentations that were held during the semester as well as a website as project documentation.

References

[1] Li, T.-M., Aittala, M., Durand, F., Lehtinen, J. 2018. Differentiable Monte Carlo Ray Tracing through Edge Sampling.

[2] Deschaintre, V., Aittala, M., Durand, F., Drettakis, G., Bousseau, A. 2018. Single-Image SVBRDF Capture with a Rendering-Aware Deep Network.

[3] Deschaintre, V., Aittala, M., Durand, F., Drettakis, G., Bousseau, A. 2019. Flexible SVBRDF Capture with a Multi-Image Deep Network.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].