Download CV

Menu

Hello, I'm Markus Gruber,
a software developer
for computer vision, deep learning
and C/C++-projects.








About Me

It's not about beeing the best. It's about beeing better than yesterday.

Profile

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.






Education

Master Scientific Computing at the University of Vienna
December 2013 - June 2017

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

Bachelor Industrial Simulation at the University of Applied Scienes Sankt Pölten
September 2010 - June 2013

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

Diploma Technical Mathematics at the Technical University of Vienna
December 2005 - March 2006
Study mainly focusing on mathematics but without graduation.

Higher School Certificate Higher Technical School of Sankt Pölten
September 1999 - June 2004

Main emphasis are electrical engineering and industrial power electronics with gaining a general qualification for university entrance.






Career

EYYES
SOFTWARE ENGINEER & C/C++ - PROGRAMMER
March 2017 - December 2020

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.

LOGICALS
SOFTWARE ENGINEER & C/C++ - PROGRAMMER
Februrary 2021 - January 2022

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.

Untis
SOFTWARE ENGINEER & C/C++ - PROGRAMMER
Februrary 2022 - June 2022

Software Developer for debugging and fixing one old legacy code which is used for school planning.

Skills

I am focusing on computer vision and deep learning projects but as well on C/C++-programming.

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.

  • Programming Languages

    • Excellent knowledge of C/C++, Python, Bash and R, but also willing to learn other languages.

  • Software Development

    • 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.

  • GUI Development

    • C++ GUI Development with QT,QTML and wxWidgets.
    • From rudimentary to advanced.

  • High Performance Computing

    • 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.

  • Machine Learning

    • Knowledge of data mining and pattern recognition methods (support vector machines, ensemble methods, dimension reduction, cluster analysis,..).
    • Combinatorics and probability theory.

  • Computer Vision

    • A lot of work experience with OpenCV like 3/4.

  • Deep Learning

    • 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.

  • Operating Systems

    • 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.

  • Databases

    • Good knowledge of SQL databases.
    • Experienced in the creation of databases.

  • 90%
    C/C++/Python
  • 85%
    Machine Learning
  • 90%
    Computer Vision
  • 90%
    Deep Learning
  • 95%
    High Performance Computing
  • 85%
    Software Development
  • 85%
    Deep Learning Tools like Keras/Tensorflow/PyTorch/Caffe








Developer Blog

This is my section where i am contributing different topics from my work like programming and different research topics.

What is Deep Learning ?

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.

Branding

What's Deep Learning ?

This picture was taken where the birthhouse of King Arthur was.


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 (f). A regression problem with function y = f(x) maps an input x to a value y . Wheras a feedforward network computes a mapping y_predictions = f (x; θ) which learns the value of the parameter θ that result in the best function approximation, such that the error between y_target - f(x) is small enough, where y_target 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 x is used to calculate some intermediate values and states in the hidden layers which in turn is used to calculate the output y . So if we would add feedback from the last hidden layer to the previouse hidden layer, this network would represent a recurrent neural network.

Feed Forward Network

Feed Forward Network ?

This presents a standard feed forward 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.

Convolutional Neural Network, credits to https://towardsdatascience.com/

Convolutional Neural Network, credits to https://towardsdatascience.com/

This presents a stantard convolutional neural network, credits to https://towardsdatascience.com/


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.

Classification vs Object Detection, credits to http://machinethink.net/blog/object-detection-with-yolo/

Classification vs Object Detection, credits to http://machinethink.net/blog/object-detection-with-yolo/

This presents a stantard convolutional neural network, credits to https://towardsdatascience.com/


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.

What is Yolo? credits to http://datahacker.rs/tensorflow2-0-yolov3/

What is Yolo? credits to http://datahacker.rs/tensorflow2-0-yolov3//

This figure shows how Yolo works for more information take a look at http://datahacker.rs/tensorflow2-0-yolov3/


The next thing, each cell is responsible for predicting some class probabilities. It doesn't mean each cell contains an object, this is just a probability. For example if a grid cell predicts car, it is not saying that there is a car, it is just saying that if there is an object, than that object is a car.

So decribe some things in more detail.

In Yolo, anchor boxes are used to predict bounding boxes. The main idea of this concept is to define different shapes. They are called anchor boxes or anchor box shapes. This leads to the possibility to relate to a single object through different anchor boxes. In general, different numbers of anchor boxes are used to find an object. With the help of the anchor boxes and probabilities an object can be located and classified.

How Yolo anchor boxes are working http://datahacker.rs/tensorflow2-0-yolov3/

How Yolo anchor boxes are working to http://datahacker.rs/tensorflow2-0-yolov3//

This figure shows how Yolo anchor boxes are working http://datahacker.rs/tensorflow2-0-yolov3/


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.

Structure of YoloV3, credits to https://pylessons.com/YOLOv3-TF2-introduction/

Structure of YoloV3, credits to https://pylessons.com/YOLOv3-TF2-introduction/

This shows which structure YoloV3 has, credits to https://towardsdatascience.com/


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.

Result taken from https://pjreddie.com/darknet/yolo/

Result taken from https://pjreddie.com/darknet/yolo/

Simple of example of an result with Yolo V3.



Training Deep Neural Networks

Some simple examples and links of how to train classification and detection with a deep neural network library, in this case mainly PyTorch. Training classifier with pytorch:
Classification

Training object detector with pytorch:
Object Detection

Portfolio

A selection of recent projects I have worked on.

Presentation:
Introduction to High Performance Computing.













Travelling

A selection of my best pictures from travelling.

Branding

England Tintagel Castle, the Birthhouse of King Arthur

This picture was taken where the birthhouse of King Arthur was.

Branding

Backcountry England

This picture was taken somewhere on the backcountry of england./p>

Branding

In Rotterdam from the Erasmusbridge.

In Rotterdam from the Erasmusbridge.

Branding

A photo taken from Amsterdam.

A photo taken from Amsterdam.