masterthesis-latex/appendix.tex

109 lines
4.1 KiB
TeX

\chapter{Software and Source Code Design}
The source code of many published papers is either not available
or is of bad quality: it is poorly documented, difficult
to integrate into your own work, and often does not follow common
software development best practices. Moreover, with Tensorflow,
PyTorch, and Caffe there are at least three machine learning
frameworks. Every research team seems to prefer another framework,
and, occasionally, even develops their own; this makes it difficult
to combine the work of different authors.
In addition to this, most papers do not contain proper information
regarding implementation details, making it difficult to
accurately replicate their results, if their source code is not available.
Therefore, I will release my source code and
make it available as a Python package on the PyPi package index.
This makes it possible for other researchers to simply install
a package and use the API to interact with my code. Additionally,
the code has been designed to be future proof, and work with
the announced Tensorflow 2.0, by supporting eager mode.
Furthermore, it is configurable, well documented, and conforms largely
to the clean code guidelines: evolvability and extendability among
others.
%Unit tests are part of the code as well to identify common
%issues early on, saving time in the process.
% TODO: Unit tests (!)
The code was designed to be modular: One module creates the command
line interface (main.py), another implements the actions
chosen in the CLI (cli.py), the MS COCO to SceneNet RGB-D mapping can
be found in the definitions.py module,
preparation of the data sets and retrieval of data is
grouped in the data.py module, evaluation metrics have
their separate module (evaluation.py), the configuration is
accessed and handled by the config.py module, plotting-related code
can be found in plotting.py, and the ssd.py module contains
code to train the SSD and later predict with it.
Lastly, the SSD implementation from a third party repository
has been modified to work inside a Python package architecture, and
with eager mode. It is stored as a Git submodule inside the package
repository.
\chapter{More Figures and Data}
In this chapter you can find further tables that back up some of the
points in the thesis but did not make it into it.
\begin{table}[htbp]
\centering
\begin{tabular}{rcc}
\hline
class & number of & percentage of \\
& detections & total \\
\hline
total & 31,991 & 100\% \\
persons & 10,988 & 34.3\% \\
cars & 1,932 & 6\% \\
chairs & 1,791 & 5.6\% \\
bottles & 1,021 & 3.2\% \\
cups & 898 & 2.8\% \\
\hline
\end{tabular}
\caption{Number of ground truth detections per class (top 5).}
\label{tab:gt-spread}
\end{table}
\begin{table}[htbp]
\centering
\begin{tabular}{rccc}
\hline
variant & before & after & after \\
& \gls{entropy}/NMS & \gls{entropy}/NMS & top \(k\) \\
\hline
Bay. \gls{SSD}, no dropout, no \gls{NMS} & 19,014 & 48,484 & 27,707 \\
no dropout, \gls{NMS} & 19,014 & 14,542 & 13,486 \\
\hline
\end{tabular}
\caption{Comparison of Bayesian \gls{SSD} variants without dropout with
respect to the number of detections before the \gls{entropy} threshold,
after it and/or \gls{NMS}, and after top \(k\). The
\gls{entropy} threshold 1.5 was used for both. The numbers are for
the persons class.}
\label{tab:effect-nms-persons}
\end{table}
\begin{table}[htbp]
\centering
\begin{tabular}{rccc}
\hline
variant & before & after & after \\
& \gls{entropy}/NMS & \gls{entropy}/NMS & top \(k\) \\
\hline
Bay. \gls{SSD}, no dropout, no \gls{NMS} & 1,011 & 1,785 & 1,458 \\
no dropout, \gls{NMS} & 1,011 & 426 & 425 \\
\hline
\end{tabular}
\caption{Comparison of Bayesian \gls{SSD} variants without dropout with
respect to the number of detections before the \gls{entropy} threshold,
after it and/or \gls{NMS}, and after top \(k\). The
\gls{entropy} threshold 1.5 was used for both. The numbers are for
the dogs class.}
\label{tab:effect-nms-dogs}
\end{table}