In the summer of 2017 I graduated at the study scientific computing with a master degree in informatics at the University of Vienna. The main emphasis are placed on high performance computing, software engineering and statistics. I did my bachelor promotion on the University of Applied Sciences Sankt Pölten. After finishing my master study I have been working in the private sector for more than three years now and gained valuable experience in computer vision and deep learning. Beside the completion of research projects my work also includes the implementation of several algorithms and as well the training of deep neural networks. My main programming languages which i am using are C/C++ and Python but I am also willing to learn other languages. I am a researcher for computer vision and deep learning projects, but i also like to program in several languages. I also like to upskill in different languages and disciplines from data science, software engineering to high performance computing.
This study is mainly related to high performance computing, statistics and software engineering. Like parallizing of scientific problems on CPUs and GPUs, with gaining knowledge about
different computer architectures and libraries. One another emphasis was also finding bottlenecks in C/C++-programs with subsequently improving the performance. This study is also related to the classical software development with acquiring
some backgrounds in statistics and data mining but as well focusing on the development and implementation of algorithms in the scientific area.
Master-Thesis: “Experimental Studies of the Influence of Silent Data Corruption on the FT-GMRES” (http://othes.univie.ac.at/46244/)
Supervisor: Prof. Dr. techn. Wilfried Gansterer
Download Master Thesis
Basic studies for informatics where the main focus is on simulation and telecommunication, it also conveyd basic knowledge about mathematics and data science.
In this study different projects where done which are related to the simulation of electronics and material calculations with finite elements in magnetism. There is also some basic knowledge gained about
software programming with C/C++ and software development like with the waterfall model or testing of computer programs. The bachelor also provides the first steps to parallize software in the area of multicore systems.
Bachelor-Thesis: “Simulation of nano composite materials”
Supervisor: FH-Prof. Dr. techn. Thomas Schrefl
Download Bachelor Thesis
Main emphasis are electrical engineering and industrial power electronics with gaining a general qualification for university entrance.
Mainly projects related to computer vision and deep learning for the private sector and road safety with the main emphasis of classical software engineering and programming. Also working on projects for autonomous driving with different deep learning libraries like Keras, Tensorflow, PyTorch, Caffe from developing a concept to the final implementation but also working on classical methods from computer vision. Whereas also some knowledge gained about embedded systems and FPGAS and the according restrictions from it. Finally a lot knowledge is acquired about classification and object detection with YoloV3.
Software Developer for writing software which is related to safe areas and used by automation techniques. This software is applied for example in power plants, process automation and big industry projects.
Software Developer for debugging and fixing one old legacy code which is used for school planning.
I am a computer scientist which is currently working in the area of autonomous driving, computer vision and deep learning. I am always searching for further challenges in informatics but as well software programming and development but also in other scientific discipline. My main programming languages are C/C++ and Python. I am familar with different deep learning libraries like Keras, Tensorflow, PyTorch and also Caffe.
• Excellent knowledge of C/C++, Python, Bash and R, but also willing to learn other languages.
• C++ 11/14/17 (AND BEYOND).
• Familiar with different editors and IDEs like Qt, VIM and Visual Studio.
• Safe handling of the Standard Template (STL) and Boost-library.
• Experience with analysis and optimzation of performance critical sections.
• Experience in functional programming (fup).
• Experience in object oriented programming (oop).
• Excellent knowledge of the GNU Debugger (GDB).
• Experience in parallelization of software.
• C++ GUI Development with QT,QTML and wxWidgets.
• From rudimentary to advanced.
• Knowledge about distributed and shared memory systems.
• Familar with different APIs in high performance computing (HPC).
• Knowledge of MPI, OpenMP, TBB, Cilk, OpenCL, CUDA.
• SIMD programming up to SSE/AVX/AVX2 and programming on GPUs.
• Familar with different computer architectures like CPUs, GPUs and FPGAs.
• Knowledge of data mining and pattern recognition methods (support vector machines, ensemble methods, dimension reduction, cluster analysis,..).
• Combinatorics and probability theory.
• A lot of work experience with OpenCV like 3/4.
• Experience with different deep learning libraries for classification and object detection.
• Training and optimization of different Deep Neural Networks (DNNs).
• Experience with the export of DNNs and as well further processing.
• Proficient in solving problems related to computer vision and deep learning.
• Excellent knowledge of Debian based systems, including package management.
• Command line usage (for the creation of scripts), updates & monitoring.
• Knowledge of Microsoft and Ubuntu operating systems.
• Good knowledge of SQL databases.
• Experienced in the creation of databases.
Deep learning is a special theme which is mainly centered in machine learning but due it's relevance and complexity it can be as big as machine learning and stand alone. Machine learning is as well a special topic rooted in artifical intelligence both methods machine learning and deep learning try to imitate human logic and behavior due artifical intelligence. 10 years ago deep learning got special interests because theses methods can solve problems which weren't able before. The concept is mainly based on the human physiology or biology of the human brain. Deep Learning can solve classification and object detection problems but also other difficulties. The according methods are fast evolving. Some methods like for autonmous driving are really interesting.
What is a Feed Forward Network (FFN)?
Deep feedforward networks or also known multilayer perceptrons are the base of most of deep learning models. Networks like CNNs (Convolutional Neural Networks) and RNNs (Recurrent neural networks) are just some special cases of feedforward networks. All these methods are mostly used for supervised machine learning tasks where we already know the target function for example the result we want our network to achieve which are extremely important for practicing machine learning and are the basis for many applications, topics such as computer vision were greatly affected by the presence of these networks.
The main aim of a feedforward network is to approximate some function (). A regression problem with function maps an input to a value . Wheras a feedforward network computes a mapping which learns the value of the parameter that result in the best function approximation, such that the error between is small enough, where are the true values.
The reason why these networks are called feedforward is that the flow of information takes place in the forward direction, where is used to calculate some intermediate values and states in the hidden layers which in turn is used to calculate the output . So if we would add feedback from the last hidden layer to the previouse hidden layer, this network would represent a recurrent neural network.
What is a Convolutional Neural Network (CNN)?
Convolutional neural networks are neural networks which are specialized for image recognition tasks. You can think of them as a feed forward network with some trainable image filters in front. These filters are detecting some special features like edges or vertices , in the so called convolutional layers and resizing (in pooling layers). These image filters (also known as kernels) are able to learn to extract and recognize patterns from the input image. Convolutional networks or CNNs are used for computer vision tasks like image classification and object detection. Training a CNN can be really a burden because of the computing complexity.
Classification vs. Object Detection
In machine learning especially in deep neural networks there are two main issues, classification and object detection. In classification problems the aim is to say to what class belongs this image wheras in object detection the questions are: what is is and where it is, so object detection is a special case of localization and classification. Just because not only the position is searched this problem is far more complex than classification.
How about Yolo ?
Yolo is a state-of-the-art, object detection system (network). This framework was developed by Joseph Redmon (Darknet Yolo). The biggest advantage for Yolo over other popular architectures is speed. The Yolo model family models are really fast, much faster than other libraries for object detection as before.
With this framework it is possible to achieve real-time object detection.
YOLO has reformulated an object detection problem into a single regression problem. It goes from image pixeles to bounding box coordinates and class probabilities. Such that a single convolutional network predicts different bounding boxes with the according class probabilities for the according boxes.
As Yolo works with only one look at the image, so this network is not using a sliding window approach. Yolo is splitting the image in an grid. These grid will have S×S dimensions. So each grid cell is predicting different values.
First, each cell is predicting a descent number of bounding boxes. Also, each cell will predict confidence value for each bounding box. In other word, this is a probability that a box contains an object. In case that there is no object in some grid cell, it is important that the according confidence value is really low.
If all predictions are vizualized, a map is gained of all the objects and a bunch of boxes which is ranked by their confidence value.
How does YoloV3 look like ?
The most import thing about YoloV3 is that it uses features at different scales, that is to detect objectes on different levels. This approach makes Yolo really accurate but it takes also some more computations and makes the network more complex.
Result of inferencing a simple image with Yolo V3.
Simple example of an image, inferenced with Yolo V3. Yolo V3 is capable to locate the boundaries of an object but as well to classify the according object. On this image Yolo V3 is able find 3 objects with the right classes.