109 lines
4.1 KiB
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}
|