text:
\section{Introduction}
\label{sec:intro}

Creating 3D content from RGB-D scans is a popular topic in computer vision~\cite{dai2017bundle, izadi2011kinectfusion, newcombe2011kinectfusion, niessner2013real, avetisyan2019scan2cad}.
We tackle a novel use case in this area: stylization of a reconstructed mesh with an explicit RGB texture.
Neural Style Transfer (NST) shows great results for stylization of images or videos,
but stylization of 3D content like meshes has been underexplored.
We synthesize a texture for the mesh which is a combination of observed RGB colors and a painting's artistic style.
After stylization, one could explore the space in VR and see it painted in the style of Van Gogh.

Our use case is similar to prior texture mapping methods~\cite{zhou2014color, bi2017patch, huang20173dlite, huang2020adversarial, izadi2011kinectfusion, dessein2014seamless, waechter2014let}
which construct a texture from a set of posed RGB images, but we produce a stylized texture rather than directly matching input images.
This is difficult since style transfer losses are typically defined on 2D image features~\cite{Gatys_2016_CVPR},
so NST does not immediately generalize to 3D meshes.
Recently, style transfer has been combined with novel view synthesis to stylize arbitrary scenes with a neural renderer from a sparse set of input images~\cite{huang_2021_3d_scene_stylization, kopanas2021point, chiang2021stylizing}.
These model-based methods require a forward pass during inference and cannot directly be applied to meshes.
Kato \etal~\cite{kato2018neural} and Mordvintsev \etal~\cite{mordvintsev2018differentiable} use differentiable rendering to bridge the gap between image style transfer and texture mapping:
backpropagating image losses to a texture representation enables consistent mesh stylization.

However, applying these methods to room-scale geometry is challenging as the resulting stylization patterns are noisy and can contain view-dependent stretch and size artifacts.
For example, optimizing a surface from a small grazing angle creates patterns in the image plane for that pose.
Viewing the same surface from an orthogonal angle then shows stretched-out patterns due to the perspective distortion.
Similarly, seeing an object from close and far-away viewpoints mixes small and large patterns on the same surface.
Perceiving the depth thus becomes harder, due to inconsistent stylization sizes.
These issues arise because 2D style transfer losses do not incorporate 3D data like surface normals and depth.
Instead, textures are separately stylized in each pose's image plane.

To this end, we formulate an energy minimization problem over the texture that combines texture mapping with style transfer (similar to~\cite{mordvintsev2018differentiable}) and minimizes style transfer losses for each pose in a 3D-aware manner that avoids view-dependent artifacts.
First, we utilize depth to render image patches at increasingly larger screen-space resolutions.
By splitting the style loss calculation over these patches, we create larger stylization patterns in the foreground than the background.
As a result, patterns have the same size in world-space and are optimized in a view-independent way.
Second, we use the angle between the surface normal and view direction to determine the degree of stylization for each pixel.
By calculating Gram matrices from different style image resolutions (similar to~\cite{liu2020geometric}) areas seen from small grazing angles are stylized with coarse details,
which are later refined if they are seen from better angles.
Third, we avoid discretization artifacts by scaling gradients with per-pixel angle and depth weights during backpropagation.

Compared to state-of-the-art 3D style transfer methods, our experiments show an improvement in terms of 3D consistent stylization both qualitatively and quantitatively.
Additionally, our explicit texture representation allows for direct usage with traditional rendering pipelines.

To summarize, our contributions are:
\begin{itemize}
  \item Style transfer for room-scale indoor scene meshes with a new texture optimization, which results in 3D consistent textures and mitigates view-dependent artifacts.
  \item A depth-aware optimization at different screen-space resolutions, that creates equally-sized stylization patterns in the world-space of the mesh.
  \item An angle-aware optimization at different stylization details, that creates unstretched stylization patterns in the world-space of the mesh.
\end{itemize}

\section{Related Work}
\label{sec:related_work}

Our approach is a NST method operating on the texture parametrization of a mesh. It is related to recent work on style transfer for videos and 3D objects, as well as texture generation from RGB-D images.

\mypar{Texture Mapping}
Many methods texture a reconstructed mesh from multiple RGB images, i.e., they map a texture onto the geometry that combines the color information of all images~\cite{zhou2014color, bi2017patch, huang20173dlite, huang2020adversarial, izadi2011kinectfusion, dessein2014seamless, waechter2014let}.
These methods must handle inaccuracies in pose, geometry, color and distortions to find the best texture for the scene.
In contrast, we aim to create a texture that is also styled to a specific image
and avoid view-dependent stylization artifacts by introducing depth- and angle-awareness into the optimization.

\mypar{Image Style Transfer}
NST, first introduced in Gatys \etal~\cite{Gatys_2016_CVPR}, can be optimization-based~\cite{Gatys_2016_CVPR, gatys2017controlling, chiu2020iterative} or model-based~\cite{ulyanov2016texture, johnson2016perceptual, huang2017arbitrary, deng2020arbitrary}.
It is inherently defined in the image domain by matching CNN features either globally or in a local, patch-based manner ~\cite{Gatys_2016_CVPR, li2016combining, kolkin2019style, mechrez2018contextual, kalischek2021light}.
Thus, it cannot directly utilize 3D data like depth or surface normals of a mesh.
This can lead to view-dependent stylization artifacts when optimizing a texture through multiple poses.
We induce 3D-awareness into optimization-based NST by splitting the loss calculation across different image segments.

\mypar{Video Style Transfer}
Video style transfer (VST) methods consistently stylize RGB video frames with a given style.
These methods are optimization-based~\cite{ruder2018artistic, ruder2016artistic} or model-based~\cite{gupta2017characterizing, chen2017coherent, xia2021real, chen2020optical, gao2018reconet, gao2020fast, wang2020consistent} and employ temporal consistency or optical flow constraints.
Other methods combine features in a temporally consistent way, without using optical flow or depth constraints directly~\cite{li2019learning, deng2020arbitrary}.
VST methods can be combined with texture mapping to achieve consistent stylization of indoor scenes.
However, since VST optimizations are unaware of the underlying 3D structures, the resulting textures are often blurry or low-detail.

\mypar{3D Style Transfer}
Lifting style transfer into 3D has been explored for texturing individual objects~\cite{kato2018neural, mordvintsev2018differentiable, yin20213dstylenet} or faces~\cite{han2021exemplar}.
However, they focus on isolated objects (not room-scale scenes) and do not utilize 3D data.
In contrast, our method stylizes complete indoor scenes in a 3D-aware way.
Another line of work applies exemplar-based NST to 3D models~\cite{Hauptfleisch20-PG, Sykora19-EG}, guiding the stylization process explicitly from (hand-crafted) examples.
In contrast, we follow original NST by stylizing 3D scene models from artistic paintings and camera images.
Cao \etal~\cite{cao2020psnet} stylize indoor scenes using a point cloud that cannot be directly used to texture a mesh.
Other methods combine novel view synthesis and NST for consistent stylization from only a few input images~\cite{kopanas2021point, chiang2021stylizing, huang_2021_3d_scene_stylization}.
In contrast, we do not require a network during inference to produce stylization results;
our results can be rendered by a standard graphics pipeline.

\begin{figure*}[ht]
\centering
\includegraphics[width=\linewidth]{figures/pipeline/pipeline.jpg}
\caption{We optimize a texture for the mesh reconstruction of a scene using multiple RGB images and a style image. We sample the texture with $uv$ maps at different resolutions, yielding a render pyramid for each pose. Using depth, we divide the screen space into parts, each corresponding to a different pyramid level. Each is encoded separately and compared with its RGB image part in the content loss. Using normals, the style loss is further split into fine and coarse branches. We discard features seen from small grazing angles for fine stylization. Finally, we scale the resulting image gradients with continuous angle and depth weights before backpropagating to the texture.}
\label{fig:pipeline}
\end{figure*}

\section{Method}
\label{sec:method}

Our goal is to stylize the mesh of an indoor scene: we want to create a texture that is a mixture of original RGB colors and a style image.
To avoid view-dependent artifacts, we formulate a depth- and angle-aware optimization problem over all images.
We require a set of $N$ images $\{I_k\}_{k=1}^N$ captured at different poses.
We also need a mesh reconstruction of the scene for which we create a texture parametrization, i.e., we need a $uv$ coordinate per vertex.
For each pose, we sample the texture with the corresponding $uv$ map at multiple resolutions, yielding a render pyramid.
Depending on the depth of each pixel, we split the image into multiple render parts, each belonging to one pyramid resolution.
Each part is used in content and style losses, where we only stylize pixels with fine details, that are seen from good angles.
Finally, we smooth the per-pixel gradients before backpropagating to the texture.
The complete method is visualized in~\cref{fig:pipeline}.

\subsection{Texture Optimization}\label{subsec:Texture Optimization}
We optimize a stylized RGB texture $\mathcal{T}^*$ from all RGB images $\{I_k\}_{k=1}^N$ and a separate style image $I_s$.
Similar to~\cite{mordvintsev2018differentiable}, we formulate a minimization problem with content and style losses $\mathcal{L}_c, \mathcal{L}_s$ and add a regularization term $\mathcal{L}_r$:
\begin{equation}
\label{eq:step-1}
    \mathcal{T}^* = \arg\min_{\mathcal{T}} \sum_{i=0}^{N}(
        \lambda_c \mathcal{L}_c(I_i, \hat{P}_i) + \lambda_s \mathcal{L}_s(I_s, \hat{P}_i) + \lambda_{r} \mathcal{L}_{r}(\mathcal{T})
    )
\end{equation}
where $\hat{P}_i$ is the render pyramid for the current pose, sampled from the texture with the corresponding $uv$ maps and $\lambda_c, \lambda_s, \lambda_r$ are loss weights.
The sampling operation is identical to traditional graphics and differentiable, i.e., we bilinearly interpolate each pixel from four neighboring texels.
Similar to Thies \etal~\cite{thies2019deferred}, we define our texture using a Laplacian Pyramid to regularize the texels in each layer with $\mathcal{L}_{r}$.
This helps avoid magnification and minification artifacts and reduces visible noise in the texture.
For each pose, we optimize the subset of observed texels.
Thus, we require a pose set covering most of the scene to optimize the texture completely.
In contrast, stylizing in texture space directly~\cite{yin20213dstylenet} is problematic for a room-scale texture parametrization, which may contain many seams.

\subsection{Depth Level Render Parts}\label{subsec:Depth Scaling}
Style transfer operates on the CNN features of an image~\cite{Gatys_2016_CVPR}.
This leads to a limited sense of depth when optimizing over multiple poses.
Stylization patterns can appear equally large in the foreground and background, e.g., when parts of a surface are seen far-away and close-up (see~\cref{fig:depth-scaling-angle-weighting}).
Observing the same surface from multiple poses thus mixes small and large patterns next to each other.
As a result, renderings using the optimized texture do not convincingly capture depth.
Liu \etal~\cite{liu2017depth} make style transfer depth-aware in the image plane with a depth-loss network.
In contrast, we incorporate depth-awareness by optimizing at multiple screen-space resolutions.
Larger patterns appear in the foreground than the background of an image, ultimately leading to equally large style in world space.

We make use of the relation that area in screen-space is inversely proportional to depth, i.e., when depth increases by a factor of $p$, a given projected area decreases by $p^2$.
On the other hand, style transfer is agnostic to the image resolution that it is applied on, i.e., when resolution increases by $p^2$, stylization patterns appear proportionally smaller (because the receptive field becomes smaller relative to the resolution)~\cite{gatys2017controlling}.
We combine both relations to optimize stylization patterns having the same size in world space: when depth increases by $p$, we increase image resolution by $p^2$.

We apply the relation to divide the image into parts, sampled from the render pyramid at increasingly larger resolutions.
The content and style losses are then calculated independently for each part.
To discretize into parts, we define a minimum depth value $\theta_d$, making the relation absolute.
We calculate the optimal image height per-pixel as
\begin{equation}
    R_{xy} = \theta_{min} \cdot \frac{d_{xy}}{\theta_d}
\end{equation}
where $d_{xy}$ is the depth at pixel $(x,y)$ and $\theta_{min}$ is the minimum resolution.
We express resolution $R_{xy}$ as height in pixels and scale the width accordingly.
We then map $R_{xy}$ to the nearest neighbor in the render pyramid, yielding its index as depth level per-pixel.
Finally, we apply a $3{\times}3$ erosion kernel to smooth the depth level map over all pixels.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cc}
\includegraphics[width=0.48\linewidth]{figures/pipeline/ss.jpg} & \includegraphics[width=0.48\linewidth]{figures/pipeline/ws.jpg} \\
(a) Projected Geometry & (b) Geometry in World-Space
\end{tabular}
\caption{Stylizing mesh faces in 2D (screen-space) is dependent on angle and size of the projected geometry. Optimizing the faces of a wall from a small grazing angle leads to stretched-out stylization patterns in world-space (yellow). Regions of similar size can receive more or less patterns, depending on their projected size (green and red). We denote stylization patterns as circles that are optimized from screen-space into texture space.}
\label{fig:depth-scaling-angle-weighting}
\end{figure}

\subsection{Angle Filter}\label{subsec:Angle Weighting}
Style transfer in screen-space can create stretched-out stylization patterns (see~\cref{fig:depth-scaling-angle-weighting}).
Patterns might look circular from one view, but are stretched-out ellipses in world space (e.g., when optimizing from a small grazing angle).
To prevent this, we combine coarse and fine style losses and optimize fine details only for areas seen from good angles.
Similar to previous work~\cite{liu2020geometric, gatys2017controlling}, we utilize the fact that the receptive field of high-resolution images is still small~\cite{luo2016understanding}.
As a result, stylization patterns appear coarser and less detailed, when optimized from a larger style image.
We find that coarse patterns are less prone to stretch artifacts.

For each pixel, we calculate its normal-to-view angle $\alpha_{xy} = \measuredangle(\Vec{n}_{xy}, \Vec{v})$ where $\Vec{n}_{xy}$ is the interpolated surface normal at pixel $(x,y)$ and $\Vec{v}$ is the viewing direction.
Only the pixels where $\alpha_{xy} \leq \theta_a$ are used for the style loss with a low-resolution style image that produces fine stylizations.
We always use all pixels and a high-resolution style image to optimize coarse stylization patterns.
This creates a combination of coarse and fine patterns without stretch artifacts.

\subsection{Multi-Resolution Part-based Losses}
Multiple content and style losses combine depth levels (\cref{subsec:Depth Scaling}) and angle filtering (\cref{subsec:Angle Weighting}) to optimize the texture without view-dependent artifacts.
We encode the render pyramid $\hat{P}$ with a pretrained VGG network~\cite{simonyan2014very} into the feature pyramid $\hat{F}$.
Using the depth level map, we only keep corresponding features in each layer of $\hat{F}$.
We compute a coarse Gram matrix $\hat{G}_{c}$ and an angle-filtered fine one $\hat{G}_{f}$ from the features in every layer.
Similarly, $G_c$ and $G_f$ correspond to the high- and low-resolution style images.
We define the style loss as
\begin{equation}
\mathcal{L}_s(I_s, \hat{P}) = \sum_{l}^{\theta_l} \hat{w}_l \cdot ( ||G_{c} - \hat{G}_{c}^l||^2_F + ||G_{f} - \hat{G}_{f}^l||^2_F)
\end{equation}
which sums over all depth levels independently (part-based) and combines coarse and fine stylization (multi-resolution).
We calculate the normalized weighting factor $\hat{w}_l$ as
\begin{equation}
w_l = \frac{v_l}{t_l} \quad\mathrm{and}\quad \hat{w}_l = \frac{w_l}{\sum_{i}^{\theta_l} w_i}
\end{equation}
where $v_l$ is the visible and $t_l$ the total number of pixels in depth level $l$.
Similarly, the content loss is defined as
\begin{equation}
L_c(I, \hat{P}) = \sum_{l}^{\theta_l} \hat{w}_l \cdot ||F^l - \hat{F}^l||^2_F
\end{equation}
where $F^l$ are the features of the content image $I$, split in a similar way.
For brevity, we omit different VGG layers and image indices from the notation.
As proposed in Gatys \etal~\cite{Gatys_2016_CVPR}, we use the layers \textit{relu\_\{1-5\}\_1} for the style loss and \textit{relu\_4\_2} for the content loss.
We calculate the losses independently for every VGG layer and sum them accordingly.

\subsection{Per-Pixel Gradient Scaling}
Depth levels (\cref{subsec:Depth Scaling}) and angle filtering (\cref{subsec:Angle Weighting}) impose hard thresholds on the image of each pose.
To avoid discretization artifacts at decision boundaries, we scale the per-pixel gradients before backpropagating them to the texture.
First, we calculate a weighting factor $w_{xy}^a = cos(\alpha_{xy})$ from the normal-to-view angle $\alpha_{xy}$.
This controls the influence of a pose on each pixel by preferring orthogonal over small grazing viewing angles.
Scaling features similar to Gatys \etal~\cite{gatys2017controlling} instead results in oversaturation artifacts.

Second, we adapt the idea of trilinear Mipmap interpolation~\cite{foley1996computer}.
Each pixel contributes to the render parts of its nearest two pyramid layers, resulting in two per-pixel gradients.
We calculate the distance to the nearest layer as
\begin{equation}
w_{xy}^d = |\frac{R_{xy} - L_{xy}^1}{L_{xy}^1 - L_{xy}^2}|
\end{equation}
where $R_{xy}$ is the optimal resolution for pixel $(x,y)$ and $L_{xy}^1$, $L_{xy}^2$ are the resolutions of the nearest and second nearest pyramid layers.
Finally, we linearly interpolate between the per-pixel gradients as
\begin{equation}
\frac{\partial \mathcal{L}}{\partial I_{xy}} = \frac{\partial \mathcal{L}_1}{\partial I_{xy}} \cdot w_{xy}^d \cdot w_{xy}^a + \frac{\partial \mathcal{L}_2}{\partial I_{xy}} \cdot (1 - w_{xy}^d) \cdot w_{xy}^a
\end{equation}
where $\mathcal{L}_1$ is the loss term for the nearest pyramid layer of pixel $(x,y)$ and $\mathcal{L}_2$ for the second nearest, respectively.

\subsection{Data Preprocessing}\label{subsec:Data Preprocessing}
We use the ScanNet~\cite{dai2017scannet} and Matterport3D~\cite{chang2017matterport3d} datasets, which provide RGB-D images and reconstructed meshes (we use per-region meshes for Matterport3D~\cite{chang2017matterport3d}).
We use the RGB images for optimization, but filter them with a Laplacian kernel to remove blurry images.
We reduce each mesh's complexity by merging vertices until $\leq500$K faces remain.
Then, we generate a texture parametrization with Blender's smart $uv$ project~\cite{blender} with an angle limit of $70^{\circ}$.
We precompute the $uv$ maps for each estimated pose.

\section{Results}
\label{sec:results}

\mypar{Implementation Details}
We optimize textures at a resolution of $4096{\times}4096$ as a Laplacian Pyramid~\cite{thies2019deferred} with 4 layers and regularization strength $\lambda_{r}{=}5000$.
We use $\lambda_c{=}70$ and $\lambda_s{=}0.0001$ for content and style loss weights.
We optimize for 7 epochs and repeat each frame 10 times.
We set $\theta_{min}{=}32$ and use $\theta_l{=}4$ render pyramid layers at heights of $\{256, 432, 608, 784\}$ pixels.
We set $\theta_a{=}30^{\circ}$, $\theta_d{=}0.25$ meters for ScanNet~\cite{dai2017scannet} and $\theta_a{=}40^{\circ}$, $\theta_d{=}0.2$ meters for Matterport3D~\cite{chang2017matterport3d}.
We incrementally halve the original style image resolution until either the width or height reaches a size of 256 pixels.
We use the resulting image for the stylization of fine details and a two steps larger image for coarse details.
We use Adam~\cite{kingma2014adam} with batch size 1 and initial learning rate $1$ which decays multiplicatively by $0.1$ every 3 epochs.
We tried L-BFGS~\cite{zhu1997algorithm} which gave similar results.
After optimization, we export the Laplacian Pyramid to a single texture image and use a standard rasterizer with Mipmaps and shading~\cite{foley1996computer} for rendering.

\mypar{Evaluation Metrics}
We conduct a user study to show the advantages of depth- and angle-awareness (\cref{fig:user-study-ablation}).
Additionally, we quantify them by stylizing with a ``circle'' image (\cref{fig:circles}).
We calculate the correlation between circle size and depth in screen-space (Corr. 2D) and world-space (Corr. 3D), as well as circle stretch as the ratio of horizontal and vertical radius in world-space (\cref{tab:ablation}).
For quantifying 3D consistency, we calculate the $L_1$ distance between source and reprojected target frames (\cref{tab:reprojection}).
Please refer to the supplemental material for more details about metrics.

\subsection{Style Transfer on Scenes}\label{subsec:Style Transfer on Scenes}

Our method competes with 3D style transfer methods that stylize a scene through an explicit or implicit representation.
Specifically, we compare our method with DIP of Mordvintsev \etal~\cite{mordvintsev2018differentiable} and NMR of Kato \etal~\cite{kato2018neural}: like us they also optimize a texture, but they do not utilize angle or depth data.
Additionally, we compare with LSNV of Huang \etal~\cite{huang_2021_3d_scene_stylization}, which uses a neural renderer to stylize point clouds.
We show results on the Matterport3D~\cite{chang2017matterport3d} dataset in~\cref{fig:comp-baseline-matterport} and on the ScanNet~\cite{dai2017scannet} dataset in~\cref{fig:comp-baseline-scannet-3D}.
A visualization of textured meshes is given in~\cref{fig:comp-baseline-3D}.
Please see the supplemental material for more examples.

Our results show that we are able to stylize scenes without view-dependent size or stretch artifacts.
In contrast to the other methods, our approach creates sharp and detailed effects for the complete scene.
Optimizing the complete texture is especially difficult for DIP~\cite{mordvintsev2018differentiable} and NMR~\cite{kato2018neural}, which both contain noisy texels.
LSNV~\cite{huang_2021_3d_scene_stylization} stylizes complete images, but their results are less detailed.
To quantitatively evaluate our method and the related approaches, we compute the mean $L_1$ distance between source frame and a reprojected target frame.
The results are listed in~\cref{tab:reprojection}.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/rgb00_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/nmr00.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/dip00.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/ours00.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/rgb01_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/nmr01.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/dip01.jpg} &
\includegraphics[width=0.24\linewidth]{figures/baseline-comparison-3D/ours01.jpg} \\
RGB Mesh & NMR~\cite{kato2018neural} & DIP~\cite{mordvintsev2018differentiable} & \textbf{Ours}
\end{tabular}
\caption{Top-down view on stylized meshes in comparison to previous work.}
\label{fig:comp-baseline-3D}
\end{figure}

\begin{table}
  \centering
  \begin{tabular}{|l|c|c|}
    \hline
    Method & Short-Range $\downarrow$ & Long-Range $\downarrow$ \\
    \hline
    \hline
    LSNV~\cite{huang_2021_3d_scene_stylization} & 4.873 & 7.207 \\
    NMR~\cite{kato2018neural} & 1.565 & 2.165 \\
    DIP~\cite{mordvintsev2018differentiable} & 1.396 & 1.723 \\
    \hline
    Ours & \textbf{1.225} & \textbf{1.566} \\
    \hline
  \end{tabular}
  \caption{$L_1$ distance between source frame and a reprojected target frame. We report mean values for short-range (2nd next frame) and long-range (20th next frame) in 10 different ScanNet~\cite{dai2017scannet} scenes.}\label{tab:reprojection}
\end{table}

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{ccccc}
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/rgb/12_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/lsnv/12_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/nmr/12_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/dip/12_v2_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/ours/12_v2_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/rgb/13_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/lsnv/13_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/nmr/13.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/dip/13.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/ours/13.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/rgb/15_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/lsnv/15_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/nmr/15.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/dip/15_v2.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/ours/15_v3.jpg} \\
RGB and Style & LSNV~\cite{huang_2021_3d_scene_stylization} & NMR~\cite{kato2018neural} & DIP~\cite{mordvintsev2018differentiable} & \textbf{Ours}
\end{tabular}
\caption{Comparison of stylization results for our method and related work on the Matterport3D~\cite{chang2017matterport3d} dataset. We texture the mesh with each method (point cloud for Huang \etal~\cite{huang_2021_3d_scene_stylization} respectively) and render a single pose that is also captured in the RGB images.}
\label{fig:comp-baseline-matterport}
\end{figure*}

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{ccccc}
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/rgb/4_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/lsnv/4_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/nmr/4.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/dip/4_v2_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/ours/4_v3_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/rgb/17_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/lsnv/17.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/nmr/17_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/dip/17_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/baseline-comparison/ours/17_masked.jpg} \\
RGB and Style & LSNV~\cite{huang_2021_3d_scene_stylization} & NMR~\cite{kato2018neural} & DIP~\cite{mordvintsev2018differentiable} & \textbf{Ours}
\end{tabular}
\caption{Comparison of stylization results for our method and related work on the ScanNet~\cite{dai2017scannet} dataset. We texture the mesh with each method (point cloud for Huang \etal~\cite{huang_2021_3d_scene_stylization} respectively) and render a single pose that is also captured in the RGB images.}
\label{fig:comp-baseline-scannet-3D}
\end{figure*}

\subsection{Ablation Studies}\label{subsec:Ablation Study}

\mypar{Qualitative Comparison}
Our method uses per-pixel angle and depth as input to optimize the texture in a 3D-aware manner.
This helps avoid view-dependent stretch and size artifacts being optimized into the texture from different poses.
We compare only using angle input (no render pyramid) and not using angle/depth (only 2D texture optimization with Laplacian Pyramid representation).
In~\cref{fig:ablation} we can see that using angle makes it easier to distinguish between surfaces like the wall and sofa in row 2.
Adding depth creates smaller and detailed patterns in the background (e.g., the strokes in the background of row 1).
Please see the supplemental material for more examples.

We optimize all ablation modes such that stylization patterns are equally strong, i.e., style should be similar for a fair comparison.
A too low degree of stylization would reduce view-dependent artifacts because original RGB colors get more dominant.
Similarly, a too high degree discards content features too much, which increases artifacts.

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/ablation/rgb/12_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-no/12.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-yes/12_v3.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/yes-yes/12.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/ablation/rgb/8_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-no/8.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-yes/8.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/yes-yes/8.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/ablation/rgb/13_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-no/13.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/no-yes/13.jpg} &
\includegraphics[width=0.24\linewidth]{figures/ablation/yes-yes/13.jpg} \\
(a) RGB and Style & (b) Only 2D & (c) With Angle & (d) With Angle and Depth
\end{tabular}
\caption{Qualitative ablation study of our method. We compare ours (d) against only using angle (c) and not using angle and depth (b). Using angle better distinguishes surfaces and using depth creates smaller/detailed stylization in the background.}
\label{fig:ablation}
\end{figure*}

\mypar{Quantitative Comparison}
We measure the effects of angle- and depth-awareness as follows.
We stylize a scene with a ``circle'' image using only the style loss (see~\cref{fig:circles}).
We then detect ellipses in the resulting images and measure their horizontal and vertical axis lengths.
Naturally, NST creates ellipses of different shapes, but their overall distribution reveals the degree of 3D awareness for the complete scene.
Inverse correlation between per-pixel depth and ellipse size in screen-space (Corr. 2D) indicates that stylized features are smaller in the background.
A weak correlation in world-space (Corr. 3D) indicates that absolute size is independent of the observed poses.
Both metrics together classify the depth-awareness.
View-dependent stretch is larger if ellipse's horizontal and vertical axes are of different lengths.
The stylization is angle-aware if the stretch is reduced.
We do not measure coarse and fine stylization this way, because the ``circle'' image contains too few high-resolution features.
Please see the supplemental material for more details about metric computation.
As can be seen in~\cref{tab:ablation}, using angle and depth improves our method.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{ccc}
\includegraphics[width=0.33\linewidth]{figures/circles/rgb_box.jpg} &
\includegraphics[width=0.33\linewidth]{figures/circles/no-no-box-angle.jpg} &
\includegraphics[width=0.33\linewidth]{figures/circles/no-yes-box-angle.jpg} \\
RGB & (a) Only 2D & (b) Ours \\
\includegraphics[width=0.33\linewidth]{figures/circles/style_cropped.jpg} &
\includegraphics[width=0.33\linewidth]{figures/circles/no-no-box-depth.jpg} &
\includegraphics[width=0.33\linewidth]{figures/circles/yes-yes-box-depth.jpg} \\
Style & (c) Only 2D & (d) Ours \\
\end{tabular}
\caption{Stylizing with a ``circle'' image quantifies 3D-awareness. Circles become ellipsoidal on the couch without angle-awareness (a); using angle, they are less distorted (b). Using depth, circles are smaller in the back (d); they are equally large without (c).}
\label{fig:circles}
\end{figure}

\begin{table}
  \centering
  \begin{tabular}{|l|cc|c|}
    \hline
    Method & Corr. 2D $\uparrow$ & Corr. 3D $\downarrow$ & Stretch $\downarrow$ \\
    \hline
    \hline
    Only 2D & 0.172 & 0.126 & 3.512 \\
    Angle & 0.126 & \textbf{0.110} & 3.396 \\
    Angle/Depth & \textbf{0.538} & 0.125 & \textbf{3.391} \\
    \hline
  \end{tabular}
  \caption{Quantitative results of stylizing a scene with a ``circle'' image.
  With depth-awareness (Angle/Depth), depth and size strongly correlate in screen-space (2D), but not in world-space (3D).
  That is, the stylized circle size is smaller in the background of an image, but uniformly distributed in 3D. Adding angle-awareness reduces the circle stretch (Angle).
  In contrast, circles show more view-dependent artifacts without depth/angle (Only 2D).
  }\label{tab:ablation}
\end{table}

\mypar{Depth Scaling}
A key piece of our method is the render pyramid of different image resolutions.
By tuning the value of $\theta_d$, we change the threshold of when to sample from the next higher resolution.
This increases (higher $\theta_d$) or decreases (lower $\theta_d$) the absolute stylization size, while still retaining relative change in size (see~\cref{fig:depth-slider}).
This allows to fine-tune the complete scene until a desired look is obtained.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cc}
\includegraphics[width=0.49\linewidth]{figures/depth-slider/4_style.jpg} &
\includegraphics[width=0.49\linewidth]{figures/depth-slider/2.jpg} \\
$\theta_d = 0.05$ & $\theta_d = 0.1$ \\
\includegraphics[width=0.49\linewidth]{figures/depth-slider/0.jpg} &
\includegraphics[width=0.49\linewidth]{figures/depth-slider/6.jpg} \\
$\theta_d = 0.15$ & $\theta_d = 0.2$ \\
\end{tabular}
\caption{Variation of the minimum depth $\theta_d$ from $0.05$ to $0.2$ meters. Increasing its value leads to overall larger stylizations, while still retaining relative size differences within the scene. This can be used to fine-tune the stylization to a satisfying look.}
\label{fig:depth-slider}
\end{figure}

\mypar{User Study}
We conduct a user study on the effectiveness of our proposed depth- and angle-awareness.
Users compared our method against each baseline separately by preferring one of two images.
They judged in which image stylization patterns (a) have less visible stretch and (b) are smaller in the background.
In total, 20 users each answered 70 questions, comparing against NMR~\cite{kato2018neural}, DIP~\cite{mordvintsev2018differentiable} and ours without angle- and depth-awareness (Only 2D).
As can be seen in~\cref{fig:user-study-ablation}, our method is preferred in both categories.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cc}
\includegraphics[width=0.49\linewidth]{figures/user-study/angle.jpg} &
\includegraphics[width=0.49\linewidth]{figures/user-study/depth.jpg} \\
(a) Stretch & (b) Size \\
\end{tabular}
\caption{We conduct a user study and ask subjects to select the results where stylization patterns (a) have less visible stretch and (b) are smaller in the background. The numbers indicate the percentage of preference for our method.}
\label{fig:user-study-ablation}
\end{figure}

\subsection{Comparison to Video Style Transfer}\label{subsec:comp-video}

As an alternative way to optimizing a stylized texture, one could combine video style transfer (VST) methods and RGB texture mapping to produce a stylized scene in two steps (see~\cref{fig:blurry-texture}).
We can obtain an RGB texture from all images of the scene and render arbitrary trajectories, that we stylize with a VST method (Tex$\rightarrow$VST).
However, we never obtain a stylized texture this way and thus need the VST method during inference for each novel pose.
Stylization details are also much lower, due to missing details in the RGB texture and reconstructed geometry.
By optimizing directly from camera images, we obtain sharper details.

Alternatively, we can stylize a trajectory of camera images with a VST method and optimize an RGB texture from these images (VST$\rightarrow$Tex).
However, we might only have access to a sparse set of images in some scenarios.
Due to inconsistencies between stylized frames (e.g., caused by illumination changes), the optimized texture is blurrier, as well.
Our method is 3D-consistent by combining stylization and texture optimization over all available images directly.

\begin{figure}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/rgb/rgb_936_cropped_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/rerevst_texture/rt_936_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/texture_rerevst/tr_936_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/ours/ours_936_cropped.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/rgb/rgb_0_cropped_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/mccnet_texture/mt_0_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/texture_mccnet/tm_0_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/blurry-texture/ours/ours_0_cropped.jpg} \\
RGB & (a) \footnotesize{VST$\rightarrow$Tex} & (b) \footnotesize{Tex$\rightarrow$VST} & Ours
\end{tabular}
\caption{Video style transfer (VST) can be combined with RGB texture mapping to stylize an indoor scene. Either, we optimize a texture from the output of VST (a), or we render trajectories from an RGB texture and then apply VST (b). The first row uses VST of Wang \etal~\cite{wang2020consistent} and the second Deng \etal~\cite{deng2020arbitrary}, respectively. In comparison, we produce sharper details and less noise.}
\label{fig:blurry-texture}
\end{figure}

\subsection{Runtime Comparison}\label{subsec:Runtime Comparison}
We propose an optimization-based NST method, that converges in roughly 3 hours on a single RTX 3090 GPU.
After optimization, we can use the texture in traditional graphics pipelines and achieve real-time rendering, similar to~\cite{kato2018neural, mordvintsev2018differentiable}.
In contrast, model-based NST~\cite{huang_2021_3d_scene_stylization, kato2018neural, kopanas2021point} might take days to train and needs a forward-pass at inference.
However, these methods can generalize across scenes, whereas we need to optimize a separate texture per-scene.

\subsection{Limitations}
\label{subsec:limitations}
By design, our method is a per-scene/per-style NST algorithm, i.e., we optimize each explicit texture image separately.
Recent work in implicit texture representations~\cite{oechsle2019texture} could enable training generative models for our task.
We do not disentangle lighting and albedo, i.e., view-dependent effects in camera images can be visible in the stylized texture.
One could leverage neural rendering techniques to train a relightable stylization model~\cite{tewari2021advances}.
Incomplete mesh reconstructions lead to holes in rendered poses, which can be reduced by employing mesh completion techniques first~\cite{dai2021spsg, dai2020sg, dai2018scancomplete}.
Similarly, an insufficient number of poses may lead to unobserved surfaces during optimization, i.e., we do not hallucinate texture.
Inpainting techniques~\cite{tewari2021advances} could be utilized to complete those texels.

\section{Conclusion}
\label{sec:conclusion}
We have shown a method to stylize the mesh of room-scale indoor scene reconstructions.
We lift style transfer to the 3D domain by optimizing a texture only through 2D images.
Our method makes use of depth and surface normals of the mesh to achieve uniform world space stylization without view-dependent artifacts.
For that, we split the loss calculation into image parts and stylize coarse and fine details separately.
The explicit texture representation allows for real-time rendering of the scene after optimization.

\section*{Acknowledgements}
\label{sec:acknowledgements}
This project is funded by a TUM-IAS Rudolf Mößbauer Fellowship, the ERC Starting Grant Scan2CAD (804724), and the German Research Foundation (DFG) Grant Making Machine Learning on Static and Dynamic 3D Data Practical.
We also thank Angela Dai for the video voice-over.

{\small
\bibliographystyle{ieee_fullname}

\section{Supplemental}
\label{sec:supplemental}

\subsection{Reprojection Error}\label{subsec:Reprojection Error}
We calculate reprojection error as the $L_1$ distance between source frame and reprojected target frame.
This allows to quantify the 3D consistency.
While a texture representation is 3D consistent by design, unoptimized texels might still create visible noise artifacts when rendering a trajectory.
We calculate reprojection error on the ScanNet~\cite{dai2017scannet} dataset by using their captured camera trajectories.
For each source frame, we select a target frame that is (a) two frames after the source frame (short-range consistency) or (b) 20 frames after the source frame (long-range consistency).
Using the estimated poses and camera intrinsics, we warp the pixels of the target frame to the source view.
We calculate $L_1$ distance in the normalized image range $[0,1]$ between reprojected target frame and source frame for all pixels that are visible in both views.
Please see~\cref{fig:reprojection} for a visualization of the procedure.

Because the estimated poses are not perfectly accurate, the reprojection error may never sink below a certain threshold that captures this inaccuracy.
Still, it allows to quantify the 3D consistency by measuring the additional inconsistencies caused by unoptimized textures, i.e., the error is higher for unoptimized textures that are less consistent.

\begin{figure}[ht]
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/reprojection/styled_685_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/reprojection/styled_other_685_671_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/reprojection/styled_reprojected_685_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/reprojection/residual_styled_685_masked_styled_reprojected_685_masked.jpg} \\
Source Frame & Target Frame & Reprojected & Residual
\end{tabular}
\caption{Sample images used for calculating the reprojection error. We select a source frame and a target frame and warp the target pixels from the target view to the source view. Reprojection error is calculated as the $L_1$ distance of all pixels between source frame and reprojected target frame, that are visible in both views.}
\label{fig:reprojection}
\end{figure}

\subsection{User Study Setup}\label{subsec:user-study-setup}
We conduct a user study on the effectiveness of our proposed depth- and angle-awareness.
Users compared our method against each baseline separately by preferring one of two images.
They judged in which image stylization patterns (a) have less visible stretch and (b) are smaller in the background.
In total, 20 users each answered 70 questions, comparing against NMR~\cite{kato2018neural}, DIP~\cite{mordvintsev2018differentiable} and ours without angle- and depth-awareness (Only 2D).
We show two sample questions, one for each type, in~\cref{fig:user-study-setup}.
As can be seen, users have the possibility to decide for one of two images or to answer that none of the two is better/worse.
The order of questions and of the ``A'' and ``B'' images is random and different for each user.
Users have the possibility to zoom-in on the images for better judgement.
Additionally, we add rectangles on image regions that might be especially interesting for evaluation of the questions.
Note that users still had to consider the whole image in their answer; the rectangles merely act as additional input.

\begin{figure*}[ht]
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cc}
\includegraphics[width=0.49\linewidth]{figures/user-study/sample_depth.jpg} &
\includegraphics[width=0.49\linewidth]{figures/user-study/angle_sample.jpg} \\
(a) Size Sample & (b) Stretch Sample
\end{tabular}
\caption{Sample images used for the user study. Users judged in which image stylization patterns (a) are smaller in the background and (b) have less visible stretch.}
\label{fig:user-study-setup}
\end{figure*}

\subsection{Variation of Depth Levels}\label{subsec:hparam-tuning}
The number of depth levels $\theta_l$ controls the depth variation that can be achieved within rendered poses of a scene.
Setting $\theta_l{=}4$ is sufficient for our datasets, as larger scene extent is rarely captured by many pixels.
We could precompute \textit{uv} maps at larger resolutions to enable depth scaling at even larger depth values.
Small scenes may not require the last layers, in which case they are simply not utilized during optimization.
Adding more layers in-between maps less pixels to one layer, which can yield insufficient Gram matrices and is computationally more expensive.
Decreasing $\theta_l$ reduces size variation at different depths (see \cref{fig:rebuttal}).

\begin{figure}[!h]
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cc}
\includegraphics[width=0.49\linewidth]{figures/rebuttal/ours_4levels_50_masked_zoom.png} &
\includegraphics[width=0.49\linewidth]{figures/rebuttal/ours_2levels_50_v2_masked_zoom.png} \\
(a) $\theta_l{=}4$ & (b) $\theta_l{=}2$
\end{tabular}
\caption{Variation of the number of depth levels $\theta_l$. Decreasing $\theta_l$ reduces size variation at different depths.}
\label{fig:rebuttal}
\end{figure}

\subsection{Circle-Stretch and -Size Metric}\label{subsec:circle-detect}
We describe in more detail the metrics and principles used in the main paper to quantify the effects of our depth and angle awareness.
In order to measure the effects, we stylize a scene with a hand-crafted ``circle'' image (see main paper) and only use the (multi-resolution, part-based) style loss.
After optimization, the red circles are stylized all over the scene and are well-suited to describe the two drawbacks of missing angle- and depth-awareness.
For example, circles become ellipsoidal if a small grazing angle is used for stylization and circles change their radius inconsistently without depth awareness.
We can now measure the degree we alleviate these issues by measuring the \textit{size} and \textit{stretch} of the circles/ellipses.
Naturally, NST creates ellipses of different shapes, but their overall distribution reveals the degree of 3D awareness for the complete scene.

\subsubsection{Segmentation of Ellipses}
First, we automatically segment red ellipses from each image of the stylized scene (see~\cref{fig:circles-detection}).
We first apply an HSV filter and only keep pixels in the ranges $0.6 \leq S, V \leq 1.0$, $0.0 \leq H \leq 0.08$ and $0.88 \leq H \leq 1.0$.
Then we turn the filtered image into a binary mask by thresholding colors above $0.15$ intensity and denoise it with OpenCV's ``fastNLMeansDenoising'' function~\cite{opencv_library}.
Afterwards, we use OpenCV's contour detection to get an edge map.
We filter out all contours with $max_d > 2$, where $max_d$ is the maximum deviation from a convex hull, as measured by ``convexityDefects''~\cite{opencv_library}.
We now fit ellipses to the remaining contours with ``fitEllipse''.
We extract the pixel-radius as
\begin{equation}
r_p = \frac{h_p + v_p}{2}
\end{equation}
for every fitted ellipse and calculate its pixel-stretch as
\begin{equation}
s_p = max(\frac{h_p}{v_p}, \frac{v_p}{h_p})
\end{equation}
where $h_p$ is the pixel-length of the horizontal ellipse radius and $v_p$ the vertical, respectively.
We remove the remaining wrongfully detected ellipses with $r_p < 10$, $r_p > 1000$ and $s_p > 10$ to get a result like in~\cref{fig:circles-detection}.
We use these ellipse characteristics to calculate metrics for depth- and angle-awareness.

\subsubsection{Calculation of Depth Metrics}
We calculate the correlation between per-pixel depth $d_{xy}$ and ellipse radius $r_p$ to quantify the effect of our depth-awareness in the 2D image plane (Corr. 2D).
For each detected ellipse we use the depth value of the pixel corresponding to the ellipse center.
A high negative correlation (e.g., $-0.5$) signals, that ellipse size decreases with increasing depth, whereas a low correlation (e.g., $-0.05$) signals, that ellipse size is independent of changes in depth.
A method that is able to stylize a scene depth-aware would create ellipses with smaller size in the background and thus have a high negative correlation in the 2D image plane.

To quantify the correlation in 3D, we backproject $h_p$ and $v_p$ to world-space using the estimated pose and camera intrinsics and calculate the world-space radius as
\begin{equation}
r_w = \frac{h_w + v_w}{2}
\end{equation}
where $h_w$ and $v_w$ are the backprojected axis lengths.
We then calculate the correlation between $r_w$ and the per-pixel depth $d_{xy}$ (Corr. 3D).
A high negative correlation (e.g., $-0.5$) signals, that ellipse size in world-space still decreases with increasing depth, whereas a low correlation (e.g., $-0.05$) signals, that ellipse size in world-space is independent of changes in depth.
A method that is able to stylize a scene depth-aware would create ellipses with uniformly distributed size in world-space (because the ellipse size should only change when rendering a scene from different poses, due to perspective projection).

Note that the stylized ellipses naturally vary in their sizes (e.g., ellipses can be smaller and larger independent of depth).
Therefore, the correlations will be precise up to a certain threshold.
However, the distribution of all segmented ellipses across the whole scene still allows to quantify the depth-awareness.

\subsubsection{Calculation of Angle Metric}
We backproject the pixel-stretch $s_p$ back to world-space as
\begin{equation}
s_w = max(\frac{h_w}{v_w}, \frac{v_w}{h_w})
\end{equation}
.
Then we calculate the arithmetic mean over all $s_w$ values for all detected ellipses.
A higher mean value means that overall we have more stretch, whereas a lower value signals a more uniform stylization result.
A method that is able to stylize a scene angle-aware would create ellipses with small stretch.

\begin{figure*}[ht]
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{ccc}
\includegraphics[width=0.32\linewidth]{figures/circle-detect/input.jpg} &
\includegraphics[width=0.32\linewidth]{figures/circle-detect/hsv.jpg} &
\includegraphics[width=0.32\linewidth]{figures/circle-detect/binary.jpg} \\
Input & Filtered Red & Denoised Binary Mask \\
\includegraphics[width=0.32\linewidth]{figures/circle-detect/contour.jpg} &
\includegraphics[width=0.32\linewidth]{figures/circle-detect/circle-detect.jpg} &
\includegraphics[width=0.32\linewidth]{figures/circle-detect/circle-detect-zoom.jpg} \\
Contour Detection & Detected Ellipses & Ellipses with Axis Points \\
\end{tabular}
\caption{Our pipeline for segmenting ellipses out of a stylized image for quantification of the depth and stretch effects. We filter the image to only contain red colors (Filtered Red) and then transform that to a denoised binary image to remove remaining pixels (Denoised Binary Mask). Afterwards we use contour detection to convert the binary mask into edge maps and finally fit ellipses to all applicable contours (Detected Ellipses). Lastly, we find the horizontal and vertical axis of the ellipses as the distance from the center to corresponding points on the edge of each ellipse.}
\label{fig:circles-detection}
\end{figure*}

\subsection{Additional Qualitative Results}\label{subsec:baseline-comp-add}
We show additional qualitative results for our method.

Additional comparisons on the ScanNet~\cite{dai2017scannet} dataset can be found in~\cref{fig:comp-baseline-3D-add} and~\cref{fig:comp-baseline-scannet-add}.

Additional comparisons for our ablation study can be found in~\cref{fig:ablation-add}.

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0362_02/rgb_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0362_02/nmr_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0362_02/dip_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0362_02/ours_cropped.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0592_00/rgb_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0592_00/nmr_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0592_00/dip_cropped.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/3d/0592_00/ours_cropped.jpg} \\
RGB Mesh & NMR~\cite{kato2018neural} & DIP~\cite{mordvintsev2018differentiable} & \textbf{Ours}
\end{tabular}
\caption{Top-down view on stylized meshes in comparison to previous work.}
\label{fig:comp-baseline-3D-add}
\end{figure*}

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{ccccc}
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/rgb/0_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/lsnv/00_s0000_es_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/nmr/0_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/dip/0.textured_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/ours/0.textured_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/rgb/240_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/lsnv/00_s0094_es_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/nmr/style_transfer_scannet_scene0291_00_20.jpg_content_100.0_style_1_tv_100000000.0_epochs_3_lr_0.1_images_-1_repeat_1_epoch_2_94_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/dip/240.textured_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/ours/240.textured_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/rgb/70_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/lsnv/00_s0035_es_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/nmr/style_transfer_scannet_scene0481_01_0.jpg_content_100.0_style_1_tv_100000000.0_epochs_5_lr_0.1_images_-1_repeat_1_epoch_4_35_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/dip/70.textured_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/ours/70.textured_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/rgb/770_style.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/lsnv/00_s0333_es_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/nmr/style_transfer_scannet_scene0531_00_116.jpg_content_100.0_style_1_tv_100000000.0_epochs_3_lr_0.1_images_-1_repeat_1_epoch_2_333_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/dip/770.textured_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/ours/770.textured_masked.jpg} \\
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/rgb/810_styled.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/lsnv/00_s0810_es_cropped.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/nmr/style_transfer_scannet_scene0568_01_63.jpg_content_100.0_style_1_tv_100000000.0_epochs_3_lr_0.1_images_-1_repeat_1_epoch_2_810_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/dip/810.textured_masked.jpg} &
\includegraphics[height=24mm, width=32mm]{figures/additional_results/all/ours/810.textured_masked.jpg} \\
RGB and Style & LSNV~\cite{huang_2021_3d_scene_stylization} & NMR~\cite{kato2018neural} & DIP~\cite{mordvintsev2018differentiable} & \textbf{Ours}
\end{tabular}
\caption{Comparison of stylization results for our method and related work on the ScanNet~\cite{dai2017scannet} dataset. We texture the mesh with each method (point cloud for Huang \etal~\cite{huang_2021_3d_scene_stylization} respectively) and render a single pose that is also captured in the RGB images.}
\label{fig:comp-baseline-scannet-add}
\end{figure*}

\begin{figure*}
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{cccc}
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/rgb/1_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/nn/1_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/wn/1_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/ww/1_masked.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/rgb/5_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/nn/5_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/wn/5_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/ww/5_masked.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/rgb/10_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/nn/10_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/wn/10_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/ww/10_masked.jpg} \\
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/rgb/11_style.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/nn/11_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/wn/11_masked.jpg} &
\includegraphics[width=0.24\linewidth]{figures/additional_results/ablation/ww/11_masked.jpg} \\
(a) RGB and Style & (b) Only 2D & (c) With Angle & (d) With Angle and Depth
\end{tabular}
\caption{Qualitative ablation study of our method. We compare ours (d) against only using angle (c) and not using angle and depth (b). Using angle better distinguishes surfaces and using depth creates smaller/detailed stylization in the background.}
\label{fig:ablation-add}
\end{figure*}

\subsection{Style Image Assets}\label{subsec:assets}
Throughout the main paper and the supplemental material, we use style images created by artists.
In~\cref{fig:image-assets} we list all images and give credit to their respective creators.

\begin{figure*}[ht]
\centering
\setlength\tabcolsep{1pt}
\begin{tabular}{p{50mm}p{50mm}p{50mm}}
\includegraphics[height=15mm]{figures/styles/0.jpg} &
\includegraphics[height=15mm]{figures/styles/14-2.jpg} &
\includegraphics[height=15mm]{figures/styles/20.jpg} \\
\textit{June Tree},\newline Natasha Wescoat & \textit{The Starry Night}, \newline Vincent van Gogh, 1889 & \textit{Femme au chapeau}, \newline Henri Matisse, 1905 \\

\includegraphics[height=15mm]{figures/styles/58.jpg} &
\includegraphics[height=15mm]{figures/styles/5.jpg} &
\includegraphics[height=15mm]{figures/styles/29.jpg} \\
\textit{Dinamismo di un' automobile}, \newline Luigi Russolo, 1913 & \textit{The Muse}, \newline Pablo Picasso, 1935 & \textit{Il cavaliere rosso}, \newline Carlo Carra, 1913 \\

\includegraphics[height=15mm]{figures/styles/50.jpg} &
\includegraphics[height=15mm]{figures/styles/19.jpg} &
\includegraphics[height=15mm]{figures/styles/17.jpg} \\
\textit{The Viaduct}, \newline Henri Edmond Cross & \textit{Kanagawa oki nami ura}, \newline Katsushika Hokusai, 1830-1832 & \textit{Skrik}, \newline Edvard Munch, 1893 \\

\includegraphics[height=15mm]{figures/styles/7.jpg} &
\includegraphics[height=15mm]{figures/styles/6.jpg} &
\includegraphics[height=15mm]{figures/styles/9.jpg} \\
\textit{Mosaic in Opus tessellatum} & \textit{Mosaic (unknown)}, \newline WikiArt.org & \textit{Self-Portrait}, \newline Pablo Picasso, 1907 \\

\includegraphics[height=15mm]{figures/styles/3.jpg} &
\includegraphics[height=15mm]{figures/styles/15.jpg} &
\includegraphics[height=15mm]{figures/styles/116.jpg} \\
\textit{Feathers Leaves and Petals}, \newline Kathryn Corlett & \textit{Small Magellanic Cloud}, \newline NASA, ESA and A. Nota & \textit{Edgar Poe, Charles Baudelaire, \newline Um Orangotango e o Corvo}, \newline Julio Pomar, 1985 \\

\includegraphics[height=15mm]{figures/styles/63.jpg} &
\includegraphics[height=15mm]{figures/styles/11.jpg} &
\includegraphics[height=15mm]{figures/styles/13.jpg} \\
\textit{Lapin et casserole rouge}, \newline Bernard Buffet, 1948 & \textit{L'homme à la tulipe}, \newline Jean Metzinger, 1906 & \textit{The Shipwreck of the Minotaur}, \newline J.M.W. Turner, 1805 \\

\includegraphics[height=15mm]{figures/styles/1.jpg} \\
\textit{Sketch 2 for composition VII}, \newline Wassily Kandinsky, 1913
\end{tabular}
\caption{List of all artistic paintings used throughout the main paper and supplemental material. We list the name of the painting and its author if known.}
\label{fig:image-assets}
\end{figure*}

redpajama_set_name: RedPajamaArXiv


This week on Episode 217 of the InSession Film Podcast, inspired by The Fate of the Furious, we talked about our favorite car chases in film. As mentioned on the show, we did tackle this subject on Episode 14 – waaaaayyyyy back in the day – before Brendan's tenure on the show, so it felt appropriate to revisit this list. From classics like Bullitt and The French Connection to recents like Mad Max: Fury Road and the Bourne franchise, car chases have been a staple for years. It was fun to discuss this topic once again and hopefully you enjoy our picks this week.
Hopefully you guys enjoyed our lists and if you agree or disagree with us, let us know in the comment section below. We covered some great car chases, but surely we missed some others that could've made your lists. That being said, what would be your Top 3? Leave a comment in the comment section or email us at insessionfilm@gmail.com.


Champion is a one-act play about Anthony Campione Jr. who was the first-born grandchild on both sides of Italian-American families. Loved and cherished by his entire family, especially his parents Anthony Sr. and Carol, no one ever questioned his darker skin but it was often 'logically' explained away. In his early thirties, after years of personal struggle and living as a "dark-Italian", Anthony unearths the truth about where he comes from and takes a drive to complete his journey of self-discovery. Champion is a compelling true story about courage, the persistence to find truth and unconditional love. Based on the real-life story of David Paladino as heard on NPR's "This American Life" with Ira Glass & Cris Beam.


text:
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>W29355_text</title>
        <link rel="stylesheet" type="text/css" href="style.css" />

                «

    <p class="styleSans12000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans12000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17000 — 17050
17050 — 17100

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 60% Light to medium blue gray, cream gray, smooth in part, rough in part, gritty in part, sub blocky, blocky in part, platy in part, trace disseminated pyrite; 35% sandstone, light to medium brown, cream brown, tan, buff, well rounded, very finely grained, finely grained in part, fair induration, good intergranular porosity, 5% siltstone, off white, cream gray, platy, thin black striations, pinpoint even yellow fluorescence, slow streaming cut.
SHALE: 65% Light to medium blue gray, cream gray, gritty in part, sub blocky to

    <p class="styleSans12000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17100— 17150

    <p class="styleSans10.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 65% Light to medium blue gray, sub blocky, blocky in pan, gritty, smooth in nart. siltv: 15% sandstone. light to medium brown. cream» tan. off white. sub angular to

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">r"- '7 *--'J 7 -— ' ~ ~"4<""~--'y --a--~ w --~~ v-w-u '* ~—---7 vei Wi~~ ~W~
,,,,C ,,,V, ,
sub rounded, fine to very finely grained, poor induration, fair intergranular porosity; trac 3 siltstone, off white, slightly platy, trace thin dark striations; trace disseminated pyrite; even yellow green fluorescence, very weak cloudy cut.

    <p class="styleSans12000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17150— 17200

    <p class="styleSans10.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 65% Light to medium blue gray, sub blocky, blocky in part, gritty, smooth in
,4 ,'1. firn/ ,, 1 _ _L't,,,1,!._ -HL -_i,,.1__A_

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">part, sruy; 3370 sancsrone, ilgnt IO mecnum Drown, cream, Ian, on wnue, suo anglu'dl' [0 sub rounded, fine to very finely grained, poor induration, fair intergranular porosity; trace siltstone, off white, slightly platy, trace thin dark striations; trace disseminated pyrite; even yellow green fluorescence, very weak cloudy cut.

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17200 — 17250

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 60% Light to medium blue gray, light to medium gray, sub blocky, silty,

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">smooth, argillaceous; 35% sandstone, light to medium brown, cream brown, tan, well rounded to sub rounded, very finely grained, poor induration, fair intergranular porosity, 5% siltstone, off white, platy, pyritic, thin dark striations, moderate dull yellow fluorescence, weak cloudy, slow streaming cut.

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17250 — 17300

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 55% Light to medium blue gray, light to medium gray, sub blocky, silty, smooth. argillaceous; 40% sandstone. light to medium brown. cream brown, tan, well

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">rounded tovsub rounded, very finely grained, poor indurationgfair intergranular fiorosity, 5% siltstone, cream, off white, platy, pyritic, thin, banded, thin dark striations; moderate dull yellow fluorescence, weak cloudy, slow streaming cut.

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">17300 ~ 17350
17350 — 17400

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 65% Light to medium blue gray, light gray, blocky to sub blocky, gritty, smooth in part, silty, trace disseminated pyrite; 35% sandstone, light to medium brown, tan, clear, sub angular; very finely grained, poor induration, fair intergranular porosity; trace siltstone, off white, slightly platy, trace thin dark striations; trace disseminated pyrite; even yellow green fluorescence, very weak cloudy cut.
SHALE: 65% Light to medium blue gray, light to cream gray in part, blocky to sub

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">blocky, smooth, gritty in part, silty in part; 35% sandstone, light to medium brown, cream, tan, off white, sub angular to sub rounded, very finely grained to silty, poor induration, fair intergranular porosity; trace siltstone, light gray, slightly platy, trace thin
dark striations; trace disseminated pyrite even yellow fluorescence, broad cloudy, fast streaming cut.

    <p class="styleSans8.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">47

    <p class="styleSans2.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans7.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">16950 — 17000

    <p class="styleSans9.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">SHALE: 70% Light to medium blue gray, light gray, cream gray in part, gritty in part,
c1111 klnr'lrv klnnlrv ha hart frarn A€ccnm€nafnrl run-Eh: OCOA nanAcfnnn 11'n1nf fen 11'an

    <p class="styleSans10.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">uuu ULUVK' Uxuvn 111 all, uuvu uxooylnlxxuuau ALIA; 1—.) /U ouuuoluuv 11 11L ball ll All. .7 7 J F a a a a
brown, tan, buff, off white, clear, well rounded, very finely grained, fair induration, good intergranular porosity, 5% siltstone, off white, cream gray, platy in part, laminated in part, thin dark striations, pinpoint even yellow fluorescence, instant broad milky cut.

    <p class="styleSans10.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">blocky, platy in part; 35% sandstone, light to medium brown, cream brown, tan, off white, fine to very finely grained, silty in part, sub rounded to well rounded, fairly sorted, fair to good intergranular porosity; trace light gray to off white thin platy siltstone; trace disseminated pyrite; moderate dull yellow fluorescence, instant weak cloudy cut.

    <p class="styleSans8.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans3.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

    <p class="styleSans30.0000<enum PANGO_WEIGHT_NORMAL of type PangoWeight><enum PANGO_STYLE_NORMAL of type PangoStyle>">

redpajama_set_name: RedPajamaGithub


text:
package warren

import (
	"log"
	"os"
	"os/exec"
	"path/filepath"
	"strings"
)

const CmdSockType string = "unix"
const WarrendRunDir string = "/var/run/warrend"
const CmdSockAddr string = "/var/run/warrend/warrend.sock"
const WarrendPidFile string = "/var/run/warrend/warrend.pid"
const WarrendConf string = "/etc/warrend.json"

func GitHash() string {
	hash, err := exec.Command("git", "rev-parse", "HEAD").Output()
	if err != nil {
		log.Fatal(err)
	}
	return strings.TrimSpace(string(hash))
}

func GitBranch() string {
	gitbranch, err := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD").Output()
	if err != nil {
		log.Fatal(err)
	}
	return strings.TrimSpace(string(gitbranch))
}

func AppName() string {
	paths, _ := filepath.Abs(filepath.Dir(os.Args[0]))
	paths, name := filepath.Split(paths)
	return name
}

func AbsPath(wd, path string) string {
	// ./local_path
	if path[0] == '.' {
		return wd + path[2:]
	} else
	// local_path
	if path[0] != '/' {
		return wd + path
	}
	return path

}


text:
Hirsutella kirchneri är en svampart som först beskrevs av O. Rostr., och fick sitt nu gällande namn av Minter, B.L. Brady & R.A. Hall 1983. Hirsutella kirchneri ingår i släktet Hirsutella och familjen Ophiocordycipitaceae.   Inga underarter finns listade i Catalogue of Life.

Källor

Köttkärnsvampar
kirchneri

redpajama_set_name: RedPajamaWikipedia


text:
All Fjord Boats For Sale
Company Based
Year of Formation
The company began in the 1960s when Bjercke started building the type of boat like a "car for everybody." This started in a small shop in Arendal. This shop could not take any boats that were over 24 foot in length. However, Bjercke successfully sold his smaller range of boats that ranged from 15-21 foot long.
For Bjercke to expand his range into 30 feet, he moved into a bigger shipyard in Arendal, and this is where he started to produce 30-foot boats very successfully.
Again, Bjercke began to expand, leading him to a new shipyard in Fevik in 1964; two years later, Bjercke had 120 employees.
10 years after Bjercke had founded the company, it proved to be very successful. Fjord had an employee force of over 700 people, offering 72 different models from four shipyards.
After trying to produce a boat of 75 foot that was unthinkable at the time, unfortunately, the oil crisis in 1973 shrank the company, but by the late 70s, the boat company began to grow again.
The Fjord 40' Cruiser
This new 12 meter Fjord 40 is a new exceptional motor. It is designed to move easily through the water while also navigate quietly and economically. This Fjord 40 was made with these in mind using tests to make sure that Fjord delivered. The 40' Cruiser was tested in a wind tunnel with help from a well-known automobile manufacturer.
This Fjord Boat 40' Cruiser is proudly showing the new Fjord Cruisers' look in the future.
Fjord boats previously for sale
Fjord 34 C...

redpajama_set_name: RedPajamaCommonCrawl


The 18th annual Economists Congress Groningen will take place on 5 October 2007 at the Municipal Theatre (Stadsschouwburg) of Groningen. This year the participants will have a close look into the development of the field of investment over the last couple of years.
On the basis of four sub-topics, attention will be paid to recent developments in the financial market, development in foreign direct investments, investment in human capital and investment opportunities in developing countries.
The official language during the day will be Dutch. Mr. Weisglas (former chairman of 'de Tweede Kamer') will be Master of Ceremonies.
-Mr. J.M. van der Does de Willebois (CFO NYSE Euronext).
-Dhr. M.C.R Klein Essink (TV host, initiator 'Day for Change') & Drs. D. Laman Trip (Former chairman of the Board of ING Nederland, initiator 'Day for Change').
-Prof. Dr. B.W. Lensink (Professor Finance and Financial Markets, Rijksuniversiteit Groningen).
-Drs. A. Pechtold (Chairman of D66).
-Mr. J.H. Schraven (Member of the Board of Corus Group, former chairman of VNO NCW).
-Drs. C.A.S. Selker (Consultant Executive Compensation Towers Perrin).
-Prof. Dr. S.J.G. van Wijnbergen (Former Head Economist of The World Bank, former secretary-general at the Ministry of Economic Affairs).
-Mr. J.H.M Willems (Chairman 'Ondernemingskamer').


Senator RUSTON (South Australia—Deputy Government Whip in the Senate) (20:16): I too rise today to make a contribution in support of the Social Services Legislation Amendment (No. 2) Bill 2015. As has previously been mentioned, this bill has three particular measures that are affecting the Social Services portfolio. Firstly, the bill seeks to amend social security law to streamline the current income management program under a two-year continuation. The bill also makes amendments to reflect two measures relating to aged care, which were included in the 2014-15 May MYEFO announcement. What I particularly want to talk about tonight are the income management changes and the need to ensure that income management is something that can be continued into the future, because it is such an important tool in our community. It is also a very valuable tool in a community in the state that you, Mr Acting Deputy President Gallacher, and I come from.
Basically, income management works by managing payments from government departments in such a way as to prioritise the needs of people who are on lower incomes but particularly those people who have had some difficulty in managing their incomes and meeting their requirements and commitments—such as rent, general bills, utility bills, food and education, which are some of the pretty basic requirements of life. These people have proven over a period of time that they have not been able to manage these payments and so income management has become an extraordinarily important tool in their lives to ensure that they do not get themselves into financial trouble or, more particularly, that they do not end up subjecting their families and particularly their children to some really unpleasant circumstances because of a lack of income to be able to afford to provide these basics.
Income management means that as a rule you cannot spend your money on such things as alcohol, tobacco or tobacco products, pornographic material, gambling, home brew kits et cetera—all of those are things that I think the majority of people would consider to be non-essential items in the daily or weekly budget and things that are luxury items that one is only able to have when one has excess income and is able to afford them. People can voluntarily elect to use income management or, in more extreme cases, people can be referred or requested to use it as part of a process that they undertake. Income management could possibly be a form of rehabilitation or it could simply be used because there is a need to protect the interests of those people that are unintended bystanders or are implicated in the actions of somebody who may require income management. Social workers, private protection agencies and even an approved housing authority can refer somebody for consideration for income management.
Income management has been around for a number of years, and Australia certainly leads the way in using income management as a tool—that is why it is important that the ongoing sustainability of income management is ensured and that we continue to look at the existing programs to make sure that there are ways that we can make them better, that we can make them more efficient and that we can make sure that they are affordable into the future. The Social Services Legislation Amendment (No. 2) Bill is one such piece of legislation that is seeking to make sure that we can continue income management into the future.
As I said, Mr Acting Deputy President, in a community in the state that you and I come from we have seen the introduction of an income management tool that has been welcomed with open arms by the whole community—the community that I am referring to is Ceduna on the west coast of South Australia at the start of the Nullarbor Plain, just before the Western Australian border. This program was introduced about 12 months ago at the request of the local community and a number of different residents in the local community. It was interesting that before the introduction of this program was proposed, there was a massive amount of community consultation—not just with the people in the community who potentially were the recipients of this particular scheme but also with those people who were impacted on by the behaviours and the like of those that this scheme is now applying to. The response that was received from these consultations was quite overwhelming—over 50 meetings took place in the communities that surround the Ceduna area, not just in the township of Ceduna. It was basically aimed at trying to stop the cycle of alcohol, violence and abuse that occurred in the community. I have had the pleasure on a number of occasions of visiting this community, particularly to look at the incidences of the alcohol-fuelled activity that was occurring in the community and the consequences of that activity.
After spending a number of days with the police, with the patrol squads and with the medicos, attending the hospitals and the clinics, it became very obvious that the behaviour of the few, who subsequently have gone on income management, was having a major impact on the entire community. The community was almost brought to its knees by these activities.
The interesting thing was that the people who seemed to be most keen for the introduction of an income management scheme were not the people actually indulging in the excessive consumption of alcohol. More often than not, they were the people who were suffering the consequences of that—the ones whose children were going without food, the ones who were the recipients of the violence. So it was interesting to see, when the program was introduced, how widely it was taken up in the communities. I commend the Minister for Indigenous Affairs, who is in the chamber, for the massive amount of work that he has done, not just with the community in Ceduna to which I refer but with communities around the whole of Australia where income management systems have been put in place and have served to improve the conditions for everybody in those communities. It is a highly commendable program and the reason I am so keen to be here to support an amendment bill that would assist in making sure that this particular program continues to be sustainable into the future.
The bill seeks to continue a level of income management and to streamline the measures contained within the income management system so that the operation of the program can become more efficient and effective. For example, certain incentive payments relating to income management will be abolished, the operation of the vulnerable measure of income management will be refined, and there will be a series of other minor amendments to remove ambiguities and improve the program's efficiency. Initially, we were hopeful that these amendments might be able to come into effect on 1 July 2015. However, given the delay in the bill's introduction into the House and the fact that, obviously, the bill cannot come into effect until after royal assent, the savings will only accrue from that period.
The other two measures contained in this bill relate to aged care. One relates to the residential care subsidy for pre-entry leave, and the other relates to aged-care planning advisory committees. Schedule 2 concerns the residential care subsidy for pre-entry leave. These amendments seek to formalise the cessation of the payment of the residential care subsidy to residential aged-care providers for holding a place open for a care recipient. Basically, these changes seek to better target aged-care expenditure by only paying a care subsidy for people who have actually entered permanent residential care. The savings associated with this measure, which are quite clearly outlined in the explanatory memorandum, have largely been realised through amendments to other pieces of legislation, such as the Aged Care (Subsidies, Fees and Payments) Determination 2014 and the Aged Care (Transitional Provisions) (Subsidy and Other Measures) Determination 2014. The amendments in the bill formalise these changes in the principal act.
Previously, the subsidy for the pre-entry period was paid to providers for up to seven days, at the rate of 30 per cent of the full residential care subsidy. That will be payable once the care recipient enters care. The care recipient will still be able to take pre-entry leave prior to entering the aged-care service, but the provider will not be able to recoup any lost residential care subsidy from the care recipient. However, the aged-care provider will be able to charge the care recipient the standard resident contribution for the pre-entry period. In the past, any days taken as pre-entry leave were counted as part of the care recipient's entitlement of 52 days of social leave from aged-care services. Under the amendments that we are seeking today, the 52-day cap on social leave will not include any leave that was taken as pre-entry leave. This ensures that any pre-entry leave taken by a care recipient does not negatively impact on their ability to take other forms of leave from the residential care service.
The lost pre-entry leave payment revenue should be considered in the context of other recent aged-care changes, such as the redirection of the former government's aged-care workforce supplement into the general pool of aged-care funding, and the introduction of a higher level of accommodation supplement. The government is expected to provide probably around $11 billion for residential care subsidies in the 2015-16 year. As the previous speaker, Senator McKenzie, said, in attempting to make the necessary changes in this area, it is interesting to note that there seems to be a lack of understanding about the long-term affordability of an ageing population and the need to make what are reasonably small changes in the interests of ensuring the sustainability of our aged-care sector into the future.
Schedule 3 of the Social Services Legislation Amendment (No. 2) Bill relates to aged-care planning advisory committees. One of the things that are very evident across the board in both the federal parliament and many state parliaments under Labor governments is the excessive need to expand the size of the public sector through not only the employment of additional people in the public service to deliver things that, in many instances, could be delivered at least as well, if not better, by the private sector but also this absolute proliferation of government boards, committees, advisory committees, standing committees, whatever you want to call them. There seem to be such an amazing number of people who are employed by or are required to advise government and government authorities, statutory authorities and the like.
In the interests of trying to achieve one of the election promises of this government—that is, smaller government; a government that only does what it can do, what it has to do and what it should do, not a government that seems to think that it knows best and should do absolutely everything for everybody—we are seeking through schedule 3 of this bill to abolish the aged care planning advisory committees. The services that are currently provided and that we believe are necessary from this group should be absorbed into the Department of Social Services. We do so in the belief that this department has the capacity and the existing resources to undertake the necessary advice to government as part of its normal day-to-day processes. This is a commitment that we made on 15 December 2014 as part of the Mid-Year Economic and Fiscal Outlook. We said that this was what we were going to do.
This schedule forms part of the smaller government reforms that we said we were going to implement to reduce the size and complexity of government, to streamline services and to reduce the cost of government administration. This is just another example of some simple actions that are going to have very, very little, if any, impact on the outcome for the people who are affected by this area of government administration. We can take a level of bureaucracy out of government, without having any impact on the delivery of the outcome. So, it is a case of smaller government, reduce the processes, make sure the processes do not outweigh the outcome in terms of their level of importance.
The original role of these aged care planning advisory committees was to provide advice on the distribution of aged care places. However, the last of these committees expired in September 2014. In a sense, all that schedule 3 of this bill really seeks to do is to make the necessary amendments to repeal what has now already become a redundant provision in the Aged Care Act. The government certainly remains absolutely committed to engaging with stakeholders to make sure that we continue to gain local intelligence and pursue a needs basis planning framework so that we are not putting a massive amount of framework in place and then worrying about whether we actually need it. What we are seeking to do is to minimise the amount of framework and processing that we are putting in place and just constantly keeping an eye on it to make sure that nothing falls between the gaps. We are taking very much a minimalist approach to how we deal with this activity within government. As I said, this is an approach we are taking not just within the aged care sector but more broadly across government. This government is one that is striving very hard to try to reduce the level of bureaucracy, red tape, compliance and burden that we continue to put on all of our sectors, whether they be the private or the public sector, in the delivery of an outcome so that they are able to do so in the most efficient, effective and unencumbered way.
To ensure that in changing these things we have covered off and that we have not left anything so that there are any problems out there, the Department of Social Services has consulted with a very broad range of aged care stakeholders to make sure that the information that the system needs in relation to aged care places is well informed—and certainly that appears be the case. The aged care approvals round, which was announced on 15 August 2015 was, we believe, particularly well informed by the process of negotiation that took place with the aged care sector.
It is with great pleasure that I stand tonight to make a contribution to the Social Services Legislation Amendment (No. 2) Bill 2015 and commend it to the parliament, because it seeks to do a number of things specifically in relation to the social services portfolio. More broadly, it is just another plank in the platform of the current coalition government in its attempt to make sure that we responsibly and respectfully manage all of our portfolios so that they are sustainable into the future and continue to be able to be funded and to be affordable into the future and that we continue to try and reduce the size of particularly the Public Service, the public sector, and public administration in areas where there is not necessarily any specific outcome being delivered by the level of compliance burden, regulation et cetera that is put in place.
I am particularly keen to commend the bill because I believe it is certainly an example of the summation of what good and responsible small government is all about and that it adds to a raft of reforms and projects that this government has implemented to ensure that we provide responsible, efficient and effective government for all people and across all portfolios in this current administration. I commend the bill to the House.


Here's another Easter printable!! We are only 9 days away from Easter!
This one is 8x10 and completely free! If you choose to download and are not already following The Latest Find, I would love for you to follow through GFC or Linky Followers (for the bloggers) and Facebook or Twitter!
Click HERE to follow by Facebook by clicking "like" on the Facebook page.
That way you will stay updated when new printables come available.
Click on the pic and it will take you to the download!
Be sure to check out my Printables page by clicking HERE for other Easter/Spring printables, as well as chevron and quatrefoil!
Hope everyone is having a great Spring so far!!
so so so cute :) thank you, as always, for linking up on Successful Saturday!
Hello and Happy Easter! Stopping by to let you know I featured you today!


text:
Ana de Jesus Maria José de Magalhães (Arrifana, 19 de Agosto de 1811 - 25 de Março de 1875), também conhecida como a Santinha de Arrifana é uma serva de Deus, título que a Igreja Católica dá a uma pessoa cujo processo de canonização foi oficialmente aberto. Ana de Jesus ficou conhecida no século XIX, pela capacidade de levitar.

É referida na literatura por vários autores nomeadamente Eça de Queirós, que a refere num romance «A Capitalǃ» como Santa da Arregaça, depois que a terá visitado na companhia do conde de Resende e da condessa de Cascais.

Biografia
A Serva de Deus, Ana de Jesus Maria José de Magalhães, nasceu na freguesia de Arrifana, concelho da Feira, a 19 de Agosto de 1811 e quatro dias depois, no dia 23 de Agosto, foi baptizada pelo padre Manuel Moutinho Gomes de Resende, coadjutor da paróquia.

Educada num contexto familiar cristão, desde a mais tenra infância, manifesta virtudes e qualidades que fazem entrever nela sinais evidentes de uma vocação para uma vida virtuosa e santa. Muito bem preparada pelo irmão e padrinho, o padre José Dias de Magalhães, fez, com imensa alegria, a sua primeira comunhão, marcando assim o início de uma vida centrada e voltada para a Eucaristia, o alimento que sustentou a sua vida e a unia a Cristo Jesus, na Sua oferta de amor pela humanidade.

Até aos 14 anos, entregou-se principalmente à pastoreação de gado nas propriedades dos seus pais. Aos 16 anos, cai entravada no leito, onde permaneceu até à sua morte a 25 de Março de 1875. Durante estes 48 anos, viveu unida a Cristo Jesus, foi testemunha de uma vida verdadeiramente eucarística, oferecendo a Sua vida a Deus, testemunhando o seu amor pelos irmãos, intercedendo por eles pela oração e pela oferta da sua existência.

A sua intimidade com Deus era alimentada por uma vida de oração intensa, um extraordinário amor e generosidade no modo como acolhia e amava aqueles que dela se aproximavam e se confiavam às suas orações. O seu alimento era um pouco de chá, uma pequena quantidade de leite e uma pequena porção de pão de trigo, tomado apenas aos domingos, terças e quintas-feiras de cada semana.

Confessava-se e comungava com a regularidade permitida no seu tempo, tendo sido concedido por um breve Pontifício, em 1866, a D. João da Natividade, seu confessor e director espiritual, a licença para erigir um altar e celebrar a Eucaristia, na sala contígua em frente ao quarto da Serva de Deus. Vários testemunhos do seu tempo confirmam, que depois de receber a sagrada comunhão, entrava em êxtase, elevando-se da cama, ficando suspensa a uma altura que permitia passar livremente a mão entre a cama e o seu corpo.

A paciência heroica com que suportava os seus prolongados sofrimentos, maravilhava a todos que, de perto ou de longe, a conheciam. Viveu, na verdade, pregada com Cristo na Cruz, tendo como predilecção a meditação da Paixão do Senhor. Em cada ano, em Sexta-feira Santa do meio-dia às três horas da tarde, entrava em êxtase e revivia a paixão do Senhor. Dotada de um amor profundo à Igreja, orava de modo particular e intenso pelos sacerdotes e a sua santificação.

A sua vida de intimidade com Deus, pela ascese, pelo Seu amor à Eucaristia e à oração são as notas mais salientes que testemunham o Seu amor a Deus e ao próximo, numa vida absolutamente centrada em Deus e no Seu amor.

Morreu no dia 25 de Março de 1875.

Oração
Santíssima Trindade, Pai, Filho e Espírito Santo, que inflamaste a alma da vossa serva, Ana de Jesus Maria José de Magalhães, num grande amor à Sagrada Família e uma constante devoção à Santíssima Eucaristia, concedei-nos, por sua intercessão, a graça que Vos pedimos (…) e a sua beatificação pela Santa Igreja, se à Vossa maior honra e glória assim convém. Ámen. Pai-Nosso, Avé-Maria e Glória ao Pai.

Bibliografia
Ana de Jesus Maria José de Magalhães, santinha de Arrifana (Moreira, Porfírio Gomes. 1975)

Servos de Deus
Religiosos de Portugal


text:
A sign women are seeing their role in the NFL grow
Home Cookin'
Biz + Dev
Events in the (614)
Winter Cocktail Guide
Carry Out Guide
2020 ColumBEST Awards
614 T-shirts
(614) Annual Subscription
Sports, Sports
by Lori Schmidt
Lori Schmidt
GM must give back to Ohio
A group of three women made history this week at the Browns game.
Callie Brownson, the Browns' chief of staff, was on Cleveland's sideline. Coaching intern Jennifer King was on the opposite sideline for Washington working with their team's running backs. And six-year NFL officiating veteran Sarah Thomas was the down judge, a position responsible for overseeing the line of scrimmage.
It was the first time two women have coached in a game with a female official, and fans were understandably excited to see it.
Making history 💪
Today's game marks the first regular-season game in @NFL history to have a female coach on both sidelines + a female official.#WASvsCLE pic.twitter.com/MlTOWHACXM
— Cleveland Browns (@Browns) September 27, 2020
Brownson said she first became aware that she had fallen in love with football when she realized that she felt devastated while watching the Miami Hurricanes she rooted for lose to Ohio State in the 2003 Fiesta Bowl. This was no passing fascination, it was a real passion. She played for eight years in the Women's Football Alliance before she entered coaching. She then worked with Dartmouth College and the Buffalo Bills prior to coming to Cleveland.
King was also a player in the Women's Football Alliance, and she has held positions with the Carolina Panthers as well as Dartmouth College.
Thomas has broken barriers as a woman in officiating, including being the first to help call a playoff game, among other important football firsts on her impressive resume.
The Browns defeated Washington 34-20, and Washington lost former Buckeye Chase Young for most of the game after he hurt his groin. The timeline for his return is still unknown, but reports out today are that it is a relatively minor injury.
Lori Schmidt September 28, 2020
Buckeyes Surprise: Urban Meyer heads to Jacksonville
Where to get the best bagels for your breakfast
Community comes together to support Gahanna eatery
Grandview butcher shop, restaurant, coming to Shawnee Hills
© 2020 614 Media Group. All Rights Reserved.
Thanks for stopping by but it looks like the contest you tried to enter is over. Keep an eye on your email for a chance at the next one!
Congratulations, ! You earned one entry into our Big Perk of . You now have entries
Be sure to open tomorrow's email and click the giveaway link for another entry!
Enter your information below to earn an entry into our
The Six
Join over 80,000 of your neighbors and friends with the city's largest daily newsletter.