Comments (4)
I've located the source of assymetry. If you look at the lines (401,402) and (481,482) in this file, there is a statement
if (diff_grad <= 0)
continue;
If you comment this out, then the 2 gradient values have the same magnitude and opposite signs. However I feel that this "hack" is not correct, even though it still passes all the test cases. Probably the code in this part needs to be written again from scratch. It is not documented well by the authors so it won't be trivial to figure out how it works.
Nevertheless, can you try to run it with this fix and see if your results improve?
from neural_renderer.
Ooops! That is indeed very weird. So it is an issue of the original Chainer implementation too. I will have to look into the equations of the paper and the CUDA code to try and figure out what is happening here.
We should expect that the gradients before and after should have the same magnitude and flipped sign.
from neural_renderer.
Thanks for looking into it, @nkolot. Initial results seem encouraging.
Positive Loss/Blacken
Before Fix
After Fix
Negative Loss/Whiten
Before Fix
After Fix
Agreed that the fix feels "hack-y", but it's hard to understand why the conditional is there in the first place because of the lack of documentation. My best guess is it's related to equations (1), (3), and (4) in the paper, where they set the partial derivative to zero when delta_P_j * delta_I_j >= zero
, but the conditional in the code doesn't reference delta_P_j
and is <=
rather than >=
. Very strange!
from neural_renderer.
I am reopening the issue, just to keep track that I have to properly fix this and submit a PR. Will do it when I find time, probably later in the week.
from neural_renderer.
Related Issues (20)
- Obtaining silhouettes of multiple objects
- i get an error when i try to save obj with textures HOT 3
- ValueError: not enough values to unpack (expected 3, got 1) HOT 3
- cuda10.2 torch1.7.1 install fail
- problem about 'python setup.py install' HOT 1
- it haves some error in cuda11.4 HOT 3
- The variable of camera_up is not defined
- cannot run renderer on any other GPU other than GPU 0 HOT 1
- ImportError: /data/user/anconda3/envs/neural_test/lib/python3.7/site-packages/neural_renderer/cuda/load_textures.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaDataInstanceIdEEPKNS_6detail12TypeMetaDataEv HOT 3
- Error in forward_face_index_map_1: invalid device function Error in forward_face_index_map_2: invalid device function Error in forward_texture_sampling: invalid device function HOT 2
- Render Silhouette For A Trimesh Object
- Render 2D Silhouette For an Input Image
- Support for macOS Apple chip HOT 1
- fails to build on Google Colab with CUDA 10.2
- RuntimeError: Error compiling objects for extension even after changing the ``AT_CHECK`` HOT 5
- The problem of python setup.py install HOT 3
- For those who are new to the installation errors HOT 4
- unknown setup problem, RTX 3090 + cuda 11.1, already convert AT_CHECK to TROCH_CHECK HOT 2
- ValueError: mode should be one of None, 'silhouettes' or 'depth' HOT 1
- pip install neural_renderer_pytorch ERROR: Could not build wheels for neural_renderer_pytorch, which is required to install pyproject.toml-based projects HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neural_renderer.