fixed all reasonable warnings

This commit is contained in:
Jan Kowalczyk
2025-10-12 15:45:13 +02:00
parent 055d403dfb
commit 32ab4e6a11
6 changed files with 198 additions and 184 deletions

Binary file not shown.

View File

@@ -69,8 +69,6 @@
\usepackage{xfrac}
\usepackage{booktabs}
\usepackage{multirow}
%\usepackage[colorinlistoftodos]{todonotes}
\usepackage[disable]{todonotes}
\usepackage{makecell}
\usepackage{longtable}
\usepackage{array}
@@ -92,7 +90,9 @@
\makecell[l]{#1 \\ \emph{#2}}
}
\DeclareRobustCommand{\rev}[1]{\textcolor{red}{#1}}
\DeclareRobustCommand{\mcah}[1]{}
% correct bad hyphenation
\hyphenation{}
@@ -459,7 +459,7 @@ Based on the previously discussed requirements and the challenges of obtaining r
%-------------------------------------------------
% Compact sensor overview (row numbers follow Fig.~\ref{fig:subter_platform})
%-------------------------------------------------
\begin{table}[htbp]
\begin{table}
\centering
\caption{Onboard sensors recorded in the \citetitle{subter} dataset. Numbers match the labels in Fig.~\ref{fig:subter_platform}; only the most salient details are shown for quick reference.}
\label{tab:subter-sensors}
@@ -486,7 +486,7 @@ We use data from the \emph{Ouster OS1-32} \rev{LiDAR} sensor, which was configur
%-------------------------------------------------
% Platform photographs (a) Pioneer base, (b) numbered sensor layout
%-------------------------------------------------
\begin{figure}[htbp]
\begin{figure}
\centering
\subfigure[Pioneer 3-AT2 mobile base carrying the sensor tower. The four-wheel, skid-steered platform supports up to 30 kg payload and can negotiate rough terrain—providing the mobility required for subterranean data collection.]
{\includegraphics[width=0.45\textwidth]{figures/data_subter_platform_photo.jpg}
@@ -545,8 +545,8 @@ The simplicity of this labeling approach has both advantages and disadvantages.
Afraid that the incorrectly labeled data may negatively impact DeepSAD's semi-supervised training, we chose to manually remove the anomalous labels from the beginning and end of the anomalous experiments, for training purposes. This refinement gave us more confidence in the training signal but reduced the number of labeled anomalies. For evaluation, we therefore report results under both schemes:
\begin{enumerate}
\item \textbf{Experiment-based labels:} All scans from anomalous experiments marked anomalous, including border casesyielding conservative performance metrics that reflect real-world label noise.
\item \textbf{Manually-defined labels:} Only unequivocally degraded scans marked anomalousproducing near-ideal separation in a lot of cases.
\item \textbf{Experiment-based labels:} All scans from anomalous experiments marked anomalous, including border cases. This yields conservative performance metrics that reflect real-world label noise.
\item \textbf{Manually-defined labels:} Only unequivocally degraded scans are marked anomalous, producing near-ideal separation in a lot of cases.
\end{enumerate}
Under both evaluation schemes all frames from normal experiments were marked as normal, since they appear to have produced high quality data throughout. A visualization of how the two evaluation schemes measure up in terms of numbers of samples per class can be seen in \rev{Figure}~\ref{fig:data_eval_labels}.
@@ -577,7 +577,7 @@ DeepSAD's PyTorch implementation—our starting point—includes implementations
The raw SubTER dataset is provided as one ROS bag file per experiment, each containing a dense 3D point cloud from the Ouster OS1-32 \rev{LiDAR}. To streamline training and avoid repeated heavy computation, we project these point clouds offline into 2D “range images” as described in \rev{Section}~\ref{sec:preprocessing} and export them to files as NumPy arrays. Storing precomputed projections allows rapid data loading during training and evaluation. Many modern \rev{LiDARs} can be configured to output range images directly which would bypass the need for post-hoc projection. When available, such native range-image streams can further simplify preprocessing or even allow skipping this step completely.
We extended the DeepSAD frameworks PyTorch \texttt{DataLoader} by implementing a custom \texttt{Dataset} class that ingests our precomputed NumPy range-image files and attaches appropriate evaluation labels. Each experiments frames are stored as a single \texttt{.npy} file of shape \((\text{Number of Frames}, H, W)\), containing the point clouds' reciprocal range values. Our \texttt{Dataset} initializer scans a directory of these files, loads the NumPy arrays from file into memory, transforms them into PyTorch tensors and assigns evaluation and training labels accordingly.
We extended the DeepSAD frameworks PyTorch \texttt{DataLoader} by implementing a custom \texttt{Dataset} class that ingests our precomputed NumPy range-image files and attaches appropriate evaluation labels. Each experiments frames are stored as individual \texttt{.npy} files with the numpy array shape \((\text{Number of Frames}, H, W)\), containing the point clouds' reciprocal range values. Our \texttt{Dataset} initializer scans a directory of these files, loads the NumPy arrays from file into memory, transforms them into PyTorch tensors and assigns evaluation and training labels accordingly.
The first labeling scheme, called \emph{experiment-based labels}, assigns
\[
@@ -704,27 +704,40 @@ The decoder (see \rev{Figure}~\ref{fig:setup_arch_ef_decoder}) mirrors the encod
To compare the computational efficiency of the two architectures we show the number of trainable parameters and the number of multiplyaccumulate operations (MACs) for different latent space sizes used in our experiments in \rev{Table}~\ref{tab:params_lenet_vs_efficient}. Even though the efficient architecture employs more layers and channels which allows the network to learn to recognize more types of patterns when compared to the LeNet-inspired one, the encoders' MACs are quite similar. The more complex decoder design of the efficient network appears to contribute a lot more MACs, which leads to longer pretraining times which we report in \rev{Section}~\ref{sec:setup_experiments_environment}.
\begin{table}[!ht]
%& \multicolumn{4}{c}{\textbf{Encoders}} & \multicolumn{4}{c}{\rev{\textbf{Autoencoders (Encoder $+$ Decoder)}}} \\
\begin{table}
\centering
\renewcommand{\arraystretch}{1.15}
\begin{tabularx}{\linewidth}{crrrr|rrrr}
\begin{tabularx}{.7\textwidth}{cYY|YY}
\hline
& \multicolumn{4}{c}{\textbf{Encoders}} & \multicolumn{4}{c}{\rev{\textbf{Autoencoders (Encoder $+$ Decoder)}}} \\
\cline{2-9}
& \multicolumn{2}{c}{\textbf{LeNet}} & \multicolumn{2}{c}{\textbf{Efficient}} & \multicolumn{2}{c}{\textbf{LeNet}} & \multicolumn{2}{c}{\textbf{Efficient}} \\
\cline{2-9}
\textbf{Latent $\mathbb{R}^d$} & \textbf{Params} & \textbf{MACs} & \textbf{Params} & \textbf{MACs} & \textbf{Params} & \textbf{MACs} & \textbf{Params} & \textbf{MACs} \\
& \multicolumn{4}{c}{\textbf{Encoders (DeepSAD Networks)}} \\
\hline
32 & 0.53M & 27.92M & 0.26M & 29.82M & 1.05M & 54.95M & 0.53M & 168.49M \\
64 & 1.05M & 28.44M & 0.53M & 30.08M & 2.10M & 56.00M & 1.06M & 169.02M \\
128 & 2.10M & 29.49M & 1.05M & 30.61M & 4.20M & 58.10M & 2.11M & 170.07M \\
256 & 4.20M & 31.59M & 2.10M & 31.65M & 8.39M & 62.29M & 4.20M & 172.16M \\
512 & 8.39M & 35.78M & 4.20M & 33.75M & 16.78M & 70.68M & 8.40M & 176.36M \\
768 & 12.58M & 39.98M & 6.29M & 35.85M & 25.17M & 79.07M & 12.59M & 180.55M \\
1024 & 16.78M & 44.17M & 8.39M & 37.95M & 33.56M & 87.46M & 16.79M & 184.75M \\
& \multicolumn{2}{c}{\textbf{Parameters}} & \multicolumn{2}{c}{\textbf{MACs}} \\
\textbf{Latent $\mathbb{R}^d$} & \textbf{LeNet} & \textbf{Efficient} & \textbf{LeNet} & \textbf{Efficient} \\
\hline
32 & 0.53 & 0.26 & 27.92 & 29.82 \\
64 & 1.05 & 0.53 & 28.44 & 30.08 \\
128 & 2.10 & 1.05 & 29.49 & 30.61 \\
256 & 4.20 & 2.10 & 31.59 & 31.65 \\
512 & 8.39 & 4.20 & 35.78 & 33.75 \\
768 & 12.58 & 6.29 & 39.98 & 35.85 \\
1024 & 16.78 & 8.39 & 44.17 & 37.95 \\
\hline
& \multicolumn{4}{c}{\textbf{Autoencoders (Encoder plus Decoder)}} \\
\hline
& \multicolumn{2}{c}{\textbf{Parameters}} & \multicolumn{2}{c}{\textbf{MACs}} \\
\textbf{Latent $\mathbb{R}^d$} & \textbf{LeNet} & \textbf{Efficient} & \textbf{LeNet} & \textbf{Efficient} \\
\hline
32 & 1.05 & 0.53 & 54.95 & 168.49 \\
64 & 2.10 & 1.06 & 56.00 & 169.02 \\
128 & 4.20 & 2.11 & 58.10 & 170.07 \\
256 & 8.39 & 4.20 & 62.29 & 172.16 \\
512 & 16.78 & 8.40 & 70.68 & 176.36 \\
768 & 25.17 & 12.59 & 79.07 & 180.55 \\
1024 & 33.56 & 16.79 & 87.46 & 184.75 \\
\hline
\end{tabularx}
\caption{Comparison of parameter count and MACs for DeepSAD LeNet-inspired and DeepSAD Efficient encoder \rev{and pretraining autoencoder (encoder plus decoder) networks} across different latent space sizes.}
\caption{Comparison of parameter count and MACs (repored in millions) for DeepSAD LeNet-inspired and DeepSAD Efficient encoder \rev{and pretraining autoencoder (encoder plus decoder) networks} across different latent space sizes.}
\label{tab:params_lenet_vs_efficient}
\end{table}
@@ -761,7 +774,7 @@ Using the same latent sizes and backbones, we train full DeepSAD models initiali
\end{itemize}
Percentages in Table~\ref{tab:labeling_regimes} are computed relative to the training split of each fold (80\% of the data) from the experiment-based labeling scheme. Importantly, for semi-supervised labels we \emph{only} use hand-selected, unambiguous smoke intervals from the manually-defined evaluation scheme, to avoid injecting mislabeled data into training.
\begin{table}[h]
\begin{table}
\centering
\caption{Proportion of labeled samples in the training folds for each labeling regime. Percentages are computed relative to the available training data after 5-fold splitting (80\% of the dataset per fold). }
\renewcommand{\arraystretch}{1.15}
@@ -779,7 +792,7 @@ Percentages in Table~\ref{tab:labeling_regimes} are computed relative to the tra
Combining $7$ latent sizes, $2$ architectures, and $3$ labeling regimes yields $7 \times 2 \times 3 = 42$ DeepSAD configurations per evaluation protocol. Table~\ref{tab:exp_grid} summarizes the grid.
\begin{table}[h]
\begin{table}
\centering
\caption{Parameter space for the DeepSAD grid search. Each latent size is tested for both architectures and all labeling regimes.}
\renewcommand{\arraystretch}{1.15}
@@ -802,7 +815,7 @@ Combining $7$ latent sizes, $2$ architectures, and $3$ labeling regimes yields $
These experiments were run on a computational environment for which we summarize the hardware and software stack in \rev{Table}~\ref{tab:system_setup}.
\begin{table}[p]
\begin{table}
\centering
\caption{Computational Environment (Hardware \& Software)} \label{tab:system_setup}
\begin{tabularx}{0.8\textwidth}{rX}
@@ -843,7 +856,7 @@ These experiments were run on a computational environment for which we summarize
\end{tabularx}
\end{table}
Pretraining runtimes for the autoencoders are reported in Table~\ref{tab:ae_pretrain_runtimes}. These values are averaged across folds and labeling regimes, since the pretraining step itself does not make use of labels. %\todo[inline]{why is efficient taking longer with less params and MACs?}
Pretraining runtimes for the autoencoders are reported in Table~\ref{tab:ae_pretrain_runtimes}. These values are averaged across folds and labeling regimes, since the pretraining step itself does not make use of labels.
\begin{table}
\centering
@@ -871,20 +884,21 @@ The full DeepSAD training times are shown in Table~\ref{tab:train_runtimes_compa
\centering
\caption{Training runtime: total seconds (mean ± std).}
\label{tab:train_runtimes_compact}
\begin{tabularx}{\textwidth}{crrrr}
\begin{tabular}{crrrr}
\toprule
& DeepSAD LeNet & DeepSAD Efficient & IsoForest & OCSVM \\
& \multicolumn{2}{c}{DeepSAD} & \multicolumn{2}{c}{Baselines} \\
& LeNet & Efficient & IsoForest & OCSVM \\
Latent Dim. & & & & \\
\midrule
32 & 765.37 ± 91.74 s & 1026.18 ± 84.13 s & 0.55 ± 0.02 s & 1.07 ± 00.29 s \\
64 & 815.88 ± 93.07 s & 1124.48 ± 60.84 s & 0.55 ± 0.02 s & 1.98 ± 01.57 s \\
128 & 828.53 ± 63.00 s & 1164.94 ± 02.13 s & 0.55 ± 0.02 s & 3.17 ± 02.63 s \\
256 & 794.54 ± 97.04 s & 986.88 ± 82.98 s & 0.55 ± 0.02 s & 12.81 ± 14.19 s \\
512 & 806.63 ± 99.83 s & 998.23 ± 80.34 s & 0.55 ± 0.02 s & 22.76 ± 23.52 s \\
768 & 818.56 ± 86.38 s & 1053.64 ± 78.72 s & 0.55 ± 0.02 s & 14.24 ± 01.21 s \\
1024 & 770.05 ± 86.22 s & 1054.92 ± 87.49 s & 0.55 ± 0.02 s & 28.20 ± 24.04 s \\
32 & 765 ± 91 s & 1026 ± 84 s & 0.55 ± 0.02 s & 1.07 ± 00.29 s \\
64 & 815 ± 93 s & 1124 ± 60 s & 0.55 ± 0.02 s & 1.98 ± 01.57 s \\
128 & 828 ± 63 s & 1164 ± 02 s & 0.55 ± 0.02 s & 3.17 ± 02.63 s \\
256 & 794 ± 97 s & 986 ± 82 s & 0.55 ± 0.02 s & 12.81 ± 14.19 s \\
512 & 806 ± 99 s & 998 ± 80 s & 0.55 ± 0.02 s & 22.76 ± 23.52 s \\
768 & 818 ± 86 s & 1053 ± 78 s & 0.55 ± 0.02 s & 14.24 ± 01.21 s \\
1024 & 770 ± 86 s & 1054 ± 87 s & 0.55 ± 0.02 s & 28.20 ± 24.04 s \\
\bottomrule
\end{tabularx}
\end{tabular}
\end{table}
Inference latency per sample is presented in Table~\ref{tab:inference_latency_compact}. These measurements highlight an important property: once trained, all methods are extremely fast at inference, with DeepSAD operating in the sub-millisecond range and the classical baselines being even faster. This confirms that, despite higher training costs, DeepSAD can be deployed in real-time systems without inference becoming a bottleneck.
@@ -922,7 +936,7 @@ The \rev{evaluation experiments which the setup in in Chapter~\ref{chp:experimen
The results of pretraining the two autoencoder architectures are summarized in Table~\ref{tab:pretraining_loss}. Reconstruction performance is reported as mean squared error (MSE), with trends visualized in Figure~\ref{fig:ae_loss_overall}. The results show that the modified Efficient architecture consistently outperforms the LeNet-inspired baseline across all latent space dimensionalities. The improvement is most pronounced at lower-dimensional bottlenecks (e.g., 32 or 64 dimensions) but remains observable up to 1024 dimensions, although the gap narrows.
\begin{table}[t]
\begin{table}
\centering
\caption{Autoencoder pretraining MSE losses across latent dimensions. Left: overall loss; Right: anomaly-only loss. \rev{The mean across folds is reported}. Maximum observed standard deviation across all cells (not shown): 0.0067.}
\label{tab:pretraining_loss}
@@ -960,7 +974,7 @@ Due to the challenges of ground truth quality, evaluation results must be interp
Table~\ref{tab:results_ap} summarizes average precision (AP) across latent dimensions, labeling regimes, and methods. Under experiment-based evaluation, both DeepSAD variants consistently outperform the baselines, reaching AP values around 0.600.66 compared to 0.21 for \rev{the} Isolation Forest and 0.310.49 for OCSVM. Under manually-defined evaluation, DeepSAD achieves nearly perfect AP in all settings, while the baselines remain much lower. This contrast shows that the lower AP under experiment-based evaluation is not a weakness of DeepSAD itself, but a direct result of mislabeled samples in the evaluation data. The manually-defined scheme therefore confirms that DeepSAD separates clearly normal from clearly degraded frames very well, while also highlighting that label noise must be kept in mind when interpreting the experiment-based results.
\begin{table}[t]
\begin{table}
\centering
\caption{AP means across 5 folds for both evaluations, grouped by labeling regime. Mean observed standard deviation per method: DeepSAD (LeNet) 0.015; DeepSAD (Efficient) 0.012; IsoForest 0.011; OCSVM 0.091.}
\label{tab:results_ap}
@@ -1080,7 +1094,7 @@ Our results indicate a qualified “yes.” Using anomaly detection (AD)—in pa
\item \textbf{Encoder architecture matters.} The Efficient encoder \rev{specifically tailored to the application at hand} outperformed the LeNet-inspired variant in pretraining and downstream AD, indicating that representation quality substantially affects DeepSAD performance (Section~\ref{sec:results_pretraining}, Section~\ref{sec:results_deepsad}).
\item \textbf{Temporal inference recipe.} For deployment-oriented analysis we propose clean-run $z$-score normalization and causal EMA smoothing to obtain interpretable time-series anomaly scores on full experiments (Section~\ref{sec:results_inference}).
\item \textbf{Temporal inference recipe.} For deployment-oriented analysis we propose $z$-score normalization based on clean data and causal EMA smoothing to obtain interpretable time-series anomaly scores on full experiments (Section~\ref{sec:results_inference}).
\end{itemize}
\paragraph{Practical recommendations.}

View File

@@ -55,7 +55,7 @@
\makeatother
% header and footer texts
\clearscrheadfoot % clear everything
\clearpairofpagestyles % clear everything
\KOMAoptions{headlines=1} % header needs two lines here
% [plain]{actual (scrheadings)}
\ihead[]{}%
@@ -141,46 +141,46 @@
\ifthenelse{\equal{\DocumentLanguage}{en}}{\renewcaptionname{USenglish}{\figurename}{Figure}}{}%
\ifthenelse{\equal{\DocumentLanguage}{de}}{\renewcaptionname{ngerman}{\figurename}{Abbildung}}{}%
\captionsetup{%
format=hang,% hanging captions
labelformat=simple,% just name and number
labelsep=colon,% colon and space
justification=justified,%
singlelinecheck=true,% center single line captions
font={footnotesize,it},% font style of label and text
margin=0.025\textwidth,% margin left/right of the caption (to textwidth)
indention=0pt,% no further indention (just hanging)
hangindent=0pt,% no further indention (just hanging)}
aboveskip=8pt,% same spacing above and...
belowskip=8pt}% ...below the float (this way tables shouln't be a problem, either)
format=hang,% hanging captions
labelformat=simple,% just name and number
labelsep=colon,% colon and space
justification=justified,%
singlelinecheck=true,% center single line captions
font={footnotesize,it},% font style of label and text
margin=0.025\textwidth,% margin left/right of the caption (to textwidth)
indention=0pt,% no further indention (just hanging)
hangindent=0pt,% no further indention (just hanging)}
aboveskip=8pt,% same spacing above and...
belowskip=8pt}% ...below the float (this way tables shouln't be a problem, either)
% code listings
\lstloadlanguages{VHDL,Matlab,[ANSI]C,Java,[LaTeX]TeX}
\lstset{%
% general
breaklines=true,% automatically break long lines
breakatwhitespace=true,% break only at white spaces
breakindent=1cm,% additional indentation for broken lines
% positioning
linewidth=\linewidth,% set width of whole thing to \linewidth
xleftmargin=0.1\linewidth,%
% frame and caption
frame=tlrb,% frame the entire thing
framexleftmargin=1cm,% to include linenumbering into frame
captionpos=b,% caption at bottom
% format parameters
basicstyle=\ttfamily\tiny,% small true type font
keywordstyle=\color{black},%
identifierstyle=\color{black},%
commentstyle=\color[rgb]{0.45,0.45,0.45},% gray
stringstyle=\color{black},%
showstringspaces=false,%
showtabs=false,%
tabsize=2,%
% linenumbers
numberstyle=\tiny,%
numbers=left,%
numbersep=3mm,%
firstnumber=1,%
stepnumber=1,% number every line (0: off)
numberblanklines=true%
% general
breaklines=true,% automatically break long lines
breakatwhitespace=true,% break only at white spaces
breakindent=1cm,% additional indentation for broken lines
% positioning
linewidth=\linewidth,% set width of whole thing to \linewidth
xleftmargin=0.1\linewidth,%
% frame and caption
frame=tlrb,% frame the entire thing
framexleftmargin=1cm,% to include linenumbering into frame
captionpos=b,% caption at bottom
% format parameters
basicstyle=\ttfamily\tiny,% small true type font
keywordstyle=\color{black},%
identifierstyle=\color{black},%
commentstyle=\color[rgb]{0.45,0.45,0.45},% gray
stringstyle=\color{black},%
showstringspaces=false,%
showtabs=false,%
tabsize=2,%
% linenumbers
numberstyle=\tiny,%
numbers=left,%
numbersep=3mm,%
firstnumber=1,%
stepnumber=1,% number every line (0: off)
numberblanklines=true%
}

View File

@@ -47,33 +47,33 @@
\usepackage{fixltx2e}% LaTeX 2e bugfixes
\usepackage{ifthen}% for optional parts
\ifthenelse{\equal{\PaperSize}{a4paper}}{
\usepackage[paper=\PaperSize,twoside=\Twosided,%
textheight=246mm,%
textwidth=160mm,%
heightrounded=true,% round textheight to multiple of lines (avoids overfull vboxes)
ignoreall=true,% do not include header, footer, and margins in calculations
marginparsep=5pt,% marginpar only used for signs (centered), thus only small sep. needed
marginparwidth=10mm,% prevent margin notes to be out of page
hmarginratio=2:1,% set margin ration (inner:outer for twoside) - (2:3 is default)
]{geometry}}{}%
\usepackage[paper=\PaperSize,twoside=\Twosided,%
textheight=246mm,%
textwidth=160mm,%
heightrounded=true,% round textheight to multiple of lines (avoids overfull vboxes)
ignoreall=true,% do not include header, footer, and margins in calculations
marginparsep=5pt,% marginpar only used for signs (centered), thus only small sep. needed
marginparwidth=10mm,% prevent margin notes to be out of page
hmarginratio=2:1,% set margin ration (inner:outer for twoside) - (2:3 is default)
]{geometry}}{}%
\ifthenelse{\equal{\PaperSize}{letterpaper}}{
\usepackage[paper=\PaperSize,twoside=\Twosided,%
textheight=9in,%
textwidth=6.5in,%
heightrounded=true,% round textheight to multiple of lines (avoids overfull vboxes)
ignoreheadfoot=false,% do not include header and footer in calculations
marginparsep=5pt,% marginpar only used for signs (centered), thus only small sep. needed
marginparwidth=10mm,% prevent margin notes to be out of page
hmarginratio=3:2,% set margin ration (inner:outer for twoside) - (2:3 is default)
]{geometry}}{}%
\usepackage[paper=\PaperSize,twoside=\Twosided,%
textheight=9in,%
textwidth=6.5in,%
heightrounded=true,% round textheight to multiple of lines (avoids overfull vboxes)
ignoreheadfoot=false,% do not include header and footer in calculations
marginparsep=5pt,% marginpar only used for signs (centered), thus only small sep. needed
marginparwidth=10mm,% prevent margin notes to be out of page
hmarginratio=3:2,% set margin ration (inner:outer for twoside) - (2:3 is default)
]{geometry}}{}%
\ifthenelse{\equal{\DocumentLanguage}{en}}{\usepackage[T1]{fontenc}\usepackage[utf8]{inputenc}\usepackage[USenglish]{babel}}{}%
\ifthenelse{\equal{\DocumentLanguage}{de}}{\usepackage[T1]{fontenc}\usepackage[utf8]{inputenc}\usepackage[ngerman]{babel}}{}%
\usepackage[%
headtopline,plainheadtopline,% activate all lines (header and footer)
headsepline,plainheadsepline,%
footsepline,plainfootsepline,%
footbotline,plainfootbotline,%
automark% auto update \..mark
headtopline,plainheadtopline,% activate all lines (header and footer)
headsepline,plainheadsepline,%
footsepline,plainfootsepline,%
footbotline,plainfootbotline,%
automark% auto update \..mark
]{scrlayer-scrpage}% (KOMA)
\usepackage{imakeidx}
\usepackage[]{caption}% customize captions
@@ -91,7 +91,7 @@ automark% auto update \..mark
\usepackage[normalem]{ulem}% cross-out, strike-out, underlines (normalem: keep \emph italic)
%\usepackage[safe]{textcomp}% loading in safe mode to avoid problems (see LaTeX companion)
%\usepackage[geometry,misc]{ifsym}% technical symbols
\usepackage{remreset}%\@removefromreset commands (e.g., for continuous footnote numbering)
%\usepackage{remreset}%\@removefromreset commands (e.g., for continuous footnote numbering)
\usepackage{paralist}% extended list environments
% \usepackage[Sonny]{fncychap}
\usepackage[avantgarde]{quotchap}
@@ -176,13 +176,13 @@ automark% auto update \..mark
\DeclareSIUnit\permille{\text{\textperthousand}} %add \permille to siunitx
\usepackage{xfrac} %Schönere brüche für SI Einheiten
\sisetup{per-mode=fraction, %Bruchstriche bei SI Einheiten aktivieren
fraction-function=\sfrac} %xfrac als Bruchstrichfunktion verwenden
fraction-function=\sfrac} %xfrac als Bruchstrichfunktion verwenden
\usepackage[scaled=0.78]{inconsolata}%Schreibmaschinenschrift für Quellcode
\usepackage[backend=biber, %Literaturverweiserweiterung Backend auswählen
bibencoding=utf8, %.bib-File ist utf8-codiert...
maxbibnames=99, %Immer alle Authoren in der Bibliographie darstellen...
style=ieee
bibencoding=utf8, %.bib-File ist utf8-codiert...
maxbibnames=99, %Immer alle Authoren in der Bibliographie darstellen...
style=ieee
]{biblatex}
\bibliography{bib/bibliography} %literatur.bib wird geladen und als Literaturverweis Datei verwendet

View File

@@ -41,7 +41,7 @@
numpages = {58},
keywords = {outlier detection, Anomaly detection},
},
@dataset{alexander_kyuroson_2023_7913307,
dataset{alexander_kyuroson_2023_7913307,
author = {Alexander Kyuroson and Niklas Dahlquist and Nikolaos Stathoulopoulos
and Vignesh Kottayam Viswanathan and Anton Koval and George
Nikolakopoulos},
@@ -204,7 +204,7 @@
performance;Current measurement},
doi = {10.1109/IROS51168.2021.9636694},
},
@article{deep_learning_overview,
article{deep_learning_overview,
title = {Deep learning in neural networks: An overview},
journal = {Neural Networks},
volume = {61},
@@ -258,7 +258,7 @@
autoencoder algorithm are summarized, and prospected for its future
development directions are addressed.},
},
@article{semi_overview,
article{semi_overview,
author = {Yang, Xiangli and Song, Zixing and King, Irwin and Xu, Zenglin},
journal = {IEEE Transactions on Knowledge and Data Engineering},
title = {A Survey on Deep Semi-Supervised Learning},
@@ -271,7 +271,7 @@
learning;semi-supervised learning;deep learning},
doi = {10.1109/TKDE.2022.3220219},
},
@book{ai_fundamentals_book,
book{ai_fundamentals_book,
title = {Fundamentals of Artificial Intelligence},
url = {http://dx.doi.org/10.1007/978-81-322-3972-7},
DOI = {10.1007/978-81-322-3972-7},
@@ -281,7 +281,7 @@
language = {en},
},
@article{machine_learning_overview,
article{machine_learning_overview,
title = {Machine Learning from Theory to Algorithms: An Overview},
volume = {1142},
ISSN = {1742-6596},
@@ -519,7 +519,7 @@
year = {1998},
pages = {22782324},
},
@article{ef_concept_source,
article{ef_concept_source,
title = {Multi-Year ENSO Forecasts Using Parallel Convolutional Neural
Networks With Heterogeneous Architecture},
volume = {8},

View File

@@ -1,9 +1,9 @@
\addcontentsline{toc}{chapter}{Abstract}
\begin{center}\Large\bfseries Abstract\end{center}\vspace*{1cm}\noindent
Autonomous robots are increasingly used in search and rescue (SAR) missions. In these missions, lidar sensors are often the most important source of environmental data. However, lidar data can degrade under hazardous conditions, especially when airborne particles such as smoke or dust are present. This degradation can lead to errors in mapping and navigation and may endanger both the robot and humans. Robots therefore need a way to estimate the reliability of their lidar data, so \rev{that} they can make better informed decisions.
\newline
\bigskip
This thesis investigates whether anomaly detection methods can be used to quantify lidar data degradation \rev{caused by airborne particles such as smoke and dust}. We apply a semi-supervised deep learning approach called DeepSAD which produces an anomaly score for each lidar scan, serving as a measure of data reliability.
\newline
\bigskip
We evaluate this method against baseline methods on an subterranean dataset that includes lidar scans degraded by artificial smoke. Our results show that DeepSAD consistently outperforms the baselines and can clearly distinguish degraded from normal scans. At the same time, we find that the limited availability of labeled data and the lack of robust ground truth remain major challenges. Despite these limitations, our work demonstrates that anomaly detection methods are a promising tool for lidar degradation quantification in SAR scenarios.