Compare commits

..

No commits in common. "bwhandout" and "master" have entirely different histories.

18 changed files with 133 additions and 192 deletions

View file

@ -21,7 +21,7 @@
% occlusion tri % occlusion tri
\draw[ \draw[
fill, fill,
darkgray red
] (3,2) -- (4.5,0.2) -- (6,3); ] (3,2) -- (4.5,0.2) -- (6,3);
% samples % samples
@ -33,5 +33,5 @@
5/0.5, 5/0.5,
5/2.5 5/2.5
} }
\node[fill = black] at (\x,\y) {}; \node[fill = yellow] at (\x,\y) {};
\end{tikzpicture} \end{tikzpicture}

View file

@ -1,24 +1,24 @@
\begin{tikzpicture}[scale = 0.9, every node/.style={scale=0.9}] \begin{tikzpicture}[scale = 0.9, every node/.style={scale=0.9}]
\def\raynum{18} \def\raynum{60}
\foreach \x in {0,...,\raynum} { \foreach \x in {0,...,\raynum} {
\ifthenelse{\x < 3 \OR \x>15} \ifthenelse{\x < 10 \OR \x>50}
{ {
\draw[color = black] (\x /\raynum * 6 ,0) -- (3,4); \draw[color = darkgray] (\x /\raynum * 6 ,0) -- (3,4);
}{ }{
\draw[color = lightgray] (\x /\raynum * 6 ,0) -- (3,4); \draw[color = red] (\x /\raynum * 6 ,0) -- (3,4);
} }
} }
\fill[ \fill[
white white
] (1.48,1) -- (4.52,1) -- (5.02,0) -- (0.98,0) -- cycle; ] (1.49,1) -- (4.51,1) -- (5.01,0) -- (0.99,0) -- cycle;
\draw [color=black] (0,0) -- node[below]{wall} (6,0) ; % wall \draw [color=darkgray] (0,0) -- node[below]{wall} (6,0) ; % wall
\draw [color=black](1.5,1) -- node[below]{blocker} (4.5,1); %blocker \draw [color=red](1.5,1) -- node[below]{blocker} (4.5,1); %blocker
%cam %cam
\node[ \node[
@ -37,11 +37,11 @@
\fill[ \fill[
gray red
] (5,3) -- (6.7,3) -- (6.7,3.3) -- (5,3.3) -- cycle; ] (5,3) -- (6.7,3) -- (6.7,3.3) -- (5,3.3) -- cycle;
\draw[black] (8,2) coordinate (darkgray_ray_isec) -- (5,5) coordinate (orig); \draw[darkgray] (8,2) coordinate (darkgray_ray_isec) -- (5,5) coordinate (orig);
\draw[gray] (6.4,3.3) coordinate (red_ray_isec) -- (5,5); \draw[red] (6.4,3.3) coordinate (red_ray_isec) -- (5,5);
%line %line
\draw (mag.north east) -- (7,2); \draw (mag.north east) -- (7,2);

View file

@ -22,7 +22,7 @@
% occlusion tri % occlusion tri
\draw[ \draw[
fill, fill,
darkgray red
] (3,2) -- (4.5,0.2) -- (6,3); ] (3,2) -- (4.5,0.2) -- (6,3);
% samples % samples
@ -33,10 +33,10 @@
3.5/2.5, 3.5/2.5,
5.5/0.5 5.5/0.5
} }
\node[fill = black] at (\x,\y) {}; \node[fill = yellow] at (\x,\y) {};
\node[ \node[
fill = black, fill = yellow,
fill opacity = 0.5, fill opacity = 0.4,
] at (4.5,1.5) {}; ] at (4.5,1.5) {};
\end{tikzpicture} \end{tikzpicture}

View file

@ -5,8 +5,8 @@
\draw[->] (-0.2,-0.5) -- (2.2,-0.5) node[right] {$\omega$}; \draw[->] (-0.2,-0.5) -- (2.2,-0.5) node[right] {$\omega$};
\draw[->] (0,-0.7) -- (0,2.2) node[above] {$V(x,\omega)$}; \draw[->] (0,-0.7) -- (0,2.2) node[above] {$V(x,\omega)$};
\draw (0,0) -- (1,0) plot coordinates {(0,0) (1,0)}[color=black]; \draw (0,0) -- (1,0) plot coordinates {(0,0) (1,0)}[color=red];
\draw (1,1) -- (2,1) plot coordinates {(1,1) (2,1)}[color=black]; \draw (1,1) -- (2,1) plot coordinates {(1,1) (2,1)}[color=red];
\draw (0,0) node[left] {$0$}; \draw (0,0) node[left] {$0$};
\draw (0,1) node[left] {$1$}; \draw (0,1) node[left] {$1$};
\draw (1,-0.7) node[below] {$\omega_0$}; \draw (1,-0.7) node[below] {$\omega_0$};
@ -21,11 +21,11 @@
\draw[->] (-0.2,-0.5) -- (2.2,-0.5) node[right] {$\omega$}; \draw[->] (-0.2,-0.5) -- (2.2,-0.5) node[right] {$\omega$};
\draw[->] (0,-0.7) -- (0,2.2) node[above] {$\frac{\partial}{\partial\omega}V(x,\omega)$}; \draw[->] (0,-0.7) -- (0,2.2) node[above] {$\frac{\partial}{\partial\omega}V(x,\omega)$};
\draw (0,0) -- (2,0) plot coordinates {(0,0) (2,0)}[color=black]; \draw (0,0) -- (2,0) plot coordinates {(0,0) (2,0)}[color=red];
\draw (0,0) node[left] {$0$}; \draw (0,0) node[left] {$0$};
\draw (0,1) node[left] {$1$}; \draw (0,1) node[left] {$1$};
\draw (0,2) node[left] {$\infty$}; \draw (0,2) node[left] {$\infty$};
\draw (1,2) node[color=black] {$\bullet$}; \draw (1,2) node[color=red] {$\bullet$};
\draw (1,-0.7) node[below] {$\omega_0$}; \draw (1,-0.7) node[below] {$\omega_0$};
\end{tikzpicture} \end{tikzpicture}
} }

View file

@ -7,7 +7,7 @@
\draw[ \draw[
fill, fill,
gray red
] (-2, -3) -- (-2,-4) -- (2,-6) -- (4.3,-6) -- (4.3,-4) -- cycle; ] (-2, -3) -- (-2,-4) -- (2,-6) -- (4.3,-6) -- (4.3,-4) -- cycle;
\draw[ \draw[
@ -17,12 +17,12 @@
\draw[ \draw[
fill, fill,
darkgray blue
] (1.7,-2) circle (15pt); ] (1.7,-2) circle (15pt);
\draw[ \draw[
fill, fill,
darkgray blue
] (0.4,-4.2) circle (15pt); ] (0.4,-4.2) circle (15pt);
\node (fu) at (1.4,-1) {\LARGE $f_u$ $(+)$}; \node (fu) at (1.4,-1) {\LARGE $f_u$ $(+)$};

View file

@ -1,3 +1,4 @@
%\newcommand{\CLASSINPUTtoptextmargin}{1.5cm}
\newcommand{\CLASSINPUTbottomtextmargin}{2.5cm} \newcommand{\CLASSINPUTbottomtextmargin}{2.5cm}
\documentclass[conference, a4paper, hidelinks]{IEEEtran} \documentclass[conference, a4paper, hidelinks]{IEEEtran}
@ -36,7 +37,6 @@
\usepackage{amsfonts} \usepackage{amsfonts}
\usepackage{caption} \usepackage{caption}
\DeclareCaptionType{eqcap}[Equation][List of equations] \DeclareCaptionType{eqcap}[Equation][List of equations]
\usepackage[T1]{fontenc}
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{calc, \usetikzlibrary{calc,
@ -143,13 +143,13 @@ Given this function and a set of target images the inverse rendering problem can
\begin{figure}[h] \begin{figure}[h]
\centering \centering
\subfloat[initial guess]{ \subfloat[initial guess]{
\includegraphics[width=0.3\linewidth]{../presentation/img/results/guess-bw.png} \includegraphics[width=0.3\linewidth]{../presentation/img/results/guess.png}
} }
\subfloat[optimized result]{ \subfloat[optimized result]{
\includegraphics[width=0.3\linewidth]{../presentation/img/results/result-bw.png}\label{fig:result_image} \includegraphics[width=0.3\linewidth]{../presentation/img/results/result.png}\label{fig:result_image}
} }
\subfloat[target]{ \subfloat[target]{
\includegraphics[width=0.3\linewidth]{../presentation/img/results/photo-bw.png} \includegraphics[width=0.3\linewidth]{../presentation/img/results/photo.png}
} }
\caption{A generic example for how differentiable ray tracing can be used to approximate a solution for the inverse rendering problem.}\label{fig:inverse_rendering_example} \caption{A generic example for how differentiable ray tracing can be used to approximate a solution for the inverse rendering problem.}\label{fig:inverse_rendering_example}
\end{figure} \end{figure}

Binary file not shown.

View file

@ -41,7 +41,7 @@
\begin{tikzpicture} \begin{tikzpicture}
% scene seite % scene seite
\node[above] at (2,2) {side view}; \node[above] at (2,2) {side view};
\node[below] at (2,-0.5) {\footnotesize (no indirect lighting)}; \node[below] at (2,-0.5) {(no indirect lighting)};
\draw[ \draw[
kit-green100 kit-green100

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

View file

@ -68,10 +68,10 @@
\input{diagrams/raytracing_anim} \input{diagrams/raytracing_anim}
\end{frame} \end{frame}
%\begin{frame}{Image synthesis~-~Optical Phenomena} \begin{frame}{Image synthesis~-~Optical Phenomena}
% \centering \centering
% \includegraphics[width=0.38\linewidth]{proseminar_cycles_annotated.png} \includegraphics[width=0.38\linewidth]{proseminar_cycles_annotated.png}
%\end{frame} \end{frame}
\subsection{Differentiable Rendering} \subsection{Differentiable Rendering}
\begin{frame}{Differentiable Rendering} \begin{frame}{Differentiable Rendering}

View file

@ -65,7 +65,6 @@ with Differentiable Monte Carlo Raytracing [\cite{ACM:inverse_rendering}]\\
\end{itemize} \end{itemize}
\pause{} \pause{}
\vspace{15mm} \vspace{15mm}
\footnotesize
Image source: Auth0, \href{https://auth0.com/blog/captcha-can-ruin-your-ux-here-s-how-to-use-it-right/}{CAPTCHA Can Ruin Your UX. Heres How to Use it Right} Image source: Auth0, \href{https://auth0.com/blog/captcha-can-ruin-your-ux-here-s-how-to-use-it-right/}{CAPTCHA Can Ruin Your UX. Heres How to Use it Right}
\end{minipage} \end{minipage}
\begin{minipage}{0.5\linewidth} \begin{minipage}{0.5\linewidth}

View file

@ -1,5 +1,5 @@
\section{Problems} \section{Problems}
% \begin{frame} % \begin{frame}
% \centering % \centering
% \Huge % \Huge
% Problems % Problems

View file

@ -9,9 +9,9 @@
\setbeamercovered{transparent} \setbeamercovered{transparent}
\begin{block}{Assumptions} \begin{block}{Assumptions}
\begin{itemize} \begin{itemize}
\item Continuous parameter set
\item Triangle meshes \item Triangle meshes
\item No interpenetrating triangles \item No interpenetrating triangles
\item Continuous parameter set
\item No point lights, no perfectly specular surfaces \item No point lights, no perfectly specular surfaces
\item Ignore time domain \item Ignore time domain
\end{itemize} \end{itemize}
@ -66,8 +66,8 @@
\[ \[
\sum_i\iint \sum_i\iint
\underbrace{\theta(}_{\text{Step function}} \underbrace{\theta(}_{\text{Step function}}
\underbrace{\alpha_i(x,y)}_{\text{Edge equation}}) \underbrace{\alpha_i(x,y)}_{\text{Edge equation formed by the triangle edge}})
\underbrace{f_i(x,y)}_{\text{Half space}} \underbrace{f_i(x,y)}_{\text{Half space (may contain Heaviside step functions itself)}}
\] \]
} }
@ -87,66 +87,47 @@
\end{frame} \end{frame}
\begin{frame}{Inverse Rendering~-~Example from this Paper} \begin{frame}{Inverse Rendering~-~Results in this Paper}
\centering \begin{block}{Inverse rendering here}
\begin{minipage}{0.19\linewidth} \begin{itemize}
\begin{figure} \item Parameters: Camera pose, material parameters, light source intensity
\centering \item Scene: Strong indirect illumination and non lambertian materials
\includegraphics[width=\linewidth]{img/teapot_video/teapot_init.png} \item Initial guess: Almost all objects white, arbitrary camera pose
\vspace{0mm} \item 177 parameters
\caption{initial guess}\label{fig:teapot_init} \item Loss function: Absolute difference
\end{figure} \item ADAM optimizer
\end{minipage} \item Start resolution of $64\times 64$, linearly increase to $512\times 512$ in 8 steps\\
\begin{minipage}{0.19\linewidth} $\implies$ Avoid local minima of the loss function
\begin{figure} \end{itemize}
\centering \end{block}
\includegraphics[width=\linewidth]{img/teapot_video/teapot_init_diff.png}
\caption{difference\\
initial $\leftrightarrow$ target}\label{fig:teapot_init_diff}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_target.png}
\vspace{0mm}
\caption{target image}\label{fig:teapot_target}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_final_diff.png}
\caption{difference\\
final $\leftrightarrow$ target}\label{fig:teapot_final_diff}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_final.png}
\vspace{0mm}
\caption{final image}\label{fig:teapot_final}
\end{figure}
\end{minipage}
\end{frame} \end{frame}
\begin{frame}{Inverse Rendering~-~Example from this Paper} \begin{frame}{Inverse Rendering~-~Results in this Paper}
\begin{center}
\begin{minipage}{0.25\linewidth}
\begin{figure}
\centering \centering
\includemedia[ \includegraphics[width=\linewidth]{img/results/guess.png}
width=0.62\linewidth,height=0.35\linewidth, \caption{Initial guess}\label{fig:results-guess}
activate=onclick, \end{figure}
addresource=teapot.mp4, \end{minipage}
playbutton=fancy, \hspace{2mm}
transparent, \begin{minipage}{0.25\linewidth}
passcontext, \begin{figure}
flashvars={ \centering
source=teapot.mp4 \includegraphics[width=\linewidth]{img/results/photo.png}
&autoPlay=true \caption{Target (photograph)}\label{fig:results-target}
} \end{figure}
]{}{VPlayer.swf} \end{minipage}
\\ \hspace{2mm}
All media in this section taken from~\cite{ACM:diffable_raytracing} \begin{minipage}{0.25\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/results/result.png}
\caption{Optimized image}\label{fig:results-optimized}
\end{figure}
\end{minipage}
\end{center}
\end{frame} \end{frame}
\begin{frame} \begin{frame}
@ -250,47 +231,66 @@
\end{figure} \end{figure}
\end{frame} \end{frame}
\begin{frame}{Inverse Rendering~-~Results in this Paper} \begin{frame}{Inverse Rendering~-~Example from this Paper}
\begin{block}{Inverse rendering here} \centering
\begin{itemize} \begin{minipage}{0.19\linewidth}
\item Parameters: Camera pose, material parameters, light source intensity \begin{figure}
\item Scene: Strong indirect illumination and non lambertian materials \centering
\item Initial guess: Almost all objects white, arbitrary camera pose \includegraphics[width=\linewidth]{img/teapot_video/teapot_init.png}
\item 177 parameters \vspace{0mm}
\item Loss function: Absolute difference \caption{initial guess}\label{fig:teapot_init}
\item ADAM optimizer \end{figure}
\item Start resolution of $64\times 64$, linearly increase to $512\times 512$ in 8 steps\\ \end{minipage}
$\implies$ Avoid local minima of the loss function \begin{minipage}{0.19\linewidth}
\end{itemize} \begin{figure}
\end{block} \centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_init_diff.png}
\caption{difference\\
initial $\leftrightarrow$ target}\label{fig:teapot_init_diff}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_target.png}
\vspace{0mm}
\caption{target image}\label{fig:teapot_target}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_final_diff.png}
\caption{difference\\
final $\leftrightarrow$ target}\label{fig:teapot_final_diff}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_final.png}
\vspace{0mm}
\caption{final image}\label{fig:teapot_final}
\end{figure}
\end{minipage}
\end{frame} \end{frame}
\begin{frame}{Inverse Rendering~-~Results in this Paper} \begin{frame}{Inverse Rendering~-~Example from this Paper}
\begin{center}
\begin{minipage}{0.25\linewidth}
\begin{figure}
\centering \centering
\includegraphics[width=\linewidth]{img/results/guess.png} \includemedia[
\caption{Initial guess}\label{fig:results-guess} width=0.62\linewidth,height=0.35\linewidth,
\end{figure} activate=onclick,
\end{minipage} addresource=teapot.mp4,
\hspace{2mm} playbutton=fancy,
\begin{minipage}{0.25\linewidth} transparent,
\begin{figure} passcontext,
\centering flashvars={
\includegraphics[width=\linewidth]{img/results/photo.png} source=teapot.mp4
\caption{Target (photograph)}\label{fig:results-target} &autoPlay=true
\end{figure} }
\end{minipage} ]{}{VPlayer.swf}
\hspace{2mm} \\
\begin{minipage}{0.25\linewidth} All media in this section taken from~\cite{ACM:diffable_raytracing}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/results/result.png}
\caption{Optimized image}\label{fig:results-optimized}
\end{figure}
\end{minipage}
\end{center}
\end{frame} \end{frame}
\subsection{Conclusion~-~What can this Method do?} \subsection{Conclusion~-~What can this Method do?}

View file

@ -1,58 +0,0 @@
# Notes diffable Monte carlo RT
## Raytracing formula
- geometry term discussed later
- Emission + All light reflected towards point
- Yields infinite recursion -> not calculable
## Visualization
- Explain image
- No indirect lighting!
- Output image is what we would expect (explain shade)
## Differentiable rendering
- That function is dependent on renderer
- Renderer needs to be differentiable
## Importance
- Inversely render complex indoor scenes
- "Fool" neural network
- Real time realistic shading in AR
- Application in maritime research
## Adversarial image generation
- Example for classification on slide 2!
- Fool neural netweork into wrongly classifying input data
- Optimize Image into wrong class
## Why differentiable rendering is hard
- Example later
- geometry term explanation later
## Former methods visualization
- Plane lit by a point light source.
- gradient with respect to the plane moving right
- light source remains static => the gradient should only be $\ne 0$ at the boundaries
- OpenDR and Neural not able to correctly calculate the gradients
- they are based on color buffer differences
## Edge sampling
- Approximate point lights using small area lights
- Specular => angle of incidence = angle of light reflected
- only lambertian materials
## Edge Sampling - Math Background
- Heaviside step functions in $f_i(x,y)$
## Inverse Rendering - Results in this paper
- ADAM: talk by Mr. Wu

Binary file not shown.

View file

@ -16,7 +16,7 @@
\titleimage{logo_rt.pdf} \titleimage{logo_rt.pdf}
\newcommand{\presentationdate}{July 26 2023} \newcommand{\presentationdate}{\emph{set date here}}
%% Gruppenlogo %% Gruppenlogo
\grouplogo{} \grouplogo{}
@ -27,7 +27,7 @@
% Beginn der Präsentation % Beginn der Präsentation
\title[Differentiable Monte Carlo Ray Tracing through Edge Sampling]{Differentiable Monte Carlo Ray Tracing through Edge Sampling [\cite{ACM:diffable_raytracing}]} \title[Differentiable Monte Carlo Ray Tracing through Edge Sampling]{Differentiable Monte Carlo Ray Tracing through Edge Sampling}
\subtitle{Presentation for the Proseminar ``Differentiable Programming``} \subtitle{Presentation for the Proseminar ``Differentiable Programming``}
\author[Clemens Dautermann]{Clemens Dautermann} \author[Clemens Dautermann]{Clemens Dautermann}