proseminar/presentation/modules/this_method.tex
2023-06-18 22:30:25 +02:00

318 lines
No EOL
11 KiB
TeX

\section{This method}
\begin{frame}
\centering
\Huge
This method
\end{frame}
\subsection{Edge sampling}
\begin{frame}{Edge sampling}
\setbeamercovered{transparent}
\begin{block}{Assumptions}
\begin{itemize}
\item Continuous parameter set
\item Triangle meshes
\item No interpenetrating triangles
\item No point lights, no perfectly specular surfaces
\item Ignore time domain
\end{itemize}
\end{block}
\pause{}
\begin{block}{Idea}
\begin{itemize}
\item Traditional sampling for continuous regions
\item Edge sampling for the discontinuous part
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Edge sampling~-~Illustration}
\centering
\input{diagrams/edge_sampling}
\end{frame}
\begin{frame}{Edge sampling~-~half spaces}
\begin{minipage}{0.5\linewidth}
\input{diagrams/halfspaces}
\end{minipage}
\begin{minipage}{0.45\linewidth}
\begin{block}{Principle}
\begin{itemize}
\item Edge divides scene into two halfspaces
\item Calculate color in either halfspace
\item Calculate gradient based on color difference
\item Occlusion $\implies$ No color difference $\implies\nabla=0$
\end{itemize}
\end{block}
\end{minipage}
\end{frame}
\begin{frame}[t]{Edge sampling~-~math background}
Color:
\only<1>{
\[
I = \underbrace{\iint}_{\text{Screen space domain}}
\underbrace{f(x,y;\Phi)}_{\text{Scene function; Parameter set } \Phi}dxdy
\]
}
\only<2-> {
\[
I = \iint f(x,y;\Phi)dxdy
\]
}
\only<2> {
Use half spaces to rewrite integral:
\[
\sum_i\iint
\underbrace{\theta(}_{\text{step function}}
\underbrace{\alpha_i(x,y)}_{\text{Edge equation formed by the triangle edge}})
\underbrace{f_i(x,y)}_{\text{half space (may contain Heaviside step functions itself)}}
\]
}
\only<3->{
Use half spaces to rewrite integral:
\[
\sum_i\iint\theta(\alpha_i(x,y))f_i(x,y)
\]
Calculate gradient:
\[
\nabla\iint\theta(\alpha_i(x,y))f_i(x,y)dxdy =
\underbrace{\iint\delta(\alpha_i(x,y))\nabla\alpha_i(x,y)f_i(x,y)dxdy}_{\text{Edges (can be differentiated)}} +
\underbrace{\iint\nabla f_i(x,y)\theta(\alpha_i(x,y))dxdy}_{\text{Original pixel integral}}
\]
}
\end{frame}
\begin{frame}{Inverse rendering~-~Results in this paper}
\begin{block}{Inverse rendering here}
\begin{itemize}
\item Parameters: Camera pose, material parameters, light source intensity
\item Scene: Strong indirect illumination and non lambertian materials
\item Initial guess: Almost all objects white, arbitrary camera pose
\item 177 parameters
\item Loss function: Absolute difference
\item ADAM optimizer
\item Start resolution of $64\times 64$, linearly increase to $512\times 512$ in 8 steps\\
$\implies$ Avoid local minima of the loss function
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Inverse rendering~-~results in this paper}
\begin{center}
\begin{minipage}{0.25\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/results/guess.png}
\caption{Initial guess}\label{fig:results-guess}
\end{figure}
\end{minipage}
\hspace{2mm}
\begin{minipage}{0.25\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/results/photo.png}
\caption{Target (photograph)}\label{fig:results-target}
\end{figure}
\end{minipage}
\hspace{2mm}
\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}
\begin{frame}
\begin{figure}
\centering
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/triangles/img-027.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/shade/img-028.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/glossy/img-029.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/glossy_recv/img-030.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/specular/img-031.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/global_illumination/img-032.png}
\end{minipage}
\begin{minipage}{0.1\linewidth}
\caption{initial guess}\label{fig:grid_init_guess}
\end{minipage}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%% second row %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{figure}
\centering
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/triangles/img-033.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/shade/img-034.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/glossy/img-035.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/glossy_recv/img-036.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/specular/img-037.png}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\includegraphics[width=\linewidth]{img/render_optimization/global_illumination/img-038.png}
\end{minipage}
\begin{minipage}{0.1\linewidth}
\caption{target images}\label{fig:grid_target}
\end{minipage}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%% third row %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{figure}
\centering
\begin{minipage}{0.15\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/triangles/img-039.png}
\caption{primary occlusion}
\end{figure}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/shade/img-040.png}
\caption{shadow}
\end{figure}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/glossy/img-041.png}
\caption{glossy}
\end{figure}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/glossy_recv/img-042.png}
\caption{glossy receiver}
\end{figure}
\end{minipage}
\begin{minipage}{0.14\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/specular/img-043.png}
\caption{near-specular}
\end{figure}
\end{minipage}
\begin{minipage}{0.15\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/render_optimization/global_illumination/img-044.png}
\caption{global illumination}
\end{figure}
\end{minipage}
\begin{minipage}{0.08\linewidth}
\caption{optimized result}\label{fig:grid_optimized}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}{Inverse rendering~-~example from this paper}
\centering
\begin{minipage}{0.19\linewidth}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{img/teapot_video/teapot_init.png}
\vspace{0mm}
\caption{initial guess}\label{fig:teapot_init}
\end{figure}
\end{minipage}
\begin{minipage}{0.19\linewidth}
\begin{figure}
\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}
\begin{frame}{Inverse rendering~-~example from this paper}
\centering
\includemedia[
width=0.62\linewidth,height=0.35\linewidth,
activate=onclick,
addresource=teapot.mp4,
playbutton=fancy,
transparent,
passcontext,
flashvars={
source=teapot.mp4
&autoPlay=true
}
]{}{VPlayer.swf}
\\
All media in this section taken from~\cite{ACM:diffable_raytracing}
\end{frame}
\subsection{Conclusion~-~What can this method do?}
\begin{frame}{Conclusion}
\setbeamercovered{transparent}
\begin{block}{Possibilities}
\begin{itemize}
\item Differentiate with respect to \emph{any} scene parameter
\item Arbitrary non-dirac-materials
\item Global illumination, occlusion, shadows etc\ldots
\item Automatic differentiation (PyTorch) $\rightarrow$ Inverse rendering
\end{itemize}
\end{block}
\pause{}
\begin{block}{Some Limitations}
\begin{itemize}
\item Performance
\item Time domain (animations)
\item Interpenetrating meshes
\item Non-differentiable shaders
\end{itemize}
\end{block}
\end{frame}