%Dokumentklasse
\documentclass[a4paper,12pt, listof = totoc]{scrreprt}
\usepackage[left = 3cm ,right = 2cm, top = 2 cm, bottom = 3cm]{geometry}
\usepackage[onehalfspacing]{setspace}
%\usepackage{setspace}
%\setstretch{1,2381}
% ============= Packages =============

% Dokumentinformationen
\usepackage[
	pdftitle={Titel der Abschlussarbeit},
	pdfsubject={},
	pdfauthor={Euer Name},
	pdfkeywords={},	
	%Links nicht einrahmen
	hidelinks
]{hyperref}


% Standard Packages
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx, subfig}
\usepackage{pdfpages}
\graphicspath{{img/}}
\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\usepackage{lmodern,relsize,textcomp,csquotes}
\usepackage{color}
\usepackage{xcolor}
\usepackage{csquotes}
\usepackage{tabularx}

%Algorithmen
%\usepackage{algorithm}
\usepackage{algorithmic}
%\usepackage{algpseudocode}
\usepackage[ngerman]{algorithm2e}

%Konfusionmatrix
\usepackage{array}
\usepackage{multirow}
\newcommand\MyBox[2]{
  \fbox{\lower0.75cm
    \vbox to 1.7cm{\vfil
      \hbox to 1.7cm{\hfil\parbox{1.4cm}{#1\\#2}\hfil}
      \vfil}%
  }%
}

%References with url
\usepackage{xurl}

%Verhindern, dass Figures, Tables in neachste Section rutschen
\usepackage[section]{placeins}

%Leerzeilen / vSpace
%\usepackage{parskip}

%Tikz fuer Zeichnen

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{automata,matrix,chains,positioning,backgrounds,decorations.pathreplacing,arrows,arrows.meta,fit}

% zusätzliche Schriftzeichen der American Mathematical Society
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{siunitx}
\usepackage[acronym,toc,nonumberlist]{glossaries} 
%Subfig
\usepackage{subfig}             
% use glossaries-package
\usepackage{chngcntr}
\counterwithout{equation}{chapter}
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{5}

\setlength{\glsdescwidth}{15cm}

\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis} % create add.symbolslist


\glsaddkey{unit}{\glsentrytext{\glslabel}}{\glsentryunit}{\GLsentryunit}{\glsunit}{\Glsunit}{\GLSunit}

\makeglossaries                                   % activate glossaries-package

% ==== EXEMPLARY ENTRY FOR SYMBOLS LIST =========================================

	\newglossaryentry{Biassymbol}{name=\ensuremath{b},
        description={Bias / Verzerrung},
        unit={},
        sort=b,
        type=symbolslist}
        
    \newglossaryentry{BiasV}{name=\ensuremath{\boldsymbol{b}},
        description={Biasvektor},
        unit={},
        sort=bv,
        type=symbolslist}

    \newglossaryentry{symb:Lambda}{name=\ensuremath{\lambda},
        description={Regularisierungsparamter},
        unit={},
        sort=Lambda,
        type=symbolslist}
        
    \newglossaryentry{Gewichtsvektor}{name=\ensuremath{\boldsymbol{w}},
        description={Gewichtsvektor},
        unit={},
        sort=w,
        type=symbolslist}
        
    \newglossaryentry{GewichtsvektorTransponiert}{name=\ensuremath{\boldsymbol{w}^\top},
        description={Gewichtsvektor transponiert},
        unit={},
        sort=wT,
        type=symbolslist}
        
    \newglossaryentry{Gewichtsmatrix}{name=\ensuremath{\boldsymbol{W}},
        description={Gewichtsmatrix für ein Machine-Learning-Modell},
        unit={},
        sort=W,
        type=symbolslist}
        
    \newglossaryentry{Kostenfunktion}{name=\ensuremath{J(\boldsymbol{w})},
        description={Kostenfunktion / Straffunktion / Verlustfunktion in Abhägigkeit der Gewichte des Machine-Learning-Modells},
        unit={},
        sort=Jw,
        type=symbolslist}
        
    \newglossaryentry{KostenfunktionTheta}{name=\ensuremath{J(\boldsymbol{\theta})},
        description={Kostenfunktion / Straffunktion / Verlustfunktion in Abhägigkeit der Parameter des Machine-Learning-Modells},
        unit={},
        sort=Jt,
        type=symbolslist}
        
    \newglossaryentry{TensorA}{name=\ensuremath{\mathbf{A}},
        description={Tensor A},
        unit={},
        sort= ATensor,
        type=symbolslist}
        
    \newglossaryentry{ParametrisierteGewichte}{name=\ensuremath{\boldsymbol{\theta}},
        description={Parameter des Machine-Learning-Modells},
        unit={},
        sort=theta,
        type=symbolslist}
        
        
    \newglossaryentry{Wahrscheinlichkeit}{name=\ensuremath{p},
        description={Wahrscheinlichkeit einer stetigen Variable},
        unit={},
        sort=p,
        type=symbolslist}
        
    \newglossaryentry{Wahrscheinlichkeitsmaß}{name=\ensuremath{P},
        description={Wahrscheinlichkeit einer diskreten Variable},
        unit={},
        sort=P,
        type=symbolslist}
        
    \newglossaryentry{Eingabevektor}{name=\ensuremath{\boldsymbol{x}},
        description={Eingabevektor für ein Machine-Learning-Modell},
        unit={},
        sort=x,
        type=symbolslist}
        
    \newglossaryentry{iteBeispielX}{name=\ensuremath{\boldsymbol{x}^{(i)}},
        description={Das \textit{i}-te Beispiel (Eingabe) eines Datensatzes},
        unit={},
        sort=xite,
        type=symbolslist}
        
    \newglossaryentry{Ausgabevektor}{name=\ensuremath{\boldsymbol{y}},
        description={Ausgabevektor für ein Machine-Learning-Modell},
        unit={},
        sort=y,
        type=symbolslist}
        
        
    \newglossaryentry{iteBeispielY}{name=\ensuremath{\boldsymbol{y}^{(i)}},
        description={Der \textit{i}-te Zielwert eines Datensatzes},
        unit={},
        sort=yite,
        type=symbolslist}
        
        
    \newglossaryentry{Eingabematrix}{name=\ensuremath{\boldsymbol{X}},
        description={Eingabematrix für ein Machine-Learning-Modell},
        unit={},
        sort=X,
        type=symbolslist}
        
    \newglossaryentry{Ausgabematrix}{name=\ensuremath{\boldsymbol{Y}},
        description={Ausgabematrix eines Machine-Learning-Modell},
        unit={},
        sort=Y,
        type=symbolslist}
        
    \newglossaryentry{SammlungMitTrainingsbeispielen}{name=\ensuremath{\mathbb{X}},
        description={Sammlung mit Trainingsbeispielen},
        unit={},
        sort=Xset,
        type=symbolslist}
        
        
    \newglossaryentry{GradientNachParameter}{name=\ensuremath{\nabla_{\boldsymbol{\theta}}},
        description={Gradient bezüglich der Parameter des Machine-Learning-Modells},
        unit={},
        sort=G,
        type=symbolslist}
        
        
    \newglossaryentry{Trainingsbeispiele}{name=\ensuremath{m},
        description={Größe anhand der gesamten Trainingsbeispiele},
        unit={},
        sort=m,
        type=symbolslist}
        
        
    \newglossaryentry{Minibatch}{name=\ensuremath{m'},
        description={Mini-Batch-Größe / Teilmenge der Trainingsbeispiele},
        unit={},
        sort=mstrich,
        type=symbolslist}
        
        
    \newglossaryentry{Lernrate}{name=\ensuremath{\varepsilon},
        description={Lernrate},
        unit={},
        sort=epsilon,
        type=symbolslist}
        
    \newglossaryentry{Aktivierungsfunktion}{name=\ensuremath{g},
        description={Aktivierungsfunktion},
        unit={},
        sort=g,
        type=symbolslist}    
        
    \newglossaryentry{GeschaetzterGradient}{name=\ensuremath{\boldsymbol{g}},
        description={Geschätzter Gradient anhand des Mini-Batch},
        unit={},
        sort=gs,
        type=symbolslist}
        
    \newglossaryentry{GesamtLayer}{name=\ensuremath{l},
        description={Anzahl der gesamten Schichten eines \gls{MLP}},
        unit={},
        sort=l,
        type=symbolslist}
        
        
    \newglossaryentry{Aktivierungsvektor}{name=\ensuremath{\boldsymbol{a}^{(l-i)}},
        description={Vektor der Aktivierungen einer Schicht},
        unit={},
        sort=av,
        type=symbolslist}
        
    \newglossaryentry{Biasvektor}{name=\ensuremath{\boldsymbol{b}^{(l-i)}},
        description={Biasvektor einer Schicht},
        unit={},
        sort=bvi,
        type=symbolslist}
        
    \newglossaryentry{ParameterNormStrafterm}{name=\ensuremath{\Omega},
        description={Parameter-Norm-Strafterm},
        unit={},
        sort=Omega,
        type=symbolslist}  
        
        
    \newglossaryentry{Dropoutwahrscheinlichkeit}{name=\ensuremath{p_{drop}},
        description={Dropout-Wahrscheinlichkeit},
        unit={},
        sort=pd,
        type=symbolslist}
        
    \newglossaryentry{MomentumParameter}{name=\ensuremath{\alpha},
        description={Momentum-Parameter},
        unit={},
        sort=pd,
        type=symbolslist}  
        
    \newglossaryentry{Ausgangsgeschwindigkeit}{name=\ensuremath{\boldsymbol{v}},
        description={Ausgangsgeschwindigkeit des Momentum-Algorithmus},
        unit={},
        sort=pd,
        type=symbolslist}
        
    \newglossaryentry{KleinsterWertX}{name=\ensuremath{x_{min}},
        description={Kleinster Wert des Eingabevektor},
        unit={},
        sort=xmin,
        type=symbolslist}
        
    \newglossaryentry{GrößterWertX}{name=\ensuremath{x_{max}},
        description={Größter Wert des Eingabevektor},
        unit={},
        sort=xmax,
        type=symbolslist}
        
    \newglossaryentry{MittelwertX}{name=\ensuremath{\mu_{x}},
        description={Mittelwert des Eingangsvektor},
        unit={},
        sort=mux,
        type=symbolslist}
        
    \newglossaryentry{StandardabweichungX}{name=\ensuremath{\sigma_{x}},
        description={Standardabweichung des Eingangsvektor},
        unit={},
        sort=sigmax,
        type=symbolslist}
        
    \newglossaryentry{Mittelwert}{name=\ensuremath{\mu},
        description={Mittelwert},
        unit={},
        sort=mu,
        type=symbolslist}
        
    \newglossaryentry{Standardabweichung}{name=\ensuremath{\sigma},
        description={Standardabweichung},
        unit={},
        sort=sigma,
        type=symbolslist}
        
    \newglossaryentry{Kernel}{name=\ensuremath{\boldsymbol{K}},
        description={Kernelmatrix},
        unit={},
        sort=K,
        type=symbolslist}
        
    \newglossaryentry{Bildeingabe}{name=\ensuremath{\boldsymbol{I}},
        description={Bildeingabematrix},
        unit={},
        sort=I,
        type=symbolslist}
        
    \newglossaryentry{FeatureMap}{name=\ensuremath{\boldsymbol{F}},
        description={Feature Map},
        unit={},
        sort=F,
        type=symbolslist}
        
    \newglossaryentry{NewFeatureMap}{name=\ensuremath{\boldsymbol{G}},
        description={erzeugte Feature Map aus vorheriger Feature Map / Bildeingabe},
        unit={},
        sort=G,
        type=symbolslist}
        
    \newglossaryentry{Matrixdimension}{name=\ensuremath{m \times n},
        description={Größe einer Matrix mit \ensuremath{m}-Zeilen und \ensuremath{n}-Spalten},
        unit={},
        sort=mmatrix,
        type=symbolslist}
        
    \newglossaryentry{FeatureMapDimension}{name=\ensuremath{D_F},
        description={Dimension der quadratischen Feature Map Matrix},
        unit={},
        sort=DF,
        type=symbolslist}
        
    \newglossaryentry{KernelDimension}{name=\ensuremath{D_K},
        description={Dimension der quadratischen Kernel Matrix},
        unit={},
        sort=DK,
        type=symbolslist}
        
    \newglossaryentry{AnzahlChannels}{name=\ensuremath{M},
        description={Anzahl der Kanäle (Channels) einer Feature Map},
        unit={},
        sort=M,
        type=symbolslist}
        
    \newglossaryentry{AnzahlFilter}{name=\ensuremath{N},
        description={Anzahl der Filter (Kernels) einer Convolution / Anzahl der Kanäle (Channels) der neuen Feature Map nach Faltung},
        unit={},
        sort=N,
        type=symbolslist}
        
    \newglossaryentry{Expansionfaktor}{name=\ensuremath{t},
        description={Expansionsfaktor zur Erhöhung der Kanäle während einer Pointwise Convolution},
        unit={},
        sort=t,
        type=symbolslist}
        
    \newglossaryentry{Width}{name=\ensuremath{w},
        description={Breite (Width) einer Feature Map},
        unit={},
        sort=w,
        type=symbolslist}
        

    \newglossaryentry{Height}{name=\ensuremath{h},
        description={Höhe (Height) einer Feature Map},
        unit={},
        sort=h,
        type=symbolslist}
        
    \newglossaryentry{AnzahlKanaele}{name=\ensuremath{d},
        description={Anzahl der Kanäle},
        unit={},
        sort=d,
        type=symbolslist}
        
    \newglossaryentry{Stride}{name=\ensuremath{s},
        description={Schrittweite der Convolution / Faltung},
        unit={},
        sort=s,
        type=symbolslist}
        
    \newglossaryentry{Floatzahl}{name=\ensuremath{r},
        description={Gleitkommazahl als float32-Datentyp},
        unit={},
        sort=r,
        type=symbolslist}
        
    \newglossaryentry{Ganzzahl}{name=\ensuremath{q},
        description={Ganzzahl als int8-Datentyp},
        unit={},
        sort=q,
        type=symbolslist}
        
    \newglossaryentry{Scale}{name=\ensuremath{S},
        description={Scale-Faktor für die Schrittweite der Quantisierung},
        unit={},
        sort=S,
        type=symbolslist}
               
    \newglossaryentry{Nullpunkt}{name=\ensuremath{Z},
        description={Nullpunkt für die Quantisierung},
        unit={},
        sort=Z,
        type=symbolslist}





% ==== EXEMPLARY ENTRY FOR ACRONYMS LIST ========================================
    \newacronym{CNN}{CNN}{Convolutional Neural Network}
    \newacronym{ConvNet}{ConvNet}{Convolutional Neural Network}
    \newacronym{RNN}{RNN}{Recurrent Neural Network}
    \newacronym{MLP}{MLP}{Multilayer Perceptron}
    \newacronym{KI}{KI}{Künstliche Intelligenz}
    \newacronym{MQF}{MQF}{Mittlere Quadratische Fehler}
    \newacronym{ML}{ML}{Machine Learning}
    \newacronym{SGD}{SGD}{Stochastic Gradient Descent}
    \newacronym{ReLU}{ReLU}{Rectified Linear Unit}
    \newacronym{RGB}{RGB}{Red Green Blue}
    \newacronym{SSD}{SSD}{Single Shot MultiBox Detector}
    \newacronym{IoU}{IoU}{Intersection over Union}
    \newacronym{NMS}{NMS}{Non-Maximum-Suppression}
    \newacronym{FPN}{FPN}{Feature Pyramid Network}
    \newacronym{TP}{TP}{True positive}
    \newacronym{FP}{FP}{False positive}
    \newacronym{FN}{FN}{False negative}
    \newacronym{TN}{TN}{True negative}
    \newacronym{SfM}{SfM}{Structure-from-motion}
    \newacronym{IoT}{IoT}{Internet of Things}
    \newacronym{mAP}{mAP}{Mean Average Precision}
    \newacronym{AP}{AP}{Average Precision}
    \newacronym{AR}{AR}{Average Recall} 
    \newacronym{Exif}{Exif}{Exchangeable Image File Format}
    \newacronym{GPU}{GPU}{Graphical Processing Unit}
    \newacronym{CPU}{CPU}{Central Processing Unit}

% ==== EXEMPLARY ENTRY FOR MAIN GLOSSARY ========================================
    \newglossaryentry{Biofouling}{name=Biofouling, description={Some description}}
%

\newglossarystyle{symbunitlong}{%
\setglossarystyle{long3col}% base this style on the list style
\renewenvironment{theglossary}{% Change the table type --> 3 columns
  \begin{longtable}{lp{0.6\glsdescwidth}>{\centering\arraybackslash}p{2cm}}}%
  {\end{longtable}}%
%
\renewcommand*{\glossaryheader}{%  Change the table header
  \bfseries Symbol & \bfseries Beschreibung \\
  \hline
  \endhead}
\renewcommand*{\glossentry}[2]{%  Change the displayed items
\glstarget{##1}{\glossentryname{##1}} %
& \glossentrydesc{##1}% Description
& \glsunit{##1}  \tabularnewline
}
}


%BibLatex
\usepackage[backend = biber, citestyle=numeric, bibstyle=numeric]{biblatex}
\addbibresource{Masterarbeit_Navigation_Mobiler_Roboter_CV_File_BibLatex.bib}

%nicht einrücken nach Absatz
\setlength{\parindent}{0pt}


% ============= Kopf- und Fußzeile =============
\pagestyle{scrheadings}
\clearpairofpagestyles

% ============= Package Einstellungen & Sonstiges ============= 
%Besondere Trennungen
\hyphenation{De-zi-mal-tren-nung}


%=========================Darstellung der Convolution=================
\newcommand\numRowsK{3}
\newcommand\numColsK{3}
\newcommand{\K}[2]{% #1: row, #2: col
    \edef\Kcol##1##2##3{###2}%
    \edef\Krow##1##2##3{\noexpand\Kcol###1}%
    \Krow
        {1 0 1}
        {0 1 0}
        {1 0 1}%
}

\newcommand{\convoutionpicture}[2]{% #1: row to be highlighted, #2: colum to be highlighted
\begin{tikzpicture}
    % ------- style -------
    \tikzset{%
        parenthesized/.style={%
            left delimiter  = (,
            right delimiter = ),
        },
        node distance = 10mu,
    }

    % ------- equation -------
    \matrix[matrix of math nodes, parenthesized, ampersand replacement=\&] (I) {
        0 \& 1 \& 1 \& 1 \& 0 \& 0 \& 0 \\
        0 \& 0 \& 1 \& 1 \& 1 \& 0 \& 0 \\
        0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 0 \\
        0 \& 0 \& 0 \& 1 \& 1 \& 0 \& 0 \\
        0 \& 0 \& 1 \& 1 \& 0 \& 0 \& 0 \\
        0 \& 1 \& 1 \& 0 \& 0 \& 0 \& 0 \\
        1 \& 1 \& 0 \& 0 \& 0 \& 0 \& 0 \\
    };

    \node (*) [right = of I] {${}*{}$};

    \def\Kmatrix{}
    \foreach \row in {1, ..., 3} {
        \gdef \sep {}
        \foreach \col in {1, ..., 3} {%
            \xdef \Kmatrix {\unexpanded\expandafter{\Kmatrix}\unexpanded\expandafter{\sep}\noexpand \K{\row}{\col}}
            \gdef \sep { \& }
        }
        \xdef \Kmatrix {\unexpanded\expandafter{\Kmatrix}\noexpand\\}
    }
    \matrix[matrix of math nodes, parenthesized, ampersand replacement=\&] (K) [right = of *] {
        \Kmatrix
    };

    \node (=) [right = of K] {${}={}$};

    \matrix[matrix of math nodes, parenthesized, ampersand replacement=\&] (I*K) [right = of {=}] {
        1 \& 4 \& 3 \& 4 \& 1 \\
        1 \& 2 \& 4 \& 3 \& 3 \\
        1 \& 2 \& 3 \& 4 \& 1 \\
        1 \& 3 \& 3 \& 1 \& 1 \\
        3 \& 3 \& 1 \& 1 \& 0 \\
    };

    % ------- highlighting -------
    \def\rowResult{#1}
    \def\colResult{#2}

    \begin{scope}[on background layer]
        \newcommand{\padding}{2pt}
        \coordinate (Is-nw) at ([xshift=-\padding, yshift=+\padding] I-\rowResult-\colResult.north west);
        \coordinate (Is-se) at ([xshift=+\padding, yshift=-\padding] I-\the\numexpr\rowResult+\numRowsK-1\relax-\the\numexpr\colResult+\numColsK-1\relax.south east);
        \coordinate (Is-sw) at (Is-nw |- Is-se);
        \coordinate (Is-ne) at (Is-se |- Is-nw);

        \filldraw[red,   fill opacity=.1] (Is-nw) rectangle (Is-se);
        \filldraw[green, fill opacity=.1] (I*K-\rowResult-\colResult.north west) rectangle (I*K-\rowResult-\colResult.south east);

        \draw[blue, dotted] 
            (Is-nw) -- (K.north west)
            (Is-se) -- (K.south east)
            (Is-sw) -- (K.south west)
            (Is-ne) -- (K.north east)
        ;
        \draw[green, dotted] 
            (I*K-\rowResult-\colResult.north west) -- (K.north west)
            (I*K-\rowResult-\colResult.south east) -- (K.south east)
            (I*K-\rowResult-\colResult.south west) -- (K.south west)
            (I*K-\rowResult-\colResult.north east) -- (K.north east)
        ;

        \draw[blue,  fill=blue!10!white] (K.north west) rectangle (K.south east);

        \foreach \row [evaluate=\row as \rowI using int(\row+\rowResult-1)] in {1, ..., \numRowsK} {%
            \foreach \col [evaluate=\col as \colI using int(\col+\colResult-1)] in {1, ..., \numColsK} {%
                    \node[text=blue] at (I-\rowI-\colI.south east) [xshift=-.3em] {\tiny$\times \K{\row}{\col}$};
                }
        }
    \end{scope}

    % ------- labels -------
    \tikzset{node distance=0em}
    \node[below=of I] (I-label) {$I$};
    \node at (K |- I-label)     {$K$};
    \node at (I*K |- I-label)   {$I*K$};
\end{tikzpicture}%
}


% ============= Dokumentbeginn =============

\begin{document}
%Seiten ohne Kopf- und Fußzeile sowie Seitenzahl
%\pagestyle{empty}
\pagestyle{scrheadings}

\pagenumbering{Roman}

\include{titel}
\includepdf[pages=-]{SB_0050_FO_Pruefungsrechtliche_Erklaerung_und_Erklaerung_zur_Veroeffentlichung_der_Abschlussarbeit_public}


\include{zusammenfassung}

% Beendet eine Seite und erzwingt auf den nachfolgenden Seiten die Ausgabe aller Gleitobjekte (z.B. Abbildungen), die bislang definiert, aber noch nicht ausgegeben wurden. Dieser Befehl fügt, falls nötig, eine leere Seite ein, sodaß die nächste Seite nach den Gleitobjekten eine ungerade Seitennummer hat. 
\cleardoubleoddpage

% pagestyle für gesamtes Dokument aktivieren
\pagestyle{scrheadings}

%Inhaltsverzeichnis
\tableofcontents

\glsaddall

    \printglossary[type=\acronymtype, title=Abkürzungsverzeichnis]  % list of acronyms
    \newpage{}
    \printglossary[type=symbolslist,style=symbunitlong]   % list of symbols
    %\printglossary[type=main]                     % main glossary


\newpage{}

\ohead{\headmark}
\automark{section}
\ofoot{\pagemark}
\pagenumbering{arabic}
\include{einleitung}

\include{grundlagen}

\include{methoden}

\include{ergebnisse.tex}

\include{diskussion}

\include{fazit}

%Literaturverzeichnis
%BibLatex

\printbibliography[heading=bibintoc]

%Verzeichnis aller Bilder
\listoffigures

%Verzeichnis aller Tabellen
\listoftables

\end{document}
