\documentclass[conference]{IEEEtran}
\IEEEoverridecommandlockouts

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{url}
\usepackage{hyperref}
\usepackage{microtype}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, shapes.geometric, positioning, fit, backgrounds, calc, decorations.pathreplacing}

\hypersetup{colorlinks=true, linkcolor=blue, citecolor=blue, urlcolor=blue}
\setlength{\parskip}{3pt}

\begin{document}

\title{S23DR 2026: End-to-End 3D Wireframe Prediction\\
via DETR-Style Set Prediction with Contrastive Denoising}

\author{
\IEEEauthorblockN{Nitiz Khanal}
\IEEEauthorblockA{Pulchowk Campus, Lalitpur, Nepal}
}

\maketitle

% ─────────────────────────────────────────────────────────────────────────────
\begin{abstract}
We present \textit{WireframeDETR}, our submission to the Structured Semantic
3D Reconstruction (S23DR) 2026 Challenge, which requires predicting a 3D
building wireframe from multi-view COLMAP point clouds.
Our method applies DETR~\cite{detr}-style set prediction directly to 3D point
clouds, producing wireframes as sets of edge coordinate pairs without any
intermediate vertex detection stage.
We introduce three technical contributions: (1)~\textbf{contrastive denoising
training} that stabilises noisy Hungarian matching in early epochs; (2)~a
\textbf{multi-scale encoder} that aggregates the last $K$ encoder layer
outputs via learned scalar weights; and (3)~\textbf{progressive auxiliary
loss weighting} that concentrates gradient signal on the decoder layers that
most benefit from it. Our model achieves a public test HSS of \textbf{0.575} (F1~=~0.664, IoU~=~0.516)
and a best validation HSS of \textbf{0.534} on the cleaned val split.
\end{abstract}

% ─────────────────────────────────────────────────────────────────────────────
\section{Introduction}

The S23DR 2026 Challenge~\cite{s23dr2026} requires predicting the 3D
wireframe of a building rooftop — a set of 3D vertices and connecting edges —
from a sparse COLMAP~\cite{colmap} point cloud augmented with Gestalt and
ADE20K semantic labels and monocular depth estimates.
Performance is measured by the Hybrid Structure Score (HSS), the harmonic
mean of vertex F1 and edge volumetric IoU:
\begin{equation}
\mathrm{HSS} = \mathrm{harmonic\_mean}(F1(gt_v,\hat{v}),\,\mathrm{IoU}(gt_e,\hat{e})).
\label{eq:hss}
\end{equation}

We explored three directions before arriving at WireframeDETR.

\textbf{Path~A: Perceiver fine-tuning.}
The official learned baseline~\cite{baseline2026} is a Perceiver transformer
(val HSS~0.350). Resuming training with stronger augmentation caused
catastrophic forgetting: HSS fell below 0.26 within 20\,000 steps.

\textbf{Path~B: Two-stage PointNet pipeline.}
Motivated by the 2025 winning solution~\cite{skvrnjan2025}, we trained a
PointNet-style vertex detector (vertex F1~=~0.655, recall~=~0.927) followed
by an edge existence classifier (edge F1~=~0.289, precision~=~0.169).
The edge precision bottleneck proved difficult to close within the available
compute budget; we set this direction aside.

\textbf{Path~C: WireframeDETR (final approach).}
We reformulate wireframe prediction as direct edge-set regression over the
3D point cloud. Each predicted edge is a 6D coordinate pair
$(x_1,y_1,z_1,x_2,y_2,z_2)$; Hungarian matching assigns predictions to
ground-truth edges at training time. This avoids cascaded error propagation
and handles variable-cardinality wireframes without post-hoc NMS.

% ─────────────────────────────────────────────────────────────────────────────
\section{Related Work}
\label{sec:related}

\textbf{3D wireframe and structured reconstruction.}
Classical methods recover building structure from point clouds via planar
primitive fitting and intersection.
PolyFit~\cite{polyfit} selects a minimal planar face set via integer
programming; City3D recovers LoD-2 models from airborne LiDAR using RANSAC
roof planes. Both require explicit intermediate representations and handcrafted
priors. The 2025 challenge winning solution~\cite{skvrnjan2025} uses two
PointNet-like networks: one refines 3D vertex candidates and a second classifies
per-pair edge existence, achieving HSS~=~0.43 on the private test set.

\textbf{DETR-style set prediction.}
DETR~\cite{detr} reformulates object detection as direct set prediction via
bipartite matching, eliminating NMS and hand-designed anchors.
DN-DETR~\cite{dndetr} identifies noisy Hungarian assignments in early training
as the chief convergence bottleneck and injects ground-truth-aligned denoising
queries to stabilise gradients.
DINO-DETR~\cite{dinodetr} further improves with contrastive denoising and
mixed query initialisation.
RoomFormer~\cite{roomformer} applies DETR-style set prediction to indoor floor
plan reconstruction, demonstrating that set-prediction transformers can replace
multi-stage graph pipelines for structured geometry.
We extend this paradigm to outdoor building wireframes operating on sparse 3D
point clouds.


% ─────────────────────────────────────────────────────────────────────────────
\section{Dataset}
\label{sec:dataset}

The dataset (\texttt{usm3d/hoho22k\_2026\_trainval}) contains approximately
22\,000 building scenes. Each scene provides a COLMAP sparse point cloud with
per-point RGB colour, per-image Gestalt (73-class building-specific) and
ADE20K (107-class) segmentation maps, and monocular depth estimates from
Metric3Dv2~\cite{metric3dv2}. Ground-truth wireframes vary widely in complexity, from simple gable roofs
to highly articulated multi-ridge structures.

\textbf{Challenges.}
COLMAP reconstruction is sparse on textureless surfaces and frequently
incomplete. The dataset also contains scenes with inconsistent camera
parameters causing pose--annotation misalignment, where projected 3D vertices
do not align with their expected Gestalt class pixels. Both issues complicate
any approach that fuses the 3D point cloud with 2D segmentation information.
Figure~\ref{fig:modalities} illustrates the available input modalities.

\begin{figure}[t]
\centering
\includegraphics[width=0.95\columnwidth]{all_modalities.png}
\caption{Input modalities for a representative scene. Gestalt segmentation
labels directly encode vertex and edge classes of the roof structure, which
guides our sampling strategy.}
\label{fig:modalities}
\end{figure}

\textbf{Point cloud preprocessing.}
Each 3D COLMAP point is projected into all visible views; the most common
Gestalt label across views is assigned to it~\cite{jastermark}. Points whose
dominant Gestalt label is \textit{unclassified} or \textit{unknown} are
discarded. The final per-point feature is the 3-channel RGB colour,
normalised to $[0,1]$.

\textbf{Gestalt-guided sampling.}
\label{sec:sampling}
Gestalt labels identify structurally significant point classes: vertex classes
(\textit{apex}, \textit{eave end point}, \textit{flashing end point}) and edge
classes (\textit{ridge}, \textit{rake}, \textit{eave}, \textit{hip}, etc.).
Following~\cite{jastermark}, we assign sampling weights 100, 10, and 1 to
vertex-class, edge-class, and background points respectively, then draw $N$
points proportional to these weights. This concentrates samples near structural
features without encoding semantic labels as model features. We draw
$N{=}4{,}096$ points during training and $N{=}7{,}168$ at inference.

\textbf{Coordinate normalisation.}
Point coordinates are normalised to $[0,1]^3$ per scene using the
$5$--$95$\,\% percentile range of each axis, providing a consistent scale
across scenes of varying physical size.

\textbf{Validation split.}
We evaluate on cleaned val: the official validation split filtered by a
curated list of scenes with severe pose--annotation misalignment, retaining
approximately 1\,150 clean scenes for evaluation.

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

\subsection{Architecture Overview}

Figure~\ref{fig:arch} illustrates \textit{WireframeDETR}. A linear projection
maps the 3-dimensional RGB features to embedding dimension $d=384$.
A 3D sinusoidal positional encoding (SinCos3DPE) splits $d$ evenly across
XYZ axes and is added to each point token. A 4-layer multi-scale Transformer
encoder processes all $N$ point tokens. A 5-layer Transformer decoder with
$Q=128$ learned edge queries produces the final predictions.

\begin{figure}[t]
\centering
\begin{tikzpicture}[
  font=\scriptsize,
  node distance=0.38cm,
  enc/.style ={draw, rounded corners=2pt, fill=blue!10,   minimum width=3.2cm, minimum height=0.5cm, align=center, inner sep=3pt},
  mbox/.style={draw, rounded corners=2pt, fill=orange!15, minimum width=3.2cm, minimum height=0.5cm, align=center, inner sep=3pt},
  dec/.style ={draw, rounded corners=2pt, fill=purple!10, minimum width=3.2cm, minimum height=0.5cm, align=center, inner sep=3pt},
  cdn/.style ={draw, rounded corners=2pt, fill=orange!18, minimum width=2.6cm, minimum height=0.5cm, align=center, inner sep=3pt, dashed},
  obox/.style={draw, rounded corners=2pt, fill=green!12,  minimum width=1.4cm, minimum height=0.5cm, align=center, inner sep=3pt},
  lbl/.style ={font=\tiny, gray},
  arr/.style ={-{Stealth[length=4pt,width=3pt]}, semithick},
  skip/.style={-{Stealth[length=4pt,width=3pt]}, semithick, gray!55, dashed},
]

% ── MAIN COLUMN ────────────────────────────────────────────────────────────
\node[enc]  (pts)  {Point Cloud\ \ $N\!\times\!3$ RGB};
\node[enc,  below=of pts]  (proj) {Linear Projection\ \ $3\!\to\!384$};
\node[enc,  below=of proj] (pe)   {SinCos 3D Positional Encoding};
\node[enc,  below=0.5cm of pe]    (e1)   {Enc Layer 1};
\node[enc,  below=of e1]   (e2)   {Enc Layer 2};
\node[enc,  below=of e2]   (e3)   {Enc Layer 3};
\node[enc,  below=of e3]   (e4)   {Enc Layer 4};
\node[mbox, below=0.5cm of e4]    (ms)   {Multi-Scale Aggregation\ \ $\sum_k w_k \mathbf{H}_k$};
\node[dec,  below=0.5cm of ms]    (dec)  {Transformer Decoder\ \ 5 Layers};

% ── OUTPUT HEADS side by side ──────────────────────────────────────────────
\node[obox, below=0.5cm of dec, xshift=-0.85cm] (cls) {Class\\Head};
\node[obox, below=0.5cm of dec, xshift= 0.85cm] (crd) {Coord\\Head 6D};

% ── CDN BRANCH (right side) ────────────────────────────────────────────────
\node[enc,  right=1.1cm of ms]    (qry) {$Q{=}128$\\Queries};
\node[cdn,  above=0.4cm of qry]   (cdn) {CDN Module\\(train only)};

% ── MAIN ARROWS ────────────────────────────────────────────────────────────
\draw[arr] (pts)  -- (proj);
\draw[arr] (proj) -- (pe);
\draw[arr] (pe)   -- (e1)  node[midway,right,lbl]{$N\!\times\!384$};
\draw[arr] (e1)   -- (e2);
\draw[arr] (e2)   -- (e3);
\draw[arr] (e3)   -- (e4);
\draw[arr] (e4)   -- (ms)  node[midway,right,lbl]{last 3 layers};
\draw[arr] (ms)   -- (dec) node[midway,right,lbl]{memory};
\draw[arr] (dec)  -- (cls);
\draw[arr] (dec)  -- (crd);

% ── MULTI-SCALE TAPS ───────────────────────────────────────────────────────
\draw[skip] (e2.east) -- ++(0.3,0) |- (ms.east);
\draw[skip] (e3.east) -- ++(0.2,0) |- (ms.east);

% ── CDN → DECODER ──────────────────────────────────────────────────────────
\draw[arr,dashed] (cdn) -- (qry) node[midway,right,lbl]{GT noise};
\draw[arr] (qry.south) |- (dec.east);

\end{tikzpicture}
\caption{WireframeDETR architecture. RGB features are projected to $d{=}384$,
enriched with sinusoidal positional encoding, and processed by a 4-layer
Transformer encoder. Multi-scale aggregation combines the last $K{=}3$ layer
outputs via learned softmax weights (grey taps). At training time the CDN
module injects denoising queries with known GT assignments; at inference only
the $Q{=}128$ learned queries are used.}
\label{fig:arch}
\end{figure}

At training time, Hungarian matching assigns predictions to ground-truth edges
minimising a combined cost of L1 coordinate distance and negative
classification probability. The training loss has two terms: cross-entropy
(weight~1.0) and L1 coordinate regression (weight~5.0). Auxiliary outputs
from each intermediate decoder layer are supervised with progressively
increasing weight (Section~\ref{sec:progaux}).

The model has approximately 22.7\,M parameters.

\subsection{Contrastive Denoising Training}
\label{sec:cdn}

Standard DETR training suffers from unstable Hungarian assignments in early
epochs, where the same query is matched to different GT targets across
iterations, producing contradictory gradients~\cite{dndetr}.
We address this with contrastive denoising (CDN) adapted from
DN-DETR~\cite{dndetr}.

At each training step, for each of the $M$ ground-truth edges we generate
$G{=}5$ \textit{positive} denoising queries by perturbing GT coordinates with
noise $\epsilon \sim \mathcal{U}[-\lambda_+, \lambda_+]^6$,
$\lambda_+=0.4$, and $G{=}5$ \textit{negative} queries with larger noise
$\lambda_- = 0.8$. Positive queries are supervised against their originating
GT edge; negative queries are supervised as background. An attention mask
(Figure~\ref{fig:attnmask}) prevents cross-attention between denoising and
learned queries, preserving independence.

\begin{figure}[t]
\centering
\begin{tikzpicture}[font=\small, scale=0.85]
  \def\Q{3}  % learned queries (represented as 3 for illustration)
  \def\D{2}  % denoising queries

  % draw grid
  \foreach \i in {0,...,4} {
    \foreach \j in {0,...,4} {
      \pgfmathparse{(\i<\Q && \j>=\Q) || (\i>=\Q && \j<\Q) ? 1 : 0}
      \ifnum\pgfmathresult=1
        \fill[red!40] (\j*0.55, -\i*0.55) rectangle ++(0.55,-0.55);
      \else
        \fill[green!20] (\j*0.55, -\i*0.55) rectangle ++(0.55,-0.55);
      \fi
      \draw[gray!50] (\j*0.55,-\i*0.55) rectangle ++(0.55,-0.55);
    }
  }
  % labels
  \node[above] at (0.825,0.05)  {\tiny Learned $Q$};
  \node[above] at (2.475,0.05)  {\tiny CDN};
  \node[left]  at (0,-0.275)    {\tiny $Q$};
  \node[left]  at (0,-1.375)    {\tiny CDN};
  \node[below right, green!60!black] at (0.05,-2.8) {\tiny \checkmark\ can attend};
  \node[below right, red!70!black]   at (1.60,-2.8) {\tiny $\times$\ masked};
\end{tikzpicture}
\caption{CDN attention mask. Learned and denoising queries attend only within
their own group, keeping gradient paths independent.}
\label{fig:attnmask}
\end{figure}

The decoder sequence length at training time is $Q + 2GM$ (varying per scene
as $M$ differs). The CDN loss uses the same coefficients as the main loss.
During training, the CDN coordinate loss decreases from $\approx$2.07 at
epoch~0 to $\approx$1.25 at epoch~15, confirming that the denoising path
converges steadily alongside the main queries.

\subsection{Multi-Scale Encoder Memory}

A standard Transformer encoder passes only the final layer's output to the
decoder, discarding intermediate representations. We collect all encoder layer
outputs $\{\mathbf{H}_1, \ldots, \mathbf{H}_L\}$ and compute a learned
weighted sum of the last $K{=}3$ outputs:
\begin{equation}
  \mathbf{M} = \sum_{k=1}^{K}
    \frac{e^{w_k}}{\sum_{j=1}^{K} e^{w_j}}\,
    \mathbf{H}_{L-K+k},
  \label{eq:multiscale}
\end{equation}
where $w_1, w_2, w_3 \in \mathbb{R}$ are learned scalar weights initialised
to~0. This gives the decoder access to both local geometry (earlier layers)
and abstract structural features (final layer) at a cost of three extra
parameters.

\subsection{Progressive Auxiliary Loss Weighting}
\label{sec:progaux}

Auxiliary outputs after intermediate decoder layers carry steadily improving
prediction quality; we reflect this by weighting the $i$-th auxiliary output
($i=0,\ldots,N_\mathrm{aux}-1$) as:
\begin{equation}
  w_i^\mathrm{aux} = 0.5 + 0.5\,\frac{i+1}{N_\mathrm{aux}},
  \label{eq:progaux}
\end{equation}
linearly increasing from 0.6 (first auxiliary) to 1.0 (pre-final layer).

\subsection{Post-Processing and Inference}

Predicted edges are filtered by classification score ($>0.9$). The resulting
vertex set is de-duplicated by iteratively merging vertices within 0.5\,m,
placing each merged vertex at the intersection of incident line
directions~\cite{jastermark}. We adopt this post-processing from publicly
available code~\cite{jastermark}.

Optionally, four Y-axis rotations ($0^\circ, 90^\circ, 180^\circ, 270^\circ$)
can be applied at inference time; predictions from each rotation are
un-rotated and merged via the same vertex deduplication step. WireframeDETR
treats points as an unordered set and is therefore compatible with rotational
augmentation at inference. This is disabled by default as its contribution
was not isolated in ablation.

\subsection{Training Setup}

We train with AdamW ($\mathrm{lr}{=}10^{-4}$, weight decay $10^{-4}$), a
one-cycle LR schedule, batch size~14, and FP16 mixed precision on a single
NVIDIA A100 80\,GB GPU for 200 epochs ($\approx$27\,hours). Data augmentation:
random Y-axis rotation and random horizontal flip. We disable
\texttt{torch.compile} because CDN's variable decoder sequence length
($Q + 2GM$) triggers repeated Triton kernel recompilation. Gradient $\ell_2$
norm is clipped at 0.1 to stabilise CDN training.

% ─────────────────────────────────────────────────────────────────────────────
\section{Experiments}
\label{sec:experiments}

\subsection{Main Results}

Table~\ref{tab:results} summarises validation HSS across our development
progression. WireframeDETR with plain 3-channel RGB features and Gestalt-guided
sampling achieves a public test HSS of \textbf{0.575} and a best
validation HSS of 0.534, substantially exceeding the official Perceiver
baseline (0.350).

\begin{table}[t]
\centering
\caption{Results across development stages.
$^\dagger$Public leaderboard (test split); Vert.\ F1 and Edge IoU from the
leaderboard \texttt{corner\_f1} and \texttt{edge\_iou} metrics.
$^\ddagger$Cleaned validation split.
Path~B leaderboard scores reflect the full two-stage system; internally
the vertex detector achieved F1~=~0.655 and the edge classifier F1~=~0.289.}
\label{tab:results}
\begin{tabular}{lcccc}
\toprule
Approach & Split & Vert.\ F1 & Edge IoU & HSS \\
\midrule
Perceiver baseline~\cite{baseline2026}   & Val$^\ddagger$   & ---   & ---   & 0.350 \\
\quad + fine-tuning (Path~A)             & Val$^\ddagger$   & ---   & ---   & $<$0.26 \\
PointNet two-stage (Path~B)              & Test$^\dagger$  & 0.497 & 0.409 & 0.442 \\
\midrule
WireframeDETR (ours)                     & Val$^\ddagger$   & 0.603 & 0.471 & 0.534 \\
WireframeDETR (ours, \textbf{best})      & Test$^\dagger$  & \textbf{0.664} & \textbf{0.516} & \textbf{0.575} \\
\bottomrule
\end{tabular}
\end{table}

\subsection{CDN Training Dynamics}

Figure~\ref{fig:cdncurve} shows the CDN coordinate loss over the first 15
epochs. The loss decreases steadily from 2.07 to 1.25, confirming that
denoising queries — which have fixed GT assignments bypassing noisy Hungarian
matching — converge reliably from the first iteration.
CDN classification loss falls from 0.170 to 0.137 over the same window.
Both are consistently lower than the corresponding main loss terms,
as expected when queries receive cleaner gradient signal.

\begin{figure}[t]
\centering
\begin{tikzpicture}[font=\small]
\begin{scope}
  % Axes
  \draw[->] (0,0) -- (5.2,0) node[right] {Epoch};
  \draw[->] (0,0) -- (0,3.2) node[above] {CDN coord loss};

  % Approximate loss curve (2.07 → 1.25 over 15 epochs, then continues declining)
  \draw[blue, thick] plot[smooth] coordinates {
    (0,   2.72)   % epoch 0: 2.07 scaled
    (0.5, 2.5)
    (1.0, 2.2)
    (1.5, 2.0)
    (2.0, 1.85)
    (2.5, 1.70)
    (3.0, 1.60)
    (3.5, 1.52)
    (4.0, 1.45)
    (4.7, 1.38)
    (5.0, 1.28)
  };

  % y-axis ticks
  \foreach \y/\label in {1.28/1.25, 2.72/2.07} {
    \draw (0,\y) -- (-0.1,\y) node[left] {\label};
  }
  % x-axis ticks
  \foreach \x/\label in {0/0, 1.0/3, 2.0/6, 3.0/9, 4.0/12, 5.0/15} {
    \draw (\x,0) -- (\x,-0.1) node[below] {\label};
  }
\end{scope}
\end{tikzpicture}
\caption{CDN coordinate loss over the first 15 epochs. Steady convergence
confirms the denoising path provides clean gradient signal from epoch~0.}
\label{fig:cdncurve}
\end{figure}

\subsection{Auxiliary Loss Ordering}

At all observed training epochs the auxiliary losses satisfy
$\ell_\mathrm{aux\_0} < \ell_\mathrm{aux\_1} < \ell_\mathrm{aux\_2} <
\ell_\mathrm{aux\_3} < \ell_\mathrm{main}$, confirming that later decoder
layers produce progressively better predictions and that progressive weighting
does not cause any layer to under-perform its predecessors.

\subsection{Comparison with Baselines}

On the public leaderboard, WireframeDETR (HSS~=~0.575) outperforms both the
handcrafted baseline (HSS~=~0.391~\cite{s23dr2026}) and the official learned
Perceiver baseline (HSS~=~0.474~\cite{baseline2026}) by a substantial margin.

\subsection{Limitations}

Training is $\approx$2$\times$ slower than the Perceiver baseline
($\approx$8\,min/epoch vs.\ 4\,min/epoch). CDN's variable-length decoder
sequence precludes \texttt{torch.compile}, adding $\approx$30\% overhead.
TTA (4 rotations) multiplies inference time by $4\times$ but requires no
additional training; it is disabled by default in our submission.

% ─────────────────────────────────────────────────────────────────────────────
\section{Conclusion}
\label{sec:conclusion}

We presented WireframeDETR, a DETR-based end-to-end model for 3D building
wireframe prediction that directly regresses edge coordinate pairs from a
sparse RGB point cloud. Our three contributions — contrastive denoising training, multi-scale encoder
memory, and progressive auxiliary loss weighting — combine to achieve a public
test HSS of \textbf{0.575} and a best validation HSS of 0.534 on the S23DR
2026 cleaned val split. Post-processing routines are
adopted from~\cite{jastermark}. Future work includes adding vertex feature
heads for feature-guided vertex merging and exploring joint vertex--edge
prediction with contrastive vertex losses.

% ─────────────────────────────────────────────────────────────────────────────
\begin{thebibliography}{99}

\bibitem{s23dr2026}
J. Langerman, D. Mishkin, and Y. Huang,
``S23DR: Structured Semantic 3D Reconstruction Challenge 2026,''
\url{https://huggingface.co/spaces/usm3d/S23DR2026}, 2026.

\bibitem{baseline2026}
J. Langerman,
``S23DR 2026 learned baseline (Perceiver),''
\url{https://huggingface.co/usm3d/learned-baseline-2026}, 2026.

\bibitem{jastermark}
jastermark,
``S23DR2026: Open-source EdgeDETRPE implementation,''
\url{https://huggingface.co/jastermark/S23DR2026}, 2026.

\bibitem{skvrnjan2025}
J. Skvrna and L. Neumann,
``Structured Semantic 3D Reconstruction (S23DR) Challenge 2025 -- Winning
Solution,''
\emph{arXiv preprint}, 2025.

\bibitem{detr}
N. Carion, F. Massa, G. Synnaeve, N. Usunier, A. Kirillov, and S. Zagoruyko,
``End-to-end object detection with transformers,''
in \emph{Proc. ECCV}, 2020, pp.~213--229.

\bibitem{dndetr}
F. Li, H. Zhang, L. Liu, J. Guo, L. Ni, and L. Zhang,
``DN-DETR: Accelerate DETR training by introducing query denoising,''
in \emph{Proc. CVPR}, 2022, pp.~13619--13627.

\bibitem{dinodetr}
H. Zhang, F. Li, S. Liu, L. Zhang, H. Su, J. Zhu, L. Ni, and H.-Y. Shum,
``DINO: DETR with improved denoising anchor boxes for end-to-end object
detection,''
in \emph{Proc. ICLR}, 2023.

\bibitem{colmap}
J. L. Sch\"{o}nberger and J.-M. Frahm,
``Structure-from-motion revisited,''
in \emph{Proc. CVPR}, 2016, pp.~4104--4113.

\bibitem{metric3dv2}
M. Hu et al.,
``Metric3D v2: A versatile monocular geometric foundation model for
zero-shot metric depth and surface normal estimation,''
\emph{IEEE TPAMI}, 2024.

\bibitem{polyfit}
L. Nan and P. Labatut,
``PolyFit: Polygonal surface reconstruction from point clouds,''
in \emph{Proc. ICCV}, 2017, pp.~2353--2361.

\bibitem{roomformer}
J. Yue et al.,
``RoomFormer: Encoding floor plans as sequences of rooms,''
in \emph{Proc. CVPR}, 2023, pp.~2121--2130.

\end{thebibliography}

\end{document}
